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

Использование правил для условного ветвления (case).

Одно из основных различий между правилами в Прологе и процедурами в

других языках программирования заключается в том, что Пролог позволяет

задавать множество альтернативных определений одной и той же процедуры.

Это видно по программе parent на странице 60. Человек может быть предком,

будучи отцом или будучи матерью, поэтому определение предка состоит из

двух правил.

Вы можете использовать множество определений так же, как вы исполь-

зуете предложение case в Паскале, задавая множество альтернативных опре-

делений для каждого значения аргумента (или множества значений аргумен-

та). Пролог будет перебирать одно правило за другим пока он не найдет

правило, которое подходит, и затем выполнит действие, которое задается

правилом, как в программе CH05EX13.PRO

/* программа CH05EX13.PRO */

predicates

action(integer)

clauses

action(1) :-

write("Вы нажали 1").

action(2) :-

write("Вы нажали два").

action(3) :-

write("Набрано три").

action(X) :-

X<>1, X<>2, X<>3,

write("Я не знаю такого числа").

goal

write("Наберите число от 1 до 3"),

readreal(Choice), /* redreal(integer) вводит целое */

action(Choice). /* Choice имеет значение введенного

числа */

Если пользователь нажмет 1, 2 или 3 action будет вызвана с соответс-

твующим значением аргумента и будет вызвано одно из первых трех правил.

action(Choice). /* Choice имеет значение введенного

числа */

Если пользователь нажмет 1, 2 или 3 action будет вызвана с соответс-

твующим значением аргумента и будет вызвано одно из первых трех правил.