Пәндердің оқу-әдістемелік кешенінің тізімдемесі



бет65/85
Дата11.10.2023
өлшемі2.35 Mb.
#480347
1   ...   61   62   63   64   65   66   67   68   ...   85
Сараптаушы жүйелер

Òåðåçåëåðìåí æ½ìûñ.
makewindow(НомерОкна,АтрибутЭкрана,АтрибутРамки,СтрокаЗаго­ловкa,Ряд,Колонка,Высота,Ширина)
(integer, integer,integer,string,integer,integer,integer,integer)-(i,i,i,i,i,i,i,i)
(o,o,o,o,o,o,o,o) makewindow(НомерОкна,АтрибутЭкрана,АтрибутРамки,СтрокаЗаго-
ловка,Ряд,Колонка,Высота,Ширина,ОчисткаОкна,
ЦентровкаЗаголовка,СимволыБордюра)
(integer,integer,integer,string,integer,integer,
integer,integer,integer,integer,string) - (i,i,i,i,i,i,i,i,i,i,i) (o,o,o,o,o,o,o,o,o,o,o)

Åêi ïðåäèêàòòà ¼çi»íi» ºîëäàíóøû òåðåçå»äi àøó ¾øií àðíàë¹àí. Îëàð òåê áið-áiðiíåí òåê àðãóìåíòòåð ñàíûìåí ¹àíà åðåêøåëåíåäi. Òåðåçåͼìiði- àëäûíäà àøûë¹àí òåðåçåäåí åðåêøå º½ðûë¹àí ºàíäàé-äà áið òåðåçå í¼ìiði, ÿ¹íè á½ë º½ðûë¹àí òåðåçåãå ºàðà¹àíäà à¹ûìäà¹û òåðåçå í¼ìiði. ÝêðàíÀòðèáóòû -òåðåçåäåãi ýêðàí ò¾ñi. ÐàìêàÀòðèáóòû - ðàìêà ò¾ñi. Òàºûðûï²àòàðû - òåðåçå àòû. ²àòàð -òåðåçåíi» æî¹àð¹û ºàòàð í¼ìiði (0-äåí 24-êå äåéiíãi). Áà¹àí -òåðåçåíi» ñîë æຠïîçèöèÿ í¼ìiði (0-äåí 79-¹à äåéiíãi). Áèiêòiãi - ýêðàí ºàòàðûíû» òåðåçå ¼ëøåìi. (ºàòàð+áèiêòiê<=25). ʼëäåíå» -ýêðàííû» ïîçèöèÿñûíäà¹û òåðåçå ¼ëøåìi. (áà¹àí+ê¼ëäåíå»<=80). ÒåðåçåÒàçàðòºûø -åãåð 0 áîëñà, òåðåçå º½ðûë¹àííàí êåéií òàçàðòïàó, àë 1 áîëñà, îíäà òåðåçåíi òàçàðòó. ÒàºûðûïÎðòàñû- åãåð 255 áîëñà, îíäà ýêðàí ºàòàðûíäà ÒåðåçåÒàºûðûáûí îðòàëàó. ÁîðäþðÑèìâîëû-òåðåçåíi ºàëàé åðåêøåëåóäi ê¼ðñåòåòií ½çûíäû¹û 6 ñèìâîë áîëàòûí ºàòàð.


