3.4.3 Использование рекурсии
В VIP допускается использование рекурсивных правил. Рекурсия – вызов в теле правила самого. Рекурсивные вызовы используются для организации циклического выполнения определенных действий в программах. В программах написанных на VIP существует понятие оптимизированной хвостовой рекурсии. Если рекурсия не оптимизирована, то при вызове правила резервируется дополнительная стековая оперативная память ЭВМ, в результате возникает ошибка – отсутствие свободной оперативной памяти.
Причины возникновения не оптимизированной рекурсии:
Рекурсивный вызов не последний в теле правила;
Наличие условия перед рекурсивным вызовом;
Если в теле правила вызывается предикат, содержащий условия.
Рекурсивные вызов может понадобится для зацикливания работы программы. Такая необходимость может возникнуть при программировании опроса меню программы.
Пример. Составить программу для опроса клавиатуры. Программа реагирует на нажатие клавиш «1», «2» и «3». При нажатии клавиши «ESC» (код 27) программа завершает свою работу.
predicates
action(char)
repeat
clauses
repeat. %рекурсивное правило
repeat:-
repeat.%рекурсия оптимизирована
action('1'):-
write("\nКлавиша 1"),readchar(_).
action('2'):-
write("\nКлавиша 2"),readchar(_).
action('3'):-
write("\nКлавиша 3"),readchar(_).
action('\27'):-
write("\nКонец работы\n").
goal %меню, зацикливание
repeat,
write("\n1-Певый пежим”),write(“\n2-Второй режим”),
write(“\n3-Третий режим\nВведите цифру”),
readchar(Num),action(Num),Num='\27',!.
Для прекращения работы программы использовано отсечение в целевом утверждении программы.
- Основы построения автоматизированных информационных систем
- Глава 1. Системный подход при разработке автоматизированных информационных систем
- 1.1. Общие положения
- 1.2. Автоматизированные информационные системы
- 1.3. Автоматизированные системы в управлении
- 1.4. Методы анализа автоматизированных информационных систем
- 1.5. Структура автоматизированной информационной системы
- Глава 2. Методы проектирования информационных систем
- 2.1. Обобщенная модель информационной системы и методы проектирования
- 2.2. Каноническое проектирование информационных систем
- 2.3. Управление требованиями, спецификация rup
- 2.4. Модели жизненного цикла информационной системы
- 2.5. Использование case технологий при разработке информационных систем
- 2.6. Методологии case проектирования
- 2.6.1. Методология datarun
- 2.6.2. Методология rad
- 2.6.3. Графические нотации
- 2.7. Системные методологии анализа
- 2.7.1. Методология aris
- 2.7.2. Методология baan
- 2.7.3. Методология Oracle
- 2.7.4. Методология Betec (©)
- Глава 3. Особенности современных информационных систем
- 3.1. Корпоративные информационные системы
- 3.2. Системы обработки транзакций
- 3.3. Системы поддержки принятия решения
- 3.4. Экспертные информационные системы
- 3.4.1. Основы создания информационных систем в Visual Prolog
- 3.4.2. Управления поиском решения в vip
- 3.4.3 Использование рекурсии
- 3.4.4. Управление потоком ввода–вывода
- 3.4.5. Особенности составления описания предметной области
- 3.4.6. Особенности работы с базой фактов
- 3.5. Объектно–ориентированные системы
- 3.6. Документальные системы
- 3.6.1. Информационно-поисковый язык
- 3.6.2. Структра поисковой системы
- 3.7. Гипертекстовые информационные системы
- 4. Управление процессом проектирования автоматизированной информационной системы
- 4.1. Методы управления качеством разработки аис
- 4.2. Оценка эффективности функционирования автоматизированных информационных систем
- 4.2.1. Экономическая эффективность
- 4.2.2. Производительность вычислительной системы
- 4.2.3. Оценка качества работы пользователя системы
- Приложения Приложение №1. Базовые сведения о языке программирования Visual Prolog
- Приложение №.2. Компилирование программ в Visual Prolog ver 5.2.
- Приложение №.3. Программа «Внутренняя база данных фактов»
- Приложение №.4. Программа «Внешняя база данных»
- Приложение №5.Некоторые стилевые параметры
- Список литературы