Bar/4 Графика
Назначение Рисует диаграмму
Обращение bar(Лев,Верх,Прав,Низ)
Домены (integer,integer,integer,integer)
Шаблоны описания (вх,вх,вх,вх)
аргументов
Описание bar рисует заполненную прямоугольную диаграмму.
Диаграмма заполняется, используя текущий Шаблоны и
цвет заполнения. bar не рисует контуры диаграммы для
двухмерных диаграмм, для этого используйте bar3d с
параметром Глуб, равным 0.
Верхний левый и нижний правый углы прямоугольника
задаются как (Лев,Верх) и (Прав,Низ), соответственно.
Смотри bar3d,setfillstyle,setlinestyle
Пример
include "GRAPDECL.PRO"
goal
/* Инициализация гpафики c автоматическим
определением драйвера */
initgraph(detect, 0, GraphDriver,GraphMode, ""),
setfillstyle(solid_FILL, magenta),
bar3d(100, 10, 200, 100, 5, 1),
setfillstyle(hatch_FILL, red),
bar(100, 100, 200, 200),
readchar(_),
closegraph.
bar3d/6 Графика
Назначение Рисует трехмерную диаграмму
Обращение bar3d(Лев,Верх,Прав,Низ,Глуб,Верхфлаг)
Домены (integer,integer,integer,integer,integer,integer)
Шаблоны описания (вх,вх,вх,вх,вх,вх)
аргументов
Описание bar3d рисует трехмерную прямоугольную диаграмму,
заполненную текущим шаблоном и цветом заполнения.
Контур трехмерной диаграммы рисуется линией текущего
стиля и цвета. Глубина диаграммы в пикселах задается
параметром Глуб.
Параметром Верхфлаг задается необходимость вывода
вершины трехмерной диаграммы. Если Верхфлаг не равен
0, вершина выводится, в противном случае вершина не
выводится - это позволяет выводить несколько диаграмм
одну над другой.
Верхний левый и нижний правый углы прямоугольника
задаются как (Лев,Верх) и (Прав,Низ), соответственно.
Обычно, глубина диаграммы (25% от ширины) для bar3d
вычисляется следующим образом:
T25 = (Прав - Лев)/4, bar3d(Лев,Верх,Прав,Низ,T25,1)
Смотри bar
beep/0
Назначение Выдает сигнал на компьютерный громкоговоритель
Обращение beep
Неудачное Никогда не дает.
завершение
Ошибки Отсутствуют.
Пример
predicates
input_integer(integer)
clauses
input_integer(X):-
write("Введите целое число : "),readint(X),!.
input_integer(X):-
beep,input_integer(X).
goal
input_integer(X),write(X).
bios/3
Назначение Вызывает прерывание BIOS
Обращение bios(НомПрерв,РегВхода,РегВыхода)
Домены (integer,regdom,regdom)
Шаблоны описания (вх,вх,вых)
аргументов
Описание bios вызывает прерывание BIOS с номером НомПрерв
и значением регистра, указанном в аргументе РегВхода,
и связывает аргумент РегВыхода со значением регистра
после того, как прерывание будет выполнено. РегВхода
и РегВыхода оба принадлежат к предварительно
определенному домену, который описывается так:
reg = reg(AX,BX,CX,DX,SI,DI,DS,ES)
где AX,BX,CX,DX,SI,DI,DS,ES все типа integer.
Для получения дополнительных сведений о ПЗУ-BIOS
обращайтесь к руководству по операционной системе.
Неудачное Никогда не дает.
завершение
Ошибки Отсутствуют.
Пример
predicates
dosver(real)
clauses
dosver(Version):-
AX=48*256,bios($21,reg(AX,0,0,0,0,0,0,0),
reg(VV,_,_,_,_,_,_,_)),
L=VV div 256, H=VV-256*L, Version=H+L/100.0.
goal
dosver(X), write("\nВерсия DOS = ",X).
bios/4
Назначение Вызывает прерывания BIOS и возвращает флаги
процессора
Обращение bios(НомПрерв,РегВхода,РегВыхода,ФлагВыхода)
Домены (integer,regdom,regdom,integer)
Шаблоны (вх,вх,рег(вых,вых,вых,вых,вых,вых,вых,вых),вых) -
описания а также (вх,вх,вых,вых) или
аргументов (вх,вх,рег(вх,вх,вх,вх,вх,вх,вх,вх),вых) -
а также (вх,вх,вх,вых)
Описание смотри bios/3:
Флаги упакованы в целое число следующим образом:
-----------------------------------------------------------------
| U | U | U | U | O | D | I | T | S | Z | U | A | U | P | U | C |
-----------------------------------------------------------------
|15 |14 |13 |12 |11 |10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
-----------------------------------------------------------------
где
U = Неопределено; значение неопределено
O = Флаг переполнения
D = Флаг направления
I = Флаг возможности прерывания
T = Флаг ловушки
S = Сигнальный флаг
Z = Нулевой флаг
A = Флаг вспомогательного переноса
P = Флаг четности
C = Флаг переноса
Неудачное Никогда не дает.
завершение
Ошибки Отсутствуют.
Пример
predicates
rmdir(string)
clauses
rmdir(Name):-
ptr_dword(Name,DS,DX),
AX=256*58,
bios($21,reg(AX,0,0,DX,0,0,DS,0),_,Flags),
% writef("%x",Flags),
bitand(Flags,1,CY),
CY=0.
bitand/3
Назначение Выполняет двоичную логическую операцию И
Обращение bitand(X,Y,Результат)
Домены (integer,integer,integer)
Шаблоны описания (вх,вх,вых)
аргументов
Неудачное Никогда не дает.
завершение
Ошибки Отсутствуют.
Пример
Goal: bitand($1234,$F0F0,X),writef("%x",X),!,fail.
1030
Goal: bitand($4321,$1,X),writef("%x",X),!,fail.
1
bitleft/3
Назначение Выполняет двоичный СДВИГ ВЛЕВО
Обращение bitleft(X,Поз,Результат)
Домены (integer,integer,integer)
Шаблоны описания (вх,вх,вых)
аргументов
Описание Освобожденные позиции справа заполняются нулями.
Неудачное Никогда не дает.
завершение
Ошибки Отсутствуют.
Пример
Goal: bitleft($1111,1,X),
writef("%x",X),!,fail./*0001 становится 0010*/
2222
Goal: bitleft($1111,3,X),
writef("%x",X),!,fail./*1001 становится 0000*/
8888
Goal: bitleft($3333,1,X),
writef("%x",X),!,fail./*0011 становится 0110*/
6666
bitnot/2
Назначение Выполняет двоичную логическую операцию НЕ
Обращение bitnot(X,Результат)
Домены (integer,integer)
Шаблоны описания (вх,вых)
аргументов
Неудачное Никогда не дает.
завершение
Ошибки Отсутствуют.
Пример
Goal: bitnot($F0F0,X),writef("%x",X),!,fail.
F0F
Goal: bitnot($7777,X),writef("%x",X),!,fail.
8888
bitor/3
Назначение Выполняет двоичную логическую операцию ИЛИ
Обращение bitor(X,Y,Результат)
Домены (integer,integer,integer)
Шаблоны описания (вх,вх,вых)
аргументов
Неудачное Никогда не дает.
завершение
Ошибки Отсутствуют.
Пример
Goal: bitor($F0F0,$1,X),writef("%x",X),!,fail.
F0F1
Goal: bitor($F0F0,$0303,X),writef("%x",X),!,fail.
F3F3
bitright/3
Назначение Выполняет двоичный СДВИГ ВПРАВО
Обращение bitright(X,Поз,Результат)
Домены (integer,integer,integer)
Шаблоны описания (вх,вх,вых)
аргументов
Неудачное Никогда не дает.
завершение
Ошибки Отсутствуют.
Пример
Goal: bitright($4444,1,X),
writef("%x",X),!,fail./* 0100 становится 0010 */
2222
Goal: bitright(2000,2,X)./* 0010 0000 0000 0000
становится 0000 1000 0000 0000 */
X=500
1 Решение
bitxor/3
Назначение Выполняет двоичную логическую операцию
ИСКЛЮЧАЮЩЕЕ ИЛИ
Обращение bitxor(X,Y,Результат)
Домены (integer,integer,integer)
Шаблоны описания (вх,вх,вых)
аргументов
Неудачное Никогда не дает.
завершение
Ошибки Отсутствуют.
Пример
Goal: bitxor($F0F0,$0303,X),writef("%x",X),!,fail.
F3F3
Goal: bitxor($F0F0,$03F3,X),writef("%x",X),!,fail.
F303
bound/1
Назначение Проверяет, связана ли переменная
Обращение bound(Переменная)
Домены (<переменная>)
Шаблоны описания (вх)
аргументов
Описание bound согласован, если Переменная связана (имеет
определенное значение). bound используется для
контроля шаблона описания аргументов и сцепления
указанных переменных.
Неудачное Если переменная свободна ( не связана )
завершение
Ошибки Отсутствуют.
Пример
domains
term = reference var(vid); cmp(fid,terml); int(int)
TERML = reference term*
predname, fid, vid = symbol
int = integer
predicates
call(predname,terml)
clauses
call("<",[int(X),int(Y)]):-!,
bound(X),bound(Y),
X<Y.
break/1
Назначение Предоставляет или лишает возможности ПРЕКРАЩЕНИЯ
Обращение break(СостСТОП)
Домены (symbol)
Шаблоны описания (вх),(вых)
аргументов
Описание break используется для разрешения или запрещения
применения комбинации клавиш УПР-СТОП во время
выполнения программы. Он имеет такие формы:
break(on) позволяет использовать клавишу СТОП
break(off) блокирует использование клавиши СТОП
break(СостСТОП) возвращает текущее значение СТОП
Неудачное Никогда не дает.
завершение
Ошибки Отсутствуют.
Пример
predicates
repeat
clauses
repeat.
repeat:-repeat.
goal
break(OldBreakStatus),
break(off),
repeat,
write("\nВы можете сбросить эту программу",
" только нажав клавишу '#'."),
readchar(CH),
CH='#',!,
break(OldBreakStatus).
breakpressed/0
Назначение Контролирует состояние клавиш Ctrl-Stop
Обращение breakpressed
Описание breakpressed согласовывается, если нажата комбинация
клавиш Ctrl-Stop и несогласовывается, если комбинация
клавиш Ctrl-Stop не нажата. breakpressed игнорирует
состояние клавиши Stop и позволяет проверить
состояние комбинации клавиш Ctrl-Stop. Статус клавиши
Stop может быть установлен предикатом break или
директивой компилятора nobreak.
Неудачное Неудачное завершение, если не нажата комбинация
завершение клавиш Ctrl-Stop.
Ошибки Отсутствуют.
Пример
predicates
repeat
clauses
repeat.
repeat:-repeat.
goal
break(OldBreakStatus),
break(off),
repeat,
write("\nДля прекращения этого цикла",
"нажмите клавишу Stop"),
breakpressed,
break(OldBreakStatus).
- Справочное руководство по турбо прологу 2.0
- Глава 2. Элементы языка 50
- Глава 3. Интерфейс с другими языками 75
- Часть 2. Стандартные предикаты 91
- Часть 3. Приложения 250
- Введение
- Дистрибутивные диски
- Рекомендуемая литература:
- Часть 1. Руководство программиста по турбо прологу глава 1. Система меню турбо пролога
- Пользователям Турбо Пролога 1.X
- Структура меню Турбо Пролога
- Выбор элементов меню.
- "Горячие" клавиши.
- Системные окна и строки помощи
- Окно редактирования.
- Как войти в окно редактирования
- Компоненты окна редактирования
- Как выйти из окна редактирования.
- Окно трассировки
- Окно сообщений
- Диалоговое окно
- Строка помощи
- Главное меню.
- Окно редактирования.
- Окно вспомогательного редактирования (Xedit).
- Окно просмотра.
- Изменение размера окон.
- Просмотр окон
- Создание нового файла.
- Загрузка существующего файла.
- Команды редактора.
- Сохранение исходного текста в файле.
- Запись исходного текста на диск
- Вспомогательный редактор
- Меню и команды
- Меню файлов (Files)
- Загрузка файлов (Load)
- "Указка" (Pick)
- Новый (New)
- Выход (Quit)
- Команда редактирования (Edit)
- Команда запуска (Run)
- Меню компиляции (Compile)
- Память (Memory)
- Меню опций (Options)
- Опции компоновки (Link Options)
- Стек (Stack)
- Область ссылок (Trail Array)
- "Куча" (Heap)
- Контроль во время исполнения (Run-time check)
- Цвета (Colors)
- Размер окна (Window size)
- Каталоги
- Текущий каталог (Current directory)
- Авто-загрузка сообщений (Avto-Load Message)
- Режим экрана (Screen mode)
- Конфигурация клавиатуры (Keyboard Configuration)
- Перемещение курсора (Cursor movement)
- Глава 2. Элементы языка
- Ключевые слова.
- Специальные предикаты.
- Разделы программы.
- Раздел доменов (domains).
- Стандартные домены.
- Списковые домены.
- Домены составных объектов.
- Файловый домен.
- Специально заданные предопределенные домены.
- Сокращение объявлений доменов.
- Объявление ссылочных доменов.
- Раздел предикатов (predicates).
- Раздел базы данных (database).
- Раздел предложений (clauses).
- Простые константы.
- Переменные.
- Составные объекты.
- Списки - Специальный вид составных объектов.
- Раздел констант.
- Условная компиляция.
- Включение файлов в вашу программу.
- Директивы компилятора.
- Управление памятью в Турбо Прологе.
- Экономия ресурсов памяти.
- Управление распределением памяти.
- Генерирование выполняемых программ.
- Модульное программирование.
- Проекты.
- Глобальные объявления.
- Глобальные домены.
- Глобальная база данных.
- Глобальные предикаты.
- Компиляция и компоновка модулей.
- Пример.
- Глава 3. Интерфейс с другими языками
- Вызов других языков из Турбо Пролога.
- Что делать перед вызовом.
- Объявление внешних предикатов.
- Вызов соглашений и передача параметров.
- Соглашение об обозначениях
- Использование ключевого слова as
- Вызов процедуры, написанной на Си из Пролога.
- Опции компилятора Турбо Си и компоновка.
- Вызов программ на языке ассемблера из Турбо Пролога.
- Использование внутреннего ассемблера Турбо Си.
- Вызов Турбо Пролога из других языков.
- Динамическое распределение памяти.
- Передача составных объектов в другие языки.
- Передача списков.
- Передача структур.
- Примеры.
- Обработка списков.
- Программирование на низком уровне.
- Часть 2. Стандартные предикаты
- Arc/5 Графика
- Bar/4 Графика
- Bt_close/2 Внешняя База Данных
- Bt_create/5 Внешняя База Данных
- Bt_delete/2 Внешняя База Данных
- Bt_open/3 Внешняя База Данных
- Bt_statistics/8 Внешняя База Данных
- Chain_delete/2 Внешняя База Данных
- Chain_first/3 Внешняя База Данных
- Chain_inserta/5 Внешняя База Данных
- Chain_insertafter/5 Внешняя База Данных
- Chain_insertz/5 Внешняя База Данных
- Chain_last/3 Внешняя База Данных
- Chain_next/3 Внешняя База Данных
- Chain_prev/3 Внешняя База Данных
- Chain_terms/5 Внешняя База Данных
- Circle/3 Графика
- Cleardevice/0 Графика
- Clearviewport/0 Графика
- Closegraph/0 Графика
- Db_btrees/2 Внешняя База Данных
- Db_chains/2 Внешняя База Данных
- Db_close/1 Внешняя База Данных
- Db_create/3 Внешняя База Данных
- Db_delete/2 Внешняя База Данных
- Db_flush/1 Внешняя База Данных
- Db_garbagecollect/1 Внешняя База Данных
- Db_open/3 Внешняя База Данных
- Db_openinvalid/3 Внешняя База Данных
- Db_statistics/5 Внешняя База Данных
- Detectgraph/2 Графика
- Drawpoly/1 Графика
- Ellipse/6 Графика
- Fillellipse/4 Графика
- Fillpoly/1 Графика
- Floodfill/3 Графика
- Getarccoords/6 Графика
- Getaspectratio/2 Графика
- Getbkcolor/1 Графика
- Getcolor/1 Графика
- Getdefaultpalette/1 Графика
- Getdrivername/1 Графика
- Getfillpattern/1 Графика
- Getfillsettings/2 Графика
- Getgraphmode/1 Графика
- Getimage/6 Графика
- Getlinesettings/3 Графика
- Getmaxcolor/1 Графика
- Getmaxx/1 Графика
- Getmaxy/1 Графика
- Getmaxmode/1 Графика
- Getmodename/2 Графика
- Getmoderange/3 Графика
- Getpalette/1 Графика
- Getpalettesize/1 Графика
- Getpixel/3 Графика
- Gettextsettings/5 Графика
- Getviewsettings/5 Графика
- Getx/1 Графика
- Gety/1 Графика
- Graphdefaults/0 Графика
- Graphresult/1 Графика
- Imagesize/5 Графика
- Initgraph/5 Графика
- Key_current/4 Внешняя База Данных
- Key_delete/4 Внешняя База Данных
- Key_first/3 Внешняя База Данных
- Key_insert/4 Внешняя База Данных
- Key_last/3 Внешняя База Данных
- Key_next/3 Внешняя База Данных
- Key_prev/3 Внешняя База Данных
- Key_search/4 Внешняя База Данных
- Line/4 Графика
- Linerel/2 Графика
- Lineto/2 Графика
- Moverel/2 Графика
- Moveto/2 Графика
- Outtext/1 Графика
- Outtextxy/3 Графика
- Pieslice/5 Графика
- Pieslicexy/6 Графика
- Putimage/4 Графика
- Putpixel/3 Графика
- Rectangle/4 Графика
- Restorecrtmode/0 Графика
- Setactivepage/1 Графика
- Setallpalette/1 Графика
- Setaspectratio/2 Графика
- Setbkcolor/1 Графика
- Setcolor/1 Графика
- Setfillpattern/2 Графика
- Setfillstyle/2 Графика
- Setgraphmode/1 Графика
- Setgraphbufsize/1 Графика
- Setlinestyle/3 Графика
- Setpalette/2 Графика
- Setrgbcolor/4 Графика
- Settextjustify/2 Графика
- Settextstyle/3 Графика
- Setusercharsize/4 Графика
- Setviewport/5 Графика
- Setvisualpage/1 Графика
- Setwritemode/1 Графика
- Term_delete/3 Внешняя База Данных
- Term_replace/4 Внешняя База Данных
- Textheight/2 Графика
- Textwidth/2 Графика
- Часть 3. Приложения приложение а. Введение вdos
- Что такое dos
- Как загрузить программу?
- Каталоги
- Подкаталоги
- Avtoexec.Bat-файл
- Команда path
- Смена каталогов
- Приложениеb. Интерактивный редактор турбо пролога
- Быстрый вход, быстрый выход
- Служебная строка окна редактора
- Основные команды редактора
- Команды Редактора, совпадающие с командами WordStar Основные команды работы с курсором
- Команды быстрого движения курсора
- Команды вставки и удаления
- Команды работы с блоками
- Остальные команды редактора
- Старые команды
- Поиск и замена
- Редактор Турбо Пролога по сравнению с WordStar
- Корректировка файла на диске.
- Приложение c. Сообщения об ошибках
- Приложение d. Различия между версиями 1.1 и 2.0
- Файл определения проекта
- Новые ограничения по именам
- Новые предопределенные домены
- Контроль состава параметров шаблона (flow pattern)
- Поддержка старых командных клавиш редактора
- Ошибочные ситуации в стандартных предикатах
- Расширение Турбо Пролога 2.0
- Системные расширения
- Приложениеe. Словарь специальных терминов
- Приложение f. Географическая база данных (Geobase)
- Использование Geobase
- Системы с 2-мя флоппи-дисковыми устройствами
- Компиляция Geobase
- Создание автономной программы
- Главное меню Geobase
- Справка
- Команды dos
- Редактор
- Запросы к базе данных
- Просмотр языка
- Корректировка языка
- Принципы Geobase
- Использование принципа Geobase
- Создание вашей базы данных
- Преобразование Geobase
- Предикат "ent"
- Предикат "db"
- Трансляция запросов на естественном языке
- Внутренние имена объектов
- Внутренние имена связей
- Определение структуры предложений
- База данных языка
- Грамматический разбор с помощью разделения списков
- Заключение
- Приложение g. Анализатор предложений на турбо прологе
- Использование анализатора предложений
- Помощь пользователя
- Операционная система
- Редактирование базы данных
- Загрузка базы данных из файла
- Сохранение базы данных
- Анализ предложений
- «Показать/изменить словарь»
- Приложениеh.Geni: оболочка экспертной системы
- Использование geni
- Запросы geni
- Просмотр знаний
- Корректировка базы знаний
- Сохранение базы знаний
- Создание новой базы знаний
- Чистка текущей базы знаний
- Проектирование новой базы знаний
- Приложение I. Tlib: библиотека турбо
- Компоненты командной строки tlib
- Компонент «описание»
- Список операций
- Имена файла и модуля
- Операции tlib
- Создание библиотеки
- Использование файла ответа
- Расширенные возможности: опция /с
- Примеры
- Приложение j. Tlink: компоновщик турбо
- Активизация tlink
- Использование ответных файлов
- Компоновка модулей Турбо Пролога и Турбо Си.
- Модуль инициализации
- Библиотеки
- Опции tlink
- Опция /c
- Опция /d
- Опция /I
- Опция /l
- Опции /m, /s, /X
- Опция /m
- Опция /s
- Опция /X
- Опция /n
- Ограничения
- Сообщения об ошибках
- Предупреждения
- Нефатальные ошибки
- Фатальные ошибки
- Приложение k. Метапрограммирование Введение
- Пролог/Турбо: развитие и философские установки
- Конструкторские решения в Турбо Прологе
- Чем Турбо зарядило Турбо Пролог
- Интерпретатор правил с обратной цепочкой рассуждений
- Термы (горючее для интерпретатора правил)
- Статические термы: область sTerm (статических термов)
- Интерпретирование области термов.
- Что такое интерпретатор?
- Интерпретация правил в Прологе
- Использование sTerm и aTerm для моделирования интерпретатора правил
- Переменные и среда
- Процесс унификации
- Унификация статических и действительных термов
- Интерпретация тела правила
- Выполнение выполняемых термов: предикат call.
- Встроенные предикаты
- Сканнер и транслятор
- Операторы традиционного Пролога
- Использование операторов в Турбо Прологе
- Интерпретатор Пролога
- Реализация трассировки
- Теперь объединим все вместе
- Расширения экспертной системы
- Цепочка с прямым порядком рассуждений
- Стандартные предикаты, реализованные в pie
- Заключение