This repository has been archived on 2023-05-13. You can view files and clone it, but cannot push or open issues or pull requests.
mipt_cpp/seminar01_overload/classroom_tasks/classroom_tasks_overload.tex
2022-09-01 16:37:41 +03:00

180 lines
No EOL
7.5 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\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}