Similar presentations:
Основы языка С++. Парадигмы программирования
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;
}