1-øi ñèìâîë - æî¹àð¹û áiðiíøi á½ðûø,
2-øi ñèìâîë - æî¹àð¹û î» æຠá½ðûø,
3-øi ñèìâîë - ò¼ìåíãi ñîë æຠá½ðûø,
4-øi ñèìâîë - ò¼ìåíãi î» æຠá½ðûø,
5-øi ñèìâîë - ê¼ëäåíå» ñûçûº,
6-øû ñèìâîë - òiê ñûçûº.
Примеры работы предиката создания окна с восьмью и одиннадцатью аргументами */
predicates
nondeterm repeat
delay(integer)
GOAL
makewindow(1, 1, 7, "oдин", 5, 0, 10, 20), write("ОДИН"), /* создать окно, у которого НомерОкна=1,АтрибутЭкрана=1,
АтрибутРамки=7,СтрокаЗаголовка="один",Ряд=5,Колонка=0,
Высота=10,Ширина=20 и далее, аналогично, создать еще восемь окон */
makewindow(2, 2, 7, "два", 1, 10, 10, 20), write("ДВА"),
makewindow(3, 3, 7, "три", 2, 20, 10, 20), write("ТРИ"),
makewindow(4, 4, 7, "четыре", 8, 30, 10, 20),
write("ЧЕТЫРЕ"),
makewindow(5, 5, 7, "пять", 4, 40, 10, 20), write("ПЯТЬ"),
makewindow(6, 6, 7, "шесть", 5, 50, 10, 20),
write("ШЕСТЬ"),
makewindow(7, 7, 7, "семь", 9, 5, 10, 20), write("СЕМЬ"),
makewindow(8, 8, 7, "восемь", 1, 10, 10, 20),
write("ВОСЕМЬ"),
makewindow(9, 9, 7, "девять", 15, 20, 10,20),
write("ДЕВЯТЬ"),
repeat, random(9,X), % выбор случайного числа Х от 0 до 9
N=X+1, shiftwindow(N), % переключение окна по номеру N
% описание предиката см. ниже framewindow(112), % изменение атрибута рамки окна
% описание предиката см. ниже delay(1000), % задержка в выполнении программы framewindow(7), % теперь атрибут рамки окна 7
keypressed. % выход из программы
clauses
repeat.
repeat :- repeat.
delay(0):-!.
delay(N):-N1=N-1,delay(N1). %============================================================ GOAL
makewindow(1,7,7,"Окно 1",1,1,10,40,1,0, "\176\176\176\176\176\176"),
/* создать окно, у которого НомерОкна=1, АтрибутЭкрана=7,
АтрибутРамки=7, СтрокаЗаголовка="Окно 1", Ряд=1, Колонка=1,
Высота=10, Ширина=40, ОчисткаОкна=1, ЦентровкаЗаголовка=0
(яғни тақырып терезенің жоғарға қатарының бірінші позициясынан бастау), Бордюра Символы – 176 кодты алты символ.
Окно 2 де осы сияқты құрылады, ол "жұлдызша" типті сызықпен қоршалады */
makewindow(2,7,7,"Окно 2",6,20,10,40,0,30,"******"),
readchar(_), % чтение любого символа - см.прил. 3
window_str(X), /* присвоить переменной Х строку экрана, описание предиката см. ниже */ removewindow, /* убрать текущее окно с экрана описание предиката см. ниже */
readchar(_),
write(X),
readchar(_). %============================================================ shiftwindow(НомерОкна) (integer) - (i) (o)
Предикат ағымдағы тереземен жұмысты аяқтап, НомерОкна номеріне сәйкес терезеге өтуді ұйымдастырады.
shiftwindow(НомерОкна), gotowindow предикаттарын мысал ретінде қарастырыңыз. shiftwindow(НомерОкна) предикатының НомерОкна –да көрсетілген терезедегі барлық мәліметтерді gotowindow предикатының алдын-ала енгізіліу нәтижесінде өшіретініне назар аударыңыз. gotowindow(НомерОкна)
(integer) - (i)
Предикат ағымдағы тереземен жұмысты аяқтап, НомерОкна номеріне сәйкес терезеге өтуді ұйымдастырады. Shiftwindow предикатына қарағанда бұл gotowindow предикатының аргументі тек ені аргументі ғана бола алады.
/*===========================================================
(gotowindow) предикатында көрсетілген терезеден (shiftwindow)-де көрсетілген терезе номеріне өтудің мысалы
*/
PREDICATES output(INTEGER)
CLAUSES output(N):-
N<21,!,
WNO=1+N mod 2, % выбор окна: WNO=(1 или 2) gotowindow(WNO), % переход в окно с номером WNO
write(N,' '),
N1=N+1,output(N1). output(21):-!,beep,output(22). output(N):-
WNO=1+N mod 2, shiftwindow(WNO),write(N,' '),
/* переключение на окно с номером WNO */
N1=N+1,output(N1).
GOAL makewindow(1,7,7,"Window 1",0,0,25,40), %создание окна- makewindow(2,7,7,"Window 2",0,40,25,40), %см. выше
output(0). %============================================================
Келесі көрсетілген екі предикат терезе өлшемі мен орналасқан орнын өзгертуге арналған. Бірінші предикат үшін терезе өлшемінің өзгеру параметрлері алдын-ала белгісіз, сондықтан программист программа сұранысына орай қажетті өзгертулерді енгізіп отыруы тиіс.
resizewindow
Ағымдағы терезе өлшемі курсорды басқару клавишалары көмегімен жүзеге асырылады. Ал орналасқан орныны өзгерту "shift" пернесін баса отырып курсорды басқару пернелерін басу арқылы орындадалады. /*===========================================================
Resizewindow предикатының қолданылуына мысал */
GOAL
makewindow(1,7,7,"Тестовое окно",5,5,15,70),
% описание предиката создание окна см. выше write("\nПожалуйста, измените размер окна\n"), resizewindow, makewindow(NoОкна,АтрОкна,АтрРамки,Teкст,НРяд,НКолонка,
К_воРядов,К_воКолонок),
write("\nНовое местоположение окна и новые размеры:"),
writef("\nNoОкна=%d, АтрОкна=%d, АтрРамки=%d, Teкст=%d",
"\nРяд=%d, Колонка=%d, К-воРядов=%d,",
" К-воКолонок=%d",NoОкна,АтрОкна,АтрРамки,Teкст,
НРяд,НКолонка,К_воРядов,К_воКолонок), readchar(_).
%============================================================
resizewindow(НачальнСтpока,К-воСтpок,НачальнКолонка, К-воКолонок)
(integer,integer,integer,integer) - (i,i,i,i)
Предикат ағымдағы терезе өлшемі мен орнын өзгертуге арналған.
НачальнаяСтрока - новая начальная строка окна.
К-воСтрок - новая высота окна.
НачальнаяКолонка - новая начальная колонка окна.
К-воКолонок - новая ширина окна. /*===========================================================
Resizewindow предикатының төрт аргументті қолдану мысалы */
GOAL
makewindow(1,7,7,"Тестовое окно",5,5,15,70),
write("\n Изменение размера окна после нажатия любой ",
"клавиши\n"),
readchar(_),
resizewindow(10,10,10,60),
clearwindow. /* очистка окна, описание предиката см. ниже. ===========================================================*/ colorsetup(ОкноИлиРамка)
(integer) - (i)
Бұл предикат көмегімен терезе түсі мен оның жиектеулері түсін өзгертуге болады. сolorsetup –қа шақыру жіберген соң, ол түстерді бекіту кестесімен байланысады
ОкноИлиРамка = 0 - изменить цвет окна,
= 1 - изменить цвет рамки. /*===========================================================
Colorsetup көмегімен терезе мен оның жиектері түсін өзгерту мысалы. */
GOAL makewindow(1,7,7,"Тестовое окно",5,30,10,40),
cursor(3,5), % установка курсора, см прил. 6
write("Измените цвет окна"),
colorsetup(0),
cursor(3,5),write("Измените цвет рамки"),
colorsetup(1),
clearwindow, % очистка окна, описание см. ниже
makewindow(_,АтрОкна,АтрРамки,_,_,_,_,_),
write("\n\nАтрОкна=",АтрОкна),
write("\n\nАтрРамки=",АтрРамки),
readchar(_). ===========================================================*/ existwindow(НомерОкна)
(integer) - (i)
Егер НомерОкна номерлі терезе бар болса предикат ақиқат болады, керісінше жағдайда жалған болады.
removewindow
Бұл предикат ағымдағы терезені экранда көрсетпей қояды. Makewindow предикаты үшін жазылға екінші мысалды қараңыз.
removewindow(НомерОкна,РежОбновления)
(integer,integer) - (i,i)
НомерОкна номерлі терезені экраннан алып тастап, қажет болса терезе түсін бұрынғы қалпына келтіреді.
РежОбновления = 0 экран түсін қалпына келтірмейді, ал ол 1-ге тең болса экран түсі қалпына келтіріледі. /*===========================================================
removewindow(1,0) предикаты көмегімен терезені экраннан алып тастау мысалы */
goal
makewindow(1,7,7,"Тестовое окно",5,5,15,70),
% создание окна, описание предиката см. выше write("\nНажмите любую клавишу для удаления окна"), readchar(_),
removewindow(1,0). %============================================================ clearwindow
Бұл предикат ағымдағы терезеде орналасқан хабарламаларды жойып, терезені тазалауға мүмкіндік береді. Предикаттың қолданылу мысалы жоғарыда resizewindow предикатын colorsetup-тың төрт аргументімен сипаттау мысалында келтірілген.
window_str(СтрокаЭкрана)
(string) - (i) (o)
Предикат позволяет присвоить переменной СтрокаЭкрана текст экрана,на который наложилось окно.Пример работы этого предиката см. выше,в примере для второго предиката makewindow, и - ниже, в примере для предиката scroll.
window_attr(Aтрибут)
(integer) - (i)
Предикат меняет цвет (атрибут) текущего окна. /*===========================================================
Пример изменения цвета фона и изображения при помощи предиката window_attr */
GOAL
makewindow(1,7,0,"",0,0,25,80),
% создание окна,описание предиката см. выше window_attr(7),
write("\nИзображение теперь белое на черном фоне"),
readchar(_),
window_attr(112),
write("\nИзображение теперь черное на белом фоне"),
readchar(_). %============================================================ scroll(Кол_воСтрок,Кол_воКолонок)
(integer,integer) - (i,i)
Бұл предикат терезедегі мітінде жоғары, төмен жылжытуды қамтамасыз етеді. Аргументтің оң мәндері жоғары және солға жылжуды, теріс мәндері төмен және оңға жылжуды көрсетеді. . /*===========================================================
Scroll предикатының қолданылуына мысал */
predicates
msg(STRING)
CLAUSES msg(X):-
shiftwindow(OLD), % переключение окна,
shiftwindow(2),
concat("Нажмите любую клавишу: ",X,X1),
% соединение строк, см. прил. 8 window_str(X1),
readchar(_),
shiftwindow(OLD).
goal makewindow(2,112,0,"",21,5,1,70),
makewindow(1, 12, 7, "Окно прокрутки", 5, 5, 15, 70),
% PROLOG.ERR файлының қайсбір бөлігін қарап шығу керек болсын.
file_str("prolog.err",X),
window_str(X),
msg("Прокрутить текст вверх"),scroll(3,0),
msg("Прокрутить текст вниз"),scroll(-6,0),
msg("Прокрутить текст вверх"),scroll(3,0),
msg("Прокрутить текст влево"),scroll(0,15),
msg("Прокрутить текст вправо",X),scroll(0,-30),
msg("Прокрутить текст влево",X),scroll(0,15). %============================================================
framewindow(АтрибутРамкиОкна) (integer) - (i)
Ағымдағы терезе жиектеуі түсін өзгертетін предикат, мысал жоғарыда қарастырылған.
framewindow(АтрибутРамки,СтрокаЗаголовока,ЦентровкаЗаголовка,
СимволыБордюра)
(integer,string,integer,string) - (i,i,i,i) АтрибутРамки - атpибут для рамки окна см. makewindow СтрокаЗаголовка - заголовок окна см. makewindow ЦентровкаЗаголовка - см. makewindow СимволыБордюра - стpока длиной 6 символов,см. makewindow
/*===========================================================
Framewindow предикаты көмегімен терезе тақырыбының жылжымалы болуы */
PREDICATES delay(INTEGER) changeframe(INTEGER)
CLAUSES delay(0):-!. delay(N):-N1=N-1,delay(N1). changeframe(-1):-!,changeframe(50). changeframe(N):-
not(keypressed),
framewindow(7,"НАЖМИТЕ ЛЮБУЮ КЛАВИШУ",N,
"\176\176\176\176\176\179"),
delay(2000),
N1=N-1, changeframe(N1).
changeframe(_).
GOAL makewindow(1,23,7,"TEST",5,5,10,50), changeframe(0).
Қàòàðëàðìåí æ½ìûñ. (ОстальнаяСтрока) қатарын (Строка) қатарының Символ көрсеткішінен басталатын символдарынан тұратын жаңа қатар ретінде қалыптастырады. Параметрлер енгізілуі де шығарылуы да мүмкін. Төменде осы предикаттың қолданылуын сипаттайтын мысалдар қарастырылған.

