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

2. Пролог – бағдарламаның синтаксисі және семантикасы

 

2.1. Айнымалылар

 

Прологта айнымалылар бас әріптен басталады, латын алфавитінің цифрлері мен әріптері қолданылады. Айнымалының ерекше түрі – анонимді айнымалы, айнымалының нақты мәні жоқ кезде предикаттың аргументі ретінде қолданылады. Прологта айнымалы информация қоймасы емес, ол сөйлем қаншалықты болса, соншалықты өмір сүреді. Бағдарламаның орындалуы процесінде айнымалы жаңа мәнге ие бола алады. Айнымалы мысалдары:

X

Нәтиже

Объект 2

Қатысушылар тізімі

Жаңа заттар тізімі.

_X 23

_X 23

баласы бар(X): - ата-анасы(X, Y).

          Бұл жерде баласы бар болу (қасиеті) сипаты баланың атына байланысты емес, сондықтан анонимді айнымалы қолданған жөн:

баласы бар(X): - ата-анасы( _ , _ ).

Атының лексикалық диапазоны – бір.

Сөйлем. Бұл деген сөз, егер, мысалы, X аты екі әртүрлі сөйлемдерден кездессе, онда ол екі әртүрлі айнымалыларды білдіреді. Бірақ бір сөйлемнің ішінде оның әрбір кездесуі бір ғана айнымалыны білдіреді. Константалар үшін жағдай басқаша: бір ғана атом кез – келген сөйлемде бір ғана объектіні білдіреді, басқаша – айтқанда – бүкіл бағдарламада.

 

2.2. Құрылымдар

 

Құрылым – бұл конструкция, ол оның аргументтері тізімінің жақшалары ішіне жазылған және үтірлермен бөлінген құрылымы атынан құралады. Құрылымға компоненттерін біріктіру үшін функтурды таңдап алу қажет.

Мысалы:

      Дата (1, мамыр, 1983)

            Бұл жерде фуктур -* дата. Бұл мысалдағы барлық компоненттер – константалар (екі компонент – бүтін сандар және біреуі - атом). Мамыр айындағы жеке бір күнді 1-суреттегі құрылыммен көрсетуге болады:    

 

 

 

Осындай объекттер, 2-суретте көрсеткендей, келесі пролог терминдерімен көрсетуге болады:                 

 

 

 

 

 

 

 

 

 

Р1=нүкте(2, 4).

Р2=нүкте(5, 2).

S = кесінді (P1, P2) = кесінді (нүкте (2, 4), нүкте (5, 2)).

Т = үшбұрыш (нүкте (2, 4), нүкте (5, 2), нүкте (7, 6)).

 

2.3. Салыстырулар

 

            Пролог тілінде орындалатын негізгі операция – бұл салыстыру операциясы (унификация немесе келісу деп те айтылады). Бұл операция не жемісті, не жеміссіз болуы мүмкін. Айнымалылар өз мәндерін, фактілер және ережелерде константаларды салыстыру нәтижесінде, алады. Айнымалы өз мәніне ие болғанша, ол бос деп аталады. Айнымалы өз жаңа мәнін алған соң, ол байланып қалады. Бірақ ол сұраққа жауап алу үшін қажетті уақыт аралығында ғана байланып (байланысты) тұрады. Бұдан кейін Пролог оны босатады, қайтарады және альтернативті шешімдер іздейді. Айнымалылар салыстыру процесі бөлігінің қызметін атқарады. Салыстыру операциясы былайша анықталады:

  1. Константа тек константамен ғана салыстырылады.

  2. Ұқсас құрылымдар бір - бірімен салыстырылады.

  3. Айнымалы константамен немесе басында белгілі айнымалымен салыстырылады.

  4. Екі бос айнымалылар бір – бірімен байланыса алады және бір – бірімен салыстырылады.

Салыстыру мысалдары:

            5 саны 5-пен ғана салыстырылады.

            «иелену» фактісі <<иелену>>-мен ғана салыстырылады .

            Сергей константасы Юрий константасымен салыстырылмайды.

 

2.4. Сұрақтар

 

          Сұрақ – бұл бағдарламаның орындалуы кезінде болатын логикалық шығыстың жіберуші нүктесі. Кез – келген сұраққа жүйе «Иә» немесе «Жоқ» деп жауап береді.

          Горизонталь және вертикаль кесінділерді тану үшін бағдарлама фрагментін жазайық. Кесінді вертикаль, егер оның нүктелері – соңы координаттары сәйкес келсе; кесіндіге басқа да ешқандай шектеулер қойылмайды. <<Горизонталдық>> сипаты ұқсас келеді, тек X пен Y – тің орындарына ауыстыру қажет. Құрамында осы фактілері болған келесі бағдарлама, мына тұжырымдарды жүзеге асырады: 

 

Осы бағдарламамен мынадай диалог мүмкін:

? – верт (кес. (нүкте (4, 2), нүкте (4, 6))).

      Иә.

? – верт ( кес. (нүкте (1, 1), нүкте (2, Y))).

      Жоқ.

? – гор (кес. (нүкте (1, 1), нүкте (7, Y))).

     Y = 1.

 

 

 

Бағдарламаға қатысты едәуір жалпы сұрақты құрастырайық: <<Басы (2, 3) нүктесінде жатқан, қандай да бір вертикалды кесінділер бар ма ?>>

 

          ? – верт (кес. (нүкте (4, 2), Р))

          Р = нүкте (4, Y)

 

       Келесі сұрақты қояйық: Бір мезгілде горизонталь да, вертикаль да болатын кесінді бар ма?   

      ? – верт (S), гор (S).

      S = кес (нүкте (X, Y), нүкте (X, Y)).