2013 09 10_c++_lecture_01
description
Transcript of 2013 09 10_c++_lecture_01
Лекция 1. Организация
разработки программ на С++
С++ Basics. Valery Lesin, 2013
Организационные вопросы
• Контакты
– Валерий Михайлович Лесин
• Отчетность:
– «летучки»
– домашние задачи
– теормин
– задачи
С++ Basics. Valery Lesin, 2013
экзамен/зачет
История языка
• Появление
– Bjarne Stroustrup (Bell Labs), начало 80-х
– транслятор программ в язык С
• Стандарты
– базовые элементы для реализации
компиляторами
– 1998 / 2003 / 2005 Technical Report 1
– 2011 / 2014, C++11 (он же С++0x)
С++ Basics. Valery Lesin, 2013
Философия языка
• Максимальная обратная совместимость с С (на уровне компиляции и линковщика), но не полная
• Множество стилей
– процедурное программирование
– ООП
– обобщенное программирование (STL алгоритмы)
– метапрограммирование (boost.spirit)
• Не платить за то, что не используешь
• Избегать платформозависимых особенностей
С++ Basics. Valery Lesin, 2013
Применимость. За!
• С++ - всего лишь инструмент, достаточно
универсальный, поэтому не всегда удобный
• Программы с высокими требованиями к
ресурсам компьютера: процессору и памяти
– OS и сопутствующие программы (Windows, KDE)
– драйверы/встроенные системы
– научные программы
– игры/симуляторы
– cервера с высокой нагрузкой (google search)
С++ Basics. Valery Lesin, 2013
Применимость. Против!
• Возможно, не лучший выбор для:
– клиентских частей web-приложений
– программ-сценариев (лучше скрипты)
– приложений нетребовательных к ресурсам
• Универсальность порождает сложность
– более высокий порог вхождения чем Java, C#,
Python
• Выход: комбинировать с другими языками
программирования
С++ Basics. Valery Lesin, 2013
Библиотеки
• Стандартные: CRT, STL
– наиболее используемые структуры данных и
алгоритмы
– работа с примитивами OS (файлы, потоки)
• Работа с OS (WinAPI, POSIX)
• Общего назначения (Boost, Qt)
С++ Basics. Valery Lesin, 2013
Компиляция
С++ Basics. Valery Lesin, 2013
Средства разработки• Автоматизация сборки: make (Makefile), cmake,
autotools
• Редактор кода: notepad++, vim/emacs
• Отладчик: msvs, gdb
• Refactoring: visual assist, ReSharper
• Тестирование: boost.test, google.test, CUTE
• Системы контроля версий: CVS, SVN, git, hg
• Integrated development environment (IDE): MSVS, QtCreator, Eclipse CDT, NetBeans, KDevelop
С++ Basics. Valery Lesin, 2013
Пример IDE – Qt Creator
С++ Basics. Valery Lesin, 2013
Выполнение программы
• Программа – последовательное
выполнение инструкций
• «Точка входа» в С++ -программу:
С++ Basics. Valery Lesin, 2013
1.
2.
3.
4.
int main()
{
return 0;
}
Та самая программа1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#include <iostream>
int main(int argc, char* argv[])
{
using namespace std;
cout << "Hello, " << argv[1] << endl;
return 0;
}
С++ Basics. Valery Lesin, 2013
1.
2.
C:\test.exe World!
Hello, World!
Объявление переменных
С++ Basics. Valery Lesin, 2013
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
#include <string>
int main()
{
using namespace std;
int answer = 42;
double pi = 3.14;
string language = "C++";
string foo;
foo = "bar";
return 0;
}
Условия, циклы
С++ Basics. Valery Lesin, 2013
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
#include <iostream>
int main()
{
int arr [5] = {1, 2, 3, 4, 5};
int sum = 0;
// for (initialization; continue condition; modification)
for(int i = 0; i < 5; ++i)
sum = sum + arr[i];
if (sum == 15)
std::cout << "sum is correct" << std::endl;
return 0;
}
Функции
С++ Basics. Valery Lesin, 2013
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
#include <iostream>
int factorial(int n)
{
int result = 1;
while(n > 1)
{
result *= n;
--n;
}
return result;
}
int main()
{
int n = 6;
std::cout << factorial(n) << std::endl;
return 0;
}
Простейший ввод/вывод
С++ Basics. Valery Lesin, 2013
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
#include <fstream>
#include <string>
int main()
{
using namespace std;
ifstream in ("in.txt");
ofstream out("out.txt");
string const_name;
double const_value;
in >> const_name >> const_value;
out << const_name << " " << const_value;
return 0;
}
1. pi 3.14
Вопросы?
С++ Basics. Valery Lesin, 2013