Директивы компилятора. Рекурсия на Прологе Лекция 4.

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



Advertisements
Похожие презентации
Файлы Лекция 11. План Стандартные устройства Стандартные предикаты по работе с файлами Замена стандартного предиката openread Вывод файла на экран Создание.
Advertisements

Семинар 3. Рекурсивные отношения в языке Prolog. Отладка программ в Strawberry Prolog СИСТЕМЫ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА.
Тема 3 Язык программирования ПРОЛОГ. Лабораторное занятие 4 Стандартные предикаты ввода и вывода языка Visual Prolog.
Списки в языке Пролог. Определение Список упорядоченное множество объектов одинакового типа. Формально это определение соответствует определению массива.
Технология составления алгоритмов и программы для решения линейных задач на языке Паскаль.
РЕКУРСИЯ РЕКУРРЕНТНЫЕ СООТНОШЕНИЯ У попа была собака - он ее любил. Она съела кусок мяса - он ее убил. Вырыл ямку - закопал, Взял дощечку – написал: У.
Данные в языке. Данные это часть программы, совокуп- ность значений определенных ячеек памя- ти, преобразование которых осуществляет код. Промежуточные.
Технология составления алгоритмов и программы для решения линейных задач на языке Паскаль.
Структура программы на языке Pascal. Программа на языке «Паскаль» Программа состоит из заголовка и блока В заголовок входят: служебное слово program и.
Переменная l. Определение Переменная - именованное место в памяти, в котором можно хранить некоторое значение.
ЯЗЫК ПРОГРАММИРОВАНИЯ « ПАСКАЛЬ » Программирование на Паскале.
Игровые программы на Прологе Лекция 15. «Быки и коровы» play :- rnd(X1,X2,X3,X4), int2char(X1,C1), int2char(X2,C2), int2char(X3,C3), int2char(X4,C4),
Решение задач на ветвление.. Пример задачи Присвойте величине а значение наибольшего из трех заданных чисел. Математическая запись: Дано: a, b, c – целые.
Язык программирования Pascal. Программа это упорядоченный список команд, необходимых для решения некоторой задачи. Языком программирования называют систему.
Установочная лекция по дисциплине Старший преподаватель каф. ВТ Юлия Вадимовна Новицкая
Что такое алгоритм? Назовите базовые структуры алгоритмов. В какой форме записываются алгоритмы? Словесная, графическая, программная. Составьте алгоритм.
ТИПЫ ДАННЫХ. СТАНДАРТНЫЕ ФУНКЦИИ.. ТИПОМ ДАННЫХ, или величин, называется совокупность их возможных операций, выполняемых над ними, т. е. тип является.
Перестановки и факториалы Фамилии авторов Яковлева О.Е Егорова Е.Н
Структура программы. Объявление переменных Лекция 2.
Язык программирования Pascal Основные понятия А. Жидков.
Транксрипт:

Директивы компилятора. Рекурсия на Прологе Лекция 4

План Структура программы на Прологе. Домены: стандартные, списковые, составные. Альтернативные домены. Рекурсия в Прологе.

Директивы компилятора trace nowarnings include check_determ

Константы CONSTANTS pi=3.14 bgi_path="c:\\prolog\\bgi"

Домены integer - целое число ( ); real - действительное число (±e ±1e 308 ); char - символ в одиночных апострофах; string - последовательность символов в «»; symbol - символическая константа (атом); file - файл.

Стандартные предикаты readln readint readreal readchar inkey keypressed readterm write nl upper_lower str_int str_real str_char char_int true fail bound

Программа «Родственники» предок(Предок,Потомок):- родитель(Предок,Потомок). /* предком является родитель */ предок(Предок,Потомок):- родитель(Предок,Человек), предок(Человек,Потомок). /* предком является родитель предка */

Правило, реализующее шаг рекурсии :- [ ],, [ ].

Программа «Факториал» 1!=1 /* факториал единицы равен единице */ N!=(N-1)!*N /* для того, чтобы вычислить факториал некоторого числа, нужно вычислить факториал числа на единицу меньшего и умножить его на исходное число */

Факториал fact(1,1). /* факториал единицы равен единице */ fact(N,F):- N1=N-1, fact(N1,F1), /* F1 равен факториалу числа на единицу меньшего исходного числа */ F=F1*N. /* факториал исходного числа равен произведению F1 на само число */

Факториал fact(1,1). /* факториал единицы равен единице */ fact(N,F):- N>1, /* убедимся, что число больше единицы */ N1=N-1, fact(N1,F1), /* F1 равен факториалу числа, на единицу меньшего исходного числа */ F=F1*N. /* факториал исходного числа равен произведению F1 на само число */

Факториал fact(1,1):-!. /* условие останова рекурсии */ fact(N,F):- N1=N-1, fact(N1,F1), /* F1 равен факториалу числа, на единицу меньшего исходного числа */ F=F1*N. /* факториал исходного числа равен произведению F1 на само число */

Факториал fact2(N,F,N,F):-!. /* останавливаем рекурсию, когда третий аргумент равен первому*/ fact2(N,F,N1,F1):- N2=N1+1, /* N2 - следующее натуральное число после числа N1 */ F2=F1*N2, /* F2 - факториал N2 */ fact2(N,F,N2,F2). /* рекурсивный вызов с новым натуральным числом N2 и соответствующим ему посчитанным факториалом F2 */

Факториал factM(N,F):- fact2(N,F,1,1). /* вызываем предикат с уже заданными начальными значениями */