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

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).