initial commit
This commit is contained in:
commit
2369f801af
76 changed files with 4273 additions and 0 deletions
53
.gitignore
vendored
Normal file
53
.gitignore
vendored
Normal file
|
@ -0,0 +1,53 @@
|
|||
# ---> C
|
||||
# Prerequisites
|
||||
*.d
|
||||
|
||||
# Object files
|
||||
*.o
|
||||
*.ko
|
||||
*.obj
|
||||
*.elf
|
||||
|
||||
# Linker output
|
||||
*.ilk
|
||||
*.map
|
||||
*.exp
|
||||
|
||||
# Precompiled Headers
|
||||
*.gch
|
||||
*.pch
|
||||
|
||||
# Libraries
|
||||
*.lib
|
||||
*.a
|
||||
*.la
|
||||
*.lo
|
||||
|
||||
# Shared objects (inc. Windows DLLs)
|
||||
*.dll
|
||||
*.so
|
||||
*.so.*
|
||||
*.dylib
|
||||
|
||||
# Executables
|
||||
*.exe
|
||||
*.out
|
||||
*.app
|
||||
*.i*86
|
||||
*.x86_64
|
||||
*.hex
|
||||
|
||||
# Debug files
|
||||
*.dSYM/
|
||||
*.su
|
||||
*.idb
|
||||
*.pdb
|
||||
|
||||
# Kernel Module Compile Results
|
||||
*.mod*
|
||||
*.cmd
|
||||
.tmp_versions/
|
||||
modules.order
|
||||
Module.symvers
|
||||
Mkfile.old
|
||||
dkms.conf
|
BIN
seminar01_overload/classroom_tasks/classroom_tasks_overload.pdf
Normal file
BIN
seminar01_overload/classroom_tasks/classroom_tasks_overload.pdf
Normal file
Binary file not shown.
180
seminar01_overload/classroom_tasks/classroom_tasks_overload.tex
Normal file
180
seminar01_overload/classroom_tasks/classroom_tasks_overload.tex
Normal file
|
@ -0,0 +1,180 @@
|
|||
\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}
|
|
@ -0,0 +1,33 @@
|
|||
#include <stdio.h>
|
||||
|
||||
/*
|
||||
Здравствуйте, это первый файл семестра по языку C++ (для тех, кто знаком с языком C)
|
||||
|
||||
Язык C++ создан на основе языка C и одним из приоритетов C++ является обратная совместимость с C
|
||||
Поэтому почти любая программа на языке C будет работать и на языке C++
|
||||
|
||||
Однако, нужно помнить, что это разные языки. В C++ было добавлено огромное количество новых возможностей,
|
||||
что сделало C++ возможно самым объёмным и мощным языком программирования.
|
||||
|
||||
C++ содержит в себе во много раз больше всего, чем язык C и пройти его за один семестр не представляется возможным,
|
||||
но мы пройдём ключевые части этого языка.
|
||||
|
||||
|
||||
Для компиляции программ на C++ будем использовать компилятор g++.
|
||||
Скомпилируйте эту программу вот так:
|
||||
g++ 00hello.cpp
|
||||
|
||||
И запустите вот так (для Windows):
|
||||
a.exe
|
||||
|
||||
И запустите вот так (для Linux):
|
||||
./a.out
|
||||
|
||||
*/
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
printf("Hello World of C++\n");
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
#include <stdio.h>
|
||||
|
||||
/*
|
||||
Пространства имён - namespace
|
||||
|
||||
Определяем переменные/структуры/функции внутри пространства имён.
|
||||
Давайте назовём его mipt
|
||||
|
||||
Чтобы получить доступ к этим переменным/структурам/функциям
|
||||
вне пространства имён, нужно добавить к имени название пространства имён и оператор ::
|
||||
В данном случае нужно добавить mipt::
|
||||
*/
|
||||
|
||||
|
||||
namespace mipt
|
||||
{
|
||||
int a = 5;
|
||||
float b = 1.2;
|
||||
|
||||
int square(int x)
|
||||
{
|
||||
return x * x;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
printf("%i\n", mipt::square(4));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Задание:
|
||||
|
||||
1) Скомпилируйте программу и запустите, что она напечатает?
|
||||
|
||||
2) Что будет, если забыть написать mipt:: у названия функции square?
|
||||
|
||||
3) Передайте в функцию mipt::square переменную a из пространства имён mipt
|
||||
|
||||
4) Напишите функцию float average(float x, float y), которая будет принимать 2 числа
|
||||
и возвращать их среднее арифметическое.
|
||||
Поместите эту функцию в пространство имён mipt и вызовите эту функцию из main
|
||||
|
||||
5) Напечатайте среднее арифметическое от a и b, используя функцию average
|
||||
|
||||
*/
|
|
@ -0,0 +1,25 @@
|
|||
#include <stdio.h>
|
||||
|
||||
|
||||
namespace mipt
|
||||
{
|
||||
int a = 5;
|
||||
float b = 1.2;
|
||||
|
||||
int square(int x)
|
||||
{
|
||||
return x * x;
|
||||
}
|
||||
|
||||
float average(float x, float y)
|
||||
{
|
||||
return (x + y) / 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
printf("%i\n", mipt::square(mipt::a));
|
||||
printf("%f\n", mipt::average(mipt::a, mipt::b));
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
#include <stdio.h>
|
||||
|
||||
/*
|
||||
В языке C при объявлении структуры struct Book создаётся тип по имени struct Book.
|
||||
|
||||
В языке C++ при объявлении структуры struct Book создаётся тип к которому
|
||||
можно обращаться как по имени struct Book так и по имени Book
|
||||
*/
|
||||
|
||||
|
||||
struct Book
|
||||
{
|
||||
char title[50];
|
||||
int pages;
|
||||
float price;
|
||||
};
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
struct Book a = {"Tom Sawyer", 280, 500};
|
||||
|
||||
Book b = {"War and Peace", 1200, 900};
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
#include <cstdio>
|
||||
|
||||
/*
|
||||
Определяем переменные/структуры/функции внутри пространства имён mipt
|
||||
Затем к ним можно будет доступиться используя префикс mipt::
|
||||
*/
|
||||
|
||||
|
||||
namespace mipt
|
||||
{
|
||||
struct Book
|
||||
{
|
||||
char title[50];
|
||||
int pages;
|
||||
float price;
|
||||
};
|
||||
|
||||
void printBook(Book b)
|
||||
{
|
||||
printf("%s, pages: %d, price: %.2f\n", b.title, b.pages, b.price);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
Задание:
|
||||
|
||||
Структура Book и функция printBook определены в пространстве имён mipt
|
||||
|
||||
1) Создайте переменную типа структура Book и иницилизируйте
|
||||
её значениями: "War and Peace", 1200, 900
|
||||
|
||||
2) Напечатайте созданную переменную с помощью функции printBook
|
||||
*/
|
|
@ -0,0 +1,36 @@
|
|||
#include <cstdio>
|
||||
|
||||
|
||||
namespace mipt
|
||||
{
|
||||
struct Book
|
||||
{
|
||||
char title[50];
|
||||
int pages;
|
||||
float price;
|
||||
};
|
||||
|
||||
void printBook(Book b)
|
||||
{
|
||||
printf("%s, pages: %d, price: %.2f\n", b.title, b.pages, b.price);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
mipt::Book b = {"War and Peace", 1200, 900};
|
||||
mipt::printBook(b);
|
||||
}
|
||||
|
||||
/*
|
||||
Задание:
|
||||
|
||||
Структура Book и функция printBook определены в пространстве имён mipt
|
||||
|
||||
1) Создайте переменную типа структура Book и иницилизируйте
|
||||
её значениями: "War and Peace", 1200, 900
|
||||
|
||||
2) Напечатайте созданную переменную с помощью функции printBook
|
||||
*/
|
|
@ -0,0 +1,60 @@
|
|||
#include <stdio.h>
|
||||
|
||||
/*
|
||||
Зачем вообще нужны пространства имён?
|
||||
|
||||
Представьте, что вы создаёте большую программу, исходный код который
|
||||
содержит миллионы строк кода. Конечно, большая часть кода написана не вами,
|
||||
так как вы используете библиотеки, написанные другими программистами.
|
||||
|
||||
Библиотекой можно назвать совокупность файлов исходного кода, нацеленных
|
||||
на решение какой-либо задачи. Например, есть библиотека для работы с графикой
|
||||
в которой содержатся функции/структуры/классы для работы с графикой.
|
||||
|
||||
Если вы подключаете несколько библиотек, то существует высокая вероятность,
|
||||
что название чего-либо из одной библиотеки совпадёт с названием чего-то из другой библиотеки.
|
||||
Это, конечно, приведёт к ошибке.
|
||||
|
||||
Чтобы этого избежать и используются пространства имён.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
namespace audio
|
||||
{
|
||||
int a = 10;
|
||||
|
||||
int calculate(int x)
|
||||
{
|
||||
return x + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
namespace graphics
|
||||
{
|
||||
int a = 20;
|
||||
|
||||
int calculate(int x)
|
||||
{
|
||||
return x * 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
printf("%i\n", audio::a);
|
||||
printf("%i\n", graphics::a);
|
||||
|
||||
|
||||
printf("%i\n", graphics::calculate(audio::calculate(graphics::a)));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Задание:
|
||||
|
||||
1) Что напечатает данная программа?
|
||||
*/
|
|
@ -0,0 +1,78 @@
|
|||
#include <stdio.h>
|
||||
|
||||
/*
|
||||
Если вам очень не хочется постоянно писать названия пространства имён,
|
||||
то вы можете использовать ключевое слово using
|
||||
|
||||
using namespace audio;
|
||||
|
||||
Это говорит о том, что начиная с этой строки audio:: перед именами писать больше не нужно
|
||||
|
||||
Это, конечно, полностью уничтожают всю пользу, которую приносят пространства имён.
|
||||
То есть в больших проектах могут возникнуть ошибки, связанные с одинаковыми именами.
|
||||
|
||||
Так что так лучше не делать, а если и делать, то только в маленьких программах.
|
||||
*/
|
||||
|
||||
|
||||
namespace audio
|
||||
{
|
||||
int a = 10;
|
||||
|
||||
int calculate(int x)
|
||||
{
|
||||
return x + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
namespace graphics
|
||||
{
|
||||
int a = 20;
|
||||
|
||||
int calculate(int x)
|
||||
{
|
||||
return x * 2;
|
||||
}
|
||||
}
|
||||
|
||||
namespace network
|
||||
{
|
||||
int b = 20;
|
||||
|
||||
int solve(int x)
|
||||
{
|
||||
return x * 2;
|
||||
}
|
||||
}
|
||||
|
||||
using namespace audio;
|
||||
|
||||
int main()
|
||||
{
|
||||
printf("%i\n", calculate(a));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Задание:
|
||||
|
||||
1) Что напечатает данная программа?
|
||||
|
||||
2) Если заменить using namespace audio на using namespace graphics, то что напечатает программа?
|
||||
|
||||
3) Что если одновременно использовать пространство имён audio и пространство имён graphics?
|
||||
|
||||
using namespace audio;
|
||||
using namespace graphics;
|
||||
|
||||
Приведёт ли это к ошибке и, если да, то почему?
|
||||
|
||||
|
||||
4) Что если одновременно использовать пространство имён audio и пространство имён network?
|
||||
|
||||
using namespace audio;
|
||||
using namespace network;
|
||||
|
||||
Приведёт ли это к ошибке и, если да, то почему?
|
||||
*/
|
|
@ -0,0 +1,65 @@
|
|||
#include <iostream>
|
||||
|
||||
/*
|
||||
Все переменные/функции/структуры/классы стандартной библиотеки языка C++ содержатся в пространстве имён std
|
||||
Рассмотрим, например, глобальную переменную cout, определённую в библиотеке iostream в пространстве имён std.
|
||||
|
||||
К этой переменной можно применять оператор <<
|
||||
cout << объект
|
||||
В результате этой операции объект напечатается на экран (если он может напечататься)
|
||||
Результат оператора << также является cout, поэтому можно применять << несколько раз:
|
||||
|
||||
|
||||
|
||||
Например это выражение: cout << "Hello " << "World" << "\n";
|
||||
|
||||
1) Сначала напечатается "Hello " и на место cout << "Hello " подставится cout
|
||||
Получтся cout << "World" << "\n";
|
||||
|
||||
2) Потом напечатется "World" и на место cout << "World" подставится cout
|
||||
Получтся cout << "\n";
|
||||
|
||||
3) В конце напечатается перенос строки
|
||||
*/
|
||||
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
std::cout << "Hello World\n";
|
||||
std::cout << 5 << "\n";
|
||||
|
||||
int x = 10;
|
||||
std::cout << 5 << "\n";
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Задачи:
|
||||
|
||||
1) Напечатайте на экран число 1.4, используя cout (количество печатаемых знаков после запятой неважно)
|
||||
Обратите внимание, что при печати с cout не нужно указывать спецификатор типа как в printf.
|
||||
cout сам понимает объект какого типа ему передаётся
|
||||
|
||||
2) Напечатайте фразу "I am x years old", только за место x нужно подставить значение
|
||||
переменной x. В данной задаче получится "I am 10 years old". Используйте cout.
|
||||
|
||||
3) Напечатайте на экран числа от 1 до 20, разделённые пробелом. Используйте cout
|
||||
|
||||
4) Вместо \n для переноса строки можно использовать endl - специальный объект из
|
||||
пространства имён std.
|
||||
Если мы передаём его объекту cout через оператор << то печатается перенос строки
|
||||
|
||||
Замените все переносы строк с \n на endl
|
||||
std::cout << 5 << "\n"; --> std::cout << 5 << std::endl;
|
||||
|
||||
|
||||
На самом деле std::endl работает медленней, чем \n, так как он помимо печати делает flush
|
||||
Поэтому, если важна скорость печати в буфер, то лучше использовать \n
|
||||
|
||||
|
||||
5) Что будет если не написать std:: перед одним из cout?
|
||||
|
||||
6) Используйте using namespace std; и избавьтесь от надоедливых std:: перед cout и endl
|
||||
|
||||
*/
|
|
@ -0,0 +1,16 @@
|
|||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
cout << 1.4 << endl;
|
||||
|
||||
int x = 10;
|
||||
cout << "I am " << x << " years old" << endl;
|
||||
|
||||
for (int i = 1; i <= 20; ++i)
|
||||
cout << i << " ";
|
||||
cout << endl;
|
||||
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
#include <iostream>
|
||||
|
||||
/*
|
||||
В пространстве имён std очень много разных имён. Если мы добавим их всех, используя
|
||||
using namespace std;
|
||||
то это может привести к проблеме.
|
||||
Одно из имён из std может совпасть с названием нашего объекта и это может привести к ошибке.
|
||||
|
||||
Так что лучше такую возможность не использовать.
|
||||
|
||||
Но можно добавить только одно имя так:
|
||||
using std::cout;
|
||||
Начиная с этого момента можно писать просто cout.
|
||||
Но для всех остальных объектов из std вы должны продолжать писать std::
|
||||
*/
|
||||
|
||||
using std::cout;
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
cout << "Hello World" << std::endl;
|
||||
cout << 5 << std::endl;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Задачи:
|
||||
|
||||
1) Добавить endl в нашу область видимости, также как и cout
|
||||
|
||||
*/
|
|
@ -0,0 +1,41 @@
|
|||
#include <iostream>
|
||||
|
||||
/*
|
||||
Счтиывание из стандартного входа
|
||||
|
||||
Рассмотрим глобальную переменную cin, определённую в библиотеке iostream в пространстве имён std.
|
||||
|
||||
К этой переменной можно применять оператор >>
|
||||
cin >> объект
|
||||
В результате этой операции объект считается с экрана (если он может быть считан)
|
||||
Результат оператора >> также является cin, поэтому можно применять >> несколько раз:
|
||||
|
||||
|
||||
|
||||
Например это выражение: cin >> a >> b;
|
||||
|
||||
1) Сначала считается переменная a и на место cin >> a подставится cin
|
||||
Получтся cin >> b;
|
||||
|
||||
2) Потом считается переменная b
|
||||
*/
|
||||
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
int a, b;
|
||||
std::cin >> a >> b;
|
||||
std::cout << a + b;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Задачи:
|
||||
|
||||
1) Что напечатает данная программа, если на вход передать числа 10 и 20?
|
||||
|
||||
2) Напишите программу, которая будет считывать два вещественных числа и печатать их среднее геометрическое
|
||||
Функция корня sqrt есть в библиотеке <cmath>
|
||||
|
||||
*/
|
|
@ -0,0 +1,10 @@
|
|||
#include <iostream>
|
||||
#include <cmath>
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
float a, b;
|
||||
std::cin >> a >> b;
|
||||
std::cout << sqrt(a * b);
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
|
||||
/*
|
||||
Язык C++ обратно совместим с языком C. То есть почти любая программа на C будет работать на C++
|
||||
Эта программа будет работать.
|
||||
|
||||
Обратите внимания, для имён, пришедших из языка C использовать std:: не обязательно
|
||||
|
||||
Программа работает, несмотря на то, что мы используем библиотечные
|
||||
функции printf и sqrt без указания пространства имён std.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
printf("%f", sqrt(3));
|
||||
}
|
||||
|
||||
|
||||
/* Задача:
|
||||
|
||||
1) Что напечатает данная программа?
|
||||
|
||||
2) Использование библиотечных функций без std опасно, так как мож |