- •1.Охарактеризуйте розвиток структуризації у мовах програмування. Технології програмування.
- •2. Охарактеризуйте особливості та переваги об’єктно-орієнтованого програмування, використовуючи його базові поняття та терміни.
- •3.Охарактеризуйте такі поняття об’єктно-орієнтованої парадиґми, як клас, об’єкт, повідомлення та метод.
- •Означте такі базові властивості об’єктно-орієнтованого програмування як абстрагування, наслідування, інкапсуляція та поліморфізм.
- •Охарактеризуйте поняття абстрагування при створенні класу об’єктів. Проаналізуйте відмінності між поняттям класу та об'єкту.
- •6. Специфікація представлення та функціональна специфікація класів.
- •8.Опишіть такий агрегатний тип даних як масив. Приклади
- •10.Охарактеризуйте поняття ідентифікації об’єктів. Проаналізуйте способи ідентифікації об’єктів.
- •11. Об'єкти з точки зору концепцій інкапсуляції і абстракції.
- •12. Проаналізуйте структуру опису та реалізації класу: компоненти-дані і компоненти-функції.
- •13. Проаналізуйте особливості доступу до компонентів об’єкта (використання специфікаторів public, private, protected).
- •14. Ініціалізація об’єктів (конструктори). Опис конструкторів та порядок їх виклику.
- •15. Опишіть процес руйнування об’єкта (деструктори).
- •21).Охарактеризуйте віртуальні функції. Приклади.
- •Проаналізуйте поняття «час життя» об'єкта та його «область видимості».
- •23).Класи пам’яті. Використання автоматичної, статичної та динамічної пам’яті для розміщення об’єктів.
- •24). Розкрийте суть проблеми "висячих" посилань і “сміття”.
- •1)Цілі, 2)раціональні (із плаваючою крапкою),3) символьні;4) рядкові.
- •1) Константи цілого типу
- •2) Константи раціонального типу
- •3) Символьні константи
- •Керуючі коди
- •4) Рядкові константи
- •Перераховуваний тип
- •30. Охарактеризуйте особливості inline-функцій та inline-методів класів.
- •33. Опишіть такі аґреґатні типи даних, як структура і об’єднання, їх основні відмінності.
- •34. Охарактеризуйте поняття вказівника і посилання. Їх основні відмінності.
- •Типові обмеження та помилки програмування при роботі з посиланнями.
- •35. Ініціалізація вказівників. Операції над ними.
- •Операції з вказівниками.
- •Типові помилки програмування при роботі з вказівниками.
- •36. Охарактеризуйте зв'язану організацію пам'яті та використання вказівників у програмах.
- •37.Дайте аналіз динамічним структурам об’єктів на прикладі асоціативних структур даних.
- •38.Проаналізуйте такі динамічні структури об’єктів як лінійні списки.
- •39Дайте оцінку такій динамічні структури об’єктів як черги, стеки та деки.
- •40.Опишіть та дайте приклади використання зв’язаної організації пам’яті для реалізації рекурсивних структур.
- •48). Використання маніпуляторів при вводі-виводі даних.( незнайдено повністю)
- •49). Способи форматування даних при використанні потоків.
- •51). Роз’ясніть поняття модуля як програмного еквівалента класу об’єктів.
- •52). Розясніть основні концепції модульного програмування.(додатково у 51)
39Дайте оцінку такій динамічні структури об’єктів як черги, стеки та деки.
Стеки, черги та деки призначені для тимчасового збереження та почергової обробки даних. Дійсно, ми не можемо отримати, наприклад, другий елемент черги, не змінивши її (для цього потрібно спочатку взяти перший елемент). В той же час, у багатьох задачах дані, маючи динамічний розмір, повинні багаторазово переглядатись та певним чином оброблятись. Для таких цілей використовують списки. Ми розглянемо декілька видів списків, які мають спільні властивості, але відрізняються способами реалізації та складом допустимих дій.
Стек – це такий лінійний список, який має одну точку доступу: з однієї сторони дані додаються і з тієї ж сторони дані вилучаються. Стек організований за принципом LIFO (Last In First Out - останній ввійшов – перший вийшов).
Черга - це такий лінійний список, який має дві точки доступу: з однієї сторони дані в чергу додаються, а з іншої – вилучаються. Черга організована за принципом FIFO (First In First Out – перший ввійшов – перший вийшов).
Head – точка видалення, Tail – точка додавання.
Отже, черга – це асоціація об’єктів, що очікують доступу до системи обслуговування.
дек (deck) (стек із двома кінцями) -- лінійний список, у якому всі додавання й видалення (і звичайно всякий доступ) робляться на обох кінцях списку.
Дек часто називають двостороннім стеком або двосторонньою чергою. Визначимо дек:
1. Порожній дек.
2. Перший елемент; дек.
3. Дек; останній елемент.
Дек можна представити, як сукупність однотипних елементів, в якій ми маємо доступ до початку або кінця деку для додавання або взяття елементів (Рис. 10.9).
Рис. 10.13 – Дек
40.Опишіть та дайте приклади використання зв’язаної організації пам’яті для реалізації рекурсивних структур.
Зв’язана організація пам’яті задає множину структур даних, зв’язки між якими організовуються за допомогою вказівників. Кожен елемент такої структури володіє властивістю - „мати зв’язок з іншими елементами” (асоціація). ДСО володіють властивістю мати змінний склад структури, яка дозволяє розглядати ДСО як асоціацію зв’язаних об’єктів
рекурсивні структури даних у своєму описі посилаються самі на себе. Взагалі поняття динамічних структур даних є більш широким, ніж поняття рекурсивних структур
47). Організація роботи з файлами у мові С++ з використанням потоків.
Під файлом зазвичай розуміють поіменовану інформацію на зовнішньому носієві, наприклад жорсткому магнітному диску. Логічно файл можна подати як кількість послідовних байтів, тому такі пристрої як дисплей, клавіатуру і принтер також можна розглядати як окремі випадки файлів.
За способом доступу файли можна поділи: на послідовні (текстові), читання і запис в яких проводяться з початку байт за байтом, і файли з довільним доступом (бінарні) , які допускають читання і запис у вказану позицію.
Стандартна бібліотека містить три класи для роботи з файлами:
ifstream — клас вхідних файлових потоків;
ofstrearn — клас вихідних файлових потоків;
fstream — клас двонаправлених файлових потоків.
Ці класи є похідними від класів istream, ostream та iostream відповідно, тому вони містять перевантажені операції << і >>, прапорці форматування, маніпулятори, методи, стани потоків і т. д.
Використання файлів в програмі передбачає наступні операції:
створення потоку;
відкриття потоку і пов’язування його з файлом;
обмін (ввід/вивід);
знищення потоку;
закриття файлу.
Кожен клас файлових потоків містить конструктори, за допомогою яких можна створювати об'єкти цих класів різними способами.
Конструктори без параметрів створюють об'єкт відповідного класу, не пов'язуючи його з файлом:
ifstream (); { input }
ofstream (); { output }
fstream ();, { file- потік}
Конструктори з параметрами створюють об'єкт відповідного класу, відкривають файл з вказаним ім'ям і пов'язують файл з об'єктом:
іfstream(const char *name, int mode = ios::in);
ofstream(const char *name, int mode = ios::out | ios::trunc);
Другим параметром конструктора є режим відкриття файлу. Якщо встановлене за замовчанням значення не влаштовує програміста, можна вказати інше, склавши його з бітових масок, визначених в класі ios:
enum open_mode {
in = 0x01, //Відкрити для читання
out = 0x02, // Відкрити для запису
ate = 0x04, // Встановити покажчик на кінець файлу
арр = 0x08, // Відкрити для додавання в кінець
trunc = 0x10, // Якщо файл існує, вилучити його
nocreate = 0x20, // Якщо файл не існує, видати помилку
noreplace = 0x40, // Якщо файл існує, видати помилку
binary= 0x80. // Відкрити у двійковому режимі
};
Відкрити файл в програмі можна з використанням або конструкторів, або методу open, що має такі ж параметри, як і у відповідному конструкторі, наприклад
// Використання конструктора
ifstream inpf ("input.txt"); if (!inpf){
cout << "Неможливо відкрити файл для читання"; return 1;}
ostream f;
f.open("output.txt". ios :: out); // Використання методу open
if (!f) {
out << "Неможливо відкрити файл для запису"; return 1 ;}
Читання і запис виконуються або за допомогою операцій читання і вилучення, аналогічних потоковим класам, або за допомогою методів класів.