Goal:frontchar("TPROLOG",CH,REST) % выделение пеpвого символа % и подстpоки за ним
CH=T, REST=PROLOG
1 Solution
Goal: frontchar("TPROLOG",'T',REST) % выделение подстpоки
% после буквы T REST=PROLOG
1 Solution
Goal: frontchar("TPROLOG",'P',"ROLOG") % сpавнение стpок False
Goal: frontchar(X,'T',"PROLOG") % фоpмиpование стpоки
X=TPROLOG
1 Solution
fronttoken(Строка,Лексема,ОстальнаяСтрока) (string,string,string) - (i,o,o) (i,i,o) (i,o,i) (i,i,i) (o,i,i)
Лексемалармен жұмыс ұйымдастыруға мүмкіндік беретін предикат. Лексема ретінде атаулар, санда не басқа символдар алынады.
Goal: fronttoken("all boys do fine",TOK,REST)
TOK=all, REST= boys do fine
1 Solution
Goal: fronttoken("all+boys do fine",TOK,REST), fronttoken(REST,TOK1,_) % выделение двух лексем
TOK=all, REST=+boys do fine, TOK1=+
1 Solution
Goal: fronttoken("22all boys do fine",TOK,REST)
TOK=22, REST=all boys do fine
1 Solution
Goal: fronttoken("22.66all boys do fine",TOK,REST)
TOK=22.66, REST=all boys do fine
1 Solution
Goal: fronttoken("-22.66all boys do fine",TOK,REST)
TOK=-, REST=22.66all boys do fine
1 Solution
Goal: fronttoken(".66all boys do fine",TOK,REST)
TOK=., REST=66all boys do fine
1 Solution
frontstr(Длина,ВходнаяСтрока,НачальнаяСтрока,ОстальнаяСтрока)
(integer,string,string,string) - (i,i,o,o)
Предикат позволяет формировать из ВходнаяСтрока строки НачальнаяСтрока заданной длины и ОстальнаяСтрока. Goal: frontstr(3,"All boys do fine",STR1,STR2) STR1=All, STR2= boys do fine
1 Solution
Goal: frontstr(9,"All boys do fine",STR1,STR2)
STR1=All boys , STR2=do fine
1 Solution
Goal: frontstr(0,"All boys do fine",STR1,STR2)
STR1=, STR2=All boys do fine
1 Solution
Goal: frontstr(-1,"All boys do fine",STR1,STR2)
No Solution
Goal: frontstr(20,"All boys do fine",STR1,STR2)
No Solution
concat(Строка1,Строка2,Строка3)
(string,string,string) - (i,i,o) (i,o,i) (o,i,i) (i,i,i)
Қатарларды біріктіру, «байлау» операциясын орындайтын предикат, яғни Строка3 = Строка1 + Строка2 түріндегі әрекеттер.
Goal: concat("aaa","bbb",X)
X=aaabbb
1 Solution
Goal: concat("aaa","bbb","aaabbb")
True
Goal: concat("aaa","bbb","aaa----bbb")
False
Goal: concat(X,"bbb","aaa----bbb")
X=aaa----
1 Solution
Goal: concat("aaa",X,"aaa----bbb")
X=----bbb
1 Solution
str_len(Строка,Длина)
(string,integer) - (i,i) (i,o) (o,i)
Предикат параметр типіне қарай қатар ұзындығына байланысты әртүрлі операциялар орындайды.
Goal: str_len("abc",Len) % какова длина стpоки?
Len=3
1 Solution
Goal: str_len("abc",3) % длина стpоки pавна 3?
True
Goal: str_len(STR,15),writef("|%|\n",STR) | |
STR= 1 Solution
isname(ПараметрСтрока) (string) - (i)
Предикат қатар параметрлерін Турбо-Пролог синтаксисіне сәйкестігін тексереді.
Goal: isname("Dan")
True
Goal: isname("2Leo")
False
Goal: isname("_JON")
False
Goal: isname("kelly_rich")
True
Goal: isname("_")
False
Goal: isname("abc1def2")
True
format(ВыходнаяПеременная,ФорматСтроки,Переменная |
СписокКонстант*) Предикат служит для задания формата вывода для строки
ВыходнаяПеременная.Значения ФорматСтроки смотри в описании пpедиката writef (прил. 4).
Goal:format(X,"this % the %'st % test",is,1,"small")
X=this is the 1'st small test
1 Solution
Goal:format(X,"REALS: Default=%, Exp=%e, Shortest=%g",99E9, 99E9, 99E9)
X=REALS: Default=98999999999.99999989, Exp=9.9E+10,
Shortest=9.9E+10
1 Solution
Goal:format(X,"char=%c, int=%, unsigned=%u,hex=%x",97,-1,-1, -1)
X=char=a, int=-1, unsigned=65535, hex=FFFF
1 Solution
Ò¾ðëåíäiðó

