
- •Базовая графика
- •Двухмерная графика
- •Векторная графика
- •Растровая графика
- •Фрактальная графика
- •Трёхмерная графика
- •Представление цветов в компьютере
- •Реальная сторона графики
- •Основные области применения
- •Современные стандарты компьютерной графики.
- •Графические диалоговые системы
- •Применение интерактивной графики в информационных системах
- •Знания и модели их представления: логическая, продукционная, реляционная, фреймы, семантические сети.
- •Язык программирования Пролог: структура программы, домены, предикаты, факты и правила, рекурсивные правила, динамические предикаты
- •Управляющие предикаты
- •Прочие стандартные предикаты
- •Факты в Прологе
- •Правила в Прологе
- •Методы организации рекурсии
- •Простая рекурсия
- •Метод обобщенного правила рекурсии (опр)
- •Реализация основных моделей представления знаний средствами языка Пролог
- •Общая проблема информационной безопасности информационных систем Безопасность информационных систем Основные понятия
- •Проблемы информационной безопасности
- •Защита информации при реализации информационных процессов. (ввод, вывод, передача, обработка, накопление, хранение)
- •Организационное обеспечение информационной безопасности
- •Защита информации от несанкционированного доступа
- •Глава 1. Защита от несанкционированного доступа к информации. Термины и определения
- •Глава 2. Основы правового регулирования отношений, связанных с конфиденциальной информацией
- •Глава 3. Правовая защита конфиденциальной информации и ответственность за неправомерные действия в отношении этой информации
- •Глава 4. Порядок учета, хранения и использования документов, содержащих конфиденциальную информацию
- •Математические и методические средства защиты
- •Средства защиты информации
Методы организации рекурсии
Правила, не использующие правил повтора в качестве компонент, являются наиболее общим способом организации рекурсивной обработки данных при программировании на Прологе. Этот метод подходит для целого ряда применений, начиная с обработки файлов и кончая математическими вычислениями.
Начало формы
Конец формы
Простая рекурсия
Правило, содержащее само себя в качестве компоненты, называется правилом рекурсии. Правила рекурсии так же как правила повтора реализуют повторное выполнение задач. Они весьма эффективны, например, при формировании запросов к базе данных, а также при обработке таких доменных структур, как списки.
Пример правила рекурсии:
write_srting :- /* выдать строку */
write(«Человек - это звучит гордо!»),
nl,
write_string.
Это правило состоит из трех компонент. Первые две выдают строку «Человек - это звучит гордо!» и переводят курсор на начало следующей строки экрана. Третья - это само правило. Так как оно содержит само себя, то чтобы быть успешным, правило write_string должно удовлетворять само себе. Это приводит снова к вызову операции выдачи на экран строки и смещение курсора на начало новой строки экрана. Процесс продолжается бесконечно и в результате строки выдается на экран бесконечное число раз.
Однако в случае возникновения бесконечной рекурсии число элементов данных, используемых рекурсивным процессом, непрерывно растет и в некоторый момент стек переполнится.
На экране появится сообщение об ошибке. Возникновение переполнения во время выполнения программы для пользователя нежелательно, так как в результате могут оказаться утерянными существенные данные. Чтобы избежать подобные ситуации, необходимо увеличить размер стека.
Если рекурсивное правило не генерирует указателей отката и последняя подцель правила является рекурсивным вызовом самого правила, то Пролог устранит дополнительные расходы, вызываемые рекурсией. Этот процесс нызывается устранением хвостовой рекурсии.
Избежать возникновения бесконечной рекурсии можно. Для этого следует ввести предикат завершения, содержащий условие выхода. Формулировка условия выхода для правила write_string может иметь вид: «Продолжать печать строки до тех пор, пока счетчик печати не превысит число 7. После чего остановить процесс».
Определение условий выхода и включение их в правило рекурсии является очень важным элементом программирования на Прологе.
Метод обобщенного правила рекурсии (опр)
Обобщенное правило рекурсии содержит в теле правила само себя. Рекурсия будет конечной, если в правило включено условие выхода, гарантирующее окончание его работы. Тело правила состоит из утверждений и правил, определяющих задачи, которые должны быть выполнены.
Общий вид правила рекурсии:
<имя правила рекурсии> : <список предикатов>, (1)
<предикат условия выхода>, (2)
<список предикатов>, (3)
<имя правила рекурсии>, (4)
<список предикатов>. (5)
Хотя структура этого правила сложнее чем структура простого правила рекурсии, однако в обеих случаях действуют одни и те же принципы.
Данное правило рекурсии имеет пять компонент. Первая - это группа предикатов. Успех или неудача любого из них на рекурсиию не влияет.
Следующая компонента - предикат условия выхода. Успех или неудача этого предиката либо позволяет продолжить рекурсию, либо вызывает ее остановку.
Третья компонента - список других предикатов. Аналогично, успех или неудача этих предикатов на рекурсию не оказывает влияния.
Четвертая группа - само рекурсивное правило. Успех этого правила вызывает рекурсию.
Пятая группа - список предикатов, успех или неудача которых не влияет на рекурсию. Пятая группа также получает значения (если они имеются), помещенные в стек во время выполнения рекурсии.
Правило рекурсии должно содержать условие выхода. В противном случае рекурсия бесконечна и правило бесполезно. Ответственность за обеспечение завершаемости правила рекурсии лежит на программисте.
Необязательно вызывать правило, используя то же имя переменной, что используется в голове правила. Это всего лишь позиция в списке параметров, имеющая значение при передаче значений.