Skip to content

Latest commit

 

History

History
61 lines (61 loc) · 9 KB

ФП - UA - Лаб-1.md

File metadata and controls

61 lines (61 loc) · 9 KB

20230807195654 #учу/ФП


  • "Функцiональне програмування" - "Функциональное программирование" (ФП)
  • [[ФП - Лаб-1]]
  • [[ФП - Лаб-1+]]

УВАГА !!!

  • При оформленні Звіту про виконання лабораторної роботи – доцільно дотримуватись приблизно такого формату присвоєння імені файлу:
    • ФП_Прізвище Ім'я_КІУКІ-20-6_лаб1234
  • Приблизно там може називатися файл Звіту або директорія, де містяться сам Звіт та супроводжуючі матеріали.

Лабораторна робота № 1

Тема: "Знайомство з мовою функціонального програмування Haskell"

Мета роботи:

  • Ознайомлення з мовою та освоєння типових прийомів роботи мовою функціонального програмування Haskell, на прикладі програмного продукту HaskellPlatform:
    • ознайомлення з інтерфейсом;
    • освоєння базових положень синтаксису:
      • типи даних та найпростіші операції над ними,
      • списки та кортежі,
      • робота з функціями;
    • отримання досвіду діалогового налагодження елементів програми.

Вихідні умови для виконання роботи:

1 - Вивчення роботи з мовою функціонального програмування Haskell, на прикладі програмного продукту HaskellPlatform, проводиться на ПЕОМ IBM PC AT під операційною системою WINDOWS не нижче XP. 2 - Як програмний засіб, використовується програмний продукт HaskellPlatform 3 - Фіксація результатів (проміжних станів, що виникають при вивченні інтерфейсу та базових положень синтаксису, а так само в процесі налагодження, здійснюється перенесенням вибраного фрагмента діалогового вікна в текстовий редактор, з коментуванням монтажем тексту в Звіт про виконання лабораторної роботи. 4 - При підготовці до лабораторної роботи рекомендується ознайомитися з базовими поняттями по темі в обсязі начитаного лекційного матеріалу.

Порядок виконання роботи:

1 - Ознайомитися з цими Методичними вказівками. 2 - Запустити програму Haskell Platform. Освоїтися з роботою у вікні програми, в цілому аналогічному роботі з командним рядком в ОС. 3 - Ознайомитися з синтаксисом та елементами мови, використовуючи матеріал [[ФП - Лаб-1+]] в обсязі перших трьох пунктів: 1 - Примітивні типи та найпростіші операції над ними; 2 - Списки та Кортежі; 3 - Функції.

  • Активізувати роботу із зазначеними елементами та конструкціями.
  • Загалом, матеріал [[ФП - Лаб-1+]] переважно розглядався (коментувався) на лекціях. 4 - Найпростіший варіант ознайомлення та активізації роботи із зазначеним матеріалом (п. 3), - копіювання відповідних прикладів (фрагментів) з Додатка та подальше налагодження їх.
  • Більш просунутий варіант - використання прикладів з [[ФП - Лаб-1+]] виключно як зразків, підстановка своїх значень примітивів, свого заповнення списків та кортежів, своїх (оригінальних) прикладів визначення функцій.
  • Ще більш просунутий варіант - не обмежуватися одним лише розглядом прикладів, але самостійно вигадувати зв'язані прикладні контексти, в рамках яких об'єднувати кілька структурних елементів.
  • Вітається (і відповідно оцінюється при здачі лабораторної роботи) самостійність, оригінальність мислення, творчий нестандартний підхід та інші прояви самобутності програмістської індивідуальності. 5 - Оформити Звіт про виконання лабораторної роботи. 6 - Підготовка до захисту лабораторної роботи. Рекомендується опрацювати контрольні питання. 7 - Захист виконаної роботи.

Зміст звіту

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

Контрольні питання та завдання

1 - Що таке функціональне програмування? Відмінності від імперативного програмування. 2 - Чи допустимо в функціональному програмуванні використання змінних? 3 - У якому сенсі в функціональному програмуванні відсутні перемінні? 4 - Чи може функціональне програмування бути реалізовано засобами імперативних мов програмування? 5 - З урахуванням можливості реалізації функціонального програмування засобами імперативних мов, у чому полягає специфіка та призначення мови Haskеll? 6 - ☀️ Програмний продукт Haskell Platform, що використовується в лабораторній роботі, викладений у вихідниках у директорії, поряд із Методичними вказівками. Як рекомендоване домашнє завдання, його можна завантажити і встановити на своєму домашньому комп'ютері. Можливо, це розширить перспективи з освоєння Haskell (ознайомлення у просунутому варіанті - див. п. 4 вище), або (а також) при роботі над питаннями п.п. 7* та 8* (див. нижче) при підготовці до захисту лабораторної роботи (див. (п. 6) вище). 7 - ☀️ Чи можете ви запропонувати як приклад якийсь зв'язковий прикладний контекст, в якому могли б використовуватися комбінації розглянутих у лабораторній роботі конструкцій мови Haskell? 8 - ☀️ Як може виглядати Haskell-програма, яка зведе на друк структуру останнього блоку вірша С.Я. Маршака «Дом, которный построил Джек»?