char_int(СимвольныйПараметр,ЦелыйПараметр) (char,integer) - (i,o) (o,i) (i,i)
Қатардағы символдық мәліметті бүтін типке және керісінше алмастыруды қамтамасыз ететін предикат.
Goal: char_int('a',X) % код символа 'a'?
X=97
1 Solution
Goal: char_int(X,97) % символ с кодом 97?
X=a
1 Solution
Goal: char_int('a',97) % cимвол 'a' имеет код 97?
True
Goal: char_int('a',197)
False
str_int(СтроковыйПараметр,ЦелыйПараметр) (string,integer) - (i,o) (o,i) (i,i)
Қатардағы символдық мәліметті бүтін типке алмастырады және керісінше.
Goal: str_int("123",INT)
INT=123
1 Solution
Goal: str_int(STR,123)
STR=123
1 Solution
Goal: str_int("123",123)
True
Goal: str_int(" -123 ",INT)
INT=-123
1 Solution
Goal: str_int(" -1x23 ",INT)
No Solution
str_char(СтроковыйПараметр,Символ) (string,char) - (i,o) (o,i) (i,i)
Предикат қатарды символға және керісінше алмастырады.
Goal: str_char("A",CH)
CH=A
1 Solution
Goal: str_char(STR,'A')
STR=A
1 Solution
Goal: str_char("A",'A')
True
Goal: str_char("AB",CH)
No Solution
Goal: str_char("B",'A')
False


Достарыңызбен бөлісу:
1   ...   61   62   63   64   65   66   67   68   ...   85




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет