Студопедия — Жұмыстың орындалу реті мен мазмұнын әдістемелік сипаттау
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Жұмыстың орындалу реті мен мазмұнын әдістемелік сипаттау






Сарапшы жүйелер – бұл қандай да бір облыста сарпшы адам білімінің деңгейіне тең болатындай білімді көрсететін компьютерлік программа. Жалпы бұл облыс қатаң шектелген, бірақ қосымшалар саны көп: сөйлеуді түсіну, суретті талдау, ауа райы, болашақ егінді болжау, медициналық диагностика, интегралдық схемаларды құру, қаржыландыру және т.б. ПРОЛОГТАҒЫ сарапшы жүйелердің ішкі білімдер қорын құру.

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

/* Program Lab_6_1.PRO */

domains

thing = string

conds = cond*

cond = string

database

is_a(thing,thing,conds)

type_of(thing,thing,conds)

false(cond)

predicates

run(thing)

ask(conds)

clauses

run(Item):-

is_a(X, Item, List),

ask(List),

type_of(Ans, X, List2),

ask(List2),

write(”The “, Item,” you need is a/an “,

Ans), nl.

run(_):-

write(”This program does not have enough “),

write(”data to draw any conclusions.”),

nl.

ask([]).

ask([H|T]):-

not(false(H)),

write(”Does this thing help you to “),

write(H,” (enter y/n)”),

readchar(Ans), nl, Ans=’y',

ask(T).

ask([H|_]):-

assertz(false(H)), fail.

Goal run(tool).

Келесі деректе р asserta, немесе assertz предикатының көмегімен енгізіле алады, немесе consult предикаты көмегімен файлдан оқылады. Бірақ, бұл мысалда олар clauses секциясында орналасқан.

is_a(language, tool, ["communicate"]).

is_a(hammer, tool, ["build a house", "fix a fender", "crack a nute"]).

is_a(sewing_machine, tool, ["make clothing", "repair sails"]).

is_a(plow, tool, ["prepare fields", "farm"]).

type_of(english, lahguage, ["communicate with people"]).

type_of(prolog,lahguage, ["communicate with a computer"]).

Әрбір сұраққа копьютермен сөйлесетін құрал тапқыңыз келгендей жауап беріңіз.

Енді goal бөліміне мыналарды енгізіңіз:

retract(type_of(prolog, language, ["communicate with a computer"])),

asserta(type_of(”turbo prolog”, language, ["communicate with personal computer"])),

asserta(type_of(prolog, language, ["communicate with a mainframe computer"])),

run(tool).

Бұл мақсат деректі жояды

type_of(prolog, language, ["communicate with a computer"])

ішкі деректер базасынан программаға жаңа екі фактіні қосады

type_of(prolog, language, ["communicate with a mainframe computer"]).

type_of(”turbo prolog”, language, ["communicate with personal computer"]).

Енді тағы да әрбір сұраққа дербес компьютермен сөйлекскіңіз келгендей жауап қайтарыңыз. Аргументі ретінде файл аты бар Save предикатын шақыру арқылы тексттік файлдағы барлық мәліметтер қорын сақтауға болады. Мысалы save(”mydata.dba”) шақырғаннан кейін MYDATA.DBA файлы clauses секциясына ұқсас болады және әрбір дерек жолда тұрады. Consult предикаты көмегімен бұл файлды жадыға оқуға болады:

consult(”mydata.dba”)

2. Мәліметтер қоры предикаттарымен сипатталатын деректеге олар термдар сияқты манипуляция жасауға болады.

Мәліметтер қорын хабарлау кезінде Пролог ішкі жақтан мәліметтер қорын сипаттауға сәйкес келетін анықталу облысын құрады. Мысал ретінде мына хабарламаны қарайық:

database -dba1 /* dba1 – предикаттар домені */

person(name, telno)

city(cno, cname)

Мұндай хабарламаларды ала отырып, Пролог жүйесісәйкес облыс құрады

(домен) dba1: domains

dba1 = person(name, telno); city(cno, cname)

Бұл dba1 домені басқа да алдың ала анықталған домен сияқты қолданыла алады. Мысалыға, consult предикатына анлогты my_consult предикатын құру үшін, readterm предикатын қолдануға болады.

Lab_6_2.PRO программасы ішкі мәліметтер қорын қолданудың ең оңай жолы.

Мына мысал дисплейді пайдалану құралын құрады.

