Установочная лекция по дисциплине Старший преподаватель каф. ВТ Юлия Вадимовна Новицкая email: novitskaya@vt.cs.nstu.runovitskaya@vt.cs.nstu.ru.

Презентация:



Advertisements
Похожие презентации
ФУНКЦИОНАЛЬНОЕ И ЛОГИЧЕСКОЕ ПРОГРАММИРОВАНИЕ Направление – Программная инженерия, 7 семестр Ст. преподаватель каф. ВТ НГТУ Юлия Вадимовна Новицкая.
Advertisements

Декларативное программирование Лекция 1. План 1.Парадигмы программирования 2.Классификация языков программирования. Основные концепции парадигм функционального.
ДРУГИЕ ФОРМЫ РЕКУРСИИ I Функциональноепрограммирование Григорьева И.В.
Дисциплина по выбору Кафедра ИиП Авторы курса – к.т.н. Синицын Иван Васильевич, к.т.н. Крахмалев Дмитрий Владимирович.
Другие формы рекурсии II Функциональное программирование Григорьева И.В.
Функциональное программирование Язык Lisp. Введение.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РЕСПУБЛИКИ КАЗАХСТАН ВОСТОЧНО-КАЗАХСТАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ им. С. АМАНЖОЛОВА Сафонкина С.А. лекция по дисциплине.
Функционалы. Методы обработки S-выражений. Методы обработки списков Лекция 12.
Директивы компилятора. Рекурсия на Прологе Лекция 4.
ФУНКЦИИ БОЛЕЕ ВЫСОКОГО ПОРЯДКА Функциональное программирование Григорьева И.В.
Управление выполнением программы на Прологе Лекция 6.
1 Кубенский А.А. Функциональное программирование. Глава 4. Основы лямбда-исчисления Рекурсия в лямбда-исчислении fac = λn.(if (= n 0) 1 (* n (fac.
Хочу быть программистом! С чего бы начать? Turbo Pascal.
Основы программирования в Лиспе. Функции. Рекурсия Лекция 11.
1 Кубенский А.А. Функциональное программирование. Глава 4. Основы лямбда-исчисления Рекурсия в лямбда-исчислении fac = λn.(if (= n 0) 1 (* n (fac.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 5.
Особенности и структура контрольно – измерительных материалов по информатике и ИКТ (9 класс) Председатель предметной комиссии по информатике Ленинского.
Основы рекурсии Рекурсивно-логическое программирование Григорьева И.В.
Экспертная система CLIPS Выполнила: Д.Ю.Климова Группа: МПМ-301, ЧелГУ, МФ.
LISP Шестаков А.П.. LISP2 Лисп (LISP, от англ. LISt Processing language «язык обработки списков»; современное написание: Lisp) семейство языков программирования,
Транксрипт:

Установочная лекция по дисциплине Старший преподаватель каф. ВТ Юлия Вадимовна Новицкая

Логическое программирование язык программирования Prolog (Programming in logic) Функциональное программирование язык программирования Lisp (List processing)

В зимнюю сессию установочная лекция – 2 часа В течение семестра Контрольная работа, состоящая из трех частей (Prolog) В летнюю сессию Лекции – 6 часов Два практических занятия (Prolog) – 4 часа Одно практическое занятие (Lisp) – 2 часа Экзамен Два теоретических вопроса Одна практическая задача

Состав комплекта (архив 1,44 Mб) Рабочая программа (описание дисциплины, часы, экзаменационные вопросы, примеры экзаменационных задач, список литературы, описание балльно-рейтинговой системы) Задания для контрольной работы Задания для практических занятий Дистрибутив Prologа Дистрибутив Lispа Учебное пособие

Языки программирования Алгоритмические (процедурные) языки (Fortran, Pascal, C, …) Декларативные (неалгоритмические) языки Языки логического программирования (Prolog, …) Языки функционального программирования (Lisp, …)

Области применения декларативных языков Создание систем искусственного интеллекта Разработка экспертных систем и оболочек экспертных систем Создание систем помощи принятия решений Разработка систем обработки естественного языка Построение планов действий роботов …

Visual Prolog 7.2 Разработкой языка занимается фирма PDC Prolog Development Center Версии Prologа Turbo Prolog PDC Prolog Visual Prolog

Различные диалекты Lispа

Особенности языка Описание проблемы и правил ее решения Нахождение всех возможных решений с помощью механизма поиска с возвратом (backtracking) Простой синтаксис

Факты Воробей – это птица. Воробей – родитель птенца. Правило вывода Некто является птицей при условии, что у него есть родитель – птица. Программа птица (воробей). птица (X):–родитель (Y, X), птица (Y). родитель (воробей, птенец). Запрос птица (Z) Все возможные решения: Z = воробей Z = птенец

PREDICATES bird (symbol) parent (symbol, symbol) CLAUSES bird («воробей»). bird (X):– parent (Y, X), bird (Y). parent («воробей», «птенец»). Goal: bird (Z) Z = «воробей» Z = «птенец» Факт Правило вывода Внешняя цель

PREDICATES bird (symbol) parent (symbol, symbol) CLAUSES bird (sparrow). bird (X) :- parent (Y, X), bird (Y). parent (sparrow, nestling). Goal: bird (Z) Z = sparrow Z = nestling

Поиск с возвратом (backtracking) Рекурсия Вход

Для работы поиска с возвратом необходимо выполнение двух условий Недоказательство некоторой цели Возврат (откат) к цели, которую можно передоказать

PREDICATES tens (string) ones (string) start CLAUSES tens («Двадцать»). tens («Тридцать»). ones («два»). ones («три»). start :- tens (X), ones (Y), write (X, « », Y), nl, fail. GOAL start. РЕШЕНИЕ Двадцать два Двадцать три Тридцать два Тридцать три

Нахождение значения факториала n! = 1 * 2 * 3 * … * (n – 1) * n 0! = 1 Рекурсивная формула для расчета факториала n! = (n – 1)! * n

PREDICATES factorial (integer, real) CLAUSES factorial (0, 1). factorial (N, FactN) :- M = N – 1, factorial (M, FactM), FactN = FactM*N. GOAL factorial (3, FactN), write («FactN=», FactN).

Списки [1, 2, 3] Деревья (бинарные, упорядоченные)

Особенности языка Одинаковая форма представления данных и программ – в виде списка Функциональный образ мышления Не требуется явное описание типов данных, используемых в программе Основной способ решения - рекурсия

> (+ 2 3) программа данные > (+ 2 3) 5 > (+ 2 3) (+ 2 3) > (quote (+ 2 3)) (+ 2 3)

(2 a 5 str ) Голова списка – первый элемент списка 2 Хвост списка – все оставшиеся элементы списка, в свою очередь являющиеся самостоятельным списком (a 5 str ) Пустой список – ( ) или nil

> (car (1 2 3);получение головы списка 1 > (cdr (1 2 3));получение хвоста списка (2 3) > (cons 1 (2 3));создание списка (1 2 3) > (atom (1 2 3));проверка на атом NIL > (equal (1 2 3) (1 2 3));проверка равенства T

>(defun factorial (n) (cond ((= n 0) 1) (t (* (factorial (– n 1)) n)) ) ) FACTORIAL >(factorial 3) 6