Мои Конспекты
Главная | Обратная связь

...

Автомобили
Астрономия
Биология
География
Дом и сад
Другие языки
Другое
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Металлургия
Механика
Образование
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Туризм
Физика
Философия
Финансы
Химия
Черчение
Экология
Экономика
Электроника

Задания для самостоятельной работы





№1.Описать предикаты:

1) Найти квадрат числа X; куб числа X.

2) Найти значение функций у = а*х + b, где a, b и х — целые числа.

3) Найти периметр треугольника, если все его стороны изве­стны.

4) Найти площадь прямоугольного треугольника по двум его катетам.

5) Найти площадь трапеции с основаниями А и В и высотой Н.

6) Найти квадрат гипотенузы в прямоугольном треугольни­ке по двум его катетам.

7) Найти объем прямоугольного параллелепипеда со сторо­нами А, В и С.

8) Зная скорость V и время Т, определите путь.

9) Найти последнюю цифру в записи натурального числа.

10) Найти цифры в десятичной записи двузначного натураль­ного числа.

11) Найти первую цифру в десятичной записи трехзначного натурального числа.

12)Найти сумму цифр в десятичной записи трехзначного на­турального числа.

№2.

1) Найти

А. Наименьшее значение из двух чисел;

Б. Наименьшее значение из трех чисел на основе первой задачи;

В. Наименьшее значение из шести чисел на основе второй задачи.

2) Определить, удовлетворяют ли длины трех отрезков усло­вию прямоугольного треугольника.

3) Определить, удовлетворяют ли длины трех отрезков усло­вию треугольника.

4) Найти модуль числа X.

5) Описать предикат для вычисления функции, заданной соотношением:

Рекомендуемая литература

1. Ин Ц., Соломон Д. Использование Турбо-Пролога: Пер. с англ.-М.:Мир, 1993.-608 с.,ил.

2. Информатика. Задачник-практикум в 2 т./Под ред. И.Г.Семакина, Е.К. Хеннера: Том.2.-М.:-БИНОМ. Лаборатория знаний, 2003.-278 с.:ил.

Лабораторная работа №3. Повторение и рекурсия

Пример 1. Выводить на экран квадрат числа, вводимого пользователем, пока не будет введен 0.

Программа 15. Вывод квадрата числа

Domains

x=integer

Predicates

go

repeat

check(x)

Clauses

repeat.

repeat:- repeat.

go:- repeat, write (“Введите число пожалуйста или 0-для выхода ”),

readint(A), check(A).

check(0):-nl,write(“ok”),!.

check(A):-B=A*A, write(B),nl, fail.

Или

go:- repeat, write (“Введите число ”), readint(A),

B=A*A, write(А, “^2= ” ,B),nl,

write(“прервать да/нет (y/n) ”), readchar(C), C= “n”,!.

Пример 2. Организовать меню для выбора арифметической операции.

Программа 16. Меню

Domains

x=integer

Predicates

menu

actions(x)

repeat

Clauses

repeat.

repeat:- repeat.

menu:- repeat,

write(“Введите 1 для +, 2 для *, 3-для -, 0-для выхода\n”),

readint(N),

actions(N).

actions(0):-!.

actions(1):-write(“Введите первое число”), nl, readint(A),

write(“Введите второе число”) nl, readint(B),

С=A+B,write(C),nl,fail.

actions(2):- write(“Введите первое число”), nl, readint(A),

write(“Введите второе число”) nl, readint(B),

С=A*B,write(C),nl,fail.

actions(3):- write(“Введите первое число”), nl, readint(A),

write(“Введите второе число”) nl, readint(B),

С=A-B,write(C),nl,fail.

Пример 3. Вычислить n-ый член последовательности Фибоначчи. N-ый член последовательности Фибоначчи, начиная с третьего, определяется суммой 2-х предыдущих, а 1-ый и 2-ой члены равняются единице.

Введем двуместный предикат fib, первый аргумент будет определять порядковый номер члена, а второй будет записываться для записи ответа. Введем два факта, первый - первый член последовательности Фибоначчи равен 1, второй - второй член последовательности равен 1, а для определения n-го члена запишем правило. Действительно, чтобы определить n-ый член, мы должны определить значения двух предыдущих и сложить их.

fib(1,1).

fib(2,1).

fib(N,F):- N1=N-1, fib(N1,F1), N2=N-2, fib(N2,F2), F=F1+F2.

? fib(1,F)

Ответом будет F=1, и Пролог сделает попытку сопоставить с запросом второй факт и потерпит неудачу. Однако сопоставление головы третьего утверждения с запросом происходит успешно и осуществляется попытка доказать цель fib(-1,F1), что в свою очередь, приводит к цели fib(-2, …)и так далее, т.е. образуется бесконечный цикл. Эту ситуацию можно устранить, используя отсечение и тем самым, указывая Прологу, что не существует других решений в случае успешного согласования граничного условия.

Программа 17. Последовательность Фибоначчи

Domains

x=integer

Predicates

fib(x,x)

Clauses

fib(1,1):-!.

fib(2,1):-!.

fib(N,F):- N1=N-1, fib(N1,F1), N2=N-2, fib(N2,F2), F=F1+F2.

 




Поиск по сайту:







©2015-2020 mykonspekts.ru Все права принадлежат авторам размещенных материалов.