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



бет51/85
Дата11.10.2023
өлшемі2.35 Mb.
#480347
1   ...   47   48   49   50   51   52   53   54   ...   85
Сараптаушы жүйелер

3. Шеңбер.
Синтаксис: ОКРУЖНОСТЬ(Арг1,Арг2,Арг3,Арг4).
Шеңбер предикаты төрт аргументтен тұрады. Төртiншi аргумент бүтiн, арифметикалық өрнек немесе айнымалы бүтiн сан болу қажет. Төменде аргументтер типiне байланысты орындалу нәтижелерi көрсетiлген:
ОКРУЖНОСТЬ(ц1,ц2,ц3,ц) - (ц1,ц2) центрлi, радиусы ц3, түсi ц болады.
ОКРУЖНОСТЬ(ц1,ц2,П3,ц) | ОКРУЖНОСТЬ(ц1,П2,П3,ц) |
ОКРУЖНОСТЬ(П1,ц2,П3,ц) - экранды ц түспен толтыру.
ОКРУЖНОСТЬ(П1,П2,П3,ц) | ОКРУЖНОСТЬ(П1,П2,ц3,ц) |
ОКРУЖНОСТЬ(ц1,П2,ц3,ц) - ц түспен тiке боялған төбелерi (ц1-ц3,0), (ц1-ц3,211), (ц1+ц3,0), (ц1+ц3,211) болатын тiкбұрыш.
ОКРУЖНОСТЬ(П1,ц2,ц3,ц) - ц түспен көлденең боялған төбелерi (0,ц2-ц3), (255,ц2-ц3), (0,ц2+ц3), (255,ц2+ц3) болатын тiкбұрыш.


4. Бояу
Синтаксис: ЗАКРАСКА(Арг1,Арг2,Арг3,Арг4).
ЗАКРАСКА предикаты төрт аргументтен тұрады. Бұл предикатта Арг3 түсi арқылы iшкi контурды, Арг 4 (Арг1, Арг2) нүктеден бастап шектелген түспен бояу. Мұнда барлық аргументтерi бүтiн, арифметикалық өрнектер немесе айнымалы нақты бүтiн болу қажет.
Мысалы, боялатын квадрат салсақ.
рамка(x1',y1',x2',y2',цвет')<-ЛИНИЯ(x1',y1',x1',y2',цвет');
ЛИНИЯ(x1',y1',x2',y1',цвет');ЛИНИЯ(x1',y2',x2',y2',цвет');
ЛИНИЯ(x2',y1',x2',y2',цвет');
пример <- рамка(50,50,150,150,8),ЗАКРАСКА(100,100,15,8);
?пример;.
Мысалға төбесi (х,у) нүктесiнде болатын бұрышты сипаттау үшiн.
угол(x,y)<-ЛИНИЯ(x,y,10,10,1),ЛИНИЯ(x,y,150,50,1);
?угол(100,100);.
Алдымен (100,100) және (10,10) байланысатын нүктелерден кесiндi, ал содан кейiн (100,100) және (50,50) байланысушы нүктелерден тұратын кесiндi сызылады. Кейде сипаттамаларды бiр сөйлем түрiнде жаза бермей, бөлек мына түрде жазуға да болады:

угол(x,y)<-ЛИНИЯ(x,y,10,10,1),продолжение(x,y);


продолжение(x,y)<-ЛИНИЯ(x,y,50,50,1); ?угол(100,100);.

Жаңа программа екi сөйлем түрiнде жазылса да, сол бiр функция қызметiн атқарады.


Пролог-Д жүйесi графикалық түрдегi айнымалыларды қолдануға мүмкiндiк бередi. Мысал ретiнде координатасы (х,у) болатын А нүктесiнен шығып, координатасы (s,t) болатын В нүктесiне дейiнгi векторды сипаттайтын мысал қарастырайық:
вектор(A(x,y),B(s,t))<-ЛИНИЯ(x,y,s,t,1);

Пролог-Д құралының тiлiнiң нақты жолымен объекттi сипаттап алуға мүмкiндiк бередi. Мысал ретiнде үй тұрғызуды көрсетсек. Уйдi үшбұрыш және квадрат арқылы бiр қабырғада орналасатындай етiп салуға болады. Квадратты мынадай төрт кесiндi түрiнде сипаттасақ:


квадр(x,y,z,t)<-ЛИНИЯ(x,y,x,t,1),ЛИНИЯ(x,y,z,y,1),


ЛИНИЯ(x,t,z,t,1), ЛИНИЯ(z,y,z,t,1);.

ұқсас түрде үшбұрышты салу мына түрде болады:


треуг(x,y,z,t)<-ЛИНИЯ(x,y,t,y,1),СЛОЖЕНИЕ(x,t,r),


ДЕЛЕНИЕ(r,2,f), ЛИНИЯ(x,y,f,z,1), ЛИНИЯ(f,z,t,y,1);

Уйдiң ұзындығы 20 бiрлiк, қабаттың биiктiгi 10 бiрлiк және шатыры 20 бiрлiк болғандағы үйдi сипаттау мына түрде болады:


дом(x,y)<-крыша(x,y,r,f),этаж(x,y,f);
этаж(x,y,f)<-СЛОЖЕНИЕ(y,20,z),квадр(x,y,f,z);
крыша(x,y,r,f)<-СЛОЖЕНИЕ(r,10,y),СЛОЖЕНИЕ(x,20,f),
треуг(x,y,r,f);

Мұны салу үшiн екi бөлiкке бөлу қажет: бiрiншi бөлiкке шатыры, ал екiншi бөлiкке келесiге көп қабат сипатталады. Рекурсивтi айнымалыларды қолдану бiлiм базасын жазуға көп мүмкiндiк бередi. Рекурсия сонымен қатар, динамикалық түрде өзгеретiн графиктiк объектiлердi құруға қолданылады. Ол үшiн сол бiр орында объекттiң бейнесi сипатталады, яғни оның түсi фон түсiмен анықталған бiлiм базасының түсiмен өзгертiледi. Мысалы, қанаты қағылып, ұшатын құсты сипаттау үшiн мынадай программа құрылған.


птица(x,y)<-взмах(x,y),птица(x,y);
взмах(x,y)<-вниз(x,y,1),вниз(x,y,0), вверх(x,y,1), вверх(x,y,0);
вниз(x,y,c)<-сдв(x,y,z,t,u,v), ЛИНИЯ(z,y,u,y,1);
вверх(x,y)<-сдв(x,y,z,t,u,v),ЛИНИЯ(x,y,z,t,1), ЛИНИЯ(x,y,u,v,1);
сдв(x,y,z,t,u,v)<-сдп(x,y,z,t),сдл(x,y,u,v);
сдп(x,y,z,t)<-СЛОЖЕНИЕ(x,5,z),СЛОЖЕНИЕ(t,5,y);
сдл(x,y,z,t)<-СЛОЖЕНИЕ(z,5,x),СЛОЖЕНИЕ(t,5,y);

Тiлдiң күрделiгi жеткiлiктi күрделi суреттердi құруға әкеледi. Мысалы, объекттiң динамикалық өзгерiсiн анықтайтын үйi бар және жарғанаты ұшатын күрделi суреттi салуда рекурсия қолданылады.


дом(x,y)<-крыша(x,y,r,f), этаж(x,y,f);


этаж(x,y,f)<-СЛОЖЕНИЕ(y,20,z),квадр(x,y,f,z);
крыша(x,y,r,f)<-СЛОЖЕНИЕ(r,10,y),СЛОЖЕНИЕ(x,20,f),
треуг(x,y,r,f);
треуг(x,y,z,t)<-ЛИНИЯ(x,y,t,y,1),ДЕЛЕНИЕ2(x,t,f),угол(x,y,z,t,f);
угол(x,y,z,t,f)<-ЛИНИЯ(x,y,f,z,1),ЛИНИЯ(f,z,t,y,1);
ДЕЛЕНИЕ2(x,t,f)<-СЛОЖЕНИЕ(x,t,r),ДЕЛЕНИЕ(r,2,f);
квадр(x,y,z,t)<-ЛИНИЯ(x,y,x,t,1),ЛИНИЯ(x,y,z,y,1),ч2(x,y,z,t);
ч2(x,y,z,t)<-ЛИНИЯ(x,t,z,t,1),ЛИНИЯ(z,y,z,t,1);.
птица(x,y)<-взмах(x,y),птица(x,y);
взмах(x,y)<-вниз(x,y,1),вниз(x,y,0),вверх(x,y,1),вверх(x,y,0);
вниз(x,y,c)<-сдв(x,y,z,t,u,v),ЛИНИЯ(z,y,u,y,1);
вверх(x,y)<-сдв(x,y,z,t,u,v),
ЛИНИЯ(x,y,z,t,1),ЛИНИЯ(x,y,u,v,1);
сдв(x,y,z,t,u,v)<-сдп(x,y,z,t),сдл(x,y,u,v);
сдп(x,y,z,t)<-СЛОЖЕНИЕ(x,5,z),СЛОЖЕНИЕ(t,5,y);
сдл(x,y,z,t)<-СЛОЖЕНИЕ(z,5,x),СЛОЖЕНИЕ(t,5,y);

Сұраққа жауап ретiнде


?дом(70,110),птица(120,50);
Нәтижесiнде экранда үй тұрғызылып, қанаты қағылатын құс салынады.

Тапсырмалар


1. Тiкбұрышты төртбұрышты сипаттайтын Пролог-Д тiлiнде программа құрыңыз.

  1. Рекурсивтi анықтауыштарды қолдана отырып, көп қабатты үйлердi салу берiлгендер базасын сипаттаңыз.

3. Жобаны ескере отырып Пролог-Д жүйесiнде көшелер тұрғызыңыз.


Достарыңызбен бөлісу:
1   ...   47   48   49   50   51   52   53   54   ...   85




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

    Басты бет