Тізімдер, файл және графиканы қолдану. Тізімдермен, файлдармен және графикамен жұмыс жасау үшін қолданылатын стандартты предикаттар


Жұмыс түрі: Реферат
Тегін: Антиплагиат
Көлемі: 12 бет
Таңдаулыға:
ҚАЗАҚСТАН РЕСПУБЛИКАСЫ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ
Қ. И. Сәтпаев атындағы Қазақ ұлттық техникалық университеті
Ақпараттық технологиялар институты
Техникалық кибернетика кафедрасы
Студенттің өзіндік жұмысы
Тақырыбы : Тізімдер, файл және графиканы қолдану. Тізімдермен, файлдармен және графикамен жұмыс жасау үшін қолданылатын стандартты предикаттар.
Тексерген:Муртазина А. У.
«» 2006ж
Студент: Жанабилова Г. Ж
Мамандығы: 050703
Тобы: ИСб-04-1к
АЛМАТЫ 2006
КІРІСПЕ
Бұл өздік жұмысты орындау барысында мен тізімдерді, файлды және графиканы қолдану арқылы көптеген оларға қолданылатын стандартты предикаттарды оқып үйрендім.
Соған байланысты, осыған дейін біз қолданушының программамен (Файлдармен байланыс) байланысының бір әдісін қолдандық - қолданушы программаға сұрақ қояды, ал программа айнымалыларды нақтылап, жауап береді. Байланыстың мұндай механизмі өте қарапайым және ыңғайлы, өзінің қарапайымдылығына қарамастан ақпаратты енгізу мен шығаруды қамтамасыз етіп тұрады. Бірақ оның иілгіштігі төмен, сондықтан келесі жағдайларда бұл байланыс механизмін кеңейту керек:
- мәліметтерді сұрақ түрінде емес, басқа формада енгізу. Мысалға, ағылшын тілінде жазылған сөйлем түрінде
- ақпаратты кездейсоқ форматта енгізу
- ақпаратты тек қолданушы терминалымен ғана емес, сонымен қатар файлмен де айырбастау тағы да басқа көптеген әдістерді үйренуге болады деп те айтуға болады.
Тағы бір айта кетерлік жайт ол Прологтың басқа да көптеген мүмкіншіліктеріне тоқтола кетсе ол артықтық етпейді. Бірақ Прологтың барлық мүмкіншілігін айтуға уақытта және сөз де жетпейді. Бірақ қолданушы өзіне керек мәліметті алғысы келсе немесе үйренсе ол оған өз шешіміне қателеспейді. Сол сияқты графикамен файлдардың да көптеген сырларын қарастырайық.
Тізімдерді қолдану.
Турбо-Прологта тізім деп аталатын байланысқан объектілер қолданылады. Тізім дегеніміз- бірінен соң бірі келетін, реттелген объектілер жиынтығы. Тізім құрамы бір-бірімен байланыста болғандықтан олармен топ бойынша да(бүкіл тізім), жеке объект(тізім элементтері) түрінде де жұмыс істеуге болады.
Турбо-Прологта тізінің көмегімен бірнеше операцияларды орындауға болады. Олардың қатарына төмендегідей операциялар кіреді:
- Тізім объектілеріне еркін кіру;
- Тізімге жататындығын тексеру;
- Тізімді екіге бөлу;
- Тізім элементтерін өсу және кему реті бойынша сұрыптау.
Тізімдер деректер базасын, эксперттік жүйелерді, сөздіктерді т. б. жасағанда өте қажетті және маңызды болып табылады. Тізім бір домендік типтің объектілер жиынтығы болып табылады. тізімнің объектілері болып бүтін және нақты сандар, символдар, символдық жолдар және структуралар табылады. Элементтердің орналасу реті тізімнің ерекше белгісі болып табылады; тура сол элементтерді басқа тәсілмен орналастырсақ, онда ол басқа тізім болып саналады. Салыстыру барысында рет маңызды роль атқарады.
Тізім элементтері тік жақшаға ( [ ] ) алынып жазылады және элементтері бір бірінен үтір арқылы ажыратылады.
Тізім ретінде мыналар алынуы мүмкін:
[1, 2, 3, 6, 9, 3, 4]
[3. 2, 4. 6, 1. 1, 2. 64, 100. 2]
[“YESTERDAY”, “TODAY”, “TOMORROW”]
Тізімді басы және соңына бөлу тәсілінің пайдаланылуы.
Турбо Прологта тізімнен бірінші элементті бөліп алып, жеке өңдесе болады. Бұл тәсіл тізімнің ұзындығына қарамастан, тізім біткенше жұмыс істей береді. Тізімнің басына еркін өту әдісі-тізімді басына және соңына бөлу тәсілі деп аталады.
Тізімді басына және соңына бөлу операциясы вертикаль () түзудің көмегімен іске асады.
[HeadTail] .
Head мұнда тізімнің басын белгілеу үшін арналған айнымалы, Tail тізімнің соңын білдіреді. (Тізімнің басының және соңының аттары үшін Турбо-Прологта кез келген атты алуға болады. )
domains
number_list = integer
animal_list = symbol
predicates
print_list(number_list)
print_list(animal_list)
clauses
print_list([] ) .
print_list([HeadTail] ) :-
write(Head), nl,
print_list(Tail) .
Мысалы:
[1, 2, 3] немесе [1 [2, 3] ] немесе [1 [2 [3] ] ] немесе [1 [2 [3 [ ] ] ] ]
[1] немесе [1 [ ] ]
Вертикалды түзу сызықты тізімдің басы мен денесін бөлу үшін ғана емес, бірақ тізімдің басқы элементтерін бөлу үшін де қолданылады:
[1, 2, 3] немесе [1, 2 [3] ] немесе [1, 2, 3 [ ] ]
Бұл мысалда екі тізімнің қосылуы туралы қарастырамыз, ал екі тізімді қалай қосуға болатынын қарастырайық. Екі элементті екі тізім берілсін делік: [1, 2] және [3, 4] . Қосылуды бірінші тізімнің басынан бастап бастап бөлуден бастау, ол тізім бос болып қалғанша. Ал тізім бос болған кезде оны екінші тізіммен қосу оңай болады.
Нәтижесінде, шыныменде, екіншісіне ұқсас сондай тізім шығады. Мұнда тек қалғаны басын қосу керек және біріншісінен екіншісін бөлу керек. Бұны қадаммен көрсететін болсақ ол былай болады:
- - [1, 2] -> [1 [2] ] (басы- 1, денесі - [2] )
- - [ 2] -> [2 [ ] ] (басы - 2, денесі - [ ] )
- Екінші тізіммен бос тізімді қосу [ ] және бос емес екінші тізім [3, 4] - сол бос емес тізім шығады - [3, 4], енді тізім ді қосуды бастауға болады, денесі сияқты - [3, 4]
- тізімнің денесінен шыққан [3, 4] бірінші тізімнен шыққан денесі қосылады 2, келесі тізім бізге не береді - [2, 3, 4]
- енді бар қалғаны екінші тізімге қосу [2, 3, 4], денесі 1, бұл бірінші тізімнен бөлінген және екеуінің қосылғаны[1, 2, 3, 4]
Сол программаның тексті:
PREDICATES
append (intlist, intlist)
CLAUSES
%бос және бос емес тізімдердің қосылуы
append ([ ], List, List) :- !.
%бос емес екі тізімдің қосылуы
append ([H T], List, [H App_T] ) :- append (T, List, App_T) .
GOAL
append ([1, 2], [3, 4], App_List), write(“App_List=”, App_List) .
Программаның шешуі :
App_List=[1, 2, 3, 4]
Файлдарды өңдеу
Енгізу / шығару предикаттары терминалдағы (считывание) және жаз-баны іске асырады. Клавиатура стандартты кіріс ағынымен, ал экран стан-дартты шығыс ағынымен байланысады. Кіріс және шығыс ағындары Пролог - жүйемен жұмыс жасаған кезінде қажет ететін әр түрлі файлдарды қолдану-шымен байланыс жасай алады. Ол үшін файл стандартты кіріс ағыны ретінде қарастырылады және жоғарыда қарастырылған енгізуге арналған предикат-тар клавиатурадан емес, файлдан (считывание) шығарады. Қажетті жағдайда файл стандартты шығыс ағыны ретінде белгіленеді. Мұндай жағдайда шыға-руға арналған предикаттар жазбаны экранда емес, файлда іске асырады. Стандартты ағындарды анықтау үшін келесі предикаттар қолданылады:
See(F) - F файлды стандартты кіріс ағыны ретінде анықтайды.
seen(F) - бұл предикат F файлдан клавиатураға стандартты кіріс ағынын қай-та анықтайды. see(F2) предикаты көмегімен F2 файлдың стандартты кіріс ағыны ретінде анықтамас бұрын seen(F1) предикаты көмегімен F1 файлдың стандартты кіріс ағынымен байланысын өзгерту қажет (отменить) .
tell(F) - мақсатты тұжырым файлдың стандартты шығыс ағынымен анық-талады.
told(F) - мақсатты тұжырым F файлдан экранға стандартты шығыс ағынын қайта анықтайды, tell(F2) предикатының көмегімен жаңа файлдың F2 шығыс ағыны ретінде анықтамас бұрын, told(F1) предикатының көмегімен файлдан F1 ағымдағы шығыс ағынын өшіру қажет.
Прологта стандартты ағымдар қандай файлмен байланысты екенін анықтауға мүмкіндік беретін екі предикат бар.
Seeing(F) - F стандартты кіріс ағынымен байланысты файлдың атымен тұжы-рымдалады.
telling(F) - F стандартты шығыс ағынымен байланысты файлдың атымен тұ-жырымдалады.
Егер предикаттарды орындау кезінде файл F - тің жоқ екені немесе F айнымалысы нақтыланбағаны белгілі болса, қате шығарады. Стандартты кі-ріс және шығыс ағындарынан басқа файлмен байланыс жасау үшін басқа да ағындар қолданылады.
open(F, S, A) - бұл предикат S ағындағы F файлын ашады. Егер A - мәні read болса, онда файлды оқу үшін ашылады, A - мәні write қабылдаса, онда файл жазу үшін ашылады.
close(S) - бұл предикат S ағынын жабады. Қарастырылған мақсатты тұжы-рымдарды орындау кезінде айнымалылары нақтылану қажет. S - ағынның аты, F - файлдың аты, A - режим доступа.
Егер ағыны ашық болса, бірінші аргумент ретінде ағының атын көрсету отырып, енгізу - шығарудың барлық предикаттарын қолдануымыз қажет. Мысалы, тұжырымдарды кезектілігімен (последовательности) орындау нәтижесінде,
? - open(тестфайл, элемент, write),
write(элемент, тестпоток),
nl(элемент), close(элемент) .
тестфайл файлында ‘тестпоток’ жазбасы және жаңа қатардың себебі (признак) енгізіледі.
Файлдардағы мәліметтермен жұмыс істеу файлдық өндеу деп аталады. Файлдарға келесі негізгі операциялар қолданылады:
- файлдарды құру;
- файлға тұжырымды жазу;
- файлдан тұжырымды оқу;
- файлды модификациялау.
Турбо-Прологта файлдармен жұмыс істеу үшін келесі стандартты предикаттар пайдаланады.
Openread() - оқу үшін файлды ашу;
Openmodify() - оқу/жазу үшін файлды ашу;
Openwrite() - жазу үшін файлды ашу;
Openappend() - толықтыру үшін файлды ашу;
Closefile() - файлды жабу;
Readdevice() - енгізудің логикалық құрылғысын қайта мекендетудіжүзеге асыру;
Writedevice() - шығарудың логикалық құрылғысын қайта мекендетуді жүзеге асырады.
Турбо-Прологта графиктік режимде жұмыс істеу үшін төменде негізгі стандартты предикаттар қолданылады:
graphics(режим, палитра, фон) - графиктік режимді орнату;
dot(қатар, баған, түсі) - берілген координата бойынша нүктелердің түсін орнату немесе оқу;
line (қат1, бағ1, қат2, бағ2, түсі) - графиктік режимде сызық сызу және т. б.
Программаны Прологта редактілеу
Пролог жүйеде программамен жұмыс кезінде программаға өзгерістер енгізуге рұқсат ететін редактор бар. Егер мұндай мүмкіншіліктер болмаса, Пролог ортасынан шығу, программаны редактілеу және қайтадан Пролог - жүйге қайта келу қажет,
еdit(F)
F - файл аты
Файл редактіленгеннен кейін ол автоматты түрде Прологты актілеу күйде ұстау үшін Прологтың деректер базасына қайта енгізіледі.
Предикаттарды баспаға шығару
Прологта қандай тұжырымдар кіргенін тексеру үшін келесі предикаттарды қолдануға болады:
Listing
Бұл предикат стандартты шығару ағынындағы Прологтың деректер базасындағы барлық тұжырымдарды шығарады.
listing(C)
Егер С атом болса, онда стандартты шығару ағыныда C барлық процедуралар функтормен басылады (печатаються) . Егер C F арностілі функторы бар терм болса, онда F функторлы және A арностілі процедуралар ғана басылады.
Предикатты орындау нәтижесінде
Listing(фред/2)
Функторы ‘фред’, ал арності 2 - ге тең барлық тұжырымдар тізімі басылады.
Файлдармен байланыс
Осыған дейін біз қолданушының программамен байланысының бір әдісін қолдандық - қолданушы программаға сұрақ қояды, ал программа айнымалыларды нақтылап, жауап береді. Байланыстың мұндай механизмі өте қарапайым және ыңғайлы, өзінің қарапайымдылығына қарамастан ақпаратты енгізу мен шығаруды қамтамасыз етіп тұрады. Бірақ оның иілгіштігі төмен, сондықтан келесі жағдайларда бұл байланыс механизмін кеңейту керек:
- мәліметтерді сұрақ түрінде емес, басқа формада енгізу. Мысалға, ағылшын тілінде жазылған сөйлем түрінде
- ақпаратты кездейсоқ форматта енгізу
- ақпаратты тек қолданушы терминалымен ғана емес, сонымен қатар файлмен де айырбастау
Пролог-программа жұмыс істеп жатқан кезде екі файл «активті» болады: біреуі - енгізу үшін, екіншісі - шығару үшін. Бұл екі файлдар ағымды кіріс ағыны және ағымды шығыс ағыны деп аталады. Басында бұл екі ағын терминалға сәйкес болады. Ағымды кіріс ағыны see(ФайлАты) мақсатымен басқа файлға алмастырылуы мүмкін. See предикатына мысал:
. . .
see(файл1), (user-қолданушы)
файлдан_оқу(ақпарат),
see(user),
. . .
мұнда ақпарат файл1-ден оқылып, терминалға жіберіледі.
Ағымды шығыс ағыны келесі мақсатпен ауыстырылады:
tell(ФайлАты)
Мысал:
. . .
tell(файл3), (хабарлау(ФайлАты) )
файға_жазу(ақпарат),
tell(user),
. . .
мұнда кейбір ақпаратты файл3-ке шығарылып, одан кейін келесі шығыс терминалға жіберіледі.
Мақсат
seen (оқудың соңы)
ағымды шығыс файлын жабады.
Мақсат
told (жазудың соңы)
ағымды шығыс файлын жабады.
Файлдар тек тізбекті түрде өнделеді. Мұнда файлдар терминал секілді болады. Кіріс файлының оқылуы туралы сұраныс ағымды кіріс ағынын оқуға алып келеді. Егер оқу туралы сұраныс файдың соңында болса, онда жауап ретінде end_of_file (файл соңы) деген атом шығады. Бір рет оқылған ақпарат екінші рет оқылмайды.
Барлық файл «тексттік» болады, яғни олар символдардан тұрады.
Ақпараттың жазылу формасына қарай Прологта файлдардың қарастырылуы екі тәсілмен жүреді. Бірінші тәсіл - символды файлдың негізгі элементі ретінде қарастыру. Сәйкесінше енгізуге немесе шығаруға жасалған сұраныс бір символдың оқылуына немесе жазылуына әкеледі. Бұл мақсат үшін get, get0, put (алу, 0-ді алу, шығару) предикаттары пайдаланылады.
Екінші тәсіл - файлдың негізгі элементі ретінде тексттің үлкенірек бірлігі алынып отыр деп қарастыру. Мұндағы үлкенірек бірлік дегеніміз прологтік терм. Сондықтан енгізу-шығаруға жасалған сұраныс толық термнің ағымды кіріс ағынынан немесе ағымды шығыс ағынына ауысуына әкеледі. Бұл мақсат үшін read және write предикаттары қолданылады. Мұнда файлдағы ақпарат формасы бойынша термдер синтаксисіне сай болу керек.
Файлды ұйымдастырудың формасы тапсырмаға байланысты болады. Егер тапсырма ақпаратты термдер синтаксисіне сәйкес оқуға рұқсат етсе, онда термдерден тұратын файлдарды таңдаған жөн. Нәтижесінде, бір үндеу арқылы енгізу немесе шығаруға толық мағыналы фрагменті бар ақпаратты жіберуге болады. Ал, жүйе мен қолданушы арасында ағылшын тілінде диалогты орнату тапсырмасы болса, онда файлдары термдер синтаксисіне сай емес символдар қатары ретінде қарастырған жөн.
read және write
read орнатылған предикат ағымды кіріс ағынынан термдерді оқуға арналған. Мақсат
Read(Х)
келесі Т термін оқу және Х-пен салыстыру үшін керек. Егер Х - айнымалы болса, онда нәтижесінде Х нақтыланып, Т-ға тең болады. Егер беттесу орындалмаса, онда Read(Х) мақсаты да орындалмайды. Read предикаты - детерминирленген, яғни ол орындалмаған кезде келесі термді енгізуге қайтып келу болмайды. Файлдағы әрбір термнен кейін нүкте немесе пробел, немесе каретканы қайтару символы болу керек.
Егер Read(Х) файлдың соңы болған кезде анықталса, онда Х end_of_file (файл соңы) атомымен нақтыланады.
write орнатылған предикат термді шығарады. Сондықтан мақсат
Write(Х)
Х термін ағымды шығыс файлына шығарады. Прологтың ерекшелігі write
процедурасының термді (қиындығына қарамастан) қалай шығару керектігін «білуі».
Графикамен жұмыс жасау
Формат: back (Қадам)
Қадам: integer (0-ден 31999-ға дейін)
Пероны кері бағытта ығыстырады.
Түсініктеме: Пероны берілген қадамдар санына байланысты кері ығыстырады. Бағыт left немесе right предикаттарымен алдын ала анықталған болуы мүмкін, экран графиктік режимде болуы керек. Экран мөлшері - көлденең және тігінен бойынша 3200 қадам. Егер мүмкін емес орынға қозғалыс берілген болса, онда back предикаты орындалмайды. penup предикатымен активтенбейінше перо сызықты сызып отырады. Сызықтың түсі pencolor предикатымен орнатылады.
Мысал: back (500)
Перо 500 қадамға кері ығыстырылатын болады.
Формат: forward (Қадам)
Қадам: integer (0-ден 31999-ға дейін)
Пероны алға ығыстырады.
Түсініктеме: Пероны берілген қадамдар санына байланысты алға ығыстырады. Графиктік режим орнатылуы керек. Егер мүмкін емес берілген болса, онда forward предикаты орындалмайды. Перо активті болғанша, алға қарай қозғалыс кезінде сызылып отырады. Сызықтың түсі pencolor предикатымен орнатылады.
Формат: left (Бұрыш)
Бұрыш: integer
Пероны солға айналдырады.
Түсініктеме: Пероны сағат тіліне қарсы көрсетілген бұрышқа айналдырады. Экран графиктік режимде болуы керек.
Мысал: left (90)
Перо 90 градус солға қарай айналады.
Формат: line (Жол1, Баған1, Жол2, Баған2, түсі)
Жол1: integer
... жалғасы- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.

Ақпарат
Қосымша
Email: info@stud.kz