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

Системные расширения

Протоколирование вывода на экран

Нажав Alt-P и выбрав опцию LOG File, вы можете сохранить все выводя-

щиеся на экран (трассировку, диагностики и т.д.) в файле с именем

PROLOG.LOG.

Переполнение целых чисел

Когда режим <OverflowCheckonIntegers> в <Options/Compiler

Directives> установлен <On>, Турбо Пролог генерирует код для контроля

ошибок переполнения целых чисел.

Контроль переполнения пользовательского стека

В <Options> меню вы можете установить Off (выключить) генерацию кода

для контроля стека для каждого предиката (что уменьшает размер кода).

Управление распределением памяти для резидентных программ

Используя Options/Compiler Directives/Memory Allocation меню (или

используя директиву компилятора heap = dddd в программе), вы можете уве-

личить размер памяти, который будет выделяться вашей EXE-программе опера-

ционной системой.

Указав значение по умолчанию (0), приложение резервирует всю доступ-

ную память.

Это средство, в основном, используется при создании резидентных

программ, что является высоким уровнем программирования на Турбо Прологе.

Отчет об ошибках времени выполнения

Турбо Пролог 2.0 делает доступным отчет о месте, где произошла ошиб-

ка в .EXE файлах. Различные уровни ошибок, которые могут включаться в от-

чет, устанавливаются с помощью директивы компилятора errorlevel (то же

самое можно сделать с помощью Options/Compiler Directives/Errorlevel ме-

ню).

Автоматическое обновление окон

В версии 1.x Турбо Пролога, когда окна убираются с экрана, вам необ-

ходимо было восстанавливать содержимое других окон, поскольку они были

испорчены. Сейчас это всегда автоматически выполняется системой.

Загрузка файлов, используя командную строку DOS

Турбо Пролог всегда загружает файл в редактор, если вы укажете его

имя как аргумент (-e Имя Файла) в командной строке DOS, когда вы загружа-

ете Турбо Пролог. Например, следующая командная строка загружает Турбо

Пролог и помещает файл MYPROG.PRO в редактор:

prolog -emyprog.pro

Таким же способом Турбо Пролог загружает SYS файл (файл установок,

например: C:\TPROLOG\PROLOG.SYS), если вы укажете аргумент (-s Файл Уста-

новок) в командной строке DOS. Например, следующая строка загружает файл

установок: PROLOG.SYS из каталога C:\MYPROJ:

prolog-sc:\myproj\prolog.sys

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

Если файл с именем WORK.PRO существует в каталоге, откуда вы запус-

каете Турбо Пролог, то система автоматически загружает этот файл в редак-

тор.

Переменные среды DOC

Если не обнаруживается .SYS файлов в текущем каталоге, Турбо Пролог

выбирает значение у переменных сред DOS с именем PROSYS, который указыва-

ет, где можно найти файл установок. Для создания такой переменной среды

введите следующую SET команду DOS:

set prosys = c:\prolog\prolog.sys

Турбо Пролог также выбирает символ контроля "снега" на экране

CGASNOWCHECK, который указывает необходимость контроля "снега" - On (=T)

или отсутствие необходимости контроля "снега" - Off (=F).

Для включения контроля "снега" введите:

set cgasnowcheck = t

Для выключения контроля "снега" введите:

set cgasnowcheck = f

Текстовый режим высокого разрешения

Турбо Пролог работает с видео-картами, поддерживающими 43 или 50

строк на 90, 120 или 132 колонки. Вы можете установить данный режим в ок-

ружении разработки (используя <Setup/ Miscellanious/Screen Mode> меню)

или выбрать в программе с помощью textmode предиката.

Генерация улучшенного кода

Программы, откомпилированные Турбо Прологом 2.0, будут от 10 % до

25% меньше, в среднем, чем программы, откомпилированные версией 1.x.

Версия 2.0 генерирует наименьшие программы, т.к. библиотека была пе-

ределана. Выбрав соответствующие директивы компилятора и определив ваши

личные факты для fileerror и criticalerror, можно получить уменьшение

.EXE файла около 12 К.

Улучшения в редакторе

Редактор улучшен несколькими новыми возможностями, такими как "восс-

тановление после удаления" и "изменение по обстоятельствам" для слов и

выбранных блоков. Дополнительно редактор имеет текстовый режим, когда

строка автоматически продолжается на следующей, если она выходит за пре-

делы окна редактора.

Поддержка начального экрана

.EXE-файлы Турбо Пролога 2.0 не создают автоматические окна, когда

программа стартует. Иначе говоря, экран остается в начальном состоянии и

курсор не изменяется. Это позволяет вам писать приложения, управляемые

как командами DOS.

Изменения в языке

Знак процента как комментарий на строке

Все символы на строке после знака процента интерпретируются как ком-

ментарий (за исключением знака процента внутри строковой константы):

% Это строка комментария.

fail. % Это символы комментария.

write ("Это % не является комментарием").

Предикаты с множественными операндами

Сейчас возможно объявить и использовать предикаты с одними или более

числом операндов. Некоторые стандартные предикаты могут быть расширены

более чем одним операндом.

Снижение контроля типов

Контроль типов изменен так, что переменная из пользовательского до-

мена, объявленного эквивалентным стандартному домену, совместима с аргу-

ментом, объявленным как стандартный домен. Однако, два различных пользо-

вательских домена, объявленных как один и тот же стандартный домен, не

являются совместимыми.

Совместимость символов и целых чисел

Переменные из char (символы) домена сейчас совместимы с переменными

из integer (целые числа) домена. Это значит, что вы можете использовать

символьные значения при вычислениях, и вы можете выводить ASCII значения

целочисленных переменных прямо на экран.

Несколько секций (разделов) внутренних баз данных

Сейчас есть возможность иметь несколько database секций и иметь ло-

кальные базы данных в подмодулях проекта.

Так, например, database секция может быть заполнена на диске с по-

мощью версии с 2-мя аргументами предиката SAVE, или прочитать обратно в

память с помощью версии с 2-мя аргументами предиката CONSULT. Все факты в

database секции могут быть удалены одновременно с помощью 2-х аргументной

версии предиката RETRACTALL.

Вызов других языков из Турбо Пролога

Сейчас возможно вызывать другие языки из Турбо Пролога. Если гло-

бальный предикат объявлен реализованным на другом языке, то система гене-

рирует вызывающую программу для данного языка. Это общий интерфейс. В

принципе, есть возможность работать со всеми компиляторами, которые соз-

дают .OBJ-файлы, однако, это не зависит от обстоятельств. Можно лишь га-

рантировать, что точно работает интерфейс с версией 1.5 Турбо Си (смотри

Главу 3).

Секция определения констант

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

программе в новой секции CONSTANTS. Константы могут использоваться для

назначения имен целочисленным значениям (например, pi, атрибут для крас-

ного цвета, различные значения для заполнения образцов, номера окон и

т.д.). Определения констант работают как макро; вы можете использовать их

для подстановки в доменах и предикатах.

Условная компиляция

Сейчас добавлены новые средства для условной компиляции (ifdef,

ifndef, elsedef, enddef). Вы можете прокомментировать (по условиям) часть

вашей программы. Это может служить поддержкой той же программы для раз-

личных языков или если вам необходимо иметь версию программы для графи-

ческого режима и другую версию для текстового режима. Условная компиляция

обсуждается в Главе 2.

Стандартный ввод/вывод

Домен file дополнен тремя новыми альтернативами stdin, stdout и

stderr. Они являются предопределенными для системы DOS. Преимущество этих

средств передачи потоком в файл в том, что их можно перенаправлять в DOS,

т.к. программы Турбо Пролога сейчас поддерживают переназначение (piping).

Специальные имена библиотек

Сейчас возможно объявить, что глобальные предикаты имеют специальные

имена в .OBJ-файле, отличные от автоматического именования (имя_0, имя_1,

...).

Установка уровня ошибки в DOS

Если вы используете exit, предикат для завершения работы программы,

то можно установить DOS ERRORLEVEL в exit предикате. Если exit предикат

используется без аргументов, то устанавливается значение 0. Это использу-

ется в приложениях, которые выполняются в командных (batch) файлах.

Улавливание ошибок и обработка исключительных состояний

Турбо Пролог 2.0 полностью обеспечивает улавливание ошибок и обра-

ботку исключительных состояний внутри trap предиката. Trap предикат может

улавливать все ошибки времени выполнения, включая переполнение памяти,

поскольку heap, trail и Stack перед установкой обрабатываются пользовате-

