Предмет і завдання курсу. Основні поняття...

42
1 Проф. Куссуль Н.М. Предмет і завдання курсу. Основні поняття С++.

Upload: others

Post on 25-May-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

1

Проф. Куссуль Н.М.

Предмет і завдання курсу. Основні поняття С++.

Page 2: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

2

Предмет і завдання курсу Предмет курсу вивчення базових принципів програмування на

прикладі мови С++ (структурний підхід в цьому семестрі, об’єктно-орієнтований підхід - в наступному семестрі).

Область застосування С++ розробка програм широкого призначення (від

системних низькорівневих, до складних додатків на основі об’єктно-орієнтованого програмування – ООП).

Программирование Найбільш формалізований етап розробки

програмного забезпечення.

Page 3: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

3

Етапи розробки програмного забезпечення

1. Постановка задачі

2. Метод розв’язання (вибір методу)

3. Визначення алгоритмів та структур даних

4. Програмування (кодування)

5. Супровід (підтримка)

Програмування - это мистецтво, а не ремесло!

Page 4: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

4

Покоління мов програмування 1. 1GL (1954-1958)

Fortran1, Algol18 — математичні формули; 2. 2GL (1959-1961)

Fortran2, Algol60, Cobol, Lisp — підпрограми, окрема компіляція, робота з файлами;

3. 3GL (1962–197х) PL/1, Algol68, Pascal (простіший послідовник Аlgol60), Simula (класи) – абстрактні типи даних; 1972 –мова С

4. 4GL — ООП Smalltalk (послідовник Simula), Ada, C++.

Page 5: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

5

Покоління мов програмування 1GL 2GL 3GL

(транзистори) 4GL ("много званных, да мало избранных")

Орієнтування на математичні додатки

Розвиток алгоритмічних абстракцій

Абстрактні типи даних

Об’єктно-орієнтовані мови

Область даних відкрита усім підпрограмам

1. Механізми передачі параметрів 2. Структурне програмування (вкладеність підпрограм) 3. Підпрограми — це будівельні блоки

Окрема компіляція модулів (можуть бути неузгоджені)

Модулі складаються із логічно пов’язаних класів та об’єктів

Page 6: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

6

Трошки статистики для України, Росіі, світу.

Page 7: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

Основні мови розробки - січень, 2014 (dou.ua, 92% опитуваних живуть в Україні)

Page 8: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

«Популярные языки программирования» 18 февраля 2013 http://potapov.com.ua/

Дані сайтів StackExchange та Github

«В 2010 Drew Conway и John Myles White пришла в голову идея составить рейтинг популярности языков программирования, используя число проектов в Github и число вопросов в StackOverflow по конкретному языку - результаты этих двух источников были очень тесно связаны. На графике ниже представлены данные, собранные со StackExchange и Github за февраль 2012.»

«В защиту этого метода, можно сказать, что он удачен тем, что использует два различных источника данных и отражает то, что разработчики решают использовать в своих проектах.»

Page 9: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

«Популярные языки программирования» 18 февраля 2013 http://potapov.com.ua/

Page 11: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

“Сравнение российских работодателей по Москве с данными индекса TIOBE” : http://habrahabr.ru, Head Hunter)

Page 12: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

12

Що ми будемо вивчати?

Page 13: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

13

Мова програмування С++ Мова С – 1972 г., автор Денніс Рітчи С++ з’явився в 1980 г. – автор Б’єрн Страуструп Основне призначення С++ (порівняно з С) Зробити написання хороших програм більш

простим та зручним для програміста. Основні властивості сумісність з мовою С більш строга типізація реалізація принципів ООП и класів С++ є гібридною мовою

підтримує як структурне програмування, так і об’єктно-орієнтоване

Page 14: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

История развития С++ Исторический этап развития[5] Год Язык BCPL 1966 Язык Би (разработка Томпсона под UNIX) 1969 Язык Си (добавление Ритчи типа и упр. структур в Би) 1973 Си с классами 1979 C841984Cfront (выпуск E) 1984 Cfront (выпуск 1.0) 1985 Появление множественного/виртуального наследования 1988 Обобщенное программирование (шаблоны) 1991 ANSI C++ / ISO-C++ 1996 Стандарт ISO/IEC 14882:2003 2003 C++/CLI (динамические компоненты) 2005 Стандарт С++0х (С++11) 2011

Page 15: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

15

Преимущества С++ используется на многих платформах

не является чисто объектным, следовательно позволяет выбирать средства решения, адекватные для конкретной задачи

строго типизирован, то есть безопасен

настолько популярен, что используется в качестве средства разработки в других языках программирования

Page 16: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

16

Отличия С++ от С вместо директивы #define используются следующие ключевые слова: inline const нововведения: new, delete (операторы выделения и

освобождения памяти) библиотека iostream.h (работа с

потоковым вводом/выводом)

Page 17: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

17

Загальні поняття. Загальна структура програми.

Page 18: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

18

Загальні поняття Мова C++ це блочно-структурована мова, змінні, що

оголошуються всередині блоку, автоматично розподіляються після входу в блок

Програма на С++ це набір функцій та їх реалізацій (у термінах

С++) Функція це іменована частина програми, до якої можна

звертатися з інших частин програми стільки разів, скільки буде потрібно

Page 19: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

19

Відмінності C++ від мови С

у коментарях

у заміні макровизначення #define на специфікатори inline та const

при введенні/виведенні, замість функцій printf() та scanf() використовуються стандартні потоки cin та cout

Page 20: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

20

Приклад Проста програма, реалізована мовою С++

# include <iostream.h> int main() {

const int num = 1; // іменована константа

cout <<“перше число” << num;

} Проста програма, реалізована мовою С

# include <stdio.h> main (){

int num; /*локальна змінна*/

num = 1;

printf(“перше число %d”, num); }

Page 21: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

21

Особливості мови С++ (обговорення прикладу)

Введення та виведення здійснюються за допомогою зовнішньої бібліотеки <iostream.h>

#include <iostream.h>

void main()

{

int a;

cin >> a;

cout << “Ви ввели число” << a;

}

Page 22: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

22

Особливості мови С++ (обговорення прикладу)

Для обробки директив використовується препроцесор – ключове слово #include

Файли - це модулі, вони можуть бути відкомпільовані окремо

Файл із головною програмою та всі інші файли мають розширення .c для С и .срр для С++ у UNIX C++ програми мають розширення

Page 23: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

23

Особливості мови С++ (обговорення прикладу)

Функція main() – початкова точка виконання програми, при оголошенні функції в дужках приводиться список параметрів

Тіло будь-якої функції визначається у фігурних дужках { … }

Page 24: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

24

Особливості мови С++ (обговорення прикладу)

В С++ всі змінні повинні бути оголошені

В залежності від місця оголошення визначається область видимості змінної або константи

Змінні бувають локальні, тобто всередині блоку, і глобальні, зовні функції, блоку або файлу

/* ... */

long int a; int main() { float b; /* …*/ }

Page 25: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

25

Особливості мови С++ (обговорення прикладу)

Модифікатор const у C++ дозволяє задавати іменовані константи

в С: #define p -5.5 в С++: const float p = -5.5

Будь-який оператор завершується ;

; є частиною оператора, а не розділяє оператори, як в Паскалі

cout << “Hello”;

Page 26: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

26

Гарний стиль програмування полягає в наступному

1. Використання коментарів

2. Вибір імен (осмислені імена)

3. Пробіли

4. Один оператор у рядку

Page 27: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

Література

"Thinking in C++" - это сборник из двух томов, Автор Bruce Eckel (Брюс Эккель). Отзыв об этих книгах: "I fell in love with C++ reading those books". "Философия C++. Введение в стандартный C++." "Философия C++. Практическое программирование." ( второй том)

"Язык программирования C++. Вводный курс", Стенли Липпман, Жози Лажойе В русском переводе название не очень запоминающееся, но это тот самый C++ Primer. Рекомендуется как очень полная вводная книга. Я так понимаю, несколько загрузочная. "Язык программирования C++. Вводный курс" на Ozon.ru

"Основы программирования на С++. Том 1", Стенли Липпман Изначальное название этой книги Essential C++. Краткий и сравнительно легкий курс введения в С++. Иногда ее предлагают прочесть перед C++ Primer.

Page 28: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

28

Лексичні поняття мови С++

Page 29: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

29

Основні поняття В тексті на будь-якій мові можна виділити чотири основних елементи

символи, слова, словосполучення і речення

В C++

слова = лексеми словосполучення = вирази речення = оператори

Лексеми утворюються із символів, вирази — з лексем і символів, оператори — із символів, виразів і лексем

Page 30: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

30

Алфавіт С++

Алфавіт мови (його символи) це основні неподільні знаки, за

допомогою яких пишуться всі тексти мовою

Page 31: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

31

Алфавіт С++

рядкові і прописні букви латинського алфавіту та символ ‘_’ (будемо називати буквами)

_a-zA-Z

цифри (назвемо їх літерами-цифрами)

0-9

набір спеціальних символів:

" { } , | [ ] ( ) + - / % * . \ ' : ? < = > ! & # ~ ; ^

Page 32: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

32

Лексеми Лексема мінімальна одиниця мови, що має самостійний зміст складається із символів алфавіту, що розпізнаються

компілятором Наприклад, оператор do - це лексема Зустрічаючи цю лексему, компілятор знає, який машинний

код потрібно підставляти замість неї В C++ розрізняють п'ять типів лексем ідентифікатори ключові слова знаки операцій літерали (константи) роздільники

Page 33: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

33

Лексеми

Лексеми зазвичай розділяються наступними знаками Табуляція Пробіл Переведення рядка Коментарі

Page 34: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

34

Коментарі

в С: /* блок тексту в декілька рядків коментарів */

в С++: // один рядок коментарів

Коментарі не обробляються компілятором

# include <stdio.h> /* стандартна бібліотека введення/виводу в С */

# include <iostream.h> // потоковий

// введення/виведення в С++

Page 35: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

35

Ідентифікатори Ідентифікатор (ім’я змінної або функціі) - це послідовність букв, цифр і символів

підкреслення. Властивості ідентифікаторів букви верхнього та нижнього регістрів є різними ідентифікатор не може починатися з цифри довжина може бути будь-якою, але багато

систем розпізнають тільки 31 символ (у мові С - 8 символів)

Page 36: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

36

Ідентифікатори Приклади n // чисельна змінна number // осмислене ім'я buffSize // стиль об’єктно-орієнтированного

програмування q243 // складно для розуміння cout // використовується в iostream.h _my // обережно, з підкреслення часто

починаються системні ідентифікатори for, 3q, сount // невірно

Ідентифікатори з подвійним символом підкреслення зарезервовані для системних цілей __sys ident і sys__ident

Page 37: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

37

Ключові слова

Ключові слова - зарезервовані ідентифікатори, що мають

у С++ фіксований зміст мають спеціальне значення для

компілятора

До ключових слів належать: Типи даних Модифікатори Оператори

Page 38: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

38

Ключові слова Список ключових слів C++

asm else new this

auto enum operator throw

bool explicit private true

break export protected try

case extern public typedef

catch false register typeid

char float reinterpret_cast typename

class for return union

const friend short unsigned

const_cast goto signed using

continue if sizeof virtual

default inline static void

delete int static_cast volatile

do long struct wchar_t

double mutable switch while

dynamic_cast namespace template

Page 39: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

39

Знак операції Знак операції це один або декілька символів, що визначають

дію над операндами всередині знака операції пробіли не

допускаються операції поділяються на унарні, бінарні та

тернарні за кількості задіяних у них операндів той самий знак може інтерпретуватися по-

різному в залежності від контексту Всі знаки операцій ― це окремі лексеми.

Винятки: «[ ]», «( )» та «? :».

Page 40: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

40

Літерали Літерали – це константи це постійні значення

Розрізняють наступні літерали вбудованих типів С++ символи

'ю', '*', 'b', '\0', '\n' цілі числа

8, 0, 19922, 0x1B8 дійсні числа

5.7, .001, 35. вказівники допускаються рядкові константи

"Тут був Petro"

Page 41: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

41

Літерали Рядкові літерали в подвійних лапках зберігаються у вигляді послідовністі символів, що закінчуються символом NULL зі значенням 0. Рядкові константи немодифікуються. Всередині рядків можуть знаходитися спеціальні символи, виділені символом "\". Символ зворотного слеша "\" використовується для представлення: кодів, що не мають графічного зображення

\a — звуковий сигнал \n — розміщення курсору на початок наступного рядка

символів апострофа ( ' ), зворотного слеша ( \ ), знака питання ( ? ) та одвійних лапок ( " );

будь-якого символу за допомогою його шістнадцяткового або вісімкового коду, наприклад, \073, \0x5. Числове значення повинне знаходитися в діапазоні від 0 до 255.

Page 42: Предмет і завдання курсу. Основні поняття С++.4kpi.ikd.kiev.ua/wp-content/uploads/downloads/2014/... · 2010 Python 2009 Go 2008 C 2007 Python

42

Роздільники

Знаки операцій, розділові знаки і пробіли служать для відділення лексем

Розділові знаки: "()";"{}";",";":"

Використовуються для структурування елементів програми