- •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. Реалізація систем збору інформації
3. Концепція типу у мові програмування. Аналіз відомих методів типізації
Тип даних в мові програмування визначає сукупність значень, які може набувати змінна і сукупність дій, які можуть бути виконані. Системи типізації різних мов програмування істотно різняться одна від одної. Найістотніші відмінності полягають в реалізаціях компіляції та поведінки під час виконання програми.
У зв’язку із введенням поняття типу даних слід сказати про існування статичної та динамічної типізації.
Статична типізація - змінна зв’язується із типом у момент оголошення змінної і тип не може бути змінений пізніше.(приклад - Pascal)
Динамічна типізація - змінна зв’язується із типом у момент присвоювання значення, а не у момент оголошення змінної(приклад - JavaScript).
Присвоєння типу даних (типізація) надає значення набору бітів. Як правило, типи надаються або значенням в пам'яті, або об'єктам, таким, як змінні.
Системи типізації виконують наступні функції:
Безпечність — застосування типів даних дозволяє компілятору знаходити беззмістовний або невірний код. Наприклад, можна визначити вираз "Привіт!" + 3 як невірний, оскільки додавання (в загальному розумінні) рядка до цілого числа не має сенсу.
Оптимізація — статична перевірка типів може повідомити додаткову інформацію компілятору.
Документування — у виразнішіх системах типізації, типи даних можуть служити як вид документації, оскільки вони можуть описувати наміри розробника. Наприклад, довжина може бути підтипом цілих чисел, але, якщо розробник об'являє повертаємий функцією тип даних як довжину, а не просто ціле число, це може частково описувати значення функції.
Абстрагування (або модульність) — типи даних дозволяють розробнику розмірковувати про програми на вищому рівні, не звертаючи увагу на деталі реалізації на нижчому рівні. Наприклад, розробник може вважати рядок значенням, замість простого масиву байт.
Якщо мова програмування вимагає точного зіставлення типів даних (тобто, дозволяючи лише такі операції автоматичного приведення типів, які не призводять до втрати інформації), така мова програмування має сильну типізацію, в іншому випадку, слабку.
Усі типи даних будемо поділяти на базові та складані. Серед базових (або стандартних, або простих, або елементарних) звичайно виділяють такі:
Integer - числа цілого типу.
Real - числа дійсного типу. Діапазон залежить від конкретної реалізації.
Boolean - дані логичного типу, з двома значеннями: true та false (правда та хибність).
Char - це множина символів, що можуть бути надруковані. Формально слід розрізнювати цей тип з типом Byte, хоча фактично для зберігання символу у пам'яті використовується рівно один байт, і, таким чином, є деяка відповідність між цими типами даних.
4. Вільні масиви в мові програмування Сі, їх призначення та відмінність від звичайних. Навести приклади опису та застосування.
Вільними будемо називати двовимірні масиви або матриці розмір кожного із рядків якого може бути різним. До них зручно звертатися за допомогою вказівників.
Приклад
char *message[]={“defghi”, “jklmnoprqst”, “abc”};// масив вказівників на початок строк
Така реалізація має очевидні переваги. Наприклад, що поміняти місцями дві строки, достатньо поміняти місцями у масиві їх вказівники. Таким чином, узагальнюючі можна сказати, що тут вирішуються одразу дві проблеми:
1) Складні керування пам’яттю
2) Великі накладні витрати при перестановці строк
Для того, щоб зрозуміти різницю між вільним масив та статичним двовимірним розглянемо наступний приклад
Також слід розуміти і те, що можна створити масив вказівників і на цілі числа або на інший тип.
Приклад
int a[10][20]
int *b[10];
Для обох масивів синтаксично вірним буде звернення до деякого значення типу int a[3][4], b[3][4]. Однак тільки а є істино двовимірним: для 200 елементів типу int буде виділена пам’ять, а обчислення зміщення елемента a[строка][стовбець] від початку масиву буде вестись по формулі 20* строка+ стовбець. Для b визначено лише 10 вказівників, причому без ініціалізації.
5, 24. Принцип спадкування у Сі++. Віртуальні базові класи.
Використовуються поняття базовий та похідний класи. Похідний клас – розширення існуючого базового класу. Формування похідного класу записується в такий спосіб: <ключове слово><ім’я похідного класу>:<список базових класів>{<список членів класу>}.
Будь-який клас може бути базовим, а будь-який похідний клас віддзеркалює базовий. Похідний клас успадковує всі члени базового класу з атрибутами доступу public та protected. В Сі++ є можливість множинного спадкування, коли похідний клас має кілька базових. В цьому випадку базові класи в списку перераховуються через кому.
Для похідного класу можуть існувати непрямі базові, тобто ті, які є базовими для базових похідного. Якщо А – базовий клас для В, а В – базовий для С. То А – непрямий базовий клас, а В – прямий базовий клас для С.
При множинному спадкування жоден клас не може бути застосованим більше одного разу як пряма база, але може бути >1 разу застосованим як непряма база. При цьому об’єкти непрямого базового класу дублюються в похідному класі, це призводить до неоднозначності. Цього можна уникнути, використовуючи кваліфікацію імен або віртуальні базові класи.
Для оголошення базового класу віртуальним в списку базових класів перед іменем класу записується слово virtual. В цьому випадку об’єкт непрямого базового класу створюється тільки один раз і виклики його членів стають однозначними.
6, 25. Формування класів у Сі++ за допомогою ключових слів class, struct та union і їх особливості. Вказівник this.
В Сі++ класи формуються таким чином:
<ключове слово> <ім’я класу> {<список членів класу>};
В ролі ключового слова можуть бути слова class, struct та union. При описі класу з ключовим словом class всі члени класу мають за замовченням атрибут доступу private. В опис зі словом struct за замовченням всі члени мають атрибут public. В обох випадках атрибут доступу можна перевизначити, вказати явно.
При створенні класу з атрибутом union всі члени мають за замовчанням атрибут доступу public, який неможливо перевизначити. Такі класи не можуть брати участі в спадкуванні й мати віртуальні методи.
Клас не може бути анонімним зі словом class на відміну від struct та union.
Для того, щоб нестатична функція, що викликається «знала», з яким з об’єктів класу вона прицює, їй неявно передається ще один прихований параметр – вказівник-константа this. Цей параметр є видими у тілі функції, що викликається і в момент виклику встановлюється в значення адреси початку об’єкта і може використовуватися для звернення до членів об’єкта.