Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Зертханалық жұмыс 15.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
99 Кб
Скачать
☆

Декларация және ережелер

Visual Prologта бірнеше кірістірілген стандартты домендер бар. Оларды domains бөлiмiнде декларарация типінде және сипатталмаған предикаттардың аргументінде қолдануға болады.

Негiзгi домендер 4 кестеде сипатталған

Домен

Сипатталуы

Іске асуы

short

Қысқа, таңбалы, сандық

Барлық платформалар (- 32 768—32 767) 16 бит

ushort

Қысқа, таңбасыз,сандық

(0—65 535 ) 16 биттік платформалар

long

Ұзын, таңбалы, сандық

барлық платформалар (- 2 147 483 648-2 147 483 647) 32 бит

ulong

Ұзын, таңбасыз, сандық

барлық платформалар (0-4 294 967 295 ) 32 бит

integer

Таңбалы, сандық, тәуелді көлемді платформаға ие

(- 32 768-32 767) 16 биттік платформалар

(- 2 147 483 648-2 147 483 647) 32 биттік платформалар

unsigned

Таңбасыз, сандық,тәуелді көлемді платформаға ие

(0—65 535 ) 16 биттiк платформалар

(0-4 294 967 295 ) 32 биттік платформалар

byte

Барлық платформалар (0— 55 ) 8 бит

word

Барлық платформалар (0—65 535 ) 16 бит

dword

Барлық платформалар (0—4 294 967 295 ) 32 бит

Идентификаторла және жолдар сіздің программаңызда бір-бірін ауыстыра алады,бірақта

Visual Prologта олар бөлек сақталады. Идентификаторлар, идентификатор кестелерiнде сақталады, ал олардың көрінісіне оның кестедегі индексі ғана қолданылады, бірақ жолдардың идентификаторы емес. Бұл идентификаторлардың қарама-қарсы қойылуы өте жылдам орындалатындығын білдіреді, ал олар программада біренше жерде кездессе,ондо олардың сақталуы да тығыз болады. Жолдар іздеу кестесінде сақталынбайды және қарама-қарсы қоюдың міндеттілігінде Visual Prolog оның символдарын біртіндеп тесереді.керек болса нышанға олардың нышаны тексередi. Сіз қай домен әрбір прграммада жақсы қолданылатынын өзiңіз шешесіз.

Тапсырмалар

Visual Prolog аяқталған телефондық анықтама секілді программаларды көрсетеді. Тек стандартты домендер пайдаланылғандықтан оған domains бөлiмінің программада қажеті жоқ.

Predicates

phone_number (symbol, symbol)

clauses

phone_number ("Albert " , "EZY-3665 " ).

phone_number ("Betty " , "555-5233 " ) .

phone_number ("Carol " , "909-1010 " ) .

phone_number ("Dorothy " , "438-8400 " ) .

goal

программаны енгізіп, орындауға жібергеннен кейін рет-ретімен мақсаттарды еңгізіңіз.

phone_number ("Carol " , Number) .

phone_number ("438-8400 " Who, ).

phone_number ("Albert " , Number).

phone_number (Who, Number).

Енді ұсыныстарды өзгертiңiз. Kim және dorothy бiр телефон номеріне ие деп есептейік. Бұл айғақты сlauses бөлiмiне енгізіп, келесі мақсатты енгіземіз:

Рhone_number ("438-8400 " Who, ).

Бұл сұраныстан сіз екі нәтиже алуыңыз керек:

Who=dorothy

Who=kim

2 Solutions.

Програмасындағы сhar доменiн сипатау үшін isletter предикаты пайдаланылады. Тапсырама барысында оған төменлегідей мақсаттар қойылған:

isletter(%).

isletter(Q).

"Yes" немесе "No" сәйкес келетін мағынасына қарай қайтарады

Predicates

isletter(char)

clauses

= > белгісі % таңбасын анықтайды.

% мына теңдік "Алфавиттің алдында қойылады"

isletter (Ch):-‘ а’< = Ch, Ch<=’z’.

isletter (Ch ):-‘A’<= Ch, Ch<=’Z’

Программасын енгізіп, Test Goal -да әрбір мақсатты рет-ретімен сынап көріңіз:

a ) isletter (‘х’). d ) isletter (a ) .

b ) isletter (‘ 2 ‘ ). e ) isletter (X ).

c ) isletter ("Hello " ).

(c) және (d) мақсаттары қателіктің түріне алып келеді,ал (е) мақсаты және "Free variable " (байланыспаған айнымалы) хабарламасын қайтарады. Сіз берілмеген объектінің а немесе z-ке қатынасын тексере алмайсыз.