9-10 тақырып. Прологта логикалық программалау. Мәліметтер базасы.
Мақсаты: Прологтағы мәліметтер базасын және сұраныстарды мысалдармен қарастыру.
1-мысал. Қарапайым орысша – қазақша сөздігін дайындау керек. Фактілер aud (<орысша сөз>, <қазақша аудармасы>) түрінде берілсін: Турбо Прологта берілгендер қорын мынадай түрде дайындауға болады.
Predicates
Aud (string, string)
Clouses
Aud(голова, бас)
Aud(нос, мұрын)
Aud(рот, ауыз)
Aud(тело, дене)
Aud(человек, адам)
Aud
…………………
Цель: Aud (голова,X)
X=бас
2-мысал. Адамдардың қарапайым телефон анықтамалығын құрып, сұрақ бойынша жауап шығару керек.
Оның мақсаты predicates бөліміне енгізген түрде құрылуы:
Predicates
Tel(string, string)
Goal
Write (“фамилия”-?),
Readln(Fam),
Tel(fam, telef_Nom)
Write (“телефон нөмірі “ telef_Nom”), n1.
Clauses
Tel(“Үмбетов. О”, “52-21-60”)
Tel(“Сүлтанов.М”, “55-32-14”)
Tel(“Ержан.К”, “52-21-36”).
Программа іске қосылған кезде бірден фамилия сұралады:
Fam-? Үмбетов.О
Телефон нөмірі=52-21-60
Программаға енгізілген n1-келесі жазуды жаңа жолдан бастау (курсорды жаңа жолдың басына орналастыру) стандартты операторы, Write-стандартты предикат (оператор).
Прологта пайдаланылатын айнымалылар әдеттегі программалау тілдеріндегі айнымалылардай емес. Олар үшін жадтан арнайы орын бөлінбейді. Олардың мәндері - берілгендер қорында сақталған нысандар атаулары.
Коньюнкциялы сұрақтың жазылуы да коньюнкциялы фактінің жазылуы сияқты: әр мақсат үтір арқылы бөлініп жазылады. Мысалы, сәйкес білім қоры дайындалып, Нұрғали да, Баян да ұнататын нысан сұралса, оны жазылуы:
?- unatedy (nurgali,X), unatedy (baian,X).
Мұнда Пролог берілгендер қорынан алдымен сұраққа енгізілген бірінші мақсатқа сәйкес фактіні іздейді. Егер берілгендер қорында бірінші болып «ұнатады (Нұрғали,ыстық)» фактісі кездессе, жүйе Х айнымалысына «ыстық» мәнін меншіктеп (Х=ыстық), оның мәнін басқа мақсаттарда кездесетін осындай айнымалылардың орнына қойып шығады. Одан әрі берілгендер қорынан «ұнатады (баян, ыстық)» мақсатын іздейді. Ол табылса, оған белгі қойып, екі мақсатты да қанағаттандыратын жауапты басып шығарады. Әйтпесе, Пролог іздеуді берілгендер қорыны басынан бастап қайта жүргізеді. Мұндай процесті қайту процесі не қайту механизмі деп атайды.
Сұрақта белгісіз аргументтер саны бірнеше болуы да мүмкін.
Достарыңызбен бөлісу: |