C++, C++/CLI
Теорія
- I. Базовий курс C++
- 1. Загальні відомості про мову C++
- 2. Основні складові C++
- 2.1. Основні (базові) типи даних C++
- 2.2. Ідентифікатори, зарезервовані слова, літерали, управляючі послідовності
- 2.3. Поняття змінної. Оголошення змінної. Операція розширення області видимості :: . Виділення пам’яті для змінної. Константи
- 2.4. Поняття виразу. Операція присвоєння. Перетворення та приведення типів. Ініціалізація. Уніфікована ініціалізація
- 2.5. Специфікатор constexpr. Відмінності специфікатора constexpr від const. Приклади
- 3. Операції
- 4. Управляючі оператори
- 5. Масиви і рядки символів
- 6. Класи для роботи з рядками символів
- 7. Покажчики. Посилання
- 7.1. Загальні поняття. Типи покажчиків. Керовані та некеровані покажчики. Покажчик на функцію. Приклади використання
- 7.2. Некеровані покажчики. Операції над покажчиками. Покажчик на тип void. Виділення пам’яті. Ключові слова NULL та nullptr. Операція взяття адреси &
- 7.3. Некеровані покажчики і масиви. Покажчик на структуру. Покажчик на клас
- 7.4. Покажчики і рядки символів. Використання покажчиків при перетворенні і конвертуванні рядків (char, string, wchar_t, System::String)
- 7.5. Виділення пам’яті для покажчика. Масиви покажчиків на базові типи, функції, структури, класи
- 7.6. Складені native та managed типи даних. Керовані покажчики (^) в середовищі CLR. Виділення пам’яті. Кваліфікатори ref та value. Керовані покажчики (^) на структури, класи
- 7.7. Посилання (references). Посилання на змінні, структури, об’єднання та об’єкти класів. Відмінності між посиланнями та покажчиками. Приклади
- 8. Функції
- 8.2. Функції і масиви. Передача одновимірного та багатовимірного масиву в функцію. Передача структури і класу в функцію
- 8.3. Аргументи за замовчуванням у функціях
- 8.4. Перевантаження функцій у класах. Перевантаження конструкторів. Доступ до перевантаженої функції за покажчиком. Приклади
- 8.5. Передача у функцію константних параметрів. Повернення функцією константи
- 8.6. Узагальнення в функціях. Шаблонні функції. Ключові слова template, class, typename. Явне “перевантаження” шаблонної функції
- 8.7. Рекурсія. Приклади розв’язку задач. Переваги та недоліки рекурсії
- 9. Структури. Об’єднання. Зчислення
- 9.3. Робота з managed-структурами в середовищі CLR. Кваліфікатори ref і value. Оголошення структурних змінних. Масиви managed-структурних змінних. Ініціалізація managed-структур
- 9.4. Структури і функції. Передача структури в функцію в середовищі CLR. Повернення структури з функції
- 9.5. Структури. Використання методів у структурах. Конструктори в структурах
- 9.6. Структури і спадковість. Структури і поліморфізм. Абстрактна структура. Перевантаження операторів у структурах. Статичні методи в структурах
- 9.7. Об’єднання. Ключове слово union. Приклади використання об’єднань
- 9.8. Зчислення. Ключове слово enum. Переваги використання зчислень. Приклади
- 9.9. Бітові поля в структурах. Приклади
- 10. Динамічне виділення пам’яті
- 11. Препроцесор. Директиви препроцесора
- II. Об’єктно-орієнтоване програмування на C++
- 2. Класи
- 2.1. Поняття класу. Оголошення класу. Об’єкт класу. Класи в середовищі CLR. Інкапсуляція даних в класі
- 2.2. Спеціальні функції класу
- 2.2.1. Конструктор класу. Конструктор за замовчуванням. Параметризовані конструктори. Приклади класів, що містять конструктори
- 2.2.2. Конструктор копіювання. Приклади використання. Передача об’єкту класу в функцію. Повернення об’єкту класу з функції
- 2.2.3. Деструктори. Визначення деструктора. Загальнодоступні та приватні деструктори. Приклади. Відмінності між конструкторами та деструкторами
- 2.2.4. Задавання методів за замовчуванням. Видалені методи. Ключові слова default, delete
- 2.2.5. Конструктор переносу. Оператор переносу
- 2.3. Члени даних класу
- 2.3.1. Використання членів даних класу. Статичні (static) члени даних в класі. Статичні члени даних для native-класів та managed-класів в середовищі CLR
- 2.3.2. Об’єкти класу як члени даних класу. Ініціалізація внутрішнього об’єкту класу з допомогою конструктора. Приклади
- 2.3.3. Посилання на об’єкт класу. Доступ до об’єкту класу за посиланням. Посилання як члени даних класу. Приклади
- 2.4. Функції-члени класу
- 2.4.1. Види функцій-членів класу. Звичайні функції-члени класу. Статичні (static) функції-члени класу. Приклади використання
- 2.4.2. Константні функції-члени класу. Функції-члени volatile
- 2.4.3. Функції-члени класу, що оголошені з константним (const) покажчиком this та непостійним (volatile) покажчиком this
- 2.4.4.Inline функції-члени класу. Ключове слово inline
- 2.5. Інкапсуляція
- 2.6. Класи пам’яті, що можуть оголошуватись при роботі з класами та об’єктами класів. Ключові слова register, extern, static, mutable
- 2.7. Managed та unmanaged класи у Visual C++. Огляд відмінностей роботи. Приклад реалізації managed та unmanaged класів
- 2.8. “Друзі класу”. “Дружні” класи та функції. Ключове слово friend. Приклади
- 2.9. Шаблони класів
- 2.10. Класи і масиви
- 2.10.1. Масиви об’єктів в unmanaged та managed класах. Приклади. Масив unmanaged–покажчиків на об’єкт класу
- 2.10.2. Ініціалізація масивів значеннями даних з об’єктів класу. Приклади
- 2.10.3. Масиви покажчиків на методи, що є членами класу. Приклади
- 2.10.4. Покажчик на статичний член даних класу. Масиви статичних членів даних. Масиви покажчиків на статичні члени даних класу. Приклади
- 2.11. Поняття побітового копіювання. Приклад. Необхідність використання конструктора копіювання та оператора копіювання для класів, в яких пам’ять виділяється динамічно
- 4. Перевантаження операторів
- 4.1. Перевантаження операторів у C++. Операторна функція. Ключове слово operator. Перевантаження арифметичних операторів +, –, *, /. Приклади реалізації вбудованих операторних функцій
- 4.2. “Дружні” операторні функції: відмінності, реалізація особливості застосування. Перевантаження операторів +, –, *, / з допомогою “дружніх” операторних функцій
- 4.3. Клас DoubleArray. Перевантаження оператора +. Додавання масивів. Динамічне виділення пам’яті у класі. Конструктор копіювання. Недоліки побітового копіювання
- 4.4. Перевантаження інкрементних та декрементних операторів ++, – –. Приклади
- 4.5. Перевантаження скорочених операторів присвоювання +=, -=, *=, /=, %=. Приклади
- 4.6. Перевантаження операторів new та delete. Приклади
- 4.7. Перевантаження оператору присвоювання =. Приклади
- 4.8. Перевантаження оператора індексування елементів масиву [ ]
- 4.9. Перевантаження оператора ( ) виклику функції. Приклади
- 4.10. Перевантаження операторів -> та ‘ , ‘ (кома). Приклади
- 5. Агрегація, композиція, спадковість, поліморфізм, абстрактнікласи
- 5.1. Відношення між класами. Типи відношень між класами is-a, has-a. Агрегація. Композиція. Спадковість
- 5.2. Спадковість
- 5.2.1. Спадковість. Загальні поняття. Використання модифікаторів private, protected, public при успадкуванні
- 5.2.2. Порядок виклику конструкторів при спадковості. Обмеження спадковості. Властивості покажчика на базовий клас
- 5.2.3. Множинна спадковість. Дублювання класу та його даних. Проблема ромба
- 5.2.4. Успадкування шаблонних класів. Додавання нового типу в успадкованих класах
- 5.3. Поліморфізм. Віртуальні функції. Загальні поняття. специфікатори virtual, override. Приклади
- 5.4. Абстрактний клас. Чисто віртуальна функція. Ключове слово abstract. Приклади
- 5.5. Обмеження віртуальних функцій. Специфікатор final
- 6. Виключення (exceptions)
- 7. Простори імен. Ключові слова namespace, using. Правила створення просторів імен. Глобальний простір імен
- 9. Динамічна ідентифікація типів. Розумні покажчики
- 10. Файлова система
- 10.1. Файлова система. Загальні принципи роботи. Відкриття закриття файлу. Приклади
- 10.2. Приклади використання засобів C++ для роботи з файлами
- 10.3. Приклади роботи з текстовими файлами. Модифікація файлів. Сортування даних у файлах. Конвертування рядків файлу в масив. Заміна/видалення рядка у файлі. Вставка рядка у файлі
- 10.4. Приклади збереження/читання об’єктів класу. Серіалізація
- 11. Динамічні структури даних
- 11.1. Стек. Способи реалізації. Операції над стеком. Приклад реалізації стеку у вигляді динамічного масиву
- 11.2. Черга. Способи реалізації черги. Представлення черги у вигляді динамічного масиву
- 11.3. Черга з пріоритетами. Приклад реалізації черги з пріоритетами для шаблонного класу. Представлення у вигляді динамічного масиву
- 11.4. Кільцева черга. Розробка шаблонного класу, що реалізує кільцеву чергу
- 11.5. Розробка шаблонного класу, що реалізує стек у вигляді однозв’язного списку
- 11.6. Лінійний однозв’язний список. Загальні відомості. Базові операції над списком
- 11.7. Приклад реалізації лінійного однозв’язного списку для узагальненого типу T
- 11.8. Лінійний двозв’язний список. Загальні відомості. Базові операції над списком
- 11.9. Лінійний двозв’язний список. Приклад шаблонного класу
- 11.10. Реалізація стеку як однозв’язного списку
- 11.11. Бінарне дерево пошуку
- 2. Класи
- III. Бібліотека стандартних функцій і класів C++
- IV. Приклади розробки класів
- 1. Розробка класу, що реалізує масив рядків типу char*
- 2. Розробка класу Random для генерування випадкових чисел
- 3. Розробка шаблонного класу, що реалізує лінійний пошук в одновимірному масиві
- 4. Розробка класу, що реалізує алгоритм сортування вибором
- 5. Розробка класу що реалізує “розумний” покажчик
- V. Бібліотека стандартних шаблонів STL
- 1. Бібліотека STL (Standard Template Library). Загальні поняття. Контейнери. Алгоритми. Ітератори. Функтори
- 2. Контейнери
- 2.1. Клас vector. Динамічний масив
- 2.1.1. Загальні відомості про клас vector. Огляд методів. Створення масиву. Способи доступу до елементів вектору
- 2.1.2. Методи, що визначають та змінюють загальні характеристики масиву: size(), max_size(), capacity(), empty(), shrink_to_fit(), resize(), reserve()
- 2.1.3. Методи, що змінюють дані в масиві. Методи push_back(), pop_back(), clear(), swap(), operator=(), swap(), erase(), insert(), assign()
- 2.1.4. Методи, що забезпечують доступ до елементів масиву: at(), front(), back(), data(), begin(), end(), cbegin(), cend(), rbegin(), rend(), crbegin(), crend()
- 2.2. Клас map. Асоціативний контейнер
- 2.2.1. Створення контейнера. Конструктори. Створення пари. Огляд функцій та операторів класу
- 2.2.2. Методи, що забезпечують отримання інформації з контейнера: at(), begin(), end(), count(), empty(), find(), size(), max_size(), operator[]()
- 2.2.3. Методи, що змінюють дані в контейнері: clear(), erase(), insert(), swap(), operator=()
- 2.1. Клас vector. Динамічний масив
- 3. Алгоритми
- 3.1. Алгоритми для роботи з даними, що представлені за принципом “купи” (heap). Алгоритми make_heap, push_heap, pop_heap, sort_heap
- 3.2. Алгоритми визначення мінімуму і максимуму. Алгоритми min, min_element, max, max_element, lexicographical_compare
- 3.3. Алгоритми перестановок. Алгоритми next_permutation, prev_permutation
- 3.4. Немодифікуючі алгоритми. Пошук. Алгоритми find, find_if, find_first_of, find_end, adjanced_find, search, search_n
- 3.5. Немодифікуючі алгоритми. Алгоритми count, count_if, equal, equal_range, mismatch
- 3.6. Алгоритми для роботи з множинами. Алгоритми includes, set_union, set_intersection, set_difference, set_symmetric_difference
- 3.7. Модифікуючі алгоритми. Частина 1. Алгоритми, які змінюють значення елементів послідовності. Алгоритми for_each, transform, fill, fill_n, generate, generate_n
- 3.8. Модифікуючі алгоритми. Частина 2. Алгоритми обміну значеннями елементів послідовності. Алгоритми swap, swap_ranges, iter_swap
- 3.9. Модифікуючі алгоритми. Частина 3. Алгоритми, що виконують заміну елементів послідовності. Алгоритми replace, replace_if, replace_copy_if, replace_copy
- 3.10. Модифікуючі алгоритми. Частина 4. Алгоритми, що витягують з послідовності окремі елементи або групи елементів: remove, remove_if, remove_copy, remove_copy_if, unique, unique_copy
- 3.11. Модифікуючі алгоритми. Частина 5. Алгоритми, що обробляють послідовність в цілому не змінюючи значень елементів: copy, copy_backward, reverse, reverse_copy, rotate, rotate_copy, random_shuffle
Практика
Borland C++ Builder
- 001 – Створення Windows-додатку в Borland C++ Builder.
- 002 – Сортування даних в таблиці бази даних.
- 003 – Формування звіту типу Rave Report на основі таблиці Microsoft Access в C++ Builder.
- 004 – Підключення бази даних Microsoft Access до Windows-додатку.
- 005 – Приклад виведення таблиці бази даних в компоненті DBGrid в C++ Builder.
- 006 – Приклад програмування події в C++ Builder.
- 007 – Приклад розробки програми визначення об’єму циліндра в C++ Builder.
- 008 – C++ Builder. Приклад створення та виклику нової форми з головної форми програми
- 011 – C++ Builder. Розробка додатку розв’язування системи лінійних алгебраїчних рівнянь методом Гауса.
- 012 – Розробка програми рисування графіка функції однієї змінної. Функція задана формулою.
Microsoft Visual Studio 2010-2019
- 001 – Створення простого діалогового додатку Windows типу Dialog Based Application з використанням бібліотеки MFC.
- 002 – Приклад створення діалогового вікна в MS Visual Studio 2010 – C++ (MFC Application).
- 003 – Створення додатку типу Windows Forms Application в MS Visual Studio. Огляд основних файлів проекту.
- 004 – Приклад розробки найпростішого додатку типу Windows Forms на мові C++ в MS Visual Studio.
- 005 – Приклад розробки програми обчислення математичного виразу з перехопленням можливих виключних ситуацій. Використання інструкції try…throw…catch
- 006 – Приклад розробки додатку в якому для обчислення виразу використовується оператор умовного переходу if. Огляд основних властивостей форми
- 007 – Приклад використання оператора switch в програмі. Елемент управління ComboBox
- 008 – Демонстрація використання циклу for в програмі. Приклад обчислення суми ряду
- 009 – Розробка програми обчислення суми від’ємних елементів масиву. Використання елементу управління DataGridView
- 010 – Розробка програми обчислення виразу, що реалізований окремою функцією. Елемент управління PictureBox
- 011 – Приклад створення Unit-тесту в Microsoft Visual Studio
- 012 − Розв’язок задачі розміщення N ферзів на дошці розміром N×N. Курсова робота
- 013 – Контрольна робота. Додаток Console Application. Шаблонний клас CArray – динамічний масив даних
Розв’язування задач
- Одновимірні масиви. Цикли for, while, do…while
- Одновимірні масиви. Цикли for, while, do…while в поєднанні з оператором умови if
- Розв’язування задач. Функції та масиви. Прототип функції. Передача масиву у функцію
- Приклади розв’язку задач на шаблони функцій та перевантаження шаблонів функцій. Обробка масивів
- Рекурсія. Приклади розв’язку задач на рекурсію в C++
- Розробка класу, в якому продемонстровано реалізацію виключної ситуації переповнення для вбудованого типу int
- Приклад створення шаблонного класу Матриця з динамічним виділенням пам’яті
⇑