Пролог лабы / Лаб2
.docxСанкт-Петербургский государственный электротехнический университет «ЛЭТИ»
имени В. И. Ульянова(Ленина)
Открытый факультет
Кафедра Автоматизированных Систем Обработки Информации и Управления
Лабораторная работа №2
по дисциплине: «Проектирование систем искусственного интеллекта»
Выполнил: ст. гр. 0851
Карелина Л.А
Проверил:
Соничев А.В.
Санкт-Петербург
2015
Программирование итераций
Цель работы - ознакомление с предопределенными предикатами ввода/вывода, неудачного завершения и отсечения; изучение метода программирования итераций; реализация на Прологе итерационного процесса.
Задание к лабораторной работе
-
Провести тестирование программы LAB2.PRO .
-
Изменить программу LAB2.PRO так, чтобы она воспринимала целые числа, выводила их на экран и завершалась при вводе числа 0.
-
Модифицировать программу LAB2.PRO так, чтобы она воспринимала два десятичных числа и выводила их на экран.
-
Модифицировать программу LAB2.PRO таким образом, чтобы она вычисляла сумму двух введенных десятичных чисел и выдавала эту сумму на экран. Программа должна завершаться, если одно из двух вводимых чисел равно 0.
Порядок выполнения задания
-
Загрузить Турбо-Пролог.
-
Загрузить программу LAB2.PRO и убедиться в правильности ее работы.
-
Внести требуемые изменения.
Содержание отчета
Отчет должен содержать полученные тексты программ и результаты их работы.
Текст программы:
domains
intvalue = integer
realvalue = real
name = symbol
predicates
repeat
do_echo
do_step2
do_step3
do_step4
check(name)
checkint(intvalue)
checkreal(realvalue)
checkrealpair(realvalue, realvalue)
clauses
repeat.
repeat :- repeat.
do_echo :-
repeat,
readln(Name),
write(Name), nl,
check(Name), !.
check(stop) :-
nl, write("Bye!").
check(_) :- fail.
do_step2 :-
repeat,
readint(Value),
write(Value), nl,
nl,
checkint(Value),!.
do_step3 :-
repeat,
readreal(Value1),
readreal(Value2),
nl,
write(Value1), nl,
write(Value2), nl,
nl,
checkrealpair(Value1, Value2), !.
do_step4 :-
repeat,
readreal(Value1),
readreal(Value2),
nl,
Value3 = Value1 + Value2,
write(Value1, " + ", Value2, " = ", Value3),
nl, nl,
checkrealpair(Value1, Value2), !.
checkint(0) :-
write("Bye!").
checkint(_) :- fail.
checkreal(0) :-
write("Bye!").
checkreal(_) :- fail.
checkrealpair(0,_) :-
write("Bye!").
checkrealpair(_,0) :-
nl, write("Bye!").
checkrealpair(_,_) :-
fail.
Результат работы
Шаг 2
ввод целых чисел, вывод их на экран, завершение при вводе числа 0.
Шаг 3
ввод двух десятичных чисел и вывод их на экран, завершение при вводе 0.
Шаг 4
вычисление суммы двух введенных десятичных чисел, вывод этой суммы на экран. завершение, если одно из двух вводимых чисел равно 0.