лем. Trap также работает с exit.

Полное управление прерыванием

Breack может быть установлен в On или Off посредством breack преди-

ката. Если он установлен Off, то можете опросить посредством

breackpressed предиката; если Breack был нажат, обрамляющий trap то пре-

дикат может захватить его.

Новые стандартные предикаты

bios/4

bios предикат был расширен до 4-х аргументов, чтобы был доступен

возвращаемый флаг после прерывания.

colorsetup

С помощью colorsetup предиката пользователь вашей программы может

интерактивно изменять цвета окна в вашем приложении, используя ту же тех-

нику, что и в Турбо Прологе (Setup/Colors меню).

cursorform/2

cursorform предикат сейчас имеет выходную (output flow) версию, что

позволяет вашей программе прочитать текущий формат курсора.

edit/13

Edit предикат расширен в новой версии, поддерживая расширенные воз-

можности, такие как выборка текстового режима, ввод с отступами

(indentatipn), возврат позиции в тексте и т.д. Старый предикат editmsg

сохранен для совместимости со старыми версиями.

envsymbol

Вы можете прочитать переменные среды DOS, используя envsymbol преди-

кат, для поиска указанной переменной среды в таблице среды DOS для прик-

ладной программы.

errormsd

Этот предикат имеет доступ к файлу, который структуирован также, как

и PROLOG.ERR. Практическое использование этого предиката - для выборки

объяснения для кода ошибки.

existwindow

Новый предикат existwindow проверяет наличие указанного окна на эк-

ране.

format

Этот предикат обеспечивает форматирование числовых значений в строку

таким же способом, как и writef.

framewindow/4

Данный предикат расширен для указания символов рисования и аттрибута

(цвета) обрамления.

makewindow/11

Данный предикат имеет в новой версии 3 входных (input) аргумента:

- указатель необходимости очистки экрана при создании окна;

- позиции, где метка (название) окна должно быть помещено;

- символы для форматирования обрамления окна.

Создание окна без стирания содержимого экрана позволяет считать со-

держимое части экрана, что обычно используется резидентными программами.

random/2

В версии 2.0 имеется версия random предиката с 2-мя аргументами, он

поставляет случайные целые числа из указанного диапазона. Это более быст-

ро, чем генерация вещественных случайных чисел.

removewindow/2

Removewindow предикат поддерживает другую версию, чем изъятие окна

без восстановления того, что было под ним.

resizewindow

Ваша программа может предоставить технологию интерактивного измене-

ния размеров окна, что является альтернативой тому, когда ваша программа

указывает другие размеры текущего окна.

retractall

Новый предикат retractall удаляет все факты из базы данных. Это за-

меняет retract... fail комбинацию. Retractall также существует в версии 2

аргументов, где второй явно указывает имя базы данных.

snowcheck

Данный предикат читает или устанавливает статус контроля "снега" для

CGA вывода.

system/3

Вы можете установить видеосистему для текстового режима, который

Турбо Пролог не поддерживает.

trunC

Это новая арифметическая функция, преобразующая вещественные числа в

целые путем округления.

unreadchar

Этот предикат позволяет вам сместиться на один символ назад в буфере

клавиатуры.

upper_lower

Этот предикат расширен новой версией преобразования между строчными

и прописными буквами.

writef/*

Этот предикат сделан типо-независимым, что позволяет вам выводить

целые без знака, шестнадцатиричные или символы среди других.

Расширение управления ошибками в .EXE файлах

criticalerror

Внутренний предикат criticalerror заменяет обработчик критических

ошибок DOS с теми же ограничениями: только функции DOS, 01-0CH и 59h до-

пустимы.

Если приложение использует другие вызовы функции DOS, DOS получает

непредсказуемое состояние (крах!)

Вы можете заменить установки по умолчанию для этих предикатов. Эти

предикаты никогда не завершаются неудачей (fail) и могут работать только

в .EXE-файлах.

fileerror

Если действие с файлом (например, как чтение в редактор) завершается

неудачно, то внутренний предикат fileerror активизируется.

Рекомендуем применять оба fileerror и criticalerror в ваших профес-

сиональных приложениях. Вы сможете сами обрабатывать ошибки и получите

.EXE-файл, т.к. не будут включаться стандартные обработчики ошибок и Тур-

бо Пролог библиотек.