841.10K
Category: programmingprogramming

Основы языка С++. Парадигмы программирования

1.

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ
ПРОГРАММИРОВАНИЕ
Тема 1.
Введение.
Основы языка С++.

2.

Парадигмы программирования
Парадигма программирования (англ. programming paradigm) –
это система идей и понятий, определяющих стиль написания
компьютерных
программ.
Это
способ
концептуализации,
определяющий организацию вычислений и структурирование
работы, выполняемой компьютером.
Императивное (процедурное) программирование
Функциональное программирование
Логическое программирование
Объектно-ориентированное программирование

3.

Императивное программирование
Императивное
программирование
(англ.
imperative
programming) – это парадигма программирования, согласно
которой программа описывает процесс вычисления в виде
инструкций,
изменяющих
ее
состояние.
Фактически,
программа представляет собой последовательность команд,
которые должен выполнить компьютер.
Языки: С, Pascal, Basic, …
Программа: statement1;
statement2;
statement3;
...
statementN;

4.

Функциональное программирование
Функциональное программирование (англ. functional
programming) – это парадигма программирования, в которой
процесс вычисления трактуется как вычисление значений
функций в математическом понимании последних. Ключевым
отличием математических функций от функций императивных
языков является отсутствие у первых побочных эффектов.
Языки: LISP, Haskell, Erlang …
Программа: output = f1(f2(f3...fN(input)...))

5.

Логическое программирование
Логическое программирование (англ. logic programming) – парадигма
программирования, основанная на автоматическом доказательстве
теорем. Логическое программирование основано на теории и аппарате
математической логики с использованием математических принципов
резолюций.
Языки: Prolog, CLIPS, …
Программа:
parent(P, C) :- child(C, P).
mother(P, C) :- parent(P, C) and female(P).
father(P, C) :- parent(P, C) and male(P).
female(Mary).
child(John, Mary).
? mother(X, John).

6.

Объектно-ориентированное программирование
Объектно-ориентированное программирование
(англ. object-oriented programming) – парадигма
программирования,
в
которой
основными
концепциями являются понятия объектов и классов.
Языки: С++, C#, Java, …
Программа: Obj2.message1;
Obj3.message2;
...
ObjN-1.messageN;

7.

Литература
Б. Страуструп
Язык программирования C++.
С. Б. Липпман, Ж. Лажойе, Б. Му
Язык программирования С++. Вводный курс.

8.

Программные пакеты
Microsoft Visual Studio 2017 Community Edition
https://www.visualstudio.com/ru-ru/products/visual-studio-community-vs.aspx

9.

История создания С++
Начало 1980-х – первая версия языка С++
Автор – Бьерн Страуструп, Bell Labs
Концепции, положенные в основу С++
Улучшенный С
Должен поддерживать абстракцию данных
Должен поддерживать объектно-ориентированное программирование
Стандарты языка
С++98
С++11
С++14
С++17

10.

С++ 11
-
поддержка новых типов данных (например, long long)
range-based for ( for (auto &a: arr) {} )
синтаксический «сахар» (auto, nullptr)
многопоточность
умные указатели
лямбда-выражения
поддержка семантики перемещений
С++ 14 – расширение С++ 11
-
двоичные литералы (10b)
разделители разрядов ( 1’000’000)
улучшенная библиотека поддержки многопоточности
улучшенная поддержка лямбда-выражений
улучшенная поддержка «умных» указателей

11.

С++ 17
- библиотека файловой системы (filesystem)
- параллельные версии алгоритмов STL
- удалены конструкции, запрещенные в предыдущих стандартах
(например, random_shuffle)
- изменения в конструкциях шаблонов
- улучшение ряда модулей STL
С++ 20 - ожидается
-
низкоуровневые концептуальные изменения
изменения в лямбда-выражениях
расширения и изменения future-объектов

12.

Современный С++
Универсальный и эффективный язык программирования
Поддерживает
множество
стилей
программирования
(процедурное, объектно-ориентированное, обобщенное)
Совместим с С
Кроссплатформенный
Предоставляет программисту большую свободу выбора
Включает стандартную библиотеку
множеством возможностей
шаблонов
(STL)
со

13.

Структура программы на С++

14.

Пространства имен
Пространство имен — это декларативная область, в рамках которой
определяются различные идентификаторы (имена типов, функций,
переменных и т. д.).Пространства имен используются для организации
кода в виде логических групп и во избежание конфликтов имен.

15.

Консольный ввод-вывод в С++

16.

Файловый ввод-вывод в С++

17.

Работа с памятью в С++
Выделение/освобождение
памяти под один элемент
Выделение/освобождение
памяти под несколько элементов
int main() {
#include <ctime>
int *a = nullptr;
a = new int;
*a = 10;
delete a;
return 0;
int main() {
srand(time(nullptr));
int
*a = nullptr,
n = 10;
a = new int[10];
}
for (int i = 0; i < n; ++i)
a[i] = rand() % 100;
delete [] a;
return 0;
}
English     Русский Rules