/* GoogleAds */

Главная

ПРОЕКТ "ЧЕЛОВЕК. ЗЕМЛЯ. ВСЕЛЕННАЯ"

Инструменты пользователя

Инструменты сайта


project:prolog:listing:vvod_slova_s_klaviatury



Программа "Ввод слова с клавиатуры"

Программа «Ввод слова с клавиатуры» - демонстрация метода повтора с помощью простой рекурсии repeat. Программа считывает строку введенную с клавиатуры, и дублирует ее на экран. Если пользователь введет stop, то программа завершается.

/* 10.03.2012
Демонстрация использования метода повтора, определенного пользователем с помощью рекурсии общего вида*/
 
domains
 
name = symbol
 
predicates
 
write_message /* вывод приветствия */
repeat /* предикат рекурсии */
do_echo /* конечное правило повтора */
check(name) /* предикат вводимого с клавиатуры слова */
 
clauses
 
/* Рекурсия общего вида, правило повтора */
repeat.
repeat :- repeat.
 
/* Вывести информацию для пользователя */
write_message :- nl, write("Введите, пожалуйста, имена"), nl,
write("Я повторю их"), nl,
write("Чтобы остановить ввод и вывод, введите stop"),nl,nl.
 
/* Ввести слово с клавиатуры, вывести его на экран, повторить эти действия
 
do_echo является конечным правилом в цепи повторений, условие выхода из которой определяется предикатом check.
Благодаря тому, что правило repeat является компонентой, правило do_echo становится конечным правилом повтора.
Правило повтора является первой компонентой правила do_echo.
Утверждение repeat вызывает повторное выполнение всех следующих за ним компонент.
 
Предикат readnl(Name) считывает строку с клавиатуры.
 
Подправило check(Name) имеет два возможных значения.
Одно определяется подправилом: check(stop) :- nl, write(" - OK, bye!").
Если вводимая строка имеет значение stop, то правило будет успешным.
На экране появляется сообщение «Завершение программы» , и процесс повторения завершается.
Символ отсечения (!) служит для прекращения откатов, если условие check выполнено.
 
Другое значение check(Name) определяется подправилом: check(Name) :- fail.
 
Если значение строки отлично от stop, то результат выполнения этого правила будет fail.
В этом случае произойдет откат к правилу repeat. */
 
do_echo :- repeat, readln(Name), write(Name),nl, check(Name),!.
 
check(stop) :- nl, write("Завершение программы").
check(Name) :- fail.
 
/* Можно и так
check(_) :- fail. */
 
goal
 
write_message,
do_echo.

!!Рекомендуем: Семейная Энциклопедия ЗдоровьяЧто должен знать современный человек?Самоанализ. Работа над собойОглавлениеГлавная сайта

project/prolog/listing/vvod_slova_s_klaviatury.txt · Последние изменения: 2023/09/03 22:22 (внешнее изменение)

Вы можете оставить свои комментарии в разделе "Обсуждение".
Рекомендуем оформить подписку на новости данного раздела. Для этого нажмите на кнопку "Подписаться", расположенную справа снизу каждой страницы (знак конверта).




Индекс цитирования