SWI Prolog программасы көмегімен студенттердің орташа баллдарына қарай шәкіртақының тағайындалуын және компанияларға жұмысқа кіру мүмкіндіктерін бағдарламалау
Алдымен SWI Prolog ортасында жұмыс істеу үшін терминалды ашып, swipl пәрменін енгізуге болады. Сіз пәрмендерді жібере алатын аудармашы іске қосылады:
Сурет 1.
Файлдарды қәзіргі қолданып жатқан кодпен байланыстыру үшін consult(файл жолы) немесе [файл жолы] командасын орындаймыз
Сурет 2.
Жұмыс істеу үшін редактордан бастапқы код файлын ашып, терминалдағы тиісті каталогқа өтіп, ондағы swipl командасын орындау керек, кеңес кодын пайдаланып бастапқы код файлын тіркеңіз. Енді сіз командаларды аудармашыға бере аласыз. Жоғарыда келтірілген мысалда, файл студенттерді берілген тапсырмаға сәйкес сипаттайды, біз мәліметтер базасындағы барлық студенттер туралы ақпарат алу үшін student(Who, Rate) командасын орындаймыз. SWI Prolog бағдарламасының Visual Prolog бағдарламасынан айырмашылығы, барлық табылған шешімдерді бірден шығармайды. Басында бірінші шешім шығарылады, егер мәлімет жеткілікті болса нүкте қойылады, ал егер қолданушыға басқа шешімдер керек болса-үтір-нүкте қойылады
Мәтіндік редакторға тапсырмаға сәйкес бағдарламаны енгізейік:
student(`Kozhabaev`, 4.5).
student(`Zhalal`, 3).
student(`Estaeva`, 4.3).
student(`Ahmadi`, 3.2).
student(`Erboluli`, 4.6).
student(`Egenberdiev`, 5).
stipendiya(Name):-
student(Name, SrBal),
SrBal > 4.
company(`BillBoard`, 5).
company(`Sulpak`, 4.9).
company(`Qiwi`, 4.5).
company(`Samsung`, 4).
company(`Onay`, 3).
isAbleToWork(NameStudent,NameCompany):-
student(NameStudent, SrBalStudent),
company(NameCompany, SrBalCompany),
SrBalStudent >= SrBalCompany.
Сурет 3.
Аудармашыда мәліметтерді жаңарту үшін consult командасын қайта қайталаймыз.
Ұсынылған бағдарламаны талдаймыз:
company және student предикаттары факт болып есептеледі ;
stipendiya предикаты студент атын қабылдап, базадан студентті және оның алған орташа баллын іздейді. Содан кейін орташа балл тұрақтымен салыстырылады:
егер салыстыру сәтті болса, онда предикат сәтті аяқталады және «сыртта» біз стипендия бар студенттің атын аламыз;
егер салыстыру оқушының балы тұрақты деңгейден төмен болатындығын көрсетсе, онда предикат сәтсіз болады. Сонымен бірге, біз «сыртта» ешқандай нәтиже алмаймыз (бұл студент туралы ақпарат), бірақ қайтару әрекеті бар іздеу механизмі іске қосылады (аудармашы біздің өлшемдерге сәйкес келетін басқа студенттерді табуға тырысады);
салыстыру жүргізілгенге дейін предикат сәтсіздікке ұшырауы мүмкін - егер дерекқорда ешқандай ақпарат жоқ студенттің аты-жөні көрсетілсе (біз ол үшін орташа балл ала алмаймыз);
IsAbleToWork предикаты оқушының аты мен компания атауын кіріс ретінде қабылдайды, студенттің орташа бағасы мен компанияның ең төменгі өту бағасын іздейді, содан кейін осы ұпайларды салыстырады. Бұл stipendiya предикатымен бірдей жұмыс істейді, айырмашылығы компанияның өту балы тұрақты емес, ол жәй ғана мәліметтер базасынан алынады.
Студенттік стипендияға өтініш беру үшін Қожабаев стипендия ережесіне аргумент ретінде студенттің атын беруі керек.
Сурет 4.
Әрі қарай, Ахмадидің шәкіртақысын алу үшін тексеру жасалады (оның стипендиясы жоқ, сондықтан false көрсетіледі):
Сурет 5.
БиллБордқа жұмысқа орналасу үшін талап етілетін ең төменгі орташа баллды алу үшін сіз company('Microsoft', X) сұрауын орындауыңыз керек . Оны орындау барысында қажетті ақпаратты тікелей company('Microsoft', 5) фактісінен алады. Нәтижесі:
Сурет 6.
Естаеваның BillBoard-да жұмысқа тұра алатындығын тексеру үшін, IsAbleToWork предикатын пайдалану қажет:
Сурет 7.
Достарыңызбен бөлісу: |