- •Зертханалық жұмыс №1 Турбо-Прологке кіріспе. Енгізу және шығару предикаты
- •Зертханалық жұмыс №2 Турбо-Прологке бағдарламасының құрылымы. Статикалық мәліметтер қоры. Бағдарламаның орындалу түрі.
- •Зертханалық жұмыс №3 Турбо-Прологта арифметикалық операциялар
- •Зертханалық жұмыс №4 рекурсия
- •Зертханалық жұмыс №5 Динамикалық мәліметтер қорымен жұмыс. Графика және Турбо-Пролог терезесі
- •Зертханалық жұмыс №6 Тізімді пайдалану. Файлдармен жұмыс
- •Қосымша
Зертханалық жұмыс №3 Турбо-Прологта арифметикалық операциялар
Жұмыстың мақсаты: ішкі құрылымды предикаттарда есептеулер жүргізу үшін оқып үйрену, арифметикалық ұғымдарды салыстыру.
КІРІСПЕ
Пролог үлкен мәнді арифметикалық операциялар және үлкен сандармен жұмыс жасауға арналған. Бірақта кез келген жүйеде кез келген программадағыдай арнаулы операторлар бар, солармен танысайық.
НЕГІЗГІ БӨЛІМ
Турбо-Пролог екі типті домендік сандармен орындалады, нақты және аралас сандар. Сонымен қатар толық математикалық функция бойынша предикаттар негізін құрайды. Сол келесі диапазон аралығында орындалынады:
Турбо-Пролог нақты сандар 32768-ден бастап 32767-ге дейін;
Араслас сандар +1E-307-ден бастап +1E308-ге дейін.
Турбо-Пролог жүйесінде келесі арифметикалық операторлар бар:
+ қосу
mod қалдықты бөлу
div
- азайту
* - көбейті
/ - бөлу
Екі санды арифметикалық тұрғыдан салыстыру үшін келесі ұғымдар қолданылады:
= тең, <> тең емес
> үлкен, >= үлкен немесе тең
< кіші, <= кіші немесе тең
Бұл арифметикалық атаулар екі операнда аралықтарында орындалынады. Орындалынатын операндалар арифметикалық жазылым болуы қажет. Егер операторлар операндалар аралығында орын алмаса, онда программа қате жазылғанын көрсетеді. Предикаттар берілген сандарды ішкі программа бөлігінде орындап, тексеріп өзара салыстырулар тоқталған жағдайда берілген, енгізілген толықтыруларбойынша толық дұрыс жауабын береді.
Тапсырмалардың орындалу реті
Қарапайым арифметикалық есептеулерді жүргізіңіз.
Predicates
sred (integer, integer, real)
kvadr (integer, integer)
cub (integer, integer)
dmod (integer, integer, integer)
ddiv (integer, integer, real)
st (integer, integer, integer)
clauses
sred (A, B, D) :- D=(A+B)/2 /*арифметикалық орташаны табыңыз*/
kvadr (B, D) :- D=B*B /*санның квадыратын табу*/
cub (B, D) :- D=B*B*B /*санның кубын табу*/
dmod (A, B, D) :- D=A mod B /* санның қалдығын табу*/
Берілген нұсқаға сәйкес арифметикалық мазмұны бар есептеулерді жүргізіңіз. Бағдарлама интерактивті режимде орындаңыз, барлық берілгендер тізімін пернетақтадан енгізіңіз.
Тапсырмалар тізімі
Пәтер ремонты
Көлік ремонты
Компьютер ремонты
Квадрат теңдеу түбірін табыңыз
Зертханалық жұмыс №4 рекурсия
Жұмыстың мақсаты: ережелердің қойылу мақсаттары, бұл ережелер өз бетімен орындалуы тиіс.
НЕГІЗГІ БӨЛІМ
Бір есептеуді орындау барысында бір ұғымдар, ережелер, фактылар, рекурсиялар бірнеше рет кездеседі. Ережелердің өзі компонент негізінде орындалынатын болса оларды рекурсия деп атайды. Откат ережелердің орындалу реті болып саналады және олар өз еркімен реттелуі қажет. Рекурсияны басқару есептің қойылу шартына байланысты, аяқталынатын шарты орындалуы тиіс. Олар мәліметтер қорында сұраныс нәтижесіне байланысты реттелуі тиіс, олар мәліметтердің құрылымын тізім негізінде қарастырылып отырылады.
Тапсырмаларды орындалу реті
Төменде екі бағдарламаның рекурсия негізінде орындалуы жазылған. Олардың орындалу барысында рекурсияның қызметін анықтаңыз.
Бірінші программа:
predicates
play_it
play(integer)
test(integer, integer)
generate(integer)
goal
play_it.
clauses
play_it :- generate (X), play(X).
generate(X) :- random (R), X=1+R*100,
nl, write (“Белгілі бір санды ойлаңыз”).
play(X) :- nl, write (“Ойлаған саныңызды еңгізіңіз”),
nl, reading(G), test (X, G),
play(X).
test(X, G) :- X=G, nl, write (“Дұрыс!”),
nl, readchar (_),
exit.
test (X, G) :- X<G, nl, write (“кіші”).
test (X, G) :- X>G, nl, write (“үлкен”).
Екінші программа:
predicates
fact(integer, integer)
clauses
fact (1,1) :- !.
fact (N, F) :- M=N-1, fact (M, P),
F=P*N.
