Как можно переписать код, чтобы при невыполнении правила что-то выводилось? - Prolog
Формулировка задачи:
Как можно переписать вывод, или где-то что-то добавить, чтобы после выполнения этого кода вывелось "No".
Т.е. у Димы нет компьютера, он останавливается на первом правиле, и ничего не выводит. Но если написать, что у него есть компьютер, но нет игры, то уже выводит "No"
Листинг программы
- implement main
- open core
- domains
- name = string.
- class facts
- % факты:
- wants_play: (name). %Ф1: Субъект хочет поиграть
- have_internet: (name). %Ф2: У субъекта есть интернет
- have_game: (name). %Ф3: У субъекта есть игра
- have_desktop(name).
- have_laptop(name).
- class predicates
- % действия:
- turn_on_PC: (name) nondeterm anyflow. %Д1: Субъект включает ПК
- download_game: (name) nondeterm anyflow. %Д2: Субъект скачивает игру
- plays_game: (name) nondeterm anyflow. % Д3: Субъект играет
- clauses
- turn_on_PC(Name):- wants_play(Name), have_desktop(Name);have_laptop(Name).
- plays_game(Name):- wants_play(Name), turn_on_PC(Name), have_game(Name);download_game(Name).
- download_game(Name):- wants_play(Name), turn_on_PC(Name), have_internet(Name), not(have_game(Name)).
- clauses
- wants_play("Dima").
- clauses
- run() :-
- console::nl,
- console::write(" -- Дима будет играть? "),
- console::nl,
- foreach turn_on_PC("Dima") do
- plays_game("Dima"),!,console::write("Yes"); console::write("No")
- end foreach.
- end implement main
- goal
- mainExe::run(main::run).
Решение задачи: «Как можно переписать код, чтобы при невыполнении правила что-то выводилось?»
textual
Листинг программы
- clauses
- turn_on_PC(Name):- wants_play(Name), have_desktop(Name);have_laptop(Name).
- plays_game(Name):- if wants_play(Name), turn_on_PC(Name), (have_game(Name);download_game(Name)) then console::write("Yes") else console::write("No") end if.
- download_game(Name):- wants_play(Name), turn_on_PC(Name), have_internet(Name), not(have_game(Name)).
- clauses
- wants_play("Dima").
- wants_play("Lena").
- have_desktop("Lena").
- have_game("Lena").
- clauses
- run() :-
- console::init(),
- console::nl,
- console::write(" -- Lena будет играть? "), console::nl,
- plays_game("Lena"), console::nl,
- succeed().
- end implement main
- goal
- mainExe::run(main::run).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д