Дисплейдің ағымдағы экранының форматы field және textfield деректерінде сақталады, screen мәліметтер қорында анықталған. Экранның бірнеше аттары screens қорында сақталуы мүмкін. Shiftscreen предикатының жұмысы кезінде бірнеше сақталып тұрған экрандарды screen базасына көшіріп алуға болады, бірақ алдың ала бұл қордағы барлық ағымдық мәліметтерді өшіріп алу керек және құрылып жатқан экранға қатысты ақпаратты алу үшін screen предикатын шақыру керек.

/* Lab_6_2.PRO программасы */

domains

screen_name = symbol

field_name = symbol

row, col, len = integer

type = int(); str(); real()

database – screen

field(field_name, type, row, col, len)

textfield(row, col, len, string)

database – screens

screen(screen_name, screen)

predicates

shiftscreen(screen_name)

clauses

shiftscreen(Screen):-

retractall(_, screen),

screen(Screen, ScreenFact),

assert(ScreenFact),

fail.

shiftscreen(_).

/*person жазбасы үшін экран схемасы */

screen(person,field(”fname”,str,6,16,36)).

screen(person,field(”lname”,str,8,15,37)).

screen(person,field(”street”,str,10,12,40)).

screen(person,field(”zipcode”,str,12,14,7)).

screen(person,field(”cityname”,str,12,33,19)).

screen(person,field(”code”,str,15,17,35)).

screen(person,textfield(15,4,12,”Person Code:”)).

screen(person,textfield(12,22,10,”City Name:”)).

screen(person,textfield(12,4,8,”Zip code:”)).

screen(person,textfield(10,4,7,”Street:”)).

screen(person,textfield(6,4,11,”First Name:”)).

screen(person,textfield(8,4,10,”Last Name:”)).

/*city жазбасы үшін экран схемасы */

screen(city,field(”zipcode”,str,8,16,7)).

Резюме:

1. Прологтың ішкі базасы database секциясында топтастырылған сіздің программаңыздағы деректерден тұрады. Қолданушы анықтаған және осы деректер тобында қолданылатын предикаттарды database кілттік сөзі арқылы хабарлауға болады.

2. database секцияларына аттар беруге болады. Келісім бойынша атауы бар database секциясының домені ретінде bdasedom домені болады. Программада database бірнеше секциялары болуы мүмкін, бірақ бұл кезде олардың әрқайсысында қайталанбайтын атау болуы керек. Мәліметтер қорының берілген предикатын тек бір ғана database секциясында сипаттауға болады.

3. Стаңдарт предикаттар asserta, assertz, және consult көмегімен программа орындалуы кезінде ішкі мәліметтер қорына деректер қосуға болады. Сонымен қатар retract және retractall предикаттары көмегімен осы деректерді программа орындалуы кезінде өшіруге болады.

4. save предикаты деректерді database секциясынан файлға сақтайды. Редактор көмегімен деректердің осындай файлын құруға және редакциялауға болады, сонан соң файлдардан фактілерді consult предикаты көмегімен алуға болады.

5. Программадағы мәліметтер қоры предикатына басқа да предикаттарға сияқты хабарлауға болады.

6. database секциясы үшін генерацияланған ішкі домендерді қолдану кезінде деректермен терм ретінде жұмыс жасауға болады.

Ішкі мәліметтер қоры Database секциясын қалай хабарлайтынын және ішкі мәліметтер қорының мазмұнын қалай өзгертуге болатынын қарастырайық.

Ішкі мәліметтер қоры деректерден тұрады, оларды сіздің Прологтағы программаңыздан олардың орындалуы кезінде қосуға және өшіруге болады.

Database секциясында ішкі мәліметтер қорын сипаттайтын предикаттарды хабарлауға болады, және осы предиктттарды predicates секциясында сипатталған предикаттар ретінде қолдануға болады.

Мәліметтер қорына жаңа деректерді қосу үшін Прологта asserta және assertz предикаттары қолданылады, ал retract және retractall предикаттары бар деректерді өшіру үшін қолданылады. Алдымен деректі өшіріп, мәліметтер қоры мазмұнын өзгертуге болады, сонан соң осы деректің жаңа нұсқасын қоюға болады. Consult предикаты деректерді файлдан оқып, оларды ішкі мәліметтер қорына қосады, ал save database ішкі секциясын файлға сақтайды.

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

Прологтың стаңдарт алгоритмі белгілі параметрлердің дұрыс ережесі бойыншадеректерді автоматты түрде таңдайды және қайтымды іздеу алгоритмі берілген сұраныс үшін барлық шешімдерді бермейінше кез келген белгісіз параметрлерге мәнді меншіктец береді.

Пролог мәліметтер қорына жататын деректерді қарапайым предикаттар секілді интерпретациялайды. Ішкі мәліметтер қорының предикат деректері кеэ келген уақытта өзгертілетін кестеде сақталады.

Database кілттік сөзі ішкі мәліметтер қорын сипаттайтын предикттарды хабарлау тізбегінің басын анықтайды. Орындалу кезінде пернетақтадан asserta және assertz предикаттары көмегімен мәліметтер қорына деректер қосуға болады. Consult стаңдарт предикатын шақырып, дисктегі файлдан қосылатын деректерді алуға болады. Database секциясы төмендегі мысал сияқты бола алады:

domains

name, address = string

age = integer

gender = male; female

database

person(name,address,age,gender)

predicates

male(name,address,age)

female(name,address,age)

child(name,age,gender)

clauses

male(Name,Address,Age):- person(Name,Address,Age,male).

Бұл мысалда person предикатын басқа предикаттар (male,female,child) сияқты қолдануға болады.

Келесілерді айта кеткен жөн:

1. Мәліметтер қорына ережелерді емес, тек деректерді ғана қосуға болады.

2. Қорлар декректері бос айнымалылардан тұрмауы керек.

Database бірнеше секцияларын жіберуге болады, бірақ ол үшін database әрбір секцияларының атын көрсету қажет. Бұл consult және save database ат бойынша қандай да бір анықталған секцияны жүктеу және сақтай алатын болған соң жасалады.

database – mydatabase

myFirstRelation(integer)

mySecondRelation(real, string)

myThirdRelation(string)

/* и т.д. */

goal

consult(”example.dba”,mydatabase),

retract(myFirstRelation(1)),

asserta(myFirstRelation(0)),

save(”example.dba”,mydatabase).

Мұндай сипаттама mydatabase атты мәліметтер қорын құрады. Егер шкі

мәліметтер қорына ат бермесе, онда келісім бойынша оған dbasedom аты беріледі.

Модульдегі мәліметтер қоры предикаттарының аттары қайталанбайтынын түсінген жөн. Database екі әртүрлі секцияларында предикаттардың бірдей аттарын қолдануға болмайды.

Программаға деректерді енгізу үшін, үш түрлі әдіс бар:

- деректерді clauses секторына енгізу;

- программа орындалуы кезінде asserta және assertz предикаттары көмегімен;

- consult предикаты көмегімен деректері бар мәліметтер қорын файлдан жүктеу.

Деректерді қосу төмендегі форматқа ие болады:

asserta(<факт>) /* (i) */

asserta(<факт>,databaseName) /* (i,i) */

assertz(<факт>) /* (i) */

assertz(<факт>,databaseName) /* (i,i) */

 

Тәжірибелік жұмыс №12. ListBox элементін қолдану







Дата добавления: 2015-10-19; просмотров: 711. Нарушение авторских прав; Мы поможем в написании вашей работы!



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Тема: Кинематика поступательного и вращательного движения. 1. Твердое тело начинает вращаться вокруг оси Z с угловой скоростью, проекция которой изменяется со временем 1. Твердое тело начинает вращаться вокруг оси Z с угловой скоростью...

Условия приобретения статуса индивидуального предпринимателя. В соответствии с п. 1 ст. 23 ГК РФ гражданин вправе заниматься предпринимательской деятельностью без образования юридического лица с момента государственной регистрации в качестве индивидуального предпринимателя. Каковы же условия такой регистрации и...

Седалищно-прямокишечная ямка Седалищно-прямокишечная (анальная) ямка, fossa ischiorectalis (ischioanalis) – это парное углубление в области промежности, находящееся по бокам от конечного отдела прямой кишки и седалищных бугров, заполненное жировой клетчаткой, сосудами, нервами и...

ЛЕЧЕБНО-ПРОФИЛАКТИЧЕСКОЙ ПОМОЩИ НАСЕЛЕНИЮ В УСЛОВИЯХ ОМС 001. Основными путями развития поликлинической помощи взрослому населению в новых экономических условиях являются все...

МЕТОДИКА ИЗУЧЕНИЯ МОРФЕМНОГО СОСТАВА СЛОВА В НАЧАЛЬНЫХ КЛАССАХ В практике речевого общения широко известен следующий факт: как взрослые...

СИНТАКСИЧЕСКАЯ РАБОТА В СИСТЕМЕ РАЗВИТИЯ РЕЧИ УЧАЩИХСЯ В языке различаются уровни — уровень слова (лексический), уровень словосочетания и предложения (синтаксический) и уровень Словосочетание в этом смысле может рассматриваться как переходное звено от лексического уровня к синтаксическому...

Studopedia.info - Студопедия - 2014-2024 год . (0.013 сек.) русская версия | украинская версия