2013 09 10_c++_lecture_01

17
Лекция 1. Организация разработки программ на С++ С++ Basics. Valery Lesin, 2013

description

 

Transcript of 2013 09 10_c++_lecture_01

Page 1: 2013 09 10_c++_lecture_01

Лекция 1. Организация

разработки программ на С++

С++ Basics. Valery Lesin, 2013

Page 2: 2013 09 10_c++_lecture_01

Организационные вопросы

• Контакты

– Валерий Михайлович Лесин

[email protected]

• Отчетность:

– «летучки»

– домашние задачи

– теормин

– задачи

С++ Basics. Valery Lesin, 2013

экзамен/зачет

Page 3: 2013 09 10_c++_lecture_01

История языка

• Появление

– Bjarne Stroustrup (Bell Labs), начало 80-х

– транслятор программ в язык С

• Стандарты

– базовые элементы для реализации

компиляторами

– 1998 / 2003 / 2005 Technical Report 1

– 2011 / 2014, C++11 (он же С++0x)

С++ Basics. Valery Lesin, 2013

Page 4: 2013 09 10_c++_lecture_01

Философия языка

• Максимальная обратная совместимость с С (на уровне компиляции и линковщика), но не полная

• Множество стилей

– процедурное программирование

– ООП

– обобщенное программирование (STL алгоритмы)

– метапрограммирование (boost.spirit)

• Не платить за то, что не используешь

• Избегать платформозависимых особенностей

С++ Basics. Valery Lesin, 2013

Page 5: 2013 09 10_c++_lecture_01

Применимость. За!

• С++ - всего лишь инструмент, достаточно

универсальный, поэтому не всегда удобный

• Программы с высокими требованиями к

ресурсам компьютера: процессору и памяти

– OS и сопутствующие программы (Windows, KDE)

– драйверы/встроенные системы

– научные программы

– игры/симуляторы

– cервера с высокой нагрузкой (google search)

С++ Basics. Valery Lesin, 2013

Page 6: 2013 09 10_c++_lecture_01

Применимость. Против!

• Возможно, не лучший выбор для:

– клиентских частей web-приложений

– программ-сценариев (лучше скрипты)

– приложений нетребовательных к ресурсам

• Универсальность порождает сложность

– более высокий порог вхождения чем Java, C#,

Python

• Выход: комбинировать с другими языками

программирования

С++ Basics. Valery Lesin, 2013

Page 7: 2013 09 10_c++_lecture_01

Библиотеки

• Стандартные: CRT, STL

– наиболее используемые структуры данных и

алгоритмы

– работа с примитивами OS (файлы, потоки)

• Работа с OS (WinAPI, POSIX)

• Общего назначения (Boost, Qt)

С++ Basics. Valery Lesin, 2013

Page 8: 2013 09 10_c++_lecture_01

Компиляция

С++ Basics. Valery Lesin, 2013

Page 9: 2013 09 10_c++_lecture_01

Средства разработки• Автоматизация сборки: 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

Page 10: 2013 09 10_c++_lecture_01

Пример IDE – Qt Creator

С++ Basics. Valery Lesin, 2013

Page 11: 2013 09 10_c++_lecture_01

Выполнение программы

• Программа – последовательное

выполнение инструкций

• «Точка входа» в С++ -программу:

С++ Basics. Valery Lesin, 2013

1.

2.

3.

4.

int main()

{

return 0;

}

Page 12: 2013 09 10_c++_lecture_01

Та самая программа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!

Page 13: 2013 09 10_c++_lecture_01

Объявление переменных

С++ 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;

}

Page 14: 2013 09 10_c++_lecture_01

Условия, циклы

С++ 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;

}

Page 15: 2013 09 10_c++_lecture_01

Функции

С++ 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;

}

Page 16: 2013 09 10_c++_lecture_01

Простейший ввод/вывод

С++ 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

Page 17: 2013 09 10_c++_lecture_01

Вопросы?

С++ Basics. Valery Lesin, 2013