
- •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)
34. Охарактеризуйте поняття вказівника і посилання. Їх основні відмінності.
Змінні, значеннями яких є адреси ділянок пам’яті, називаються вказівниками. Вказівник вказує на початок області оперативної пам'яті комп'ютера, де зберігається дане. Вказівники дають змогу оперувати не з іменами даних, а безпосередньо звертатись до областей пам'яті комп'ютера
В С++ існує три види вказівників : 1)на об’єкти; 2)на функції; 3)на void.
1) Вказівник на об’єкти містить адреси ділянок пам’яті, де зберігаються значення певного типу. Формат запису наступний:
<тип> *<ім’я вказівника>
Наприклад int *a, *b; float *c, *d;
Надати значення вказівникам можна так:
<ім’я вказівника> = <адреса змінної>
Приклад. Нехай у програмі оголошені змінні
int n = 10;
float stud1, stud2, stud3;
Тоді можна визначити вказівники на ці змінні:
nomer = &n; rist = &stud1; rist = &stud3;
Вказівники застосовують, зокрема, для надання значень змінним:
rist = &stud1;
*rist = 1.85;
Тут вказівник rist вказуватимемо на адресу змінної stud1, a власне змінній stud1 буде присвоєно значення 1.85.
Вказівники можна переадресовувати. Зокрема, у прикладі вказівнику rist спочатку присвоєно адресу змінної stud1, а потім – адресу змінної stud3. Це правило не діє, якщо вказівник є сталою. Сталий вказівник, який вказує на одну і ту ж адресу, оголошують так:
const int *rik;
Для вказівників в залежності від ОС та версії компілятора резервується 2 або 4 байти в оперативній пам’яті.
2) Вказівник на функцію містить адресу в сегменті коду, за якою розташовується виконуваний код функції, тобто адресу, на яку передається керування в момент виклику функції. Вказівник на функцію використовують для опосередкованого виклику функції (не через її ім’я, а через вказівник, який містить її адресу), а також для передачі імені функції в іншу в якості параметра.
Формат запису: <тип> (*<ім’я>) (список типів, аргументів)
Наприклад int (*abc) (double, double);
3) Вказівнику на void можна присвоїти значення будь-якого вказівника і порівнювати його з довільним вказівником, але перед виконанням будь-яких дій з ділянкою пам’яті, на яку він посилається, потрібно зводити його до вказівника на конкретний тип явним чином.
Особливо ефективною є робота з вказівниками на рядки та масиви.
Посилання – це синонім імені, вказаного при ініціалізації посилання.
Формат опису <тип> &<ім’я>
Приклад. int k; int &h = k;
Посилання – це розіменований вказівник. Тобто, h – альтернативне ім’я для k. Посилання, на відміну від вказівника, не займає додаткової пам’яті і є просто іншим іменем величини. Посилання обов’язково слід присвоювати при описі.
Типові обмеження та помилки програмування при роботі з посиланнями.
Обмеження:
Не можна взяти адресу змінної типу посилання.
Забороняється використовувати масиви посилань
Не допускаються посилання на бітові поля.
Не можна створити вказівник на посилання.
Помилки:
При оголошенні множини посилань & не вказується для кожного посилання.
При оголошенні змінна-посилання на ініціалізована.
Спроба присвоїти попередньо оголошене посилання як псевдонім іншої змінної.
Повернення вказівника або посилання автоматичній змінній у функцію, яку викликають.