-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathintro.tex
More file actions
167 lines (117 loc) · 11.9 KB
/
intro.tex
File metadata and controls
167 lines (117 loc) · 11.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
% !TEX encoding = UTF8
% !TEX spellcheck = ru_RU
% !TEX root = seminars.tex
%%================
\chapter{Введение}
%%================
%%=====================
\section{Цели и задачи}
%%=====================
\textit{Усвоить основы разработки, тестирования и отладки программ, базовые конструкции языка \lang{C++} и элементы стандартной библиотеки и получить практические навыки их использования при~решении ряда простых и более сложных задач.}
%%==========================
\paragraph{Структура курса.}
%%==========================
\begin{itemfeature}
\item О курсе в~целом.
\item Взаимосвязь с~другими курсами.
\begin{flushleft}\hspace{-4em}\begin{tikzpicture}[node font=\small, >=Stealth]
\graph [layered layout, components go right top aligned, layer sep=1em]
{
AppliedTasks/{Прикладные задачи} [blue, draw=blue, dashed, rounded corners] // [layered layout] {"Аэродинамика", "Динамика полёта", "Прочность", "Проектирование"};
AppliedSoftware/{Прикладное программное обеспечение} [blue, draw=blue, dashed, rounded corners] // [layered layout, edge=white] {
OpenFoam, SU2, Gmsh, FreeCAD, ParaView
};
OS/{Операционные системы} [blue, draw=blue, dashed, rounded corners, edge=black] // [tree layout] {
Unix -> {
Linux -> Android, FreeBSD -> {MacOS, iOS}, Solaris;
},
Windows
};
ComputerArchitecture/{Архитектура компьютера} [blue, draw=blue, dashed, rounded corners] // [layered layout, edge=<-] {
"Архитектура и язык ассемблера"
-> "Микроархитектура"
-> "<<железо>>"
};
ComputerLanguages/{Языки программирования} [blue, draw=blue, dashed, rounded corners] // [layered layout, components go right top aligned, edge={<-, white}] {
{Python, Java, PHP, HTML, Perl}
-> {C++, Rust, ObjectiveC[as={Objective C}], Fortran}
-> {C, Forth, Pascal}
};
Algorithms/{Алгоритмы и структуры данных} [blue, draw=blue, dashed, rounded corners] // [layered layout, edge=white] {
{"Двоичный поиск", "Деревья"}
-> {"Сортировка", "Хэш-таблицы"}
-> {"Волновой алгоритм", "Графы"}
};
AppliedTasks ->[white] AppliedSoftware ->[white] {OS, ComputerLanguages} ->[white] {ComputerArchitecture, Algorithms};
};
\end{tikzpicture}\end{flushleft}
\item Контрольно-проверочные мероприятия.
\end{itemfeature}
%%===========================
\section{Основная литература}
%%===========================
\cite{Stroustrup:2016:ru}
\nocite{Kernighan:2004:ru, Meyers:2006:ru, Meyers:2000:ru, Meyers:2002:ru, Meyers:2016:ru, Josuttis:2014:ru, Stroustrup:2006:ru, Stroustrup:2013:en}
%%===========================
\section{Материалы и задания}
%%===========================
Значительная часть обучающих упражнений и заданий содержится в~книге Бьярне Страуструпа. Дополнительные материалы размещены на~\href{\yadiskurl}{яндекс-диске\footnote{Материалы на Яндекс-диске: \nolinkurl{\yadiskurl}}}:
\begin{itemfeature}
\item \codebf{books} "--- основная и дополнительная литература;
\item \codebf{cpp-lectures} "--- лекционные материалы;
\item \codebf{cpp-seminars} "--- семинарские материалы;
\begin{itemize}
\item \codebf{/libs} "--- библиотеки, которые используются на занятиях;
\item \codebf{/program.pdf} "--- программа курса (темы для беседы на зачёте);
\item \codebf{/progress.pdf} "--- планы, успеваемость и проверочные мероприятия;
\item \codebf{/seminars.pdf} "--- вспомогательная методичка по материалам занятий.
\end{itemize}
\end{itemfeature}
Исходный код примеров из данного учебного пособия доступен в \href{\courserepourl}{репозитории}\footnote{Репозиторий данного пособия: \nolinkurl{\courserepourl}} на~Git\,Hub, каталог \code{projects}.
%%===============================
\section{Программное обеспечение}
%%===============================
Интегрированная среда разработки (IDE "--- \textenglish{Integrated Development Environment}):
\begin{itemfeature}
\item текстовый редактор,
\item компилятор языка \lang{C++} (с~поддержкой стандарта \lang{C++14} или выше),
\item редактор связей,
\item средства сборки,
\item средства отладки.
\end{itemfeature}
%%===========================================
\section{Установка и настройка рабочей среды}\label{sect:workEnv}
%%===========================================
Мы настоятельно рекомендуем в~качестве IDE установить \href{\vscodeurl}{\name{VS\,Code}}\footnote{\textenglish{Microsoft VS\,Code:} \nolinkurl{\vscodeurl}} от~Microsoft. Эта программа активно развивается, имеет полноценный современный редактор кода и поддерживает интеграцию со~множеством полезных инструментов (системой контроля версий, средствами форматирования кода, консолью). Распространяется свободно, кроссплатформенная, то есть доступна не~только под~Windows, но и под~Unix: GNU/Linux, Mac\,OS\,X. А также доступна на~территории России.
Запустите \name{VS\,Code}. Перейдите во вкладку <<Расширения>> на панели слева. Установите плагин \textenglish{C/C++ for Visual Studio Code}.
Далее необходимо установить \href{\smartgiturl}{\name{Smartgit}}\footnote{Syntevo Smartgit: \nolinkurl{\smartgiturl}} (или, в крайнем случае, просто \href{\giturl}{\git}\footnote{Система контроля версий Git: \nolinkurl{\giturl}}), оставляя рекомендуемые (по умолчанию) параметры в~тех местах, где вы сомневаетесь, что выбрать. \name{Smartgit} включает в себя дистрибутив \git-а, поэтому последний не нужно ставить отдельно.
\name{Smartgit} "--- это удобный и мощный графический пользовательский интерфейс, то есть окошки и кнопочки, для работы с~системой контроля версий \git. Это коммерческий продукт, однако, разработчик предоставляет некоммерческую лицензию для академических заведений, которую можно запросить, заполнив \href{\smartgitacademicurl}{форму}\footnote{Запрос лицензии: \nolinkurl{\smartgitacademicurl}} на сайте.
В~сочетании с дополнительными плагинами, \name{VS\,Code} частично предоставляет подобные возможности. Но, увы, это пока не так удобно.
Система контроля версий "--- неотъемлемый инструмент разработки сложных программ. Также он весьма полезен при~разработке небольших программ.
%%=====================
\paragraph{ОС Windows.}\label{sect:winSetup}
%%=====================
Совместно с~\name{VS\,Code} используйте \href{\mingwurl}{\name{MinGW-w64}}\footnote{MinGW-w64: \nolinkurl{\mingwurl}} (компилятор, компоновщик, отладчик и прочее).
Для~этого:
\begin{itemfeature}
\item \href{\sevenzipurl}{Распакуйте}\footnote{Архиватор 7-Zip: \nolinkurl{\sevenzipurl}} архив \name{MinGW-w64} в~каталог \code{c:\backslash{}mingw-64} или любой другой, куда вы обычно устанавливаете программы.
\item \href{\addtosyspathurl}{Добавьте}\footnote{Adding Path to MinGW: \nolinkurl{\addtosyspathurl}} путь к~компилятору (\code{bin\backslash{}g++.exe}) в~список стандартных системных путей (системная переменная \name{PATH}).
\end{itemfeature}
Удобная Unix-подобная командная среда \name{Git\,Bash} идёт в~комплекте с~системой контроля версий \git{} (а также в~комплекте со~\name{Smartgit}-ом). Простые программы мы будем собирать непосредственно в~командной среде. Помимо прочего, она облегчит тестирование программ в~автоматическом и полуавтоматическом режимах.
\href{\embedgitbashurl}{Добавьте}\footnote{\textenglish{VS Code --- Integrate Git Bash as Default Terminal}: \nolinkurl{\embedgitbashurl}} \name{Git\,Bash} в~список доступных терминалов \name{VS\,Code} и выберите его в~качестве терминала по~умолчанию. (Файл с~именем \code{bash.exe} нужно найти в~каталоге установки \name{Smartgit}-а.)
%%==================
\paragraph{ОС Unix.}
%%==================
Пользователи Unix и подобных ей операционных систем могут установить средства сборки программ \name{GNU}/\GCC{} при~помощи менеджера системы управления пакетами (например, \code{apt} в~\name{Ubuntu} или \code{pamac} в~\name{Manjaro}). Командная среда \code{bash}, или подобная ей \code{zsh}, обычно доступна из~коробки и не~требует отдельной установки.
%%===================================
\paragraph{Если что-то пошло не так,}
%%===================================
повторите процедуру \textbf{спокойно}, выполняя \textbf{в~точности} все указанные выше действия. Попробуйте использовать только латиницу для~каталогов установки и проектов, иногда русские буквы в~путях или пробелы могут вызывать ошибки.
%%=================================
\paragraph{И теперь не получилось?}
%%=================================
Хм-м... Тогда обратитесь за~помощью к~товарищам в~группе, к~студентам старших курсов или, в~конце концов, к~преподавателю.
%%==================
\section{Что читать}
%%==================
\textcite{Stroustrup:2016:ru}: \textbf{главы~0, 1 и~2}