5. Жаңа сабақты түсіндіру:
А) Оқушыларға жаңа сабақтың материалдарын меңгерту.
|
Жаңа сабақ
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).
Мұнда Пролог берілгендер қорынан алдымен сұраққа енгізілген бірінші мақсатқа сәйкес фактіні іздейді. Егер берілгендер қорында бірінші болып «ұнатады (Нұрғали,ыстық)» фактісі кездессе, жүйе Х айнымалысына «ыстық» мәнін меншіктеп (Х=ыстық), оның мәнін басқа мақсаттарда кездесетін осындай айнымалылардың орнына қойып шығады. Одан әрі берілгендер қорынан «ұнатады (баян, ыстық)» мақсатын іздейді. Ол табылса, оған белгі қойып, екі мақсатты да қанағаттандыратын жауапты басып шығарады. Әйтпесе, Пролог іздеуді берілгендер қорыны басынан бастап қайта жүргізеді. Мұндай процесті қайту процесі не қайту механизмі деп атайды.
Сұрақта белгісіз аргументтер саны бірнеше болуы да мүмкін.
3-мысал. 7-мысал. «Жәмиляның анасы мен оның анасы кімдер-?» сұрағы берілсін, берілетін сұрақ пен шығатын жауаптың түрі:
?-ana(X,Y), ana(Y,jamilia).
X=xadisha Y=baian
Мұнда берілген сұрақ берілгендер қорымен үйлесімді болуы үшін қор мынадай түрде құрылған болуы тиіс.
ana (xadisha baian)
ana (gulnar,nurlan)
ana (baian jamilia)
………………….. т.с.с
Турбо Прологта программаны сақтап, іске қосу командасын берген кезде экранның оң жағында көрінген Dialog терезесінде берілетін команда:
Мақсат: ana(X,Y), ana(Y,jamilia)
Мұнда да, Пролог жауапты алдымен бірінші мақсатқа сәйкес іздейді, т.с.с.
Сонымен, сұрақ берілсе, Пролог оның мазмұнын берілгендер қорында сақталуы фактілермен салыстырады да, мазмұнының дұрыстығын дәлелдеуге болатынын не болмайтынын анықтайды және сәйкес жауап шығарады. Яғни, Прологта сұраққа жауап беру мақсатты ұйғарымдарды дәлелдеумен бірдей. Дәлелдеу- мақсаттың берілгендер қорымен үйлесімділігін анықтау деген ұғым. Егер сұраққа енгізілген мақсаттар бірнеше болса, Пролог алдымен бірінші мақсатты дәлелдеуге кіріседі, ол дәлелденсе, оның оң жағына енгізілген мақсаттың үйлесімділігін тексеруге кіріседі, т.с.с. Үйлесімділік болмаса, қайту процесі орындалады.
Прологта бірден бірнеше фактінің бар не жоғын тексеру сұрағы құрылымды сұрақ делінеді. Мысалы, мынадай берілгендер және т.с.с берілгендер қоры дайындалған болсын:
ushady(ushakh).
ushady(tyrna).
Khanaty_bar(tyrna).
Khanaty_bar(karlygash).
................................. .
Қорға сәйкес мынадай құрылымды сұрақ беруге болады:
?- ushady(Х), кhanaty_bar(Х).
Х= tyrna
Берілгендер қорына енгізілген қанаты бар құс екеу, екіншісі қарлығаш. Бірақ, жүйе х=karlygash жауабын шығармайды, себебі «ushady» предикаты бар мұндай факт берілгендер қорына енгізілмеген.
|