logo
TurboProlog / Документация / TOM_1

Примеры

Эти примеры демонстрируют, как вы можете использовать стандартные

предикаты чтения для работы со сложными структурами данных и вводимыми

списками.

1. Программа CH12EX07.PRO показывает, как использовать readln и изв-

лекать сложные структуры данных из входных строк.

/* Program CH12EX07.PRO - Использование readln */

domains

person = p(name,age,teno,job)

age = integer

telno,name,job = string

predicates

readperson (person)

run

goal

run.

clauses

readperson(p(Name,Age,Teno,Job)) :-

write ("Which name ?"),readln(Name),

write ("Job ?"),readln(Job),

write ("Age ?"),readln(Age),

write ("Telephone no?"),readln(Telno).

run :-

readperson (P),nl,write(P),nl,nl,

write("Is this compound object OK (y/n)"),

readchar (Ch),Ch='y'.

run :-

nl,nl,write("Alright,try again"),nl,nl,run.

2. В данном примере показано использование предиката readint для

чтения целых чисел и преобразования их в список. Он читает одно це-

лое число на строке, пока вы не введете не целое (клавишу X). После

этого readint потерпит неудачу, и Турбо Пролог выведет список на эк-

ран.

/* Program CH12EX08.PRO - Использование readint */

domains

list = integer*

predicates

readlist (list)

goal

makewindow (1, 7, 7,"Integer List", 5, 5, 15, 70),

write("Type in a column of integers,liket this:",

"\n\n integer (pres ENTER)\n integer (pres

ENTER)\n",

"etc.\n\n Type X (pres ENTER) to end the

list.\n\n"),

readlist(TheList ),

write("\nThe list is:",TheList).

clauses

readlist([H|T]) :-

write("\16"), /* Печать символа-приглашения */

readint(H), !,

readlist(T).

readlist([]).

Загрузите программу CH12EX08.PRO, затем нажмите Alt -R для запуска.

После подсказки введите целые числа (например, 1234 Enter 567 Enter

89 Enter 0 Enter), затем нажмите X Enter для окончания ввода.