180 lines
No EOL
7.5 KiB
TeX
180 lines
No EOL
7.5 KiB
TeX
\documentclass{article}
|
||
\usepackage[utf8x]{inputenc}
|
||
\usepackage{ucs}
|
||
\usepackage{amsmath}
|
||
\usepackage{amsfonts}
|
||
\usepackage{marvosym}
|
||
\usepackage{wasysym}
|
||
\usepackage{upgreek}
|
||
\usepackage[english,russian]{babel}
|
||
\usepackage{graphicx}
|
||
\usepackage{float}
|
||
\usepackage{textcomp}
|
||
\usepackage{hyperref}
|
||
\usepackage{geometry}
|
||
\geometry{left=2cm}
|
||
\geometry{right=1.5cm}
|
||
\geometry{top=1cm}
|
||
\geometry{bottom=2cm}
|
||
\usepackage{tikz}
|
||
\usepackage{ccaption}
|
||
\usepackage{multicol}
|
||
\usepackage{fancyvrb}
|
||
|
||
\usepackage{listings}
|
||
%\setlength{\columnsep}{1.5cm}
|
||
%\setlength{\columnseprule}{0.2pt}
|
||
|
||
\usepackage{colortbl,graphicx,tikz}
|
||
\definecolor{X}{rgb}{.5,.5,.5}
|
||
|
||
\title{ДЗ. Работа с изображениями в формате \texttt{.ppm}}
|
||
\date{}
|
||
\begin{document}
|
||
\pagenumbering{gobble}
|
||
|
||
\lstset{
|
||
language=C++, % choose the language of the code
|
||
basicstyle=\linespread{1.1}\ttfamily,
|
||
columns=fixed,
|
||
fontadjust=true,
|
||
basewidth=0.5em,
|
||
keywordstyle=\color{blue}\bfseries,
|
||
commentstyle=\color{gray},
|
||
stringstyle=\ttfamily\color{orange!50!black},
|
||
showstringspaces=false,
|
||
%numbers=false, % where to put the line-numbers
|
||
numbersep=5pt,
|
||
numberstyle=\tiny\color{black},
|
||
numberfirstline=true,
|
||
stepnumber=1, % the step between two line-numbers.
|
||
numbersep=10pt, % how far the line-numbers are from the code
|
||
backgroundcolor=\color{white}, % choose the background color. You must add \usepackage{color}
|
||
showstringspaces=false, % underline spaces within strings
|
||
captionpos=b, % sets the caption-position to bottom
|
||
breaklines=true, % sets automatic line breaking
|
||
breakatwhitespace=true, % sets if automatic breaks should only happen at whitespace
|
||
xleftmargin=.2in,
|
||
extendedchars=\true,
|
||
keepspaces = true,
|
||
}
|
||
\lstset{literate=%
|
||
*{0}{{{\color{red!20!violet}0}}}1
|
||
{1}{{{\color{red!20!violet}1}}}1
|
||
{2}{{{\color{red!20!violet}2}}}1
|
||
{3}{{{\color{red!20!violet}3}}}1
|
||
{4}{{{\color{red!20!violet}4}}}1
|
||
{5}{{{\color{red!20!violet}5}}}1
|
||
{6}{{{\color{red!20!violet}6}}}1
|
||
{7}{{{\color{red!20!violet}7}}}1
|
||
{8}{{{\color{red!20!violet}8}}}1
|
||
{9}{{{\color{red!20!violet}9}}}1
|
||
}
|
||
|
||
\title{Семинар \#1: Введение в язык C++ (для тех, кто знает C). Классные задачи.\vspace{-5ex}}\date{}\maketitle
|
||
|
||
\section*{Hello world++}
|
||
Пишем первую программу на \texttt{C++}
|
||
\begin{lstlisting}
|
||
#include <cstdio>
|
||
int main() {
|
||
printf("Hello World++\n");
|
||
}
|
||
\end{lstlisting}
|
||
Все библиотеки из языка \texttt{C} можно использовать и в языке \texttt{C++}. Только название библиотеки без \texttt{.h} на конце и с символом \texttt{c} в начале:
|
||
\begin{verbatim}
|
||
<stdio.h> -------> <cstdio>
|
||
\end{verbatim}
|
||
|
||
Для компиляции используйте компилятор \texttt{g++}. Вот так:
|
||
\begin{verbatim}
|
||
g++ helloworld.cpp
|
||
./a.out
|
||
\end{verbatim}
|
||
Или, если вы хотите установить у исполняемого файла своё имя за место \texttt{a.out}:
|
||
\begin{verbatim}
|
||
g++ -o hello helloworld.cpp
|
||
./hello
|
||
\end{verbatim}
|
||
|
||
\begin{itemize}
|
||
\item \textbf{Задача 1:} Скомпилируйте и запустите простейшую программу \texttt{00helloworld.cpp}.
|
||
\item \textbf{Задача 2:} Разберитесь в программе \texttt{01structnaming.cpp}. Скомпилируйте и запустите.
|
||
\end{itemize}
|
||
|
||
\section*{Тип bool}
|
||
В прошлом семестре, для хранения результатов логических операций, мы использовали целочисленные типы.\\
|
||
В языке \texttt{C++} есть встроенный тип \texttt{bool}, который может принимать 2 значения (\texttt{true} и \texttt{false}).
|
||
\begin{lstlisting}
|
||
#include <cstdio>
|
||
int main() {
|
||
bool a = true;
|
||
bool b = false;
|
||
bool c = a || b;
|
||
|
||
if (c)
|
||
printf("Yes\n");
|
||
else
|
||
printf("No\n");
|
||
}
|
||
\end{lstlisting}
|
||
\begin{itemize}
|
||
\item \textbf{Задача 3:} Что напечатает эта программа? Скомпилируйте её и запустите (\texttt{02bool.cpp})
|
||
\item \textbf{Задача 4:} Напишите функцию, которая будет принимать на вход целое число и возвращать \texttt{true}, если число оканчивается на \texttt{0} и \texttt{false} иначе. Вызовите эту функцию из \texttt{main}.
|
||
\end{itemize}
|
||
|
||
\newpage
|
||
\section*{Пространство имён}
|
||
\begin{lstlisting}
|
||
#include <cstdio>
|
||
// Определяем переменные, структуры, функции внутри пространства имён foo
|
||
namespace foo {
|
||
int a = 5;
|
||
int square(int x) {
|
||
return x * x;
|
||
}
|
||
}
|
||
// Чтобы получить доступ к ним вне пространства имён, нужно добавить к именам foo::
|
||
int main() {
|
||
printf("%d\n", foo::a);
|
||
}
|
||
\end{lstlisting}
|
||
\begin{itemize}
|
||
\item \textbf{Задача 5:} Возведите \texttt{foo::a} в квадрат с помощью функции \texttt{foo::square}.
|
||
\item \textbf{Задача 6:} Создайте своё пространство имён по имени \texttt{bar} и определите в нём переменную \texttt{a = 7}. Напечатайте значение этой переменной в \texttt{main}.
|
||
\item \textbf{Задача 7:} Сделайте задание в программе \texttt{03namespace.cpp}.
|
||
\end{itemize}
|
||
|
||
\section*{Ссылки}
|
||
Ссылка -- это переменная, которая является новым именем для существующего участка памяти.
|
||
\begin{lstlisting}
|
||
#include <cstdio>
|
||
|
||
int main() {
|
||
int a = 10;
|
||
// Создадим ссылку r на переменную a
|
||
int& r = a;
|
||
// Теперь, если изменить r, то поменяется и a
|
||
r += 5;
|
||
printf("%d\n", a);
|
||
}
|
||
\end{lstlisting}
|
||
Ссылки часто используются для тех же целей, что и указатели (только со ссылкам работать удобнее).
|
||
В отличии от указателей, ссылки:
|
||
\begin{enumerate}
|
||
\item Должны всегда инициализироваться при создании
|
||
\item Не могут никуда не ссылаться (т.е. не могут равняться \texttt{NULL})
|
||
\item Их нельзя переприсвоить. При использовании оператора \texttt{=} со ссылками изменяется та переменная, на которую ссылка ссылается, а не сама ссылка.
|
||
\end{enumerate}
|
||
\begin{itemize}
|
||
\item \textbf{Задача 8:} Сделайте задание в файлах \texttt{04ref.cpp}, \texttt{05ref.cpp} и \texttt{06ref.cpp}.
|
||
\end{itemize}
|
||
\section*{Перегрузка функций}
|
||
\begin{itemize}
|
||
\item \textbf{Задача 9:} Сделайте задание в файлах \texttt{07function\_overload.cpp}, \texttt{08nulptr.cpp} и \texttt{09default\_arguments.cpp}.
|
||
\end{itemize}
|
||
\section*{Перегрузка операторов}
|
||
\begin{itemize}
|
||
\item \textbf{Задача 10:} Сделайте задание в файлах \texttt{10operator\_overload.cpp}, \texttt{11iostream.cpp} и \texttt{12iostream\_overload.cpp}.
|
||
\end{itemize}
|
||
\end{document} |