
- •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)
Проаналізуйте поняття «час життя» об'єкта та його «область видимості».
Час життя – це інтервал часу виконання програми під час якого об’єкт існує. Час життя змінної може бути локальним або глобальним.
Глобальна змінна може бути доступна з моменту її визначення до кінця програми, локальна змінна дотупна тільки в ф-ї або блоці в якому вона визначена, при кожному входжені в блок, виконується визначення лок. змінної і розподіл пам’яті для неї. Всі ф-ї в мові Сі мають глобальний час життя.
Область видимості – це є частина тексту програми в якій може бути використаний даний об’єкт. Об’єкт може бути видимий в вихідному файлі, в файлі в якому визначений або в усіх файлах, що є складовою програми.
23).Класи пам’яті. Використання автоматичної, статичної та динамічної пам’яті для розміщення об’єктів.
Клас пам'яті задає місце розташування об'єкта в оперативній пам'яті та встановлює для нього час існування, тобто час, протягом якого об‘єкт зберігається в оперативній пам‘яті, і область видимості, яка визначає ту частину програми, де можна використовувати цей об‘єкт. На відміну від типу, клас пам’яті можна явно не вказувати, тоді він встановлюється компілятором за місцем оголошення об'єкта.
Звичайні об’єкти живуть протягом терміну активності їх області видимості: створюються при вході в блок і знищуються при виході з нього. Такий спосіб управління пам’яттю називається автоматичним і, відповідно, об’єкти автоматичними. Альтернативою автоматичному служить статичне управління пам’яттю і статичні об’єкти. Статичні об’єкти створюються компонувальником і живуть весь час виконання програми. Проміжне становище займають динамічні об’єкти. Вони створюються і знищуються в довільні моменти часу в результаті виконання відповідних інструкцій.
Глобальні об’єкти завжди статичні. Локальні об’єкти теж можуть бути статичними. Якщо блок, в якому їх видно, активізується багатократно, то при кожному повторному вході в блок зберігається значення статичного об’єкту, яке він набув при виході з блоку.
24). Розкрийте суть проблеми "висячих" посилань і “сміття”.
Різні помилкові сценарії, що виникають в процесі утилізації сміття, можуть бути зведені до двох основних проблем (для простоти викладу вважатимемо, що програма написана на мові, в якій допускається явне управління пам'яттю):
1. Припустимо, що програміст створює дві різних змінних, вказуючих на одну і ту ж структуру даних, а потім знищує одну із змінних разом з її вмістом (тобто знищення пам'яті разом з утилізацією). Після цього друга змінна указує на невизначену область пам'яті. Такі змінні називаються висячими посиланнями. Приведемо приклад на З:
void* p = malloc (32000);
q = p;
free (p); // звільняє пам'ять, на яку указує p, але покажчик в q не
// знищується і виникає висяче посилання
2. Для уникнення першої проблеми можна запропонувати таку схему роботи, в якій знищення пам'яті зводиться тільки до руйнування шляху доступу, а фізично пам'ять не повертається до тих пір, поки не буде знищена остання змінна, що використовує цю пам'ять. Проте тоді із-за трудності відстежування всіх шляхів доступу до даної структури може виникнути така ситуація, коли всі змінні будуть знищені, а пам'ять так і не повернена. У такому разі говорять, що пам'ять стала сміттям. Проілюструємо на ще одному прикладі:
void* p = malloc (32000);
p = q; // знищує єдиний покажчик на пам'ять, роблячи її сміттям
Можна сказати, що висячі посилання виникають в тих випадках, коли пам'ять утилізувалася "дуже швидко" (тобто раніше, ніж пам'ять дійсно перестає використовуватися), а сміття — коли пам'ять утилізувалася "дуже поволі" (тобто пізніше, ніж вона могла б бути повернена). Висячі посилання небезпечніші, оскільки можуть приводити до некоректної роботи програми, тоді як поява сміття цілком допустимо. Боротьбу із сміттям зазвичай покладають на спеціальний процес, званий збіркою сміття (garbage collection).
25). Охарактеризуйте автоматичну пам'ять та використання її у програмах. Локальне середовище.
26. Опишіть ієрархію простих та складних типів даних для реалізації об’єктно-орієнтованих програм на мові С++ .
Тип даних – це набір значень однакової природи разом із операціями, які над ними розглядаються. Кожен тип даних визначає:
внутрішнє подання даних у пам’яті комп’ютера;
множину значень, яку можуть приймати величини цього типу;
операції і функції, які можна застосовувати до величин цього типу.
Основні скалярні (прості) типи даних можна розділити на цілі та раціональні. Кожен тип даних характеризується діапазоном значень, обсягом пам’яті, який займає змінна цього типу та додатковими властивостями, таким як точність для чисел з плаваючою комою та можливість зберігати інформацію про знак числа для цілих чисел (додатні і від’ємні чи тільки додатні).
Типи даних – основні (цілі, дійсні символьні, логічні) та складені (масиви, перераховувальний, структури, об’єднання, посилання, вказівники, класи)
У С/C++ змінні повинні бути описані, а їхній тип специфікований до того, як ці змінні будуть використані.
При описі змінних застосовується префіксний запис, при якому спочатку вказується тип, а потім - ім'я змінної. Якщо змінних одного типу є декілька, то вони можуть бути записані в одному рядочку через кому.
Наприклад: .
float weight; int exam_score, max, min, i; char ch, c, symbol;
Змінні можна ініціалізувати в місці їхніх описів, наприклад:
int height = 71; float income = 26034.12;
Найпростішими скалярними типами, визначеними в С, є:
сhar — представляється як однобайтове ціле число;
int — двобайтове ціле;
long — чотирибайтове ціле;
float — чотирибайтове раціональне;
double — восьмибайтове раціональне;
Існують чотири специфікатори типу, які уточнюють внутрішнє подання даних типів – short, long, signed, unsigned
цілі:
unsigned char | 8 біт | 0..255
char 1 | 8 біт | 128..127
enum | 16 біт | -32,768..32,767
unsigned int | 16 біт | 0..65,535
short int | 16 біт | -32,768..32,767
int | 16 біт | -32,768..32,767
unsigned long | 32 біт | 0..4,294,967,295
long | 32 біт | -2,147,483,648..2,147,483,647
дійсні:
float | 32 біт | -3.4*1038..3.4*1038
double | 64 біт | -1.7*10308..1.7*10308
long double | 80 біт | -3.4*104932..1.1*10*104932
логічний: bool (true, false) 8 біт
27. Охарактеризуйте типовані константи та пеpераховуваний тип у мові С++.
Константи у мові С++ використовуються для представлення значень, що не змінюються в процесі роботи програми. Константи використовуються у виразах справа від знаку присвоювання. Різним типам даних у мові C++ відповідає чотири типи констант: