Завдання лабораторної роботы No.1 з дисципліни "Теорія програмування" доц. О.Л.Хижа кафедра комп'ютерних технологій, ФПМ, ДНУ 2018/2019 Тема ---- Введення у програмування на мові OCAML Написати програми на мові OCAML для роз'язання вказаних нижче завдань. Продемонстрирувати їх роботу на тестових прикладах в середовищі OCAML: 1) в режимі набору тексту з командного рядка OCAML; 2) шляхом вводу тексту програми з текстового файлу. Підготувати звіт згідно до форми (див. файл Вимоги.TXT) Варіанти індивідуальних завдань ------------------------------- 1. Реализовать две функции: а) вычисления суммы двух целых чисел б) которая на основании заданного списка пар натуральных чисел формирует новый список так, что для каждого элемента (N M) заданного списка элемент нового списка - это comb(N,M) - число сочетаний из N по M. 2. Реализовать две функции: а) вычисления разности двух целых чисел б) которая на основании заданного списка натуральных чисел формирует новый список так, что для каждого элемента N заданного списка элемент нового списка - это perm(N) - количество перестановок множества, состоящего из N элементов (элементами исходного списка могут быть списки, их элементами тоже могут быть списки и т.д.). 3. Реализовать две функции: а) вычисления произведения двух целых чисел б) Упорядочения списка (MSORT). 4. Реализовать две функции: а) вычисления частного двух целых чисел б) поиска значения X в списке L (X в свою очередь может быть списком). 5. Реализовать две функции: а) вычисления суммы двух вещественных чисел б) my-nth, которая получает в качестве параметра список l и число n, и возвращает n-ый элемент списка l. Нумерация элементов списка начинается с нуля. 6. Реализовать две функции: а) вычисления разности двух вещественных чисел б) fringe, которая получает в качестве параметра список, возможно содержащий подсписки, и выдает все несписочные элементы списка в том же порядке, в котором они расположены в исходном списке. 7. Реализовать две функции: а) вычисления произведения двух вещественных чисел б) Решения задачи о размещении 8 ферзей на шахматной доске8х8 так, чтобы никакой из них не «бил» другого. 8. Реализовать две функции: а) вычисления частного двух вещественных чисел б) Суммы элементов списка с использованием только функции прибавления единицы. 9. Реализовать две функции: а) возведения целого числа в квадрат б) Произведения элементов списка с использованием только функции сложения. 10. Реализовать две функции: а) возведения в квадрат суммы двух целых чисел б) реверсирования списка (с учётом того, что подсписки тоже нужно реверсировать); структура списка должна сохраниться (т.е. список не должен стать "плоским"). 11. Реализовать две функции: а) возведения в квадрат разности двух целых чисел б) вычисления Суммы элементов списка с учётом подсписков. 12. Реализовать две функции: а) возведения в квадрат произведения двух целых чисел б) вычисления произведения элементов списка с учётом подсписков. 13. Реализовать две функции: а) возведения в квадрат частного двух целых чисел б) вычисления Суммы элементов списка, если они образуют геометрическую прогрессию. 14. Реализовать две функции: а) возведения в квадрат суммы двух вещественных чисел б) вычисления Суммы элементов списка, если они образуют арифметическую прогрессию. 15. Реализовать две функции: а) возведения в квадрат разности двух вещественных чисел б) которая для заданного списка натуральных чисел осуществляет вычисление Наибольшего общего делителя элементов заданного списка по алгоритму Евклида. 16. Реализовать две функции: а) возведения в квадрат произведения двух вещественных чисел б) Вставки элементов в «сбалансированное» двоичное дерево. 17. Реализовать две функции: а) возведения в квадрат частного двух вещественных чисел б) Подсчета количества элементов двоичного дерева. 18. Реализовать две функции: а) возведения в куб целого числа б) «Балансировки» двоичного дерева 19. Реализовать две функции: а) возведения в куб суммы двух целых чисел б) Обхода двоичного дерева справа. 20. Реализовать две функции: а) возведения в куб разности двух целых чисел б) Обхода двоичного дерева слева. 21. Реализовать две функции: а) возведения в куб произведения двух целых чисел б) Упорядочения списка (ISORT). 22. Реализовать две функции: а) возведения в куб частного двух целых чисел б) Упорядочения списка (SSORT). 23. Реализовать две функции: а) возведения в куб суммы двух вещественных чисел б) Упорядочения списка (BSORT). 24. Реализовать две функции: а) возведения в куб разности двух вещественных чисел б) Решения задачи о«Ханойских башнях» (перемещения дисков сохранять в списке; перемещение диска со стержня А на стержень В отображать посредством пары А В). 25. Реализовать две функции: а) возведения в куб произведения двух вещественных чисел б) которая на основании заданного списка натуральных чисел формирует новый список так, что для каждого элемента N заданного списка элемент нового списка - это SUM(1<=k<=N; k^k). 26. Реализовать две функции: а) возведения в куб частного двух вещественных чисел б) которая на основании заданного списка натуральных чисел формирует новый список так, что для каждого элемента N заданного списка элемент нового списка - это соответствующее число Фибоначчи. 27. Реализовать две функции: а) возведения в четвёртую степень суммы двух вещественных чисел б) которая на основании заданного списка натуральных чисел формирует новый список так, что для каждого элемента N заданного списка элемент нового списка - это произведение первых N чисел натурального ряда. 28. Реализовать две функции: а) возведения в четвёртую степень разности двух вещественных чисел б) которая на основании заданного списка натуральных чисел формирует новый список так, что для каждого элемента N заданного списка элемент нового списка - это сумма первых N чисел натурального ряда. 29. Реализовать две функции: а) возведения в четвёртую степень произведения двух вещественных чисел б) следования, которая на основании заданного списка натуральных чисел формирует новый список так, что для каждого элемента N заданного списка элемент нового списка - это подсписок, элементы которого - простые делители N. 30. Реализовать две функции: а) возведения в четвёрнтую степень частного двух вещественных чисел б) следования, которая на основании заданного списка натуральных чисел формирует новый список так, что для каждого простого числа N - элемента заданного списка элемент нового списка - это N+1. Література ---------- 1. Лерой К. и др. Система Objective Caml, релиз 3.10. Документация и руководство пользователя [Електронний ресурс] — Режим доступу: http://ocaml.spb.ru/ . 2. Developing Applications With Objective Caml [Електронний ресурс] — Режим доступу: http://caml.inria.fr/pub/docs/oreilly-book/ . — Заголовок з екрану. 3. OCAML. Books in English [Електронний ресурс] — Режим доступу: http://ocaml.org/books.html . — Заголовок з екрану. 4. Мински Я., Мадхавапедди А., Хикки Дж. Программирование на языке OCaml. – М.: ДМК Пресс, 2014. – 536 с.