Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод.указ1.ФЛП.каз.doc
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
156 Кб
Скачать
☆

Зертханалық жұмыс №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 /* санның қалдығын табу*/

Берілген нұсқаға сәйкес арифметикалық мазмұны бар есептеулерді жүргізіңіз. Бағдарлама интерактивті режимде орындаңыз, барлық берілгендер тізімін пернетақтадан енгізіңіз.

Тапсырмалар тізімі

  1. Пәтер ремонты

  2. Көлік ремонты

  3. Компьютер ремонты

  4. Квадрат теңдеу түбірін табыңыз

Зертханалық жұмыс №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.