- •1. Аналіз класів пам’яті змінних
- •2. Аналіз класів пам’яті функцій.
- •3. Концепція типу у мові програмування. Аналіз відомих методів типізації
- •4. Вільні масиви в мові програмування Сі, їх призначення та відмінність від звичайних. Навести приклади опису та застосування.
- •7, 26. Правила формування атрибутів доступу до членів похідного класу в залежності від атрибуту доступу базового класу та заданого атрибуту у списку спадкування.
- •8, 27. Вказівники та динамічна пам’ять. Аналіз методів виділення та звільнення динамічної пам’яті
- •9, 28. Аналіз методів передачі параметрів до підпрограм через локальні та нелокальні середовища
- •10. Зв’язний список та наскрізний прохід по зв’язному списку. Операції над зв’язними списками. Додавання та вилучення елементів у зв’язному списку. Навести приклади.
- •11. Структури даних. Типові статичні та динамічні структури даних. Доступ до даних.
- •12. Аналіз методів подання графів у вигляді динамічних та статичних структур даних. Матриця суміжності
- •13. Парадигма об’єктно-орієнтованого програмування та основні його принципи, їх зміст.
- •14. Порівняльний аналіз статичних та віртуальних методів в об’єктно-орієнтованому програмуванні, їх особливості. Призначення та правила формування конструкторів та деструкторів.
- •15. Правила віртуалізації методів в ооп.
- •16. Поняття технології створення програмного забезпечення та основні технологічні етапи. Приклади технологій.
- •17. Взаємозв’язок імен масивів та вказівників в мові програмування Сі. Операції над вказівниками. Приклади для одно- та двомірних масивів.
- •18. Контейнерні класи та їх призначення
- •19, 29. Вкладені класи та їх призначення.
- •20. Локальні класи та їх призначення
- •23. Абстрактні типи даних, правила і засоби їх формування.
- •30. Математичні моделі біполярного транзистора програми Spice
- •31. Алгоритм розрахунку перехідної характеристики програми Spice
- •32. Алгоритм розрахунку режиму за постійним струмом програми Spice
- •34. Поняття об’єкту в мові vhdl
- •35. Поняття сигналу в мові vhdl. Драйвер сигналу
- •36. Модель дискретного часу в мові vhdl.
- •37. Модель польового транзистора програми Spice
- •38. Архітектурне тіло та об’єкт в мові vhdl
- •39. Призначення та можливості програми spice
- •40. Оператор процесу в мові vhdl
- •41. Створення структурного опису цифрової системи мовою vhdl
- •42. Змінні та сигнали в мові vhdl
- •43. Присвоювання сигналу в мові vhdl
- •44. Планування транзакцій та драйвер сигналу в мові vhdl
- •45. Розрахунок амплітудно-частотної характеристики в програмі Spice.
- •46. Послідовні та паралельні оператори мови vhdl
- •47. Створення примірників компонентів та опис топології цифрового пристрою мовою vhdl
- •48.Опис рівня регістрової передачі мовою vhdl
- •49. Вхідна мова програми Spice
- •50. Модель Еберса-Мола біполярного транзистора
- •51. Модель Гумеля-Пуна біполярного транзистора
- •52. Інерційна та транспортна затримки в мові vhdl
- •53. Принципи роботи системного інтерфейсу isa (8 біт).
- •54. Стандарти систем автоматизації, побудованих на основі системних інтерфейсів.
- •55. Інтерфейс hs-488 ( швидкісний канал спільного користування).
- •57, 66, 70, 71.Канал спільного користування. Структура магістралі. Робота шини. Реалізація інтерфейсу.
- •58, 73. Приладовий інтерфейс (канал загального користування). Адресування приладів на магістралі. Алгоритми обміну інформацією в магістралі.
- •59. Приладовий інтерфейс (канал загального користування). Пошук джерела сигналу “запит на обслуговування”. Послідовне опитування.
- •60. Приладовий інтерфейс (канал загального користування). Пошук джерела сигналу “запит на обслуговування”. Паралельне опитування
- •64. Основні принципи перетворення сигналів. Дискретизація сигналів. Цифро-аналогові перетворювачі.
- •67, 72. Основні принципи перетворення сигналів. Дискретизація сигналів. Цифро-аналогові перетворювачі.
- •65, 68, 69. Аналогово-цифрове перетворення. Принципи роботи. Реалізація інтерфейсу з ibm pc. Реалізація систем збору інформації
13. Парадигма об’єктно-орієнтованого програмування та основні його принципи, їх зміст.
Парадигма програмування – це сукупність теоретичних положень, методів, стандартів, ідей і понять, які визначають стиль написання програми. Парадигма програмування визначається базовою одиницею і принципом досягнення модульності програмування.
В ООП головною відправною точкою є не процедура, не дія, а об’єкт. Прикладна програма, побудована за принципами ООП, - це не послідовність якихось операторів , не деякий жорсткий алгоритм, а сукупність об’єктів і способів їх взаємодії. Обмін між об’єктами відбувається за допомогою повідомлень.
ООП грунтується на трьох основних принципах:
Інкапсуляція, поліморфізм, успадкування.
об’єкти можна розглядати як деяку сукупність даних і способів роботи з ними. Дані можна розглядати як поля запису – характеристики поб’єкта. Користувач та об’єкти програми повинні мати можливість читати дані об’єкта , певним чином їх обробляти та записувати в об’єкт нові занчення. Тут найважливіше значення має принцип інкапсуляції і приховування даних, який означає, що зовнішнім об’єктам і користувачу прямий доступ до даних, як правило, заборонено.
Для реалізації приховування даних в об’єкті зазвичай визначають процедури та функції , які забезпечують необхідні операції з даними: читання обробку, запис. Ці функції і процедури називають методами. Сукупність даних і методів їх читання та запису називається властивостями об’єкта. Середовищем взаємодії об’єктів є повідомлення, які генеруються у результаі виникнення різних подій.
Для організації динамічного розподілу пам’яті до всіх об’єктів закладено методи їх створення – конструктори та методи їх знищення – деструктори.
Типи об’єктів, зокрема , компонентів бібліотек системи розробки, застосувань формуються у вигляді класів (класи – це типи, обумовлені користувачем, де описуються властивості об’єкта, його методи і події, на які він може реагувати. Якби при створенні нового класу все доводилось починати з нуля, то ефективність цього заняття була би мінімальна. Для цього існує важливий принцип ООП – успадкування.
Новий клас може успадкувати властивості, методи, події батьківського класу, на основі якого він створюється.
Третій важливий принцип ООП – поліморфізм – означає можливість визначення методу з одним і тим самим ім’ям , який можна застосувати одночасно до всіх примірників об’єктів ієрархії успадкування. В цьому випадку кожен примірник об’єкта може «замоляти» особливості реалізації цього методу «над собою»
14. Порівняльний аналіз статичних та віртуальних методів в об’єктно-орієнтованому програмуванні, їх особливості. Призначення та правила формування конструкторів та деструкторів.
Віртуальна функція – це така функція, яка оголошується в базовому класі з
використанням ключового слова virtual і перевизначається в одному або декількох
похідних класах. Таким чином, кожен похідний клас може мати власну версію віртуальної функції. Віртуальні функції у поєднанні з похідними типами дають змогу мові програмування C++ підтримувати динамічний поліморфізм. Він для об'єктно-орієнтованого програмування є важливим з однієї причини: дає змогу деякому узагальненому класу визначати функції, які використовуватимуть усі похідні від нього класи, причому похідний клас може визначити власну реалізацію усіх або деяких цих функцій.
Під час обговорення об'єктно-орієнтованих мов програмування зазвичай використовують два терміни: раннє зв'язування (early binding) і пізнє зв'язування (late binding). У мові програмування C++ ці терміни пов'язують з подіями, які відбуваються при компілюванні та у період виконання програми відповідно.
Раннє зв'язування(його ще називають статичним) означає, що вся інформація, необхідна для виклику функції, відома при компілюванні програми. Прикладами раннього зв'язування можуть слугувати виклики стандартних функцій і виклики перевизначених функцій (звичайних і операторних). З принципових переваг раннього зв'язування можна
назвати ефективність: воно працює швидше від пізнього і вимагає менших витрат пам'яті. Його основний недолік – відсутність гнучкості. Пізнє зв'язування означає, що точне рішення про виклик функції буде ухвалено у процесі виконання програми. Пізнє зв'язування у мові програмування C++ досягається за рахунок застосування віртуальних функцій і похідних типів. Перевага пізнього зв'язування полягає у тому, що воно забезпечує великий ступінь гнучкості. Його можна застосовувати для підтримки загального інтерфейсу і давати змогу при цьому різним об'єктам, які використовують цей інтерфейс, визначати їх власні реалізації Але до його недоліків можна віднести, хоч і незначне, але все таки пониження швидкості виконання програм та збільшення накладни витрат пам’яті.
Функція-член класу, основна мета якої – ініціалізація змінних об’єкту цього класу або розподіл пам`яті для них, називається конструктором.
В С++ ознакою конструктора є співпадання імені конструктора з іменем класу. Конструктор присутній завжди, якщо його не визначити, він формується автоматично за замовчуванням. Конструктори не викликаються явно, а викликаються неявно під час створення чи формування об’єктів.
Другою важливою функцією-члену класу є деструктор. Він знищує об’єкт даного класу. Ім’я деструктора співпадає з іменем класу, але йому передує символ «~».
#include <iostream.h>
class empty{
char *obj_name;
public:
empty(char* name){
сout<<”Створено об’єкт з ім’ям”;
сout<<name<<”клас empty\n”;
obj_name = name};
~empty(){
cout<<”Об’єкт ”<<obj_name;
cout<<”Знищено”/n”;}
}one(“one”)
void main(void){
empty second(“second”);
}
Створено об’єкт one класу empty
Створено об’єкт second класу empty
Об’єкт second знищено
Об’єкт one знищено
Існує низка правил використання конструктора
Правила формування конструкторів:
1)Конструктор не повертає жодного значення, навіть типу void. Не можна одержати вказівник на конструктор.
2) Клас може містити низку конструкторів з різними параметрами для різних видів ініціалізації.
3)Конструктор без параметрів називається конструктором за замовчуванням.
4)Параметри конструктора можуть мати будь-який тип крім цього ж самого класу.
5)Можна задати параметри конструктора за замовчуванням, їх може містити тільки один конструктор. Конструктори не успадковуються.
6) Конструктори не можуть мати модифікатори static або virtual.
7) Конструктори глобальних об’єктів викликаються до виклику функції main(). Локальні об’єкти створюються, як тільки стає активною область їх дії.
8)Локальні та статичні об’єкти створюються в порядку розміщення їх оголошень, а статичні об’єкти лише один раз.
9)Конструктор не може видати повідомлення про помилку ініціалізації, в зв’язку з тим,що він не повертає значення. Для організації повідомлення про помилку з конструктора можна скористатися механізмом обробки виняткових ситуації.
Існує декілька правил використання деструкторів.
1)Деструктор не має аргументів, навіть типу void.
2) Деструктор не повертає значення, навіть типу void.
3)Деструктор не успадковується , при відсутності деструктора у класі, що успадковується він не передається з базового класу, а формується компілятором за замовчуванням.
4)Атрибут доступу деструктора за замовчуванням public.