Lecture1-CPP.ppt
- Количество слайдов: 37
Предмет та задачі курсу. Основні поняття С++. Проф. Куссуль Н. М. 1
Предмет и задачи курса Предмет курса n изучение базовых принципов программирования на примере языка С++ (объектноориентированный подход в следующем разделе). Область применения С++ n разработка программ самого широкого назначения (от системных низкоуровневых, до сложных приложений с применением объектноориентированного программирования – ООП). Программирование n наиболее формализованный этап разработки программного обеспечения. 2
Этапы разработки программного обеспечения 1. Постановка задачи 2. Метод решения (выбор метода решения) 3. Определение алгоритмов и структур данных 4. Программирование 5. Сопровождение (поддержка) Программирование - это искусство, а не ремесло! 3
Покоління мов програмування 1. 1 GL (1954 -1958) Fortran 1, Algol 18 — математичні формули; 2. 2 GL (1959 -1961) Fortran 2, Algol 60, Cobol, Lisp — підпрограми, окрема компіляція, робота з файлами; 3. 3 GL (1962– 197 х) PL/1, Algol 68, Pascal (простіший послідовник Аlgol 60), Simula (класи) – абстрактні типи даних; 1972 –мова С 4. 4 GL — ООП Smalltalk (послідовник Simula), Ada, C++. 4
Покоління мов програмування 1 GL 2 GL 3 GL (транзистори) 4 GL ("много званных, да мало избранных") Орієнтування на математичні додатки Розвиток алгоритмічних абстракцій Абстрактні типи Об’єктноданих орієнтовані мови Область даних відкрита усім підпрограмам 1. Механізми передачі параметрів 2. Структурне програмування (вкладеність підпрограм) 3. Підпрограми — це будівельні блоки Окрема компіляція модулів (можуть бути неузгоджені) Модулі складаються із логічно пов’язаних класів та об’єктів 5
Язык программирования С++ Язык С – 1972 г. , автор Деннис Ритчи С++ появился в 1980 г. – автор Бьерн Страуструп Основное предназначение С++ n сделать написание хороших программ более простым и приятным для программиста. Его основные особенности n n совместимость с языком С более строгая типизация реализация принципов ООП и классов С++ является гибридным языком w поддерживает как структурное программирование, так и объектно-ориентированное 6
История развития С++ Исторический этап развития[5] Язык BCPL Год 1966 Язык Би (разработка Томпсона под UNIX) 1969 Язык Си (добавление Ритчи типа и упр. структур в Би) 1973 Си с классами C 841984 Cfront (выпуск E) Cfront (выпуск 1. 0) Появление множественного/виртуального наследования Обобщенное программирование (шаблоны) 1991 ANSI C++ / ISO-C++ Стандарт ISO/IEC 14882: 2003 (Действующий) C++/CLI (динамические компоненты) Стандарт С++0 х (С++11) 1979 1984 1985 1988 1996 2003 2005 2011?
Преимущества С++ используется на многих платформах не является чисто объектным, следовательно позволяет выбирать средства решения, адекватные для конкретной задачи более строго типизирован, то есть более безопасен 8
Преимущества С++ вместо директивы #define используются следующие ключевые слова: n n inline const нововведения: n n new, delete (операторы выделения и освобождения памяти) библиотека iostream. h (работа с потоковым вводом/выводом) настолько популярен, что используется в качестве средства разработки в других языках программирования 9
Стандарт С++ ANSI С++ (ANSI - Американский национальный институт по стандартизации) n С++ с незначительными расширениями, поддерживающийся всеми аппаратными и программными платформами 10
Загальні поняття. Загальна структура програми. 11
Загальні поняття Мова C++ n це блочно-структурована мова, змінні, що оголошуються всередині блоку, автоматично розподіляються після входу в блок Програма на С++ n це набір функцій та їх реалізацій (у термінах С++) Функція n це іменована частина програми, до якої можна звертатися з інших частин програми стільки разів, скільки буде потрібно 12
Відмінності C++ від мови С у коментарях у заміні макровизначення #define на специфікатори inline та const при введенні/виведенні, замість функцій printf() та scanf() використовуються стандартні потоки cin та cout 13
Приклад Проста програма, реалізована мовою С++ # include
Складові елементи С++ Ключові слова Типи даних Оператори 15
Особливості мови С++ Введення та виведення здійснюються за допомогою зовнішньої бібліотеки
Особливості мови С++ Для обробки директив використовується препроцесор – ключове слово #include Файли - це модулі, вони можуть бути відкомпільовані окремо Файл із головною програмою та всі інші файли мають розширення. c для С и. срр для С++ n у UNIX C++ програми мають розширення . с 17
Особливості мови С++ Функція main() – початкова точка виконання програми, при оголошенні функції в дужках приводиться список параметрів Тіло будь-якої функції визначається у фігурних дужках { … } 18
Особливості мови С++ В С++ оголошення змінних можна зробити в будь-якому місці програми /*. . . */ long int a; void main() { float b; /* …*/ } 19
Особливості мови С++ Модифікатор const у C++ дозволяє задавати іменовані константи n n в С: #define p -5. 5 в С++: const float p = -5. 5 Будь-який оператор завершується ; n n ; є частиною оператора, а не розділяє оператори, як в Паскалі cout << “Hello”; В С++ всі змінні повинні бути оголошені В залежності від місця оголошення визначається область видимості змінної або константи Змінні бувають локальні, тобто всередині блоку, і глобальні, зовні функції, блоку або файлу 20
Гарний стиль програмування полягає в наступному 1. Використання коментарів 2. Вибір імен (осмислені імена) 3. Пробіли 4. Один оператор у рядку 21
Література "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.
Лексичні поняття мови С++ 23
Основні поняття В тексті на будь-якій мові можна виділити чотири основних елементи n символи, слова, словосполучення і речення В C++ n n n слова = лексеми словосполучення = вирази пропозиції = оператори Лексеми утворяться із символів, вирази — з лексем і символів, оператори — із символів, виразів і лексем 24
Алфавіт С++ Алфавіт мови (його символи) n це основні неподільні знаки, за допомогою яких пишуться всі тексти мовою 25
Алфавіт С++ рядкові і прописні букви латинського алфавіту та символ ‘_’ (будемо називати буквами) n _a-z. A-Z цифри (назвемо їх літерами-цифрами) n 0 -9 набір спеціальних символів: " { } , | [ ] ( ) + - / % * . ' : ? < = > ! & # ~ ; ^ 26
Лексеми Лексема n n мінімальна одиниця мови, що має самостійний зміст складається із символів алфавіту, що розпізнаються компілятором Наприклад, оператор do - це лексема n Зустрічаючи цю лексему, компілятор знає, який машинний код потрібно підставляти замість неї В C++ розрізняють п'ять типів лексем n n n ідентифікатори ключові слова знаки операцій літерали (константи) роздільники 27
Лексеми зазвичай розділяються наступними знаками n n Табуляція Пробіл Переклад рядка Коментарі 28
Коментарі в С: /* блок тексту в декілька рядків коментарів */ в С++: // один рядок коментарів Коментарі не обробляються компілятором # include
Ідентифікатори Ідентифікатор n це послідовність букв, цифр і символів підкреслення. Властивості ідентифікаторів n n n букви верхнього та нижнього регістрів є різними ідентифікатор не може починатися з цифри довжина може бути будь-якою, але багато систем розпізнають тільки 31 символ (у мові С - 8 символів) 30
Ідентифікатори Приклади n n n n // чисельна змінна number // осмислене ім'я buff. Size // стиль об’єктно-орієнтированного програмування q 243 // складно для розуміння cout // використовується в iostream. h _my // обережно, з підкреслення часто починаються системні ідентифікатори for, 3 q, сount // невірно Ідентифікатори з подвійним символом підкреслення зарезервовані для системних цілей n __sys ident і sys__ident 31
Ключові слова n n зарезервовані ідентифікатори, що мають у С++ фіксований зміст мають спеціальне значення для компілятора 32
Ключові слова Список ключових слів 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 33
Знак операції n n n це один або декілька символів, що визначають дію над операндами всередині знака операції пробіли не допускаються операції поділяються на унарні, бінарні та тернарні за кількості задіяних у них операндів той самий знак може інтерпретуватися порізному в залежності від контексту Всі знаки операцій ― це окремі лексеми. Винятки: «[ ]» , «( )» та «? : » . 34
Літерали (константи) n це постійні значення Розрізняють наступні літерали вбудованих типів С++ n символи w 'ю', '*', 'b', ' ', 'n' n цілі числа w 8, 0, 19922, 0 x 1 B 8 n дійсні числа w 5. 7, . 001, 35. n n вказівники допускаються рядкові константи w "Тут був Petro" 35
Літерали Рядкові літерали в подвійних лапках зберігаються у вигляді послідовністі символів, що закінчуються символом NULL зі значенням 0. Рядкові константи немодифікуються. Всередині рядків можуть знаходитися спеціальні символи, виділені символом "". Символ зворотного слеша "" використовується для представлення: n кодів, що не мають графічного зображення w a — звуковий сигнал w n — розміщення курсору на початок наступного рядка n n символів апострофа ( ' ), зворотного слеша ( ), знака питання ( ? ) та одвійних лапок ( " ); будь-якого символу за допомогою його шістнадцяткового або вісімкового коду, наприклад, 73, x 5. Числове значення повинне знаходитися в діапазоні від 0 до 255. 36
Роздільники Знаки операцій, розділові знаки і пробіли служать для поділу літералів один від іншого Розділові знаки: "()"; "{}"; ", "; ": " Використовуються для структурування елементів програми 37