field_attr(Ряд,Колонка,Длина,Атрибут) (integer,integer,integer,integer) - (i,i,i,i) (i,i,i,o)
Бұл экранның белгілі бір позициясынан белгілі бір ұзындықты қатардың атрибутын анықтау немесе бекітуге арналған предикат. /*===========================================================
field_str и field_attr п редикаттарының қолданылуына мысал */
GOAL field_str(2,5,10,"Привет").
/* во втором ряду, начиная с пятой колонки высветится строка "Привет" */
/* Фрагмент программы, использующий предикаты
field_str и field_attr. */
DOMAINS % объявления типов данных
FNAME = STRING
TYPE = int(); str(); real()
ROW, COL, LEN = INTEGER
DATABASE % объявления фактов динамической
field(FNAME,TYPE,ROW,COL,LEN) % (внутренней базы данных)
value(FNAME,STRING) % смотри прил. 10
PREDICATES % объявление предикатов
writescr
CLAUSES writescr:-
field(FNAME,_,ROW,COL,LEN), /* поле записи внутренней базы данных, подробнее об этом см. прил. 10 */
field_attr(ROW,COL,LEN,112), /* установка атрибута 112 на
длину LEN, начиная с заданной позиции (ROW,COL) экрана */ value(FNAME,STR),
field_str(ROW,COL,LEN,STR), /* помещение на экран строки
длиной LEN начиная с заданной позиции (ROW,COL) экрана */ fail.
writescr. %============================================================ cursor(Ряд,Колонка)
(integer,integer) - (i,i) (o,o)
Предикат курсордың орналасу позициясын анықтауға немесе белгілі бір позицияға курсорды орналастыру мақсатында қолданылады. %============================================================
Экранда курсорды әртүрлі позицияда шығаруды сипаттайтын мысалдар
GOAL
makewindow(1,7,7,"cursor test",1,1,20,70),
% создание окна пользователя см. прил. 7 cursor(5,20),write("Приветствую"),
/* установить курсор в 5-й ряд, на 20-ю строку и напечатать
сообщение "Приветствую" */
cursor(ROW,COL),ROW1=ROW+1,cursor(ROW1,COL),
% установить курсор на ряд ниже write("тебя"), % и напечатать сообщение cursor(ROW2,COL2),ROW3=ROW1+1,cursor(ROW3,COL2),
% установить курсор еще на ряд ниже write("приятель"),
cursor(0,0). /* установить курсор в начало экрана
===========================================================*/
cursorform(НачальнаяСтрока,КонечнаяСтрока) (integer,integer) - (i,i) (o,o)
Бұл предикат курсор өлшемін символмен салыстырмалы түрде анықтауға не өлшемін бекітуге мүмкіндік береді. Ол үшін төмендегі қатынастарды көрсету керек:
0<НачальнаяСтрока<14, 0<КонечнаяСтрока<14 /*===========================================================
Пример работы предиката cursorform */
predicates
for(INTEGER,INTEGER,INTEGER)
testcursorform
clauses
for(X,X,_).
for(I,A,B):-B>A,A1=A+1,for(I,A1,B).
testcursorform:-
for(StartLine,0,10), for(EndLine,0,10),
cursorform(StartLine, EndLine),
/* ішкі циклдағы символға байланысты курсор өлшемі мен
орналасу позициясының өзгеруі */
write("НачальнаяСтрока=",StartLine, % вывод на экран
", КонечнаяСтрока=", EndLine, % см. прил. 4
" Нажмите любую клавишу"),
readchar(_),nl, /* чтение любого символа см. прил. 3 */
StartLine=10,EndLine=10,!.
GOAL cursorform(A,B), testcursorform, cursorform(A,B).
%============================================================
attribute(НомерАтрибута)
(integer) - (i) (o)
Предикат экранның қажетті атрибутын (баспа түсі) бекітеді немесе ағымдағы атрибутты анықтайды. /*===========================================================
attribute предикатының жұмысын түрлі-түспі дисплейде сипаттау */
GOAL
attribute(1), write("\nЭта линия - голубая"),
attribute(2), write("\nЭта линия - зеленая"),
attribute(A), write("\nЭтот цвет - номер ",A). %============================================================ textmode(Ряд,Колонка)
(integer,integer) - (i,i) (o,o)
Предикат экранның белгілі бір позициясынан бастап текстілік режимді бекітуге арналған.
snowcheck(on/off)
(string) - (i) (o)
Предикат экранда ақаулардың бар екендігін тексеруге арналған. Тексеруді қосуға не алып тастауға болады, сәйкесті түрде on/off .
14>
Достарыңызбен бөлісу: |