Первая страница
Наша команда
Контакты
О нас

    Головна сторінка



Програма «Технології штучного інтелекту»

Скачати 254.84 Kb.

Програма «Технології штучного інтелекту»




Скачати 254.84 Kb.
Сторінка5/5
Дата конвертації24.05.2017
Розмір254.84 Kb.
ТипПрограма
1   2   3   4   5

Блок програмування

Основи комп’ютеризованої обробки даних


Поняття життєвого циклу програмного забезпечення (ПЗ), етапи розробки ПЗ: аналіз, проектування, розробка (кодування), налагодження, тестування, введення в експлуатацію, супровід.
Тео́рія рі́шень - царина досліджень, яка математичними методами досліджує закономірності вибору людьми найвигідніших із можливих альтернатив і має застосування в економіці, менеджменті, когнітивній психології, інформатиці та обчислювальній техніці.
Життє́вий цикл програ́много забезпе́чення - сукупність окремих етапів робіт, що проводяться у заданому порядку протягом періоду часу, який починається з вирішення питання про розроблення програмного забезпечення і закінчується припиненням використання програмного забезпечення.
Поняття методології проектування програм та основні методології розробки.

Основи структурної та об’єктно-орієнтованої методології розробки ПЗ.

Мова UML як засіб документування ПЗ на різних етапах його розробки. Загальна характеристика мови UML. Основні діаграми UML, їх класифікація. Статичні, динамічні, логічні та фізичні моделі програмної системи.

Класифікація програмного забезпечення. Системне та прикладне програмне забезпечення.

Програма (фр. programme письмове оголошення, порядок денний, від грец. prógramma вказівка) - заздалегідь затверджена (визначена) дія.
Застосунок, застосовна програма або прикладна програма (англ. application, application software, app) - користувацька комп'ютерна програма, що дає змогу вирішувати конкретні прикладні задачі користувача.

Класифікація мов програмування. Основи трансляції програм. Складові середовища розробки програм.

Базові поняття мови програмування.

Інтегроване середовище розробки (ІСР, англ. Integrated development environment або англ. IDE) - комплексне програмне рішення для розробки програмного забезпечення. Зазвичай, складається з редактора початкового коду, інструментів для автоматизації складання та відлагодження програм.
Мо́ва програмува́ння (англ. Programming language) - це штучна мова, створена для передачі команд машинам, зокрема комп'ютерам. Мови програмування використовуються для створення програм, котрі контролюють поведінку машин, та запису алгоритмів.
Типи даних.
Тип даних - характеристика, яку явно чи неявно надано об'єкту (змінній, функції, полю запису, константі, масиву тощо). Тип даних визначає множину припустимих значень, формат їхнього збереження, розмір виділеної пам'яті та набір операцій, які можна робити над даними.
Скалярні та структуровані дані. Покажчики.

Базові оператори: розгалуження, перемикач, цикли з пост- та перед-мовою, цикл з лічильником.

Підпрограми: опис, механізми передачі параметрів, виклик. Рекурсивні підпрограми.

Консольне та файлове введення/виведення даних.

Алгоритми та структури даних


Структуровані типи даних: масиви, рядки, структури.

Абстрактні типи даних. Лінійні динамічні структури даних: списки, черга, стек.

В програмуванні та комп'ютерних науках структу́ри да́них - це способи організації даних в комп'ютерах. Часто разом зі структурою даних пов'язується і специфічний перелік операцій, що можуть бути виконаними над даними, організованими в таку структуру.
Ієрархічні динамічні структури даних: дерева. Базові операції над динамічними структурами даних.

Поняття алгоритму. Властивості алгоритму. Оцінка ефективності алгоритмів. Функції складності за часом та за пам’яттю. Асимптотична складність. Типові алгоритмічні структури: лінійний, розгалужений, циклічний.

Алгоритми сортування. Оцінка ефективності та вибір алгоритму сортування.

Алгоритми пошуку. Поняття хешування даних, види хешування. Методи розв'язання колізій.

Об’єктно-орієнтована парадигма програмування


Поняття класу та об’єкту (екземпляру класу). Поля та методи класу. Конструктори, деструктори класів. Статичні та константні члени класів.

Базові принципи ООП: інкапсуляція, успадкування, поліморфізм, абстрагування. Взаємовідносини між класами.

Поняття інкапсуляції. Директиви видимості (модифікатори доступу). Організація доступу до захищених полів класу. Концепція дружності в об’єктно-орієнтованих мовах програмування.

Принцип спадковості. Поняття одиничної та множинної спадковості. Реалізація одиничної та множинної спадковості в об’єктно-орієнтованих мовах програмування.

Поняття поліморфізму: статичний та динамічний поліморфізм. Поняття раннього та пізнього зв’язування. Реалізація принципу поліморфізму в об’єктно-орієнтованих мовах програмування. Віртуальні та абстрактні методи.

Абстрактний метод (або чистий віртуальний метод (pure virtual method - часто помилково перекладається як чисто віртуальний метод)) - в об'єктно-орієнтованому програмуванні, метод класу, реалізація для якого відсутня.
Особливості відкритого успадкування, принцип підстановки Барбари Лисков.

Поняття, опис та створення екземпляру шаблону функції (класу).


КОНТРОЛЬНІ ЗАПИТАННЯ

  1. Охарактеризуйте у порівнянні структурний та об’єктно-орієнтований підходи до розробки програм.

  2. З яких етапів складається життєвий цикл ПЗ?

  3. Дайте визначення об’єктно-орієнтованого аналізу, проектування та програмування.

  4. Які цілі, задачі та результати об’єктно-орієнтованого аналізу?

  5. Які методології проектування ПЗ існують?

  6. Які цілі, задачі та результати об’єктно-орієнтованого проектування?

  7. Що таке статична, динамічна, логічна, фізична моделі системи?

  8. Призначення та правила побудови концептуальної моделі предметної області (domain model). Що таке сутність? Що таке атрибути сутностей? Види зв’язків між сутностями, назви зв’язків, потужність зв’язків.

  9. Формулювання та опис функцій програмної системи, що розроблюється.

  10. Класифікація діаграм UML.

  11. Призначення та правила побудови UML діаграми варіантів використання (use-case diagram). Поняття та типи ролей (акторів). Поняття варіанту використання (прецеденту), типи зв’язків між ними.

  12. Призначення та правила побудови UML діаграми класів (class diagram).
    Діагра́ма кла́сів - статичне представлення структури моделі. Відображає статичні (декларативні) елементи, такі як: класи, типи даних, їх зміст та відношення. Діаграма класів, також, може містити позначення для пакетів та може містити позначення для вкладених пакетів.
    Як позначаються класи, поля (атрибути) та методи (операції) класів? Як на діаграмі класів позначаються зв’язки між класами (типи зв’язків з прикладами, кратність зв’язку). У яких випадках на діаграмі класів позначаються атрибути зв’язку?

  13. Призначення та правила побудови UML діаграми послідовностей (sequence diagram). Як позначаються актори, класи, повідомлення. Як позначаються лінія життя, фокус управління, передач повідомлень? Фрейми.

  14. Мови високого та низького рівня. Визначення трансляції програми, компілятора та інтерпретатора. Наведіть приклади мов, що компілюються та інтерпретуються.

  15. Охарактеризуйте принцип роботи віртуальних машин програмних середовищ (на прикладі Java чи CLR).
    Віртуальна машина - модель обчислювальної машини, створеної шляхом віртуалізації обчислювальних ресурсів: процесора, оперативної пам'яті, пристроїв зберігання та вводу і виводу інформації.


  16. Що таке середовище програмування, які його складові?

  17. Числові типи даних мови програмування, внутрішні формати збереження даних різних типів (знакові/беззнакові цілі, дійсні різної точності). Поняття сумісності типів даних, явне та неявне перетворення типів.

  18. Символьний тип даних мов програмування. Внутрішнє подання символів (кодування символів). Рядки символів (поняття та принцип будови).

  19. Поняття виразу, операції та операнду, унарна та бінарна операції. Операції над даними мови Сі: арифметичні, бітові, логічні, порівняння. Правила запису виразів, пріоритет операцій.

  20. Які види обчислювальних процесів? Що таке лінійний, розгалужений та циклічний обчислювальний процес?

  21. Як розгалужений та циклічний обчислювальні процеси реалізуються в мовах програмування (охарактеризуйте оператори розгалуження та циклу)?

  22. Поняття локальності та глобальності ідентифікаторів, часу життя (ЧЖ) та область дії (ОД) ідентифікаторів?
    Середній час життя або просто час життя - чисельна характеристика тривалості спонтанного розпаду нестабільних систем, час, протягом якого кількість таких систем зменшується в e разів (e - основа натуральних логарифмів).


  23. Правила опису функцій (підпрограм). Дайте визначення та наведіть приклади точки виклику, точки входу, точки повернення для функції.

  24. Для чого використовуються параметри? Які види параметрів бувають (модель функції як «чорної скрині»)? Коли доцільно передавати параметр за значенням, а коли за посиланням? Коли задаються формальні, а коли фактичні параметри функції? Як описуються параметри функції за замовчанням?

  25. Що таке сегмент стеку, як формується стековий кадр (фрейм) під час виклику функції? Який механізм передачі фактичних параметрів за значенням та за посланням (зв’язок формальних та фактичних параметрів)?

  26. Що таке рекурсивні функції.
    Рекурсивні функції - клас функцій, введений як уточнення класу обчислюваних функцій. В математиці загальноприйнятою є теза про те, що клас функцій, для обчислення яких існують алгоритми, при найширшому розумінні алгоритму, збігається з класом рекурсивних функцій.
    Яких правил необхідно дотримуватися при організації рекурсії? Пряма та непряма рекурсія. Поясніть поняття рекурсивного спуску та підйому на прикладі рекурсивної функції для обчислення факторіала. Наведіть також нерекурсивний варіант цієї функції.

  27. Як здійснюється перевантаження функцій (наведіть приклади)?
    Перевантаження функції, перевантаження процедури або ж перевантаження методу (англ. function overloading or method overloading) - в програмуванні один із засобів реалізації поліморфізму (ad hoc поліморфізм), що полягає в можливості створювати кілька реалізацій функції (методу) із тим же ім'ям проте з різною сигнатурою - з різною кількістю параметрів або з різним типом параметрів.
    Чому може виникнути неоднозначність під час перевантаження?

  28. Як описується і як викликається функція-шаблон? В чому доцільність використання функцій-шаблонів? Коли доцільно використовувати шаблони, а коли перевантаження функцій?

  29. Дайте визначення файлу даних. Поняття файлів прямого та послідовного доступу.

  30. Організація доступу до файлу з програми. Поняття файлової змінної. Режими доступу до файлів. Організація послідовного читання/запису файлу.

  31. Поняття масиву даних. Поняття розмірності та розміру масиву. Принципи розташування та адресації елементів одновимірних та двовимірних масивів в пам’яті. Опис одновимірних та багатовимірних масивів у програмах.

  32. Види лінійних та ієрархічних динамічних структур даних (ДСД). Доцільність використання ДСД.

  33. Принцип організації однонапрямлених та двонапрямлених динамічних списків.

  34. Принцип організації стека та черги, їх реалізація за допомогою динамічних списків та масивів.

  35. Ієрархічні динамічні структури даних. Рекурентне означення дерева. Що таке корінь дерева, вузли, листя, глибина дерева. Поняття збалансованого дерева.
    В програмуванні збалансоване дерево в загальному розумінні цього слова - це такий різновид бінарного дерева пошуку, яке автоматично підтримує свою висоту, тобто кількість рівнів вершин під коренем є мінімальною.
    Поняття обходу дерева (прямий, зворотній, внутрішній обходи). Різновиди дерев. Приклади застосування дерев.

  36. Поняття алгоритму. Властивості алгоритму. Форми опису алгоритму.

  37. Що вважається часом роботи алгоритму (часова складність), як оцінюється часова складність ? Які класи алгоритмів ви знаєте?

  38. Що таке сортування? Загальна постановка задачі сортування. Яка обчислювальна складність методів сортування? Які методи потребують додаткової пам’яті?

  39. Як класифікуються методи сортування? Які методи називають внутрішніми? Які методи називають зовнішніми? Що таке стійки методи сортування?

  40. Загальна постановка задачі пошуку. Що таке ключ пошуку? Які методи пошуку в послідовностях ви знаєте? Яка обчислювальна складність методів пошуку?

  41. Загальна постановка задачі пошуку із застосуванням хешування. Поняття хеш-функції, найпростіші хеш-функції. Поняття колізії. Поняття відкритого та закритого хешування.

  42. Що таке клас та об’єкт (екземпляр класу)? Що з наведеного є класом, а що об’єктом: студент, дерево, кіт Мурзик, Іванов І.І., яблуко, банк «Велике щастя», тварина?

  43. Що характеризує стан об’єкту, а що поведінку об’єкту? Що з наведеного є атрибутом, а що операцією (методом): довжина, обчислення площі, прізвище, вага, перевірка пін-коду, розрахунок решти, грошова сума?

  44. Дайте визначення базовим принципам ООП: інкапсуляція, успадкування, поліморфізм, абстрагування.

  45. Як в ОО-мовах реалізується принцип інкапсуляції?

  46. Поняття успадкування, одиничного та множинного успадкування.
    Множи́нна спадко́вість - властивість деяких обʼєктно-орієнтованих мов програмування, в яких класи можуть успадкувати поведінку і властивості більш ніж від одного суперкласу (безпосереднього батьківського класу).
    Як в ОО-мовах реалізується принцип успадкування? Що з членів класу можна успадкувати, а що - ні?

  47. Множинне успадкування: переваги та недоліки. Чи всі мови реалізують множинне успадкування? Як можна реалізувати множинне успадкування якщо синтаксис мови його не підтримує?

  48. Реалізація принципу поліморфізму в ОО-мовах програмування. Поняття віртуальних та абстрактних методів. Який клас вважається абстрактним? Чи можна створювати екземпляри абстрактних класів? Чи розповсюджується динамічний поліморфізм на поля класу?

  49. Поняття статичного та динамічного поліморфізму? Поняття раннього та пізнього зв’язування: механізм заміщення та перекриття методів (або динамічний та статичний поліморфізм). Що вважається істинним поліморфізмом та чому?

  50. Доцільність та особливості використання статичних членів класу. Чи розповсюджується динамічний поліморфізм на статичні методи класу?

Приклади задач


  1. В текстовому файлі задано К послідовностей цілих чисел (кожна окрема послідовність записана в один рядок файлу, значення чисел не перевищують 10 000).
    Те́кстовий файл - форма подання послідовності символів у комп'ютері, де кожен символ із задіяного набору символів кодується одним байтом чи послідовністю двох, трьох і т. д. байтів. На відміну від терміна «текстовий формат», що характеризує вміст даних, термін «текстовий файл» стосується файлу та характеризує його як контейнер, який зберігає такі дані.
    Кількість К задано в першому рядку цього файлу. Знайти та вивести на екран номери послідовностей, що схожі між собою. Схожими вважаються послідовності, що містять набір однакових за значенням елементів, при цьому розташування цих елементів та можливі повтори серед них не враховуються. Наприклад послідовності 1 2 3 та 3 2 3 1 1 є схожими, а послідовності 1 2 3 та 1 2 3 4 – ні.

  2. Для введення задано послідовність рядків кількістю, що не перевищує цілого значення К. Кожен рядок складається зі слів та чисел, що розділені одним або декількома пробільними символами. Відсортувати задані рядки за зростанням середнього значення чисел, що містяться в кожному рядку. Відсортовану послідовність рядків вивести в текстовий файл.

  3. Розробити клас для геометричного тіла з методами: 1) абстрактний метод для обчислення площі поверхні тіла;
    Пло́ща пове́рхні - площа заданої поверхні. Грубо кажучи, є числовою характеристикою «кількості» поверхні. Вимірюється в квадратних одиницях довжини.
    2) абстрактний метод для обчислення об’єму тіла; 3) метод, що виводить площу поверхні тіла та об’єм на екран (значення виводяться в одному рядку в формі з фіксованою точкою (два знаки після точки) і розділені одним пробілом). Створити похідні класи для сфери та циліндра, що реалізують дані методи. Поля класів та модифікатори доступу до членів класу визначити самостійно. В головній програмі створити колекцію, що містить геометричні тіла різних видів, вивести інформацію про них на екран. Дані для створення тіл задані в текстовому файлі: 1й рядок файлу містить кількість тіл; 2й та всі наступні – вид тіла (1 – циліндр, 2 – сфера), радіус, висоту (тільки для циліндра).

Для довідки:



ЛІТЕРАТУРА


  1. Орлов С.А., Цилькер Б.Я. Технологии разработки программного обеспечения. Современный курс по программной инженерии: Учебник для вузов. 4-е изд.– СПб., Питер, 2012. – 608 с.

  2. Технология разработки программного обеспечения: учебное пособие / под ред. Л. Г Гагариной. - М: ИД «ФОРУМ»: ИНФРА-М, 2008. - 400 с.

  3. Рудаков А.В. Технология разработки программных продуктов. М.:Издательский центр «Академия», 2006, - 2008с.

  4. Басс, Л. Архитектура программного обеспечения на практике / Л. Басс, П. Клементс, П. Кацман. – 2-е изд. – СПб. : Питер, 2006. – 575 с.

  5. Буч Г., Рамбо Д., Якобсон И. Язык UML. Руководство пользователя. 2-е изд.: Пер. с англ. Мухин Н. – М.: ДМК Пресс, 2006. – 496 с.

  6. Фаулер M. UML. Основы, 3-е издание. – Пер. с англ. – СПб: Символ-Плюс, 2004. – 192 с.,

  7. Соммервилл И. Инженерия программного обеспечения.: Пер. с англ.: – М., Вильямс, 2002. – 623 с.

  8. Ларман Крег Применение UML и шаблонов проектирования: Пер. с англ. – М.:Издательский дом «Вильямс», 2004. – 624 с.

  9. Ахо, А. Структуры данных и алгоритмы / А. Ахо, Дж. Хопкрофт, Дж. Ульман. – М.: Вильямс, 2000.

  10. Буч Г., Объектно-ориентированный анализ и проектирование с примерами приложений на С , 2-ое изд. / Пер. с англ. – М.: “Издательство Бином”, СПб: “Невский диалект”, 1998 г. – 560 с. ил.

  11. Гриффитс И. Программирование на C# 5.0. – М.: Эксмо, 2014. – 1136 с.

  12. Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы: построение и анализ. 3-е издание. – М.: ИД "Вильямс", 2013.

  13. Страуструп Б. Язык программирования С , 2-е дополн. изд. : Пер. с англ. – М.: Радио и связь, 1991. – 369 с.

  14. Шилдт Г. Java 8. Полное руководство, 9-е изд. : Пер. с англ. / Шилдт Г. – М.: ООО «И.Д. Вильямс», 2015. – 1376 с.

  15. Эккель Б. Философия Java. Библиотека программиста. 4-еизд. / Эккель Б. – СПб.: Питер, 2009. – 640с.
1   2   3   4   5


Скачати 254.84 Kb.

  • Алгоритми та структури даних
  • Об’єктно-орієнтована парадигма програмування
  • Приклади задач
  • ЛІТЕРАТУРА