Файл қосу

Шекті автоматтардың эквиваленттілігі



|Қазақстан Республикасы білім және ғылым министрлігі                             |
|Семей қаласы ШӘКӘРІМ атындағы МЕМЛЕКЕТТІК УНИВЕРСИТЕТІ                          |
|3 деңгейдегі СМК құжаты        |ПОӘК                |ПОӘК                       |
|                               |                    |042.14.2.07.1.20.хх/01-2013|
|                               |                    |                           |
|                               |                    |                           |
|                               |                    |                           |
|ПОӘК                           |03.09.2013ж         |                           |
|Оқытушыға арналған             |№..... басылым      |                           |
|«Соңғы автоматтар және         |                    |                           |
|формальдік тілдер теориясы»    |                    |                           |
|пәні бойынша оқу жұмыс         |                    |                           |
|бағдарламасы                   |                    |                           |














             «Соңғы автоматтар және формальдік тілдер теориясы»
                        ПӘНІН ОҚЫТУ-ӘДІСТЕМЕЛІК КЕШЕН


                5В011100 - «Информатика» мамандығына арналған


                         ОҚУ-ӘДІСТЕМЕЛІК МАТЕРИАЛДАР












































                                    Семей
                                    2013.


                                   МАЗМҰНЫ

|      |Глоссарий                                                      |      |
|      |Дәрістер                                                       |      |
|      |Зертханалық сабақтар                                           |      |
|      |Студенттің оқытушымен бірге орындайтын өздік жұмысы            |      |
|      |Студенттердің өздік жұмыстарының құрылымы                      |      |





1. Глоссарий


Лексикалық анализ  (сканер)  –  бұл  компилятордың  бір  бөлігі.  Ол  шығару
тіліндегі  программалардың  литерлерін  оқиды  және  шығару  тілінде  сөздер
құрастырады. Лексикалық анализаторлардың енгізуіне  шығарылған  программаның
тексті кіреді, ал  шығарылған  информация  ары  қарай  синтактикалық  талдау
этапындағы  компилятормен  жұмыс  істеу  үшін  жүзеге  асырылады.  Теориялық
нүктеден қарасақ компилятор  қажет  емес  бөлік  болып  табылады.  Бірақ  та
барлық компиляторда оның бар екендігі анықталады.
      Синтактиаклық талдау – бұл анализ этапындағы компиляторың  ең  маңызды
бөлігі.  Ол  лексикалық   анализбен   қарастырылған   шығарылған   программа
мәтіндегі   синтактикалық   құрылымдарын   белгілейді.   Дәл   осы    фазада
синтаетикалық программаның  дұрыстылығы  тексеріледі.  Синтактикалық  талдау
басты роль ойнайды. Бұл программадағы енгізу тексті анықтайды.
      Семантикалық анализ – бұл шығу  программасының  дұрыстығын  тексеретін
компилятордың  бөлігі.  Тексеруден  басқа   семантикалық   анализ    мәтінді
өзгертуі тиіс.  Семантикалық анализдің бір  бөлігі  синтактикалық  талдауға,
бір бөлігі генерациялық код дайындық фазасына  кіруі  мүмкін.   Генерациялық
кодқа дайындық - бұл фаза компилятор арқылы жұмыстар  істелінеді,  ол  әрине
нәтижелік программа синтез мәтініне байланысты.
Жүйенің жеделдігі (Оперативность системы;  system  operativens)  -  берілген
мерзімде  немесе  пайдаланушының   жұмыс   қарқынында   мәліметтерді   өңдеу
мүмкіндігін бейнелейтін жүйе қасиеті.
Жүйенің осалдығы (Уязвисмость системы;  criticality  of  system)  –  жүйенің
қауіп төнген кезде қорғанысының бұзылуына  себепші  болатын  қасиеті.  Дұрыс
жобаланбауының немесе толық жөнделмеуінің, кездейсоқ немесе  әдейі  жасалған
әрекетінің салдары болуы мүмкін.
Жүйенің тиімді режимі (Продуктивный режим системы; system  production  mode)
– программаны жөңдеу мен тестілеу құралдары ажыратылған операциялық  жүйенің
жұмыс режимі.
Жүйетехника (Системотехника) – күрделі жүйелерді жобалау, жасау  сынау  және
жұмыс  істету  мәселелерімен  шұғылданатын  ғылыми-техникалық  бағыт.   Ж-да
радиоэлектроника, ақпарат-тану және  есептеу  техника  құралдары,  модельдеу
ілімдері кеңінен қолданылады. Ж жергілікті, аймақтық, ауқымдық,  мемлекеттік
және ғарыштық  жүйелермен  бірге  олардың  алуан  түрлері  мен  жұмыс  істеу
тәсілдерін, қоршаған ортаның әсерлерін және адамдардың қатынасуын қамтиды.
Жүктейтін модуль (Загрузочный модуль) –  байланыс  түзету  кезінде  біркелкі
(операциялық жүйеде қабылданған) пішімде  алынған  салыстырмалық  адрестерде
берілетін программалық модуль.
Жүктейтін модульдердің кітапханасы  (Библиотека  загрузочных  модулей;  load
module  library)  –   компьютерлердің   бірыңғай   жүйесінде   –   жүктейтін
модульдерді сақтауға арналған кітапхана.
Жүктейтін сектор (Загрузочный сектор) – бірінші сектордың нөлінші  бетіндегі
нөлінші сызықжолы. Жүктемелеуіш (жүйелік) дискінің бұл  жерінде  операциялық
жүйені жүктемелейтін программа орналасады.
Жүктелетін қаріп (Загружаемый шрифт; loadable  font)  –  баспа  құрылғысының
немесе дисплейдің таңба генераторының жадына программамен жүктелетін  бедер-
белгілер кескіні (әдетте, растр матрицалары түрінде).
Жүктеме жүктеу (Загрузка; load, loading) – 1)  жүктеме  –  жүйенің  жұмыспен
жүктелу сипаттамасы; 2) жүктеу – мәліметтерді сақтайтын  құрылғының  бірінен
екіншісіне ауыстыру; 3) жалпы қызмет  көрсету  жүйесі  жұмысының  көптігінің
сипаттамасы; 4)  мәліметтерді  мәліметтер  тасуыштан  негізгі  жадқа  немесе
тікелей процессор  амалдарында  пайдалану  үшін  негізгі  жадтан  регистрлік
жадқа жіберу.
Байланыс торабымен жүктеу (Загрузка по  линии  связи,  downline  loading)  –
пограммаларды немесе мәліметтерді  бас  компьютерден  бағынышты  компьютерге
немесе терминалдық жабдықтарға жіберу.
Басқаруды   жүктеу   (Загрузка   управления;control   loading)   –   басқару
мәліметтерін арнайы жадқа жазу.
Бастапқы жүктеу (Начальная загрузка;bootstrap,  initial  program  load  )  –
құрылғының берілген жағдайға өздігінен өтуіне мүмкіндік  беретін  процедура;
операциялық жүйенің бастапқы бөлігін жүктеу процедурасы.  Бұдан  кейін  жүйе
жұмысын өз басқарумен жалғастыра алады.
Блоктық  жүктеу  (Блочная  загрузка;  block  loading)  –  жадты  бөлу   және
мәліметтерді енгізу блоктап орындалатын жүктеудің бір түрі.
Динамикалық  жүктеу  (Динамичиская  загрузка;  dynamic  program  loading)  –
негізгі жадқа программа тұтасымен жазылмайтын програмаларды  жүктеу  тәсілі.
Жадқа жоқ модульдер қажет болған кезде біртіндеп жүктеледі.
Жүйені жүктеу (Загрузка системы;) – жүйе модульдерін сыртқы  жадтан  негізгі
жадқа жазу.
Мәліметтер  базасын  жүктеу   (Загрузка   базы   данных;database   load)   –
мәліметтерді мәліметтер базасына жазу.
Программаны  жүктеу  (Загрузка  программы;program  loading)  –   программаны
сыртқы жадтан негізгі жадқа жазу.
Сұраныс бойынша бетті жүктеу (Загрузка страницы по запросу;demand paging)  –
дискі беттерін  қажетіне  қарай  негізгі  жадқа  жіберуге  арналған  виртуал
операциялық жүйенің механизмі.
Жүктеме коэффиценті (Коэффицент нагрузки; load factor) – желідегі  ең  үлкен
жүктеменің  белгілі  бір  уақыт  аралығында  графиканың  орташа  жүктемесіне
қатынасы.
Жүктемеленетін  қаріптер  (Загружаемые  шрифты;  download  fonts)  –   құжат
басылар алдында немесе басу кезінде баспа құрылғысына жіберілетін  қаріптер.
Қаріп жүктемеленгенннен  кейін  ол  принтер  жадында  қажетті  уақыт  бойына
сақталады.
Жүктемелерді үлестіру  (Распределение  нагрузки;  load  sharing)  –  оңтайлы
жүктеудің белгісі бойынша есептеу желісінің  бөлімдерінің  арасында  олардың
әрқайсысына жалпы  жүктемелерді  үлестіру.  Диспетчерлік  әдіс  жүктемелерді
үлестірудің кең тараған әдістерінің бірі болып саналады.
Жүктемелік   модуль   (Загрузочный   модуль;   load   module)   -   берілген
операцияларды   жүйеде   бірыңғай   қабылданған   пішімдегі    байланыстарды
редакциялау кезінде объектілік модульден алынған  салыстырмалы  адрестердегі
программалық моодуль.
Жүктемелік сынау (Нагрузочные испытания;volume tests)  –  есептеуіш  жүйенің
қабілетін тексеру; нақты уақыт режимінде терминалдармен  орындалатын  алмасу
санының нақты күтілген максимумға жететіні немесе одан асатыны анықталады.
Жүктемені басқару (Управление нагрузкой; wordload) – операциялық жүйеледе  –
мәселенің  активтілігі  мен  жүйе  жүктемесінің  өзгеруін   ескере   отырып,
ресурстарды қайта үлестіруден  тұратын  ресурстарды  басқару  программасының
қызметі.
Жүктеу (Загрузка; load, loading) –  мәліметтерді  процессор  операцияларында
тікелей пайдалану мақсатымен оларды дискілерден негізгі жедел  жадқа  немесе
негізгі жадтан регистрлерге жіберу.
Жүктеу режимі (Режим нагрузки;  load  mode)  –  машиналық  сөзінің  ұзындығы
айнымалы компьютерлерде  –  мәліметтермен  бірге  кейбір  шектеуіштері  қоса
берілетін мәліметтерді жеткізу режимі.
Жүктеу  уақыты  (Время  загрузки;   load   time)   –   жүктеу   программасы;
байланыстарды  редакциялайтын  және  объектілік  программаны  негізгі  жадқа
жүктейтін  өңдеуіш  программа;  дискідегі  мәліметтерді  компьютердің  жедел
жадына жүктеу программасы.
Абсолютті жүктеуіш (Абсолютный  загрузчик;  absolute  loader)  –  объектілік
модульді негізгі жадқа белгіленген адрестермен орналастыратын жүктеуіш.
Байланыстырушы жүктеуіш (Компонующий загрузчик;  linking  loader)  –  сәйкес
сыртқы  сілтемелерді  есептеп,  объектілік  модульдерден  біртұтас  жүктеуіш
модульді  қалыптастыратын  жүктеуіш.  Мұнда  программаны  жадтың  кез-келген
айӨрнек жүктеуге мүмкіндік беріледі.
Баптаушы жүктеуіш (Настраивающий загрузчик; relocating loader) –  объектілік
немесе жүктеуіш модульінде  оны  белгілі  адреске  орналастыруда  адрестерді
өзгертуге арналған жүктеуіш.
Екілік   жүктеуіш   (Двоичный   загрузчик;;binary   loader)   –   абсолюттік
жүктеуішпен пара-пар.
Енгізуге  дейінгі  жүктеуіш  (Загрузчик  предвводa;  bootstrap   loader)   –
енгізуге дейінгі программаларын жүктеуге  қолданылатын  машиналық  амалдарды
қамтитын стандарттық программа.
Жүйелік жүктеуіш (Системный загрузчик;system  loader)  –  бастапқы  жүктеуіш
программасы ұғымымен пара-пар.
Жылжытқыш   жүктеуіш   (Перемещающий   загрузчик;relocatable    loader)    –
программаны жүктеумен қатар компьютер жадында оны  басқа  орынға  ауыстыруды
орындайтын жүктеуіш.
Операциялық  жүйені  жүктеуіш  (Загрузчик  операционный  системы;  operating
system loader) – системалық дискінің  –  секторында  орналасқан  операциялық
жүйені жүктеу програмасы.
Семантикалық  жүктеуіш  (Семантический  загрузчик;semantic  loader)  –  кіру
тілінің семантикасы сипаттамасын семантикалық кестеге түрлендіруге  арналған
гипотетикалық әмбебап компилятордың компоненты.
Синтактикалық  жүктеуіш  (Синтактический   загрузчик;syntactic   loader)   –
кірісте кіру тілі синтаксисінің сипаттамасын белгілі бір стандартты  пішімде
алып,  оны  синтаксистік   кестеге   түрлендіретін   гипотетикалық   әмбебап
компилятордың компоненті.
Жүргізу (Ведение; maintenance)  –  дұрыс  жұмыс  істеуді  сүйемелдеу.  Мыс.,
мәліметтер қорын Ж., классификаторлары Ж., тезаурусты Ж., файлды Ж.
Жылдамдық, енгізу  жылдамдығы  (Скорость,  скорость  ввода;  speed,speed  of
input) – уақыт бірлігінде саналған мәліметтер бірлігінің саны.
Жылжу (Смещение; displacement.offset) – базалық адреске  салыстырмалы  түрде
компьютердің  жадынжағы  мәліметтің  орнын  нұсқайтын  және  нақты   адресті
есептеуге пайдаланатын сан.
Жылжымалы желі (Сеть мобильная) –  сөзбе-сөз  айтса  қозғала  білетін  желі.
Әдетте, ол ашық ортада жеткізу техникасын қолдана отырып бір-бірімен  немесе
орталық компьютермен әрекеттесе алатын жылжымалы станциялардан тұрады.
Жылжымалы нүктелі бөлудің ерекше жағдайы (Особый случай деления с  плавабщей
точкой) – жылжымалы нүктелі арифметикадағы нөлге бөлу.
Жылжымалы  нүктелі  регистр  (Регистр  с  плавающей  точкой;  floating-point
register) – программаларға қолайлы және жылжымалы нүктелермен  арифметикалық
операциялар  орындау  кезінде  жылжымалы  нүктесі  бар   сандарды   сақтауға
пайдаланатын регистр. Компьютерлердің бірыңғай жүйесінде  мұндай  регистрлер
төртеу.
Жылжымалы нүктесі бар санның сипаттамсы (Характеристика  числа  с  плавающей
точкой; biased exponent ) – m мантиссасындағы нүктенің орнына тәуелді  м  Ер
түрінде ұсынылған жылжымалы нүктесі бар р санының реті.
Жылжымалы үтірмен операция (Операция  с  плавающей  запятой;  floating-point
operation) – таңбасы бар және таңбалы реттік  мәнге  ие  тұрақты  ондық  сан
пішімінде  ұсынылған  мәліметтермен  арифметикалық  әрекеттерді   орындайтын
операция. Мыс., 2147483 саны мына  түрде  болады.  2,147  483+Е6.  Жылжымалы
үтірмен есептеу жүргізу электрондық кестеде және автоматтандырылған  жобалау
процедураларында пайдаланады. Бұл термин сондай-ақ компьютердің  өнімділігін
бағалауда қолданылады.  Әдетте,  компьютерлер  секундына  жылжымалы  үтірмен
орындалатын миллиондаған операциялар санымен бағаланады.
Жылжыту (Подкачка; paging, swapping) –  виртуалдық  жадтың  беттерін  немесе
сегменттерін   ауыстыру;   осы   сәтте   жедел   жадқа   қажетті   ақпаратты
орналастыруды жасақтайтын жедел жад  пен  сыртқы  жад  арасындағы  мәселелер
тіркесін ауыстыру.
Жылжыту  режимі  (Режим  подкачки;  spooling)  –   тапсырманың   орындауымен
паралелль жүзеге асырылатын және осы орындалудың үзіліссіздігі  жасақталатын
мәліметтерді енгізу-шығару режимі.
Жылжыту файлы (Файл подкачки; paging  file)  –  басқа  программаларға  жадқа
орын босату үшін қолданылатын, файл арнайы  дискіде  арнайы  бөлінген  аймақ
(жадтан шығарылған виртуаль  беттің  ішіндегісі  сақталатын  жүйелік  файл).
Жылжыту файлы уақытша немесе тұрақты болуы мүмкін.
Жылжытып әкеліп (тышқанның көмегімен)  босату  (Перетащить  и  отпустить  (с
помощью мыши); drag-and-drop) – бір терезенің ішіндегі  мәліметтер  бөлігін,
сондай-ақ терезелер  арасындағы  мәліметтер  сөйлемін  өзара  орын  ауыстыру
немесе олардың көшірмесін алу тәсілі.
Жыпылықтау (Мигание;  blinking)  –  бір  немесе  бірнеше  элемент  кескіннің
жарықтылығын немесе түсін көзбен көру үшін мезгіл-мезгіл өзгертіп отыру.
Жіктеу   (Классификация;   classification)   –    объектілерді    (заттарды,
құбылыстарды,  процестерді,  мәліметтерді)  нақты  бір  белгілеріне  сәйкес,
топтама бойынша үлестіру жүйесі.
Жіктеу белгісі (Признак классификаций; classification flag )  –  оның  басқа
объектілермен   ұқсастығын   немесе   олардан   айырмашылыған   тағайындауға
мүмкіндік беретін объектіні жіктеу қасиеті немесе сипаттамасы.
Зақымдалған файл (Инфицированный файл; infected file) –  компьютерлік  вирус
жұқтырған файл.
Зарядтық байланыстағы құрал (Прибор с зарядовой  связью;  capture  board)  –
кескін кадрларын сақтау үшін цифрлық бейнеқораптарда пайдаланады.
Идентификатор (Identificator) – операциялық жүйе  немесе  программалау  тілі
элементтеріне атау ретінде қойылатын  лексикалық  бірлік.  Ол  берілген  бір
мәліметке не олардың тобына қойылады, ал өзі латын  әріптер  мен  цифрлардан
тұратын,  бірақ  міндетті  түрде  әріптен  басталатын  символдар  тізбегінен
құралады. Кейбір тілдерде  #, &, - ,  тәрізді  өзге  символдар  және  ұлттық
әріптер пайдалана береді.
Идеограмма (Ideogram) – қандай да бір тілдің дыбысы емес, әріптен  айырмасын
көрсететін  жазба  таңба.   Программалау   тілінде   идеограмма   цифр   да,
математикалық таңбасы да және т.б болуы мүмкін.
Иемдену  (Захват;  trap)  –  басқаруды  беру  жүргізілген  ұяшықтың  адресін
сақтап,   автоматты   түрде    орындалатын    жадтың    берілген    ұяшығына
программаланбаған шартты өту.
Сызықжолды иемдену (Захват дорожки; track hold)  –  басталған  енгізу-шығару
амалдарының жұмысы аяқталғанша бір жолға қайта өткізбейтін құрылғы.
Жазбаларды иемдену (Захват записей;  record  locking)  –  файлдың  программа
пайдаланып отырған бөлігі ғана жабылатын файлды  иемденудің  бір  түрі.  Бұл
жағдайда  бірнеше  программаларға  бір  уақытта  бір  файлдың   қиылыспайтын
бөліктермен жұмыс істей алады.
Байланыс  арнасын  иемдену  (Захват  канала   связей;   bid)   –   келешекте
мәліметтерді жіберу  мақсатымен  компьютердің  немесе  терминалдың  байланыс
торабын иемдену әрекеті.
Файлды иемдену (Захват файла; file loacking) – көп есепті  жүйелерде  немесе
жергілікті желілерде – файлдық жүйенің  беріктегін  арттыру  құралы.  Мұндай
құрал бір уақытта бірнеше есепке бір файлды қолдануға мүмкіндік бермейді.
INS (SERT) (Клавиша )  -  әдетте,  кірістіру  режімін  қосатын  немесе  алып
тастайтын кіші цифрлық пернетақтадағы перне. Бұл режімде  басылған  перненің
символы меңзердің орнында пайда болады, ал оң жақта  тұрған  символдар  оңға
ығысады.  Алайда   қосымша   Ins   пернесінің   басқа   қызметті   орындауын
программалауы мүмкін.
Иерархия (Hierarchy)  –  1)  жұмысы  жағынан  жоғары  тұрушы  байланыстардың
қандай да бір жиынтығы; 2) орталықтандырылған жүйелердегі басқару  принципі;
3)  құрауыштары  бағыныштылығына  қарай   сараланған,   олардың   арасындағы
байланыс  белгілі  бір  ережелерге  сәйкес  жүзеге   асырылуы   мақсатындағы
сипаттамалы құрылым.
Иерархиялық декомпозиция (Иерархическая декомпозиция;  decompose  hierarchy)
– жүйе «жоғарыдан төменнің стилінде бірнеше рет  анықтау  арқылы  құрауыштар
иерархиясына жіктелетін жүйенің модульдік декомпозиция типі.»
Иерархиялық мәліметтер базасы (Иерархическая  база  данных;  hierarhiechical
datebase) –  мәліметтердің  иерархиялық  моделіне  сәйкес  жүзеге  асырылған
мәліметтер базасы.
Иерархиялық модельдеу (Иерархическое моделирование;  design  hierarchy  )  –
компьютер өнімділігін бағалау кезінде қолданылатын және компьютерлік  жүйені
ішкі  жүйелердің  өнімділік   сипаттамасының   сараптамасында   және   жалпы
өнімділікті  бағалау  үшін  осы  сараптаманың  нәтижелерін  қолдануда   ішкі
жүйенің иерархиясы ретінде көрсетуге негізделген әдіс.
Иерархиялық нейрондық желі (Иерархическая  нейронная  сеть;  hierarhiechical
neural network ) - өңдеу кезіндегі қабаттар  арасын  жалғастыру  кезең-кезең
бойынша  пайдаланатын  мультиқабатталған  желі;  иерархиялық   желіде   кері
байланысы  бар  немесе  жоқ  жалғастыру  қолданылуы  мүмкін;  әрбір  кезеңде
оқытудың әр түрлі алгоритмінің комбинациясы пайдалануы мүмкін.
Иерархиялық  (Тармақталатын,  Тармақты,   Рангілі   құрылым   (Иерархическая
ветвящаяся, древовидная, ранговая) структура; hierarhiechical structure )  -
әлементтері  өзара  иерархиялық  принцип  бойынша  байланысқан,   яғни   бір
деңгейдің элеметтері өзінен жоғары басқа деңгейдің  элементтеріне  бағынатын
құрылым.
Изаритмдік  артықтық  (Изаритмическая  избыточность;  voted  redundancy)   –
бұзылған  құрылғы  автоматты  түрде  табылып,  әрі  алыстатылатын,  ал  оның
қызметі ұқсас резервтік құрылғыға берілетін резервтеу түрі.
Изаритмдік желі (Изаритмическая сеть; isarithmic network) –  желіні  басқару
орталығының  қатысуынсыз  берілетін  дестелердің  мөлшері   тұрақты   қолдау
табатын есептеу желісі.
Иллюстрациялық  графикалық  кірме  мәліметтер  (Иллюстративная   графическая
вставка; clip art) – авторлық шығармаларды  безендіру  кезінде  пайдаланатын
дайын көркем  бейнелер  (фотографиялар,  диаграммалар,  карталар,  суреттер,
схемалар және т.б) қолданбалы программаларға қосымша ретінде немесе  олардан
бөлек те сатып алына береді. Соңғы кезде таралып жүрген графикалық  редактор
құрамында CD-ROM-да жазылған көптеген кірістемелер болады.
Имейдж (бейне, сурет) (Image) – мәліметтер шығару  құрылғыларында  (дисплей,
принтер т.б) графикалық бейнелерді кескіндеу формалары.
Иммерсия (Immersion) –  кәдімгі  нақтылықтан  виртуальдық  нақтылыққа  (және
электрондық   делдалдықтың   күңгірттік   дәрежесін   сипаттайтын),   өтпелі
процестерге  кіруші  ретінде  виртуальдық  универсумға  қатысушының   бастан
өткеретін сезімі.
Импликция  (Implication)  –  егер  бірінші  операнд  «жалған»  ал   екіншісі
«ақиқат» мәнге ие болса, онда нәтиже «жалған» мәнге ие  болатын  екі  орынды
буль операциясы.
Имплекацияны терістеу (Отрицание  импликации;Implication) –  тек  А  ақиқат,
ал В жалған болғанда ғана ақиқат мәнді қабылдайтын А және В екі  айнымалының
логикалық функциясы.
Импорт  (Import)  –  1)  жүйеге  басқа  жүйеден   алынған   мәліметтер;   2)
электрондық поштада –  хабарлар  жеткізудің  белгілі  бір  жүйесінің  ішінде
хабар  жеткізудің  кейбір   делдалына   сыртықы   қарым-қатынастық   желіден
ақпараттық объекті жеткізу сатысы.
Инварианттық  модуль  (Инвариантный  модуль;invariant  module)  –   орындалу
процесінде өзгермейтін жүктемелік модуль.  Осындай  модул  бір  мезгілде  әр
түрлі бірнеше тапсырмада үзілімдер орнына пайдалануы мүмкін.
Инварианттылық (мәліметтердің) (Инвариантность (данных))  –  қандай  да  бір
берілген  шаманың  немесе   жүйенің   кейбір   сыртқы   жағдайларға   немесе
түрлендірулерге  қатысты   өзгермей   сақталуы,   яғни   олардың   физикалық
шарттардан тәуелсізділігі.
Инвертор (Invertor) – шығыс сигналы  кіріс  сигналына  қарама-қарсы  болатын
қызметтік элемент.
Индекс (жоғарғы немесе төменгі) (Индекс (верхний  или  нижний);index)  –  1)
сілтеме  көрсеткіш  (сапалық,  пәндік  немесе  алфавиттік)  –   қарастырылып
отырған саланың негізгі мәліметтерінің орналасуын көрсететін түйінді  сөздер
жиыны; 2) объектінің жазылған орнын көрсететін индекс;  құрылымдары  күрделі
түрде құрастырылған мәліметтерді іздеп  тауып,  оларды  тікелей  пайдалануды
қамтамасыз ететін скалярлы  шама,  яғни  –  объектінің  орналасу  реттілігін
анықтайтын көрсеткіш;  жиым  атауымен  байланысқан  оның  элементінің  нақты
нөмірін көрсететін символ немесе  өрнек;  ол  мәліметтер  базасы  кестесінде
оның элементтерімен жылдам қатынас құруды орындайтын,  мәлімет  жазбаларымен
түйінді  сөз  бойынша  қатынас  құруды  атқаратын  құрылым  болып  саналады.
Программалау тілдері объектісінің өрнекетерінде  мәтіндерді  өңдеуде  дәреже
көрсеткіші (жоғарғы индекс) немесе реттік нөмірі (төменгі индекс).
Индексте  іздеу  (Поиск  в  индексе;  index  search)  –   индекс   элементін
іздестіру. Мәлімет іздестірудегі әдістер пайдаланады.
Индекстелген файл (Индексированный файл; indexed file) –  файл  жазбаларында
тез  қатынас  құруды  жасақтайтын  индекстер  жүйесімен  жабдықталған  файл.
Индекс индекстік файл түрінде қалыптастырылады.
Индекстер  аймағы  (Область  индексов;  index  area)  –  индекстік-тізбектік
файлда цилиндірлердің бас индексі орналасатын аймақ.
Индекстерді  жалғастыру  (Соединение   индесков;   connection   indexes)   –
жалғастырылған индекстер өзінің негізгі мәнін сақтап қалатын күрделі  немесе
құрамды индекстерді даярлау процесі.
Индекстердің тізімі (Спосок индексов; index  list)  –  индексті  айнымалының
жазбасындағы индекстердің немесе индекстік өрнектердің тізбегі.
Индекстеу   (Индексирование;   indexing,   subscripting)   –   1)   индексті
қалыптастыру;   индекстерді   тағайындайтын   процесс;   2)   құжаттар   мен
сұратулардың мазмұнын ақпараттық – іздестіру  тілі  терминдерініде  сипаттау
процесі; құжаттарға оның Өрнеклық мазмұнын қамтитын түйінді  сөздер  жинағын
тағайындау;  ақпараттың  жеке  элементтерін  іздеп  табуды  жеңілдету   үшін
мәліметтердің алдын-ала белгіленген логикалық  тізбек  бойынша  орналастыру;
3) жиым және  өрнектер  нұсқауларының  көмегімен  жиын  элементіне  қатынасу
мүмкіндігін  жасақтайтын  әдіс.  Нұсқаулар  осы  элементтің  жиындағы  орнын
анықтайды;  4)  индекстік  регистрдегі  бар  нәрсені   команданың   адрестік
бөлігімен қосу арқылы ақиқат адресті автоматты түрде анықтау.
Индекстеу режимі (Режим  индексаций;  index  mode)  –  индекстік  адрестеуді
пайдаланып, машиналық командаы орындау.
Индекстеумен қатар төте адрестеу (Адресация  прямая  с  индексированием;)  –
операндтың орындалатын адресі  жылыжыту  мөлшері  мен  индекстік  регистрдің
мәндерінің  қосындысына  тең  болатын  адрестеу.  Бұл  адрестеуді   берілген
кестенің керек элементтерін табу үшін пайдаланған қолайлы.  Мұндай  жағдайда
жылжыту мөлшері кестенің басын, ал индекстік регистрдің мәні оның  элементін
көрсетеді.
Индексті регистр (Индекстный  регистр;  index  register)  –  ішіндегі  барын
индекстік адрестелетін командалар пайдаланатын орталық процессодың регистрі
Индекстік сөз (Индексное слово;  index  word)  –  1)  орындалатын  команданы
өзгертуге пайдаланылатын сөзө  немесе  оның  бөлігі  -  өзгерткіш;  2)  жиым
элементі ұқсастыруға пайдаланылатын айнымалы.
Индектсік  ұйымдастыру  (Индексная  организация;  indexed  organization)   –
мәліметтерді ұйымдастыру тәсілі;  мәліметтерді  компьютер  жадында  орналасу
индекстер жүйеснің көмегімен анықталады.
Индекстік файл (Индекстный файл; index  file)  –  мәліметтер  базасының  бір
немесе бірнеше өрістерінің мәндері бойынша реттелген нұсқағыштардың  тізімі,
ол  тізім  мәліметтер  базхасының  жазбасында  болады.  Нұсқағыштар  ретінде
логикалық және физикалық адрестер пайдаланылады.
Индексті-тізбекті файл (Индексно-последовательный  файл;  indexed-sequential
file) – жазбалары кілтпен  жабдықталған  файл.  Оған  тікелей  қатынас  құру
кілтпен іздестіруді пайдалану арқылы қамтамасыз етіледі,  содай-ақ  тізбекті
қатынас  құру  олардың   реттелгендігіне   сәйкес   кілт   мәндері   бойынша
жасақталады.
Индикатор  (Indicator)  –  1)  құрылғының  қалып-күйінің  немесе   есептеуіш
жүйенің  жұмыс  процесі  кезіндегі  мәліметтердің  өзгерісін   немесе   жеке
программаның орындалуын қамтып көрсететін мәліметтер элементі; 2)  ақпаратты
көзбен көруге қайта жаңғыртатын құрылғы;  3)  програмалаауда-мәні  процестің
нәтижелеріне  немесе  белгілі  шарттардың  орындалуына   тәуелді   телінетін
айнымалы.
Индикация (Indiciation) – жүйенің қалып  күйін  онымен  байланысты  бейнелеу
құрылғысы – индикатор көмегімен белгілеу процесі.
Индуктивтік-сыйымдылықтық  тор  (Индуктивно-емкостная   сетка;   inductance-
capacitor grid) – индуктивтілікпен сыйымдылық жүйесінің көмегімен  физикалық
өрістер  модельденетін  электрлік  модельдеуші  тор.  Ол  потенциалдық  және
кинетикалық  энергияны  әлсіздендіруге,   сондай-ақ   жинақтауға   қабілетті
элементтермен сипатталады.
Инкапсуляция   (Буып-түю,   дестелеу,   дестені   дайындау)    (Инкапсуляция
(упаковка, пакетирование,  оформление  пакета);  encapsulation)  –  1)  желі
арқылы жеткізілетін мәліметтер дестесіне оның жеткізілуін қамтамасыз  ететін
қосымша басқару ақпаратынн  енгізу;  2)  әртекті  желілер  арқылы  ақпаратты
жеткізуде транзиттік жеткізу  желісі  бойынша  өтетін  дестеге  оған  сәйкес
желілік бас тақырыптардың  қосымша  енгізілуі.  Мәлімет  дестесі  транзиттік
желіден шықаннан кейін қосымша бас тақырыптар  алынып  тасталады;  объектіні
(мыс.,  программа  модульі,  мәліметтер  типі)  оны  пайдаланатын  модульден
жасырын  сипаттау.  Жүйенің   міндетін   (немесе   мәліметтер   жинағы   мен
операцияларды) модульдің ішінде  орналасқан  мәліметтерден  бөліп  алу  және
модульдің  өзі  нақты  сипаттамасынан   тұратын   программалық   жасақтаманы
құрастыру әдісі.
Инкремент (Increment) – 1) мәліметтерді  инкременттік  ұсынуда  пайдаланатын
аддитивті тұрақты; 2) инкременттік адрестеу кезінде  адрес  автоматты  түрде
ұлғаятын шама (қадам).
Инкрементор  (Incrementоr)  –   берілген   шаманың   тұрақты   жетілдірілуін
жасақтайтын құрылғы. Компьютерде  инкрементор  ретінде  командалар  санауышы
және машиналық таймер пайдаланады.
Инкрементті вектор (Инкрементный вектор; incremental  vector)  -  әрбір  сан
(екіншісінен бастап) алдыңғы санға өсімшені қосу арқылы  анықталатын  сандар
векторы.
Инскрибирлеу (Инскрибирование; inscribing) –  құжатты  адам  да,  машина  да
қабылдайтын нұсқауда кодтау.
Инсталляция  (Орнату)(инсталляция   )(установка);   installation)-компьтерге
жаңа  құрылғыларды  немесе  программаларды  орнату   процесі.Аппаратураларды
орнату деп  оған  кабель  жалғап  компьютерге  қосу  мен  компьютер  жүйелік
блогына  сол  аппаратураға  сәйкес  кеңейту  тақшаларын   орналастыру   ісін
айтады.Ал программаларды орнату оның файылдарының көшірмесін  қатты  дискіге
жазудан тұрады.Бұған қоса, сол аппаратураны  немесе  программаны  нақты  бір
компьютерлік жүйеге бейімдеу үшін оны  бұрынғы  жұмыс  ортасымен   үйлестіру
қызметін атқару қажет.
Инсталляцияланған   мәселе   (Инсталлированная    задача;installed    task)-
жүктемелік модульдің  параметрлері  мен  олардың  орналасуы  туралы  ақпарат
операциялық жүйе кестесіне  енгізілген  мәселе;  инсталляцияланған  мәселені
шақыру каталогтардан іздестіруді қажет етпейді.
Инсталляциялық файл (Инсталляционный файл;installation  file)-инсталляциялық
программасы бар файл.
Интегралдық микросхема  құрауыштары  (Компоненты  интегральной  микросхемы)-
сынау қабылдау және жұмыс  істеуіне  қойылатын  талаптар  тұрғысынан  дербес
бұйым деуге  болатын  кез-келген  электррадиоэлементтің  міндетін  атқаратын
интегралдық схеманың бөлігі.
Интегралдық  схема  (Интегральная  схема;  integrated   circuit)   -   өзара
байланысты элементтерден (диод, транзистор, резистор және т.б) тұратын  және
жартылай өткізгіштігі кристалдың ішіне немесе  бетіне  технологиялық  топтау
тәсілдерімен біріктіріліп орнатылған электрондық микросхема; түрлендіру  мен
сигналдар  өңдеудің  белгілі   бір   функцияларын   орындайды,   қабылдауға,
тұтынушыға жеткізу, сынауға, жұмысқа қосуға  қойылатын  талаптар  тұрғысынан
қарағанда бір бүтін зат болып саналатын және электірлі қосылған  элементтері
мен кристалдарын  жалғастыруда  жоғары  тығыздығы  болатын  микроэлектрондық
бұйым. И.с-лар ақпаратты  сақтау  немесе  өңдеуге  байланысты  операцияларды
орындайды, олардың төменгі, орта деңгейде біріктірілген  түрлері  болды,  ал
қазіргі кезде  өте  жоғары  деңгейде  кішірейтіле  тығыздалып  біріктірілген
тығыз И.с (БИС) және өте тығыз И.с (СБИС) қолданылады.
Интегратор  (Integrator)  –  аналогтық  есептеу  машинасының  интеграл   алу
операциясын жүзеге асыратын аналогтық қызметтік бөлшегі.
Intel  фирмасының  80х86  процессорлар  тобы  (Семейство  80х86  процессоров
фирмы; Intel   Intel  80х86) – Intel фирмасының  (Cyrix,  Texas  Instruments
тәрізді фирмалардың да жасаған процессорлар тобы, олар 8088 – мәліметтері 8-
бит шиналы, ал адресі 20-бит  шиналы)  (адрес  кеңістігі  1  МГбайт),  жұмыс
жиілігі  4,77  МГц-IBM  PC/XT  компьютерлерінде   пайдаланылады;   8086-8088
процессоры  тәрізді  тек  мәліметтері  16-бит  шиналы-  PS/2   компьютерінде
қойылды, жұмыс жиілігі -8-10  МГц;  80286  (286)-мәліметтері  16-бит  шиналы
(адрес кеңістігі 16 Мбайт) IBM PC/AT компьютерлерінде пайдаланады, оның  екі
режимі болды, біріншісі-нақты режим,  онда  8086  процессоры  тәрізді  жұмыс
істеді, ал екіншісі-қорғалған режим  онда  кеңейтілген  жұмыс  мүмкіндіктері
болды; 80386DX (386 DX) –мәліметтері 32-бит  шиналы,  ал  адресі  де  32-бит
шиналы, PS/2 компьютерлерінің  жоғарғы  модельдерінде  пайдаланылады,  жұмыс
жиілігі-20-40 МГц; 80386SX (386 SX) -386  DX  процессорларының  қысқартылған
түрі, мәліметтері 16-бит шиналы, ал адресі 24-бит шиналы, ішкі құрылымы  386
DX тәрізді ұйымдастырылады; 80486 DX (486 DX) – бұл процессор бір  кристалда
біріктірілген 386 DX  және  оның  387  математикалық  сопроцессоры  болатын,
жұмыс жиілігі-20-50МГц. Осы процессор негізінде 486 SX – бір  процессорлары,
486 SX – энергияны  аз  пайдаланатын  түрі  және  т.б  жасалады;  Pentium  –
мәліметтер і64-бит шиналы, ал адресі 32-бит шиналы процессордың  жаңа  түрі,
жұмыс жиілігі -60-200 МГц, (қ Pentium Pro);
Insert (Ins) пернесі (Клавиша Ins (Ins); Insert  (Ins)  key) –  пернелерінде
мәтін теру кезінде символдарды кірістіру  (ығыстырып  енгізу)  режімін  іске
қосатын немесе алып тастайтын  басқару  пернесі.  Бұо  режим  іске  қосылса,
терілген символ меңзер позициясына енгізіліп, оң жақтағы таңбалар әрі  қарай
ығыстырылады. Insert пернесін қайта басу кірістіру  режимін  алып,  терілген
символдар бұрынғы символдардың орнын алмастыратын  режим  орнатылады.  Кейде
қолданбалы  программа  Insert  пернесін  басқа  мақсат  үшін  де  пайдалануы
мүмкін.
Интеллектілік    ақпарат    (Интеллектуальная    информация;     intelligent
information)  –  жасанды   интеллект   жүйелерінде   –   семантикалық   және
прагматикалық қасиеттері бар ақпарат. Белгілі бір Өрнекға  ие  және  белгілі
бір мақсатты әрекетке арналған. Білім базаларында сақталады.
Интеллектілік  ақпараттық  жүйе  (Интеллектуальная  информационная  система;
intellectual information system) – интеллектілік  интерфейспен  жабдықталған
автоматтандырылған ақпараттық жүйе.  Интерфейс  пайдаланушының  мәліметтерге
табиғи немесе кәсіптік-бағдарланған тілде қатынас құруына мүмкіндік береді.
Интеллектілік   графикалық    контроллер    (Интеллектуальный    графический
контроллер; intelligent graphic controller)  –  мамандандырылған  графикалық
процессор негізінде жасалған контроллер.
Интеллектілік интерфейс (Интеллектуальный интерфейс; intelligent  interface)
–  пайдаланушының  компьютермен  табиғи  тілде  әрекеттесетін   құралдарының
жиынтығы. Оған сұхбаттық процессор, білім базаларында сақталатын  ақпараттар
негізінде программадағы мәселені шешу сипаттамсын түрлендіретін  жоспарлаушы
және  интерфейстің  барлық  құраушыларымен  басқаруды  іскеасыратын  монитор
жатады.
      Интеллектілік мәліметтер базасы (интеллектиуальная база данных;
intelligent database) – 1) сұранысқа жауап ретінде тікелей сақталатын
мәліметтер, сондай-ақ, логикалық қорытумен алынатын мәліметтер
пайдаланылатын мәліметтер базасы; 2) мәліметтеріне қатынас құру табиғи
тілде немесе табиғи тілге жуық сұраныстар тілінде жүзеге асырылатын
мәліметтербазасы



2. ДӘРІСТЕР

                      Дәріс №1.  ТІЛДЕР ЖӘНЕ ГРАММАТИКА
Жоспары:
1. Алфавиттер
2. Тізбектер
3. Тілдер.

     1. Алфавиттер, тізбектер және тілдер.

      Тілдер теориясын оқуды бастамастан бұрын  тіл   деген  терминді  қалай
ұғатынымызды анықтап  алуымыз  керек.  Тілдің  энциклопедиялық   “сөйлесудің
маңызды құралы, әрі адамзат қоғамында өзара ой  алмасып  түсінушілік”  деген
анықтамасы математикада тіл теориясына жеткілікті анықтама  емес.  Сондықтан
біз тілді абстрактілі түрде  математикалық жүйе  ретінде  қарастырамыз.  Бұл
бізге формальді тілдерге қатаң анықтау беретін мүмкіндік, ол алдағы  уақытта
модельденеді. Осы оймен біз төмендегідей анықтама береміз.

       АНЫҚТАМА 1.1. Алфавит  және  сөздік  шекті  символдар  жиыны.  Символ
дегеніміз не - анықталмайды, қалай анықталмайды, мысалы геометриядағы  нүкте
сияқты.
      Алфавитке бірнеше  мысалдар:  латын  тілінде  {A,B,…Z};  грек  тілінде
{α٫β‚…ώ}; бинарлық {0,1}.
      АНЫҚТАМА 1.2. Сөйлем (жол, сөз)  алфавит  символдарынан   тұратын  кез
келген шекті ұзындық  бауы.  Бірде   бір  символдан  тұрмайтын  сөйлем,  бос
сөйлем деп аталады. Ол грек  әрпі  мен  анықталады.  Егер  V  -  кез  келген
алфавит, онда  V* - барлық   сөйлемдердің  жиынымен  анықталады,  V  алфавит
символдарынан  құралған, бос сөйлемді де қосып алады.
      V+  -  пен  анықтаймыз.  Жиын  V/{E};  Мысалы,   егер   V{0,1},   онда
V*={E,0,1,00,01,10,11,000,…}, a  V*={0,1,00,01,10,11,..}.
      Егер х   V*, онда х  баудың ұзындығын,  х-ті,  оны  құратын  символдар
санын білдіреді. Бос баудың ұзындығы , 0-ге тең.
      АНЫҚТАМА 1.3. Тіл  кейбір  алфавиттердегі  кез  келген  сөйлем  жиыны.
Формальды түрде , егер V- алфавит, L-тіл, онда L  V*.
      Әрине 3 сұрақ туады:
      1) Тілді қалай ұсынамыз, тілді құрайтын  ұсынысты қалай анықтаймыз?
      2) Шекті ұсыныс әр тілде бар ма?
      3) Шекті ұсынысы бар әрбір тіл класының  құрамы қандай?
      Егер тіл шекті болса, 1-сұраққа жауап беру оңай. Барлық ұсынысты санап
олардың тізімін  жасау керек. Екінші сұрақтың жауабы керісінше.
        Анықтау:  Тілді  құрудың  әдісінің  бірі  берілген  тілде   берілген
сөйлемдердің бар жоқтығын анықтайтын  алгоритм беруге негізделген.
      Ортақ әдісі -  тілдегі сөйлемге  “иә” деген жауаппен жұмысты аяқтайтын
процедура беру, немесе  аяқталмайды,  тілдегі   емес  сөйлемге  “жоқ”  деген
жауаппен аяқталады. Сондай  алгоритммен  процедура  тілді  анықтайды  дейді.
Алгоритм емес процедураның көмегімен  анықтайтын тілдер бар.
      Пайда болу. Тілді ұсынудың  басқа  тәсілі  -   жүйелік   түрде  тілдің
сөйлемін белгілі бір тәртіппен  тудыратын процедура беру.
      Егер алгоритм мен процедура  берілсе,   онда   ол   V  –  алфавиттінде
тілді анықтайды. Сонда алгоритм және процедура механизмі  пайда  болады.  V*
көпшілігінің  жүйелік генерациялануын  тілдің  және  механизмнің   көмегімен
тексеруге болады. Бірақ егер қолданылған   процедура   алгоритмдегі  қауіпті
сезсе, онда бұл өзгеріс бірінші  сөйлемдегі  процедура   орындалады.  Осыған
орай  процедураны   табу  үшін   оның  қатесін  тексеру  керек.  Оны  келесі
мүмкіндіктерден  табуға  болады.  V-  алфавитінде  символдар   болсын.   V*-
сөйлеміндегі жиынды жүйедегі  Р- санымен   қосу  бос  сөйлемдегі   Е  арқылы
қарастыруға болады. Енінің ұлғаюымен  V* сөйлемін   тәртіппен   нөмірлейміз.
Мысалы: егер  {a,b,c}, онда  V* сөйлемі төмендегідей нөмірленеді.
      1.е                              5.aa                         9.bb
      2.a                              6.ab                         10.bc
      3.b                              7.ac                         11.ca
      4.c                              8.ba                         12. …
      Сонымен   сөйлемдер жиынындағы V-алфавиті саналынды.




   Бақылау сұрақтары:
                    1. Алфавиттер, тізбектер және тілдер?
                Дәріс №2  ПРОГРАММАЛАУ ТІЛДЕРІНІҢ ДАМУ ТАРИХЫ

Жоспар:
1. Программалау тілдерінің даму тарихы. Тілдерді өрнектеу.
2.  Синтаксис,  семантика   және   программалау   тілдерінің   грамматикасы.
   Формализациялау проблемалары.

   1. Программалау тілдерінің даму тарихы. Тілдерді өрнектеу.
    Дүниеде ғылымның әр түрлі саласына сай көптеген мыңдаған  тілдер  ойлап
шығарылған.
    Тілдердің даму кезеңдері:
    Бірінші кезең – 50 жылдардың соңына қарай  программалау  құрылымы,  дәл
кодтау  тәсілі  арқылы  ұзын  командалар  тізбегі  екілік,   сегіздік   және
оналтылық сандар  қолданылды.  Бұл  қызметтің  программалаудан  айырмашылығы
кодтау деп аталады да, оның алдына – алгоритмді құрастыру міндеті қойылды.
     Екінші кезең – оларға Ассемблер тілдері  жатады,  олармен  жұмыс  істеу
машиналық тілге қарағанда  жеңілірек  болады.  Оларда  нақтылы  командаларға
арнайы сақтау әдістері қолданылды.
    Үлкен көлемді жадылы, жылдам есептеуіш машиналардың пайда болуы, кодтау
қиындықтарын соншама өсірді, олармен адамдардың жұмыс  істеуі  тиімсіз  бола
бастады.
    Бір машинадан екінші  машинаға  программаны  қайта  кодтау  қажеттілігі
кезінде алгоритмдердің көбінесе  аударуға  келмейтіні  бақыланды,  сондықтан
нақтылы машиналарға аппараттық есеп жүргізуге қажеттілік туды.
    Машина  тілінде  жазылған  программаларда  қажет   емес   ақпараттардың
есебінен құрылатын  қателіктер  түзілетін  болған.  Нәтижеде  программаларды
түрлі техникалық жөндеуге келмейтін, түрлі  қателіктермен  толтырады,  соның
салдарынан оларды ашу мүмкін болмады. Болашақ студент оның себебін  іздеумен
апталап отыратын болған, ал программа іс жүзінде дұрыс жазылған  не  себепті
жұмыс істемейді.
      Бұл қиындықтан шығудың жолы «жоғарғы деңгейлі» программалау тілдерінің
жасалуына себепші болды.
      Үшінші кезең – бұл тілдердің ең ауқымды кезеңі. Ол 1955  жылы  Фортран
(FORmula  TRANslator  –  формулалар  аудармашысы)  тілінің  пайда   болуынан
басталады. Бұл тілдің пайдаланылуы осы күнге дейін жалғасып келеді.
      1960 жылы Алгол (ALGOritmic Language – алгоритмдік тіл  )  тілі  пайда
болды.  Ол  да  ұзақ  уақыт  бойы  программалаушылар   шеңберінде   +белгілі
танымдылықпен пайдаланылды.
      1965 жылы және қазір де көпке  таныымал  –  БЕЙСИК  программалау  тілі
жасалынды (BASIC  –  Beginner’s  Allpurpose  Symbolic  Instructions  Code  –
тікелей  аудармасы  «үйренушілерге  арналған  көпмақсатты  символдық  коды»)
Қазіргі  кезде  тағы  бір  қуатты  тіл  –  С   программалау   тілі   кеңінен
қолданылады.
      Тілдерлің төртінші  кезеңі  –  бұл  программалық  жабдықтарды  басқару
тілдері және оларды « программа  генераторы»  деп  те  атайды.  Мысалы  үшін
Клипер, Супер Калк тілдерін жатқызуға болады.
      Барлық тілдерге ресми болып табылатын « бесінші кезең» тіліне  қарама-
қарсы процедуралық болып табылады. Бұл кезеңнің  негізгі  тілдеріне:  ЛИСИП,
ПРОЛОГ тілдері жатады.
    Мысалы. Программалау тілдерінің дамуына зор ықпал еткен келесі тілдерге
тоқталайық:
    1. Фортран, ғылыми-техникалық тілдер бейнесі, 1955 жылы IBM  фирмасының
       көмегімен жасалынды;
    2. Алгол, есептеуіш бейнелеу тілі, 1960  жылы  Халықаралық  оқымыстылар
       комитетімен құрылды;
    3. Бейсик, алғашқы бастаушыларға  арналған  қарапайым  тіл,  1965  жылы
       Дортмундте құрылды;
    4. Паскаль, ғылыми және тәжірибиелік бейнелеу сапасы ретінде, 1969 жылы
       Цюрихте Н. Вирттің көмегімен құрылды;
    5. Си, қолдау сапасының  тілі  ретінде  және  OC  UNIX   бағдарламасына
       қатысты BELL (АҚШ, 1972 ж.) лабороториясында құрылды;
    6. Пролог, логикалы  програмалау  тілі,  1971-1973  жылдары  Колмероэда
       құрылды;
    7. Питон (Пайтон), 1990  жылдардың  басында  Гвидо  ван  Россу  негізін
       қалады және пайдаланушыларға  кең,  ауқымды  қолданылатын  қарапайым
       объектілі-бағдарланған тіл болып саналады;
    8. Java – интернеттің өрмегіне жіне WWW серверіне бағдарланған тіл;
    9. HTML, 1989 жылы WWW-құжаттарын қарастырған Тим Бернерс енгізді.


    ЭЕМ   оның   машиналық   тілінде,   машиналық    кодтарында    жазылған
программаларды орындай алады. Басқа тілдерден машиналық тілге  аудару  үшін,
транслятор деп аталатын арнайы  программа  құрылады.  Алгоритм  (програмалау
тіліндегі программа) ЭЕМ жадысына  көшірілетін  және  онда  аппаратты  түрде
орындалатын  командалардың  және  берілгендердің  орындалуына  ауысады.  Осы
тілде  орындалатын  программа  құруда  атқарылатын  дәрежесі   болса,   онда
соғұрлұм,  программаны  аудару  жұмысы   да   көбірек   болады.   Транслятор
программаны  оны  жадыға  көшіру  кезінде  және   оның   орындалуы   кезінде
програманы берілген тілден машиналық тілге аударады.
       Трансляцияның  екі  негізгі  басты  әдісі   бар:   компиляция   және
интерпретация.
    Интерпретация әдісі – жасанды тілдегі программаның әрбір  әрекеті  жеке
алдын-ала аударылмастан, бірден машиналық тілде орындала бастайды.
    Компиляция  әдісі  –  алдымен  жасанды  тілдегі  программаны   түгелдей
машиналық тілге аударады, содан  кейін  бұл  программа  басынан  орындалады,
яғни, компиляция  әдісінде  жасанды  тілдегі  программа  тек  бір  ғана  рет
қарастырылады және аударылған программаны бірнеше рет орындауға болады.  Ал,
интерпретация  әдісінде  әр  орындау  алдында  жасанды  тілдегі  программаны
қарастыру керек. Сондықтан, компиляциялау әдісі  бойынша  шыққан  орындалуға
дейін программа жылдам жұмыс атқарады. Бірақ  программаны  орналастыру  үшін
жадының көп  орнын  алады.  Керісінше,  интерпретациялау  әдісі  жадының  аз
көлемін қажет етедіде, бірақ ақырын жұмыс атқарады.
    Мысал. Бейсик тілі әртүрлі  үлгідегі  трансляторға  ие.  Мысалы,  Turbo
Basic (TBasic) ортасында – транслятор-интерпретатор, ал QuickBasic  (QBasic)
ортасында – транслятор-компилятор. TBasic ортасында программа  цикл  бойынша
интерпретацияланады: «команданы енгізу  –  команданы  ішкі  машиналық  тілге
көшіру  –  берілгендерді  енгізу  берілген  команда  үшін  орындау»   Qbasic
ортасында  программа:  «программаның  барлық   командаларының   ішкі   тілге
көшірілуі – программада қателерді  түзету  –  программа  үшін  берілгендерді
енгізу – барлық командалардың орындалуы».


2.  Синтаксис,  семантика   және   программалау   тілдерінің   грамматикасы.
   Формализациялау проблемалары.
      Синтаксистік талдау – бұл оның, ол  берілген  мағынасына  кейбір  ерте
берілген синтаксистік   ережемен  сәйкес   келе  ме?  Мысалы,   синтаксистік
талдау  мағынасы компиляторды  жүзеге асырады.  Егер рограмма   синтаксистік
 тілге  сәйкес келмесе,  компилятор  қатені көрсетеді.
       Берілген   бөлімде   мысал   ретінде   талдау   және    арифметикалық
есептеу  мағынасын  аламыз.   Қарапайым   мысалдан   күрделі   мысалға   өте
отырып,  бір  толыққанды  калькулятор   құраймыз.   Берілген   арифметикалық
өрнекті  операцияны  санай  алатын   және  м  ауыспалы   функцияны   қолдана
отырып,  жақша  арқылы  жүзеге асырып  өзгерте  алатын.
       Синтаксистік   талдау  –  бұл  процесс,   онда    лексем    таблицасы
орнатылады.  Ол  құрылымды  шартты   қамтамассыз   етеді.   Формуляцияланған
және  синтаксистік  тілде  анықалғаны  анық.
      Синтаксистік   тілдің   негізгі   тапсырмасы  –  программа   құрылымын
талдау.  Ереже  сияқты  құрылым   ішінде   ағаш   түсіндіріледі,   контексті
еркін  грамматикалық  тілге  сәйкес  келетін.   Қазіргі   уақытта   көбінесе
LL(1)-талдау  және   LR(1)-талдау    және    оның    варианты    қлданылады.
Рекурсивті    жіберу    көбінесе    синтаксистік     анализаторды     қолмен
программалағанда    қолданылады,   LR(1)-автоматты     жүйе     синтаксистік
анализаторда  қолдана  отырып  орындайды.
       Синтаксистік   талдаудың   нәтижесі   синтаксистік    ағаш    таблица
объектісіне  жіберу  болып  табылады.  Синтаксистік   талдаудың   процесінде
қателар  табылады,  программа  құрылымымен  байланысты.
      Контекстік   тілдің   этаптары   программа   бөліктеріне   тәуелділігі
анықталады, контексті  еркін  синтаксистік  жазылған.
      Бұл  негізхгі  байланыс   «суреттеу  -  қолдану»,   объектіге   анализ
типі,  облысты  талдау  түрлері,  параиетрлер  сәйкестігі,   белгілер   және
тағы  басқа. Контексті  талдау  объект   таблицасы   нәтижесінде   объектіні
суреттеу  ақпаратты  толықтырады.
       Ассемблер   таблицасының   құрылымы   жоғарғы    жылдамдығые    іздеу
қамтамассыз  ету  арқылы  таңдалады.   Команда   таблицасы   және   директив
әрқашанда  мәлімет  қоры  болып  табылады.  Олар   бір   рет  толтырылады  –
Ассемблерді  өңдегенде,  одан  кейін  өзгертілмеген  болып  қалады.
      Бұл  таблицалар   тура   хеширлеу   функциясын   құрады,   мнемониканы
таблицадағы  адрес  жазуы  жүзеге  асырады.
       Тырысы   мағынасын   және   фуекцияны   хеширлеуді     таңдауға   ие.
Таблицада   коллизиялардың   болмауы.   Толтырылған   таблицалар  бір    рет
жүзеге  асырылады,  ал  өту  қайта-қайта   шығару   арқылы,   бұл   шығындар
өтеледі.
       Символ   таблицасы   динамикалы   қалыптасады.   1-өткелдегі    жұмыс
нәтижесі.  Сол  таблицадағы  іздеу 1-деңгей  өткелде  жүзеге  асады.
      Бұл  таблицаның  құрылымы  тура  өту  таблицасы  сияқты  дұрыс   емес.
Сондай-ақ  коллизиялардың  дұрыс  еместігі.  Сондықтан  символ   таблицадағы
 іздеу  дихотомиялық  болуы  мүмкін,  бұл  үшін  иаблица   реттелген   болуы
керек.
      Жаңа  аттар   таблицаға   қосылады   «бір-бірлеп»,   және   әрбіруінің
қосылғаннан   кейін   таблицфның   реттелуі   қалпына   келтірілуі    керек,
алгоритмді  сорттау  қолдану,  щығушы  реттелген  мәліметтер.
       Бұл   түсінік   басқа   таблицаға   қатысы   бар,  жұмвс    барысында
Ассемблерде  үлкен  мүлшердегі  таблица  және  сыртқы   жадыға   орналастыру
және  күрделі  мтодтар   оның   организацясын   қолданылады.   Мысалы,   -В+
ағаш.
                            Семантикалық талдау.
       Сөйлесу  тілі  төрт  негізгі  элемменттерден  тұрады:   Символдардан,
сөздерден, сөз тізбектерінен және сөйлемдерден.
      Тілдің алфавитін құрайтын символдар саны көп емес.  Сөздер  саны  көп,
бірақ бәрі шекті: тілдің  барлық  сөздерін  атауға  болады,  мысалы,  оларды
сөздіктен қарау  арқылы.Барлық  сөз  тізбекттерін  сөйлемдерді  атау  мүмкін
емес, бірақ олардың құрылу ережелері белгілі. Орыс тілінің ережесі,  мысалы,
сәйкес кітапптарда жазылған.
      Программалау тілдері төмендегі элемменттерден тұрады:
   1. Символдар – бұл берілген тілдер программаның барлық  мәтінін  құрайтын
      негізгі бөлінбейтін белгілер. Барлық символдар жиыны тілдің  алфавитін
      құрайды. Табиғи тілге қарағанда программалау тілдің алфавиті  кеңірек.
      Ол  латын  әріптерін,  арифметикалық  амалдар  белгілерін,   ажыратқыш
      символдарды және басқа да арнайы символдарды қосады.
   2. Лексемдер - Өзіндік мағынасы бар  алфавитің  символдардың  көрінбейтін
      тізбектері. Олар тілдің   негізгі  символдары  арнқылы  құралады.  Бір
      символдан  тұратын  лексемдер  бар  болуы  м  үмкін,  мысалы,  амалдар
      белгілері. Кез-келген программалау тілдерінің кілттік сөздерінің нақты
      жинағы бар. Олар тілдің сөздігін  құрайды.Программист  нақты  ережелер
      бойынша жеке меншік сөздер  –  идентификаторлар  құрай  алады.  Табиғи
      тілде   жазылғане    алгоритім    жазбасына    қарағанда    күрделірек
      түсіндіріледі.  Лексемдер  және  олардың   құрылу   ережелері   тілдің
      лексикасын құрайды.
   3. Өрнектер тілдің ережесіне сәйкес лексемдерден  құралады.  Олар  кейбір
      мәндердің есептеу тәртібін  береді.  Өрнектер  қарапайым  тілдегі  сөз
      тізбектеріндегі сияқты программалау тілдерінде де сол рөлді атқарады.
   4. Операторлар тілдің кейбір іс-әрекеттердің толық  сипаттамасын  береді.
      Күрделі әрекеттерді сипаттау үшін операторлар тобы керек. Бұл жағдайда
      операторлар құрамдас операторлар немесе блокқа біріктіріледі.
   Оператор берген әрекеттің деректері арқылы  орындалады.  Деректер  туралы
мәліметтер  берілген  тілдің  сөйлемдері   сипаттау   немесе   орындалмайтын
операторлар  деп  аталады.  Сипаттау  немесе  операторлар  жиыны   программа
түзеді.
      Программалау  тілдерінің  элементтерінің  жазылу  ережелерінің  жүйесі
оның синтаксисін құрайды.
       Тілдің  құру  мағынасы  -  бұл   оның   семантикасы.   Басқа   сөзбен
айтқанда,тілдің синтаксисі жеке құрастырушылардың сыртқы түрін  анықтайды,ал
семантика  осы  құрастырушылар  арқылы  компьютер   орындайтын   әрекеттерді
талқылайды.Жоғарғы   деңгейлі   қазіргі   тілдер    симантикалары    бойынша
ұқсас,бірақ синтаксисте кейбір ерекшеліктері  бар.  Осыдан  шығатын  маңызды
қортынды:программалауды  алғаш  меңгерушілер  тілдің   семантикасына   көңіл
аударуы қажет.Сапалы  программаларды  жазу  тілдің  синтаксисіне  байланысты
емес.   Семантиканы   соңына   дейін   түсіну   күрделірек   .Тілдің   әрбір
құрастырушысын  жеке алгоритімдер жазуда міндеттері бойынша  пайдалану  одан
сайын күрделірек.
      Бұл жерде бұрынғы  сыналған  амалды  компьютерде   жұмыс,  көптеген  м
ысалдарды өңдеу,есептерді шығаруды ұсынуға болады.
      Табиғи тілден айырмашылығы әр программалау  тілінің  қатаң  сипатталуы
болады.Мұндай сипаттау не үшін керек? Бұл жерде компьютермен байланысу  үшін
арналған  тіл  туралы  айтылып  тұр.  Яғни,  аздаған  екі  ойлар   қателікке
соқтырады.
      Тілді сипаттау дегеніміз – оның негізгі  элементтерін  сипаттау.Тілдің
әр   элементін   сипаттау   оның   синтаксисімен   және   симантикасы    мен
беріледі.Синтаксистік  анықтамалар  тілдің  элементтерін   құру   ережелерін
тағайындайды.  Семантика  синтаксистік  анықтамалар  берілген  элементтердің
қолдану ережелерін және мағынасын анықтайды.
      Программалау тілін сипаттау үшін табиғи тілді  қолдануға  болады.Бірақ
мұндай сипаттаудың  қалыпты  сөз  тілінде  сипатталған  алгоритімдер  сияқты
кемшіліктері болады. Алгоритімдей сипаттаудан айырмашылығы,  тілді  сипаттау
адамның  меңгеруіне шақталған. Сондықтан  программалау  туралы  әдебиеттерде
мұндай сипаттау жиі қолданылады.
      Бірақ транцляторды ойлап табушылар тілдің  қалыпты  сипатталуын  қажет
етеді.Сонымен ол сипатталу ешқандай бір мәнді талқылау жібермеуі қажет  және
мамандар үшін жинақы әрі ыңғайлы болу  қажет.Олардыдың  тілекттеріне  сәйкес
алғашқы тілдердің бірін сипаттау үшін арнайы  қалыпты  сипаттау  типі  ойлап
табылды.
       Қазіргі  кезде  тілдерді  сипаттаудың  бірнеше  түрлері  бар.  Оларды
программалау тілдеріне ажырату үшін оларды тілдердің белгілері деп атайды.
      Бірдей мақсаттар үшін  және  өзара  толық  байланысқан  әр  түрлі  екі
тілдің белгілеріне сипаттама берейік:
   1. Бэкус-Наур (БНФ)  қалыпты.  Осы  белгілі  Algol  тілін  сипаттау  үшін
      қолданылған, содан кейін әр түрлі  программалау  тілдерінің  авторлары
      арқылы оларды қалыпты сипаттау үшін қолданылды. Қазіргі  уақытты  РБНФ
      деп аталатын кеңейтілген нұсқасы пайдаланылады.
   2. Вирттің синтаксистік диаграммалары. Тілдің негізгі  құрастырушыларының
      графиктік бейнеленуі.
   Бэкус-Наур қалыпты бірнеше арнайы қызметті символдарды –  метасимволдарды
пайдаланып, тілдің барлық элементтерін  өте  қатаң  және  жинақы  сипаттауға
мүмкіндік  береді.  Сонымен  қатар   тілдің   әр   түсінігі   ең   қарапайым
түсініктерден шығады.
   Барлық басқа түсініктер – терминалдар еместер –  терминалдар  бірте-бірте
арнайы металингвистік формулалар көмегімен шығады.  Ол  формулаларда  теңдік
белгісінің орнына ::= қолданылады. Әр терминал емес бұрышты  жақшаға  алады.
Мета символың мәні “немесе” (или) болады.
   Кеңейтілген БНФ  тағы да бірнеше пайдалы метасимволдармен  толықтырылған.
[pic]  жазбасы А символын бірнеше рет(  ноль  болуы  да  мүмкін  )  қайталау
дегенді білдіреді. [pic]  жазбасы А символын ноль немесе  бір  рет  қайталау
дегенді көрсетеді. РНБФ формулалары БНФ – ға қараған да  қарапайым.  Өйткені
мұнда  түсініктер  бұрышы  жақшаға  алынбайды.  Ал   ::=   белгісі   кәдімгі
теңдікке алмастырылған. Терминалдық символдар тырнақшаға алынады.
   Вирттің синтаксистік диаграммалары – бұл түзу сызықтар мен  біріктірілген
блоктарды пайдаланып, тілді графикалық  түрде  сипаттау.  Мұнда  терминалдар
дөңгелектер  көмегі  мен,  ал  терминал  ,еместер  тікбұрыштар  көмегі   мен
белгіленеді.  Бэкус  –   Наурдың   әр   құрастырушысы   үшін   эквиваленттік
синтаксисін диаграмма құруға  болады

Бақылау сұрақтары:
1. Программалау тілдерінің даму тарихы?
2.  Тілдерді өрнектеу жолдары қандай?
3.  Синтаксис,   семантика   және   программалау   тілдерінің   грамматикасы
   түсініктеріне тоқталыңыз?
4. Формализациялау проблемалары қандай?
                       Дәріс №3  ФОРМАЛЬДІ  ГРАММАТИКА

Жоспар:
1. Формальді грамматиканың негізгі түсінігі және классификациясы.
2. Грамматикаларды классификациялау: регулярлық,  контексті-бос,  контексті-
   тәуелді,  жалпы   көріністегі,   атрибутты,   программалық.    Хомскийдің
   формальдық тілдер иерархиясы.

1. Формальді грамматиканың негізгі түсінігі және классификациясы.
      Формальді грамматика - программалау тіліндегі  синтаксисті  жазу  үшін
математикалық    аппараттар  көптеп   қолданылады.   Тілдің   құрылымы   мен
жазылуына  байланысты,  бірінші  жағынан,  автоматты  құрылғылардың   көптеп
қолдануы,  екінші   жағынан,   программалардың   синтаксистік   анализіндегі
грамматикаларды алдын алу.
      Формальді грамматика шекті көптік ережелер арқылы және  екінші  сөздік
арқылы табылады. Олар генерациялардың процесіндегі тілдің тізбегін жазады.
      Бірінші сөздік терминалды сөздік деп  аталады  және  ол  тілдің  басты
символдарынан   тұрады,   олар   формальді   грамматикалардың   теориясында-
терминальді  символдар  немесе  терминальдар  деп  аталады.   Терминальдарды
латынның  a,  b,  c,…t  әріптерімен  белгілейміз,   терминальді   сөздік   ∑
символымен , терминальді символдар тізбегін  латынның  U,  V,  W,  X,  Y,  Z
,белгілейді.
       Екінші  сөздік  грамматика-  терминальді  емес   деп   аталады   және
символдардың көмегімен қолданылады. Оны жазғанда латынның   бас  әріптерімен
А, В, С,.......Т белгіленеді. Терминальді емес сөздікте N әріпімен  аталады.
N сөздікте терминальді емес ерекшеленеді, оны бастапқы  символ  грамматикасы
деп  атайды  және  соңынан  S  орындалады.  Бастапқы   символ   грамматикада
қиылысады  көп  жағдайда  конструкция  тілінде  жазылады.  Терминальді  және
терминальді  емес  сөздік  грамматикалық  сөздік  мына  формулада  толығымен
орындалады V=∑UN.
    Ілім қатарын аксиомаландырған, олардың логикасын, ішкі  құрылымын  оқып
үйрену – математиканың  метатіл  ғылымының  дамуында   математикалық  логика
маңызды роль атқарды.
    Информатиканың, әсіресе оның мынандай  бөлімдерінің:  формальды  тілдер
теориясы, грамматикасы, құрылымы,  алгоритмдік  тілдері  және  трансляциялау
әдісінің мәліметтер қоры және білім деңгейі және  тағы  басқаларының  дамуы,
ғылым салаларының дамуына, тереңдетілуіне,  орындалуына  және  құрылымдауына
әкеледі.  Өз  кезегінде,  тілдің  құрылымдарын  модельдеу,  формализациялау,
байланысу тілдер қатарының құрылымдау, әр түрдегі мәтіндер мен  сөздіктердің
анализі жәе орналасуы, сонымен бірге, олардың автоматты түрде орналасуы.
    Алфавит көмегімен анықталған тіл, Х={[pic]} – бұл қандай да бір ауызша,
дыбысты, жазбаша немесе х-ке  тәуелді  сөздердің  берілу  түрі,  синтаксисті
қосқанда,  сөздерден  және  сөз   тіркесінен   алынатын   құрылым   тәртібі,
семантиканы – дұрыстығын тексеретін ереже, мәнді біртектікті және  лексемнен
тұратын  тілдің  қалыбының  синтаксистік  орналасуы.  Ауызша  байланыс  үшін
фонетика – сөйлем мүшелерін дұрыс айту ережесі, яғни, фонем.
    Тіл хабар алмасу  құралы  ретінде  берілген  алфавитке  сай,  сөздердің
құрылымын  анықтау  сипаты  болу  керек.  Сөздерден  құралған   сөйлемдердің
грамматикалық тәртібі және  синтаксистікәрі  семантикалық  ережелер  бойынша
аталатын осы сөйлемдердің сол құбылыстарға және процестерге сай келуі.
    Мысал. «бүтін х саны у бүтін санына қалдықсыз бөлінеді»  деген  фактіні
қысқа әрі нақты (дәл) жазайық. Математикалық тілде ол мына түрде беріледі:
    «х саны у санынан кіші». х,у – бүтін, жоғарыда айтылғандай,  яғни  олар
факт, аксиома қабылдайтындай, ол математикалық кіші мән.
    Енді одан да қысқа әрі дәл түрде алгоритмдік Паскаль тілінде жазайық:
    “x mod y=0”.
    Мұнда кіші шарты аргументтің өзгеру облысы  туралы  айтпауға  болады  –
олар  Паскаль  тілінде  ресми  жарияланған  (mod  операциясын  айтуда   және
типтердің атағанда) пайдаланылады.
    Табиғи тілдер болады, (мысалы, байланысу тілдері) және  жасанды  тілдер
немесе формалды тілдер, адамдардың компьюермен байланысы үшін жасалынған  не
болмаса, білім алу үшін және оны атап көрсеті үшін.
    Х – қандай да бір алфавит болсын, x={[pic]}, ал S(x)  –  х  алфавитінде
сөздердің көптігі, онда S(x) – шексіз және сандық көпмүше.
    L(x) формалды тілі - S(x) –тің қайталама көпмүшесі.
    Формалды  тіл  табиғи  тілді  оған   кіретін   абстрактілі   объектінің
лексикалық  қалыбы  ретінде,  метатіл  немесе  басқа  тілдердің  синтаксисін
белгілеу  үшін  пайдаланылады.  Метатілмен  жазылған   тіл,   бұл   жағдайда
объектілі тіл деп аталады.
    G формалды грамматикасы: T={[pic]} – тілдің  терминалдық  символдарының
көпшілігі немесе тілдің негізгі мағынасы тізбектерінен тұрады;
    N={[pic]} – бұл терминдік  емес  символдардың  көптігі  немесе  көмекші
ұғымдардың, нақты бір сөздің класын белгілеу,  мысалы,  етістіктерді  немесе
жалғауларды, және де N-де N-нің алғашқы символы n  болады;
    P={[pic]} – бұл s[pic](x) ( S(X) түрінің s[pic](x) (  S(X)-ке  ауыстыру
системасы  немесе  s[pic](x)  қарастырылып  отырған   s[pic](x)   қатынасына
ауыстырылуы.
       S(x)-тің барлық сөздерін  тудыруға  мүмкіндік  беретін  тіл  (көбіне
сөзі) G(S) – тәртіп құрылымы грамматикасымен беріледі.
    Грамматикалық анализ – терминдік емес немесе сөзге бәсеңдеу процесі.
    Көпшілік W=N (T – G грамматикасының сөздігі. Шығару тәртібі – бұл f,g(W
болғанда f(g болатын тәртіп, ал  “(” – бұл түрдің байланысы «сол жақты  оңға
ауыстыруға болады».
    Егер,  [pic]  болғанда,  [pic]  сөзі  [pic]  сөзінен  [pic]  ережесінің
көмегімен шығады.
  Мысал. Табиғи, мысалы,  формалды  грамматика  терминіндегі  орыс  тілінің
элементтерін жазайық. X={А,а,Б,б, ... , Я, я,  .,  ,,  :,   ;,   ,   .,   !,
?,  “,  ”,  (,  )}, T={<түбірлер>,  <рпиставкалар>  және  т.б.},  N={сөйлем,
бастауыш, баяндауыш, етістік, пысықтауыш және т.б.},  n  = “сөйлем”.
     Операциялардың және  операндтардың  метатілде  оң  сандармен  жазылған
берілуі – тұрақты берілу деп аталады.
    Формалды грамматикада үш негізгі проблемалар қарастырылады:
      Енгізу проблемасы – берілген грамматикаға сай алгоритм  құру  және  ол
сол тілге сай келетінін мүмкіндік береді;
      Анализдің проблемасы – әрбір сөз үшін грамматикаға сай  алгоритм  құру
және оның мәнін шығару;
      Бағалау проблемасы – алгоритм мәнінің дұрыстығын тексеру шарты.
      Егер бірінші екі тапсырмалар көбіне грамматикалық сипатта болса, онда
үшінші тапсырма, көбіне «алгоритмдік» сипатта болады.
    Компьютердің  пайда  болуына   байланысты,   алгоритмнің   нақты   және
құрылымына талаптар қойылады. Бұл мақсатты қанағаттандыру  үшін  алгоритмдік
тілдер  өндірілуде.  Өзіне  математикалық   символиканы,   мысалы,   сандар,
операциялы белгілері, айнымалы шамалар, берілулер және  т.б.  қосатындықтан,
бұл формальды тіл, формальданған тіл болып саналады.
      5. Грамматикаларды классификациялау: регулярлық, контексті
      Грамматикада анықталған 3,2 разрядында (((-ға шығу ережесінде екеуінің
біреуі ( тізбегінде  терминальды  емес  болуы  керек.  Праграммалау  тілінің
сипаттамасы және  оларды  оқып  білу  көбінесе  грамматика  тілінде  қызықты
болады және шығару ережесі  дәлелдеуді талап етеді
          Формальды грамматиканың анықталу облысында [3, 6,  9,  34,  35,48]
Хамаскидің классификациясы қабылдайды, грамматиканы ереже түріне  байланысты
4 класқа бөледі:грамматиканың түрі және грамматиканың жалпы түрі  G=(N,  (P,
S) бұл грамматика У шығу ережесінің түрінде (((, ол ([pic]V*NV*,(([pic]V*  .

        Грамматиканың жалпы түрі  мәннің  қызықтысын  қабылдайды,  олар  тым
бос, бұларды программалау тіліндегі  синтаксисті  жазуда  қолдануға  болады.
Табиғи тілге  арналған  синтаксисте  қолданылады.  0  грамматикалық  түрдегі
мысал G=( {A, S}, {0,1}, P, S) программасына  негіз  болады  және  P={S(0A1,
0A( 00F1,A ((}.
      Бірінші грамматика түрі немесе конспект- тәуелді грамматика бұл  G=(N,
(P,  S)  граммтикасы  шығу   ережесі   түрінің   (1А   (2((1((2   одан   (1,
(2[pic]V,A[pic]N,(([pic]V+. Конспект  оң  және  сол  жақ  (1және  (2  аталуы
бойынша  сәйкестендіріледі   және   тізбектеледі.   Олар   шығу   ережесінің
тапсырмасы бойынша шарт орындалады: конспект  (1,(2  тізбектері  әр  уақытта
терминальды емес грамматикада ( және ( тізбегімен ауыстырылады.
       Конспект  тәуелді  грамматика  тілде  конспект  тәуелді  тіл  деп  те
аталады.  Грамматикада   конспект  тәуелді  грамматика  мен  тіл   кластарын
сәйкестендіреді,  оны  [9]  -бен  дәлелдеуге  де  болады.  Ол   грамматикада
қысқартылмайтын деп те аталады, шығару ережесінің ((( орындау  кезінде  мына
шартты қанағаттандырады((((((.
           Демек  бұл  алгоритмде  немесе  шекті  сандарды  анықтау  кезінде
терминалды тілде не жатады немесе жатпайды. Қысқартылмаған  грамматика  мына
мысалда көрсетілген: G=( {B,C,S} ), {a,b,c},P,S) P={S aS,B,C, S abc; CB  BC,
bB bb, bC bc, cC cc).
       Екінші грамматикалық түрі немесе конспект бос грамматика – бұл  G=(N,
(,P,S) грамматика шығару ережесінің  мынадай  түрін  береді.  А(В  ,  немесе
А(N,(((V*.
         Келесі тіл  Конспект тәуелді грамматиканы жеңіл  оқиды  және  толық
тексереді, сосын тілден бос тізбек шығады. Шығу ережесін  жазғанда  Конспект
тәуелді  грамматикасы  лингвистикалық  формуламен  сәйкес  келеді.  Нақтырақ
айтсақ,  конспект  тәуелді  грамматикада  шығу  ережесінің  терминалды  емес
грамматикасының сол жақ бөлігі лингвистикалық  грамматиканың сол жақ   бөлік
формасымен сәйкес келеді.
        Қатынас  (((  -  метолингвистикалық  байланыста  былай  белгіленеді:
((((( шығу ережесінің терминалды және терминалды емес  тізбектерінің  бөлігі
–  метолингвистикалық  формулада  екіге  бөлінеді:   математикалық   қоңырау
тізбегі  және тілдің басты символдарының оң жақ бөлігі.
        Үшінші грамматикалық түрі – автоматты және регулярлы грамматика  бұл
G=(N,  (,P,S)  шығару  ережесінің  түрі  А(((  немесе   А((,   онда   А,В(N,
(((U{(}.Автоматты грамматика тілде конспект тәуелді  тілі  немесе  автоматты
және регулярлы грамматика деп аталады.
             Рекурсивті конспект-тәуелді грамматиканың байланысы
      Еске түсірсек грамматика G=(Vn, Vt, P,S) - рекурсивті деген  не,  егер
алгоритм бар болса, ол көбінесе  анықталады.  Кейбір  нақты  тізбекте  х(V*t
нақты грамматика G-ге тең болады, егер G=(Vn,  Vt,  P,S)-конспекстті-тәуелді
грамматикаға байланысы болса. Тексерейік, нақты  грамматиканың  бос  сөйлемі
жоқ немесе жай ғана. Ережеде S(( L(G1), ((L(G) сонда және  тек  сонда  ғана,
егер S(((P, ((L(G), және жаңа грамматика құрастыруға болады:
G=(Vn, Vt, P,S), ереже болмайды S((, тағы солай P=P1/{ S((}.
        Грамматика G1 тағы конспект байланысы және L(G1)= L(G1)/{ (}.  Әрбір
шешу ұзындығы сентенциалдық формада  үлкейеді.  V  грамматикасы  сөздікте  К
символында   біріктіреді.   Жалғасы,   S(х1б(((((((((((((   Сентентенциялдық
формасы аі,  а ...,а  бәрі сол бір ұзындық, P  әртүрлі  ұзындық  тізбегі,  V
алфавит символы, к символ, кр ендік. Біздідің қарастырған j+1 тізбегі j>k7
      Теорема 2.2: Егер грамматикада G=(Vn,  Vt,  P,S)-  конспект  байланысы
немесе рекурсивті болса
        Дәлелдеу: қолдану бар болса шынында  ((  L(G1)  егер  осылай  болса,
онда грамматика ережесі S((, грамматиканы аламыз, көбінесе бір  тіл,  немесе
бос сөз. Р ережені тоқтатпайды S((, қарастырылған тізбекте  х(V*t  .  Біздің
тапсырмада алгоритмді табу, х( L(G1) мына сұрақты  шешеміз:  (х(=n(n>0).  Тm
келесі бейне мүмкін. Tm=Tm-1U{a}β→αβε


                    Хомский формальдық тілдер иерархиясы
      Дәлелдейміз   бірінші   екі  теореманың     нормалыларды  туралы   КС-
граматикті  көрсетеміз  . Әрбіреуіінде     олар  түрлерінде  бекітеді  ,  не
барлық  граматикалар   эквиваленттік  граматикасы  ережелердің  түріне   шек
қойылады.
      Теорема 4.5.-  Хомскидің    нормальді  түрі.  Мүмкін  граматика    кез
келген КС-тілді  туындайды, онда  барлық ережелер  түрі [pic]  немесе  [pic]
терминалды емес  ,а- терминалды .)
      Дәлелдеу. Мейлі [pic]- грамматикасы  және [pic] сәйкесінше  теоремамен
4.4 біз эквиваленттік таба аламыз [pic] [pic], сондайды  ,  не  жиын  оны  Р
бірде бір шынжырды   ережелерде  асырмайды. Солай  келгенде, егер  ереже  оң
бөлімі бір символдан түзелсе, онда  мына  символ  -  терминал  болады,  және
мына ереже қабылдауға болатын түрде орнында болады .
      Ережені қазір Р  қарап шығамыз [pic] қайда [pic]  , [pic] . Егер  оның
[pic] ауыстыруға болатынса жаңа терминал емес [pic] және  [pic]  түрінің  ол
үшін жаңа ережені жасаймыз , мүмкін түрді болады , скольку [pic]  терминалды
. Ереже [pic] ережемен ауыстырылады  [pic] онда [pic] егер [pic]
      Толған жиын мейлі терминалдарды емес --[pic]   ал  ережелердің  толған
жиыны -[pic].
      [pic]-грамматиканы қарап шығамыз. Оның  барлық емес  ережесі   нормалы
Хомскиидің   түріне   қанағаттандырыды.  Грамматикаға   эквиваленттік   олны
көрсетеміз [pic].
      І. Дәлелдейміз. [pic]-ны  .  Мейлі  [pic].[pic]  грамматикасында  мына
шығару бір аттамы қайсыда ереже қолданылады [pic]  ,  жаңа  ереже  қолдануға
[pic] грамматикасында тең  : [pic]  және бірнеше ереже түрлерінің   [pic]  ,
туралы  сөйледік. Сондықтан [pic] аламыз.
      ІІ.  Дәлелдейміз.  [pic]-ны.  Индукциямен  [pic]  шығаруы  ұзындығымен
көрсетеміз , егер   әрбіреу  үшін  [pic]    шығару   бар  болса  [pic]  онда
[pic].сонда [pic].

      Мейлі [pic]Егер [pic][pic],[pic], онда  Сонымен  қатар  сәйкес  құруға
[pic] грамматикалары [pic] қолданған  ережесі  болады  және  Р  ережелерінің
жиынында көп болады.  Шынында  да  [pic]  көбірек  бірліктен  бола  алмайды,
сонда ережеге сай көп  жиын  ереже   бола  алмайды  Р2.  Демек,  х-қарапайым
терминал және [pic], онда [pic].
      Индукциялық  болжам. Болжаймыз ,  бекіту орындалады   бәріне  арналған
[pic]
      Индукциялық асу. Мейлі  [pic]  онда  [pic].Мынау  шығару  түрі  болады
[pic][pic] онда [pic]
      Айқын , [pic] және де  [pic][pic] Егер  [pic],  онда  бір  ғана  ереже
болады  көп жиынның ішінде  ережеде  [pic],осы   терминал  еместігін   мынау
анықтайды:  [pic]  кейбіреулер  үшін  [pic].Бұл  жағдайда   [pic].Құрылыммен
ережесіндей   [pic]  Қолданылатын  шығару  бірінші  адымында  ,  ережеге  өз
тегімен міндетті [pic], онда [pic], егер [pic],[pic], егер  [pic]/[pic].  Ол
үшін [pic], біз шығаруды   аламыз[pic][pic]  индукциялық  арқылы   мөлшерлей
шығару  болады  [pic].  Болжай,  [pic].  Жанында  [pic]жеке   оқиға   сияқты
аламыз[pic][pic].
Сонымен , біз аралық нәтижені іспен көрсеттік : грамматикамен  контекстік  -
бос  кез келген  контекстік  -  бос  тіл  мүмкін  туындаған  ,  әрбір  ереже
қайсының түрді болады[pic]немесе [pic] онда [pic] [pic]-терминалды емес,  а-
терминалды.
      Айқын, не барлық ереженің[pic]  жанында сондай түрді болады , қандайды
Хомскии нормалы түрі талап етеді. Ережелерді  қайта  құру   үшін[pic]  түрге
ие. Егер [pic]-сондай [pic] модефировать етеміз оны, қоса  отырып   -қосымша
терминалдар емес және ауыстыра - оның ережесі арқылы . Нақ : үшін түр  әрбір
ережелері  [pic]  онда  [pic]  біз   құраймыз   жаңа   терминалдарды   [pic]
ережелердің жиыны [pic].
      Мейлі  [pic]-жаңа терминалды емес сөздік, ал Р3 –жаңа ереже жиыны.
[pic]-грамматиканы  қарап   шығамыз.   Грамматикаға   эквиваленттік   орынын
көрсетеміз [pic].
      ІІІ. Дәлелдейміз.  [pic]-ны.  Мейлі  [pic][pic]  грамматикасында  мына
шығару   бір   аттамы    қайсыда    ереже    қолданылады.    [pic][pic][pic]
грамматикасында мына  шығару  бір  аттамы  қайсыда  ереже  қолданылады,  Дәл
осылай  қалай  құрылыммен  бұлар   ережелер   грамматикаға   сонымен   қатар
кіреді[pic].
       Грамматикада шығару адымы[pic], қайсыда ереже қолданылады[pic],[pic],
ережелердің жүйелі қолдануына тең [pic] . Сондықтан [pic]аламыз.
      ІV.  Дәлелдейміз,  [pic]-ны.  Индукциямен  [pic]  шығаруы  ұзындығымен
көрсетеміз , егер   әрбіреу  үшін  [pic]    шығару   бар  болса  [pic]  онда
[pic].сонда [pic].
      Индукциялық  болжам. Болжаймыз,  бекіту  орындалады   бәріне  арналған
[pic]
      Индукциялық асу. Мейлі [pic] онда  [pic].  Мынау  шығару  түрі  болады
[pic]
      Айқын , [pic] және де  [pic][pic]7 Индукциялық болжамға  қарай  [pic].
Болжай [pic]. Мөлшерлей келгенде  [pic] мынаны   аламыз   [pic].  Бекіту  ІV
дәлелделген, бірге оларға теңдік дәлелделген [pic] теореманың өзі де.
      Мысал.4.1. Грамматиканы қарап шығамыз [pic]онда  [pic]
      Эквиваленттік грамматиканы с  Хомскиидің  нормальді   түріне  саламыз.
Біріншіден, екі ереже бар, олар: [pic]қойылатын талап түрі болады.  Ешқандай
шынжыр ережелердің  жоқ,  дәл  осылай  не  біз  терминалдардың  ауыстыруынан
бастай   аламыз   оңдарды   қалғаны   ережелердің   бөлімдерінде   жаңаларды
терминалдар емес және ережелердің құрулары олар үшін.  Ереже  бойынша  [pic]
екі   ережемен  ауыстырылады.[pic].  Ереже  ұқсас  [pic]   ережемен  ауысады
[pic].Орнына[pic]  ереже  енгізіледі   [pic].  Ережеге  сай  [pic]  үш  жаңа
ережемен ауысады [pic]. Ережеге сай  [pic]  ережемен  ауысады  [pic].Ережеге
сай [pic] ережемен ауысады [pic].
      Сонымен, біз  Хомскиидің  эквиваленттік  грамматиканы   нормалы  түрін
алдық: [pic]онда [pic]
      [pic]
      [pic]
Бақылау сұрақтары:
1. Формальді грамматиканың негізгі түсінігі және классификациясы қандай?
2. Грамматикаларды классификациялау түрлеріне тоқталыңыз?


                          Дәріс №4 ШЕКТІ АВТОМАТТАР
Жоспары:
1. Детерминантты шекті автоматтар. Мур диаграммалары.
2. Шекті автоматтардың эквиваленттілігі. Мур теоремасы.
3. Мили и Мур автоматтары.
4. Шекті автоматтардың алгебралық құрылымдық теоремасы. Шекті  автоматтардың
   ішкі жағдайларын кодтау.


    1. Детерминантты шекті автоматтар. Мур диаграммалары
      Шекті автоматтың  бір  жақтылығын   терминалды  емес  шекті  автоматты
қарастырайық.  Ол  үшін  автомат  жұмысының  әр  бір  тактын   білу   қажет.
Детермиалданбаған шекті автомат жұмысының такты ағымды  құрылымдық  қалыппен
және  ағымды  енгізу  символы  мен  анықтаймыз.   Детерминалданбаған   шекті
автоматтың әр тактысы бірінші конфигурациядан  екінші  конфигурацяға  өтеді.
Сонда енгізу басында оң жақтағы бір символ  өзгереді.  Формалдық  автоматтың
конфигурацясы   деп   (q,[pic])   [pic](Qx[pic])   Мына   жұптар    аталады.
Конфигурация (q[pic],[pic]) бастапқы деп аталады. Ал а(q, [pic]),  (q[pic]F)
шекті деп аталады.
      Шекті автоматының  жұмысының  такты  бинорлық  қатынаспен  анықталады.
Егер q[pic][pic][pic](q;а) болса онда (q,а[pic])+(q[pic][pic][pic])  болады.
Егер [pic]- көпшілік конфигурация , сонда :
[pic]    *С+[pic]С[pic] мынаны білдіреді С=С[pic].
      *С[pic]+кСк ол k>=1 деп аталады.
      *С[pic],С[pic]+С[pic] сонда мынау орындалады 0<=i=1,   aC+C[pic]
білдіреді.
      ([pic][pic]) және  ([pic][pic])  арақатынастары   транзитивтік  немесе
рефлексифті –транзитивтік  қатыс болып табылады  .Шекті  автомат  k=(Q,[pic]
,[pic],q[pic],F)     енгізу     тізбегін     [pic]      анықтайды,      егер
(q[pic][pic])+(q,[pic] ) болса, онда  q[pic]F.Анықталған  тілмен  шекті   к-
автоматты  көптеген енгізу  тізбегімен аталады .
   L(k)=(w/[pic] және (q[pic],[pic])+[pic](q,[pic]) онда q[pic]F).
4.1.Мысалы:    Шекті    автомат     k-ны     мына     түрде     қарастырайық
k=([pic]q[pic],q[pic],q[pic],q[pic][pic],[pic]a,b[pic],[pic],q[pic],[pic]q[pic]
[pic], функцияда [pic] келесідей орындалды.

1)          [pic](q[pic][pic],a)=[pic]q[pic][pic];                        5)
[pic](q[pic][pic],a)=[pic]q[pic][pic];
2)          [pic](q[pic][pic],b)=[pic]q[pic][pic];                        6)
[pic](q[pic][pic],b)=[pic]q[pic][pic];
3)          [pic](q[pic][pic],a)=[pic]q[pic][pic];                        7)
[pic](q[pic][pic],a)=[pic]q[pic][pic];
4)          [pic](q[pic][pic],b)=[pic]q[pic][pic];                        8)
[pic](q[pic][pic],b)=[pic]q[pic][pic][pic];

 Бұл шекті автомат тізбек бойынша орындалады.  Ол  а  және  b  символдарынан
тұрады baababa  k- автоматында енгізу тізбегі болып табылады және ол  келесі
такт бойынша орындалады .
(q[pic],    baababa)       +2  (q[pic],       aababa)     +1
(q[pic]     ababa)            +3  (q[pic],       baba)         +4
(q[pic] ,   aba)                +5  (q[pic],      ba)              +8
(q[pic],       a)                 +7   (q[pic],     [pic]) .
 Сонымен baababa    L(k) тілінде орындалады.

      Мысал: Шекті автоматты анықтайық  .Ол  0  және  1  тізбегінен  тұрады.
Тізбек мысалы бойынша , ол 11,011001,10111.
 K==([pic]q[pic],q[pic],q[pic][pic],[pic]0,1[pic],[pic],q[pic],[pic]q[pic][pic]
,
Мұндағы q[pic]- бастапқы  қалып оған  енгізуде 1-символы  беріледі.  Мұндағы
q[pic]- қалып , ал q[pic]- шекті қалып  сонда  [pic]  функциясы  мына  түрде
орындалады .

1)              [pic](q[pic][pic],0)=[pic]q[pic][pic];                    4)
[pic](q[pic][pic],1)=[pic]q[pic][pic];
2)              [pic](q[pic][pic],1)=[pic]q[pic][pic];                    5)
[pic](q[pic][pic],0)=[pic]q[pic][pic];
3)              [pic](q[pic][pic],0)=[pic]q[pic][pic];                    6)
[pic](q[pic][pic],1)=[pic]q[pic][pic];

Ал енгізу тізбегі 10111  k- автоматында келесі такт бойынша орындалады.
(q[pic]   10111 )        +    (q[pic] ,   0111 )        +(  q[pic],   111  )
+
(q[pic] ,   11 )            +     (q[pic],       1   )           +(  q[pic],
[pic]).

                      Детермиалданған  шекті автоматтар
        Детерминантты   шекті   автомат   белгілі   –   бір   конфигурацияда
орналасқанда, белгілі бір қалыптан  екінші  символдық  қалыпқа  өту  мүмкін.
Тәжірбие жүзінде детермиалданбаған соңғы автомат жұмысы  қиындықтарға  қарай
моделденген. Ол детермиалданған  соңғы автоматта жиі қолданылады.
      Детермиалданған  сонғы автомат деп k=(Q,[pic] ,[pic],q[pic],F)  немесе
[pic](q, а) қалыпындағы шекті автоматты  айтады.
      Егер [pic](q,  а)   барлық   q[pic]Q   немесе  а[pic][pic]   қалыпында
болса, онда k- автоматы  толық анықталған  сонғы автомат деп аталады.
      Мысалдарындағы шекті автоматтар детермиалданған және толық  анықталған
ал шекті  автомат  мысалында  келтірілген.  Ол  детермиалданбаған   автомат.
Дәлелдеуге болады (3.38) егер L=L(k) болса детермиалданбаған  шекті  автомат
болады  немесе k[pic]   шекті  автоматын,  детермиалданбаған  шекті  автомат
құру  үшін   L=L(k[pic])   орындалады.Детермиалданбаған   шекті   автоматтың
алгоритімін құруды детермиалданған  шекті автоматқа қарап құрайық.
      Алгоритім4.1.  Детерминантты  шекті  автомат  пен  детерминантты  емес
алданбаған  шекті автоматтың құрылымы.
Енгізу: детермиалданбаған k=(Q,[pic] ,[pic],q[pic],F)
Енгізу:детермиалданған      k[pic]     =(Q[pic],[pic]      [pic],[pic][pic],
q[pic][pic],F[pic][pic]) сонда   L(k[pic])= L(k).
      Алгоритімді бейнелеу:
1) Енгізу алфавитінде  k және k[pic] автоматы теңестіріледі .
2) Q[pic] көпшілігінде  булеван көпшілігі  Q-да орналасады. Егер  [pic]  =n,
болса [pic]Q[pic][pic] =2[pic] . Оның бастапқы қалыпы q[pic][pic].
3) q[pic][pic]= q[pic].
4)F[pic] көпшілігі S және Q-да  S  [pic]Q  [pic][pic]  түрінде  болса   онда
F[pic][pic] қалыпы  Q-да детермиалданбаған  шекті автомат k  болады.
5) әр бір S [pic] Q көпшілігі үшін енгізу символы Q  және  [pic]  орындалады
[pic][pic](S,а)=U     [pic](p,a) .
  4.4 Мысалы: Детермиалданған  шекті автомат k[pic] құрайық, оны  құру  үшін
детермиалданбаған   шекті    автоматтың   мысалына   қараймыз.    Шығарылған
детермиалданған шекті автомат k бес қалыптан  тұрады  .Ал  детермиалданбаған
шекті автомат  k  32 қалыптан тұрды . Ол мына  кестеде берілген.
|                            |а           |b            |c                 |
|P[pic]=[pic]q[pic][pic];    |P[pic]      |P[pic]       |P[pic]            |
|P[pic]=[pic]q[pic],         |P[pic]      |P[pic]       |P[pic]            |
|q[pic][pic];                |P[pic]      |P[pic]       |P[pic]            |
|P[pic]=[pic]q[pic],         |P[pic]      |P[pic]       |P[pic]            |
|q[pic][pic];                |P[pic]      |P[pic]       |P[pic]            |
|P[pic]=[pic]q[pic],         |P[pic]      |P[pic]       |P[pic]            |
|q[pic][pic];                |P[pic]      |P[pic]       |P[pic]            |
|P[pic] =[pic]q[pic],        |P[pic]      |P[pic]       |P[pic]            |
|q[pic],q[pic][pic];         |P[pic]      |P[pic]       |P[pic]            |
|P[pic] =[pic]q[pic], q[pic],|P[pic]      |P[pic]       |P[pic]            |
|q[pic][pic];                |P[pic]      |P[pic]       |P[pic]            |
|P[pic] =[pic]q[pic], q[pic],|P[pic]      |P            |P[pic]            |
|q[pic][pic];                |P[pic]      |P[pic]       |P[pic]            |
|P[pic]=[pic]q[pic], q[pic], |ø           |ø            |ø                 |
|q[pic][pic];                |            |             |                  |
|P[pic]=[pic]q[pic], q[pic] ,|            |             |                  |
|q[pic][pic];                |            |             |                  |
|P=[pic]q[pic], q[pic]q[pic],|            |             |                  |
|q[pic][pic];                |            |             |                  |
|P[pic]=[pic]q[pic],         |            |             |                  |
|q[pic]q[pic], q[pic][pic];  |            |             |                  |
|P[pic]=[pic]q[pic], q ,     |            |             |                  |
|q[pic], q[pic][pic];        |            |             |                  |
|P[pic]=[pic]q[pic], q[pic], |            |             |                  |
|q[pic], q[pic][pic];        |            |             |                  |
|P[pic] =[pic]q[pic],        |            |             |                  |
|q[pic]q[pic], q[pic],       |            |             |                  |
|q[pic][pic];                |            |             |                  |

           2. Соңғы автоматтардың эквиваленттілігі. Мур теоремасы.
      Егер Ф және Ғ функцияларының екі булевтары барлық мүмкін  өзгерістерде
бірдей мәнге ие болса, эквивалентті болып  табылады.  Булевты  функциялардың
өзгерістері  шексіз  емес,  сондфқтан  оларды  қарап   шығып,   Ф   және   Ғ
эквивалентті екендігін тексеруге болады. Егер өзгерістер саны көп  болса,  Ф
және Ғ қалыпты түрге келтіріп, оларды салыстыруға мүмкіндік аламыз.  Сонымен
қатар Ф және Ғ эквивалентілігін тексеру үшін Ф[pic]Ғ  функциясы  маңызы  бар
ма екенін талдауға болады.
      Соңғы автоматтарда жағдай басқаша. Егер олардың жүзеге асыратын кіріс-
шығыстары  эквивалентті  болса,  екі  сонғы  автомат  та  эквивалентті.Соңғы
автомат түзілісті кіріс белгілерінің көптеген  шығыс  түзілісті  белгілеріне
бейнеленуін  жүзеге  асырады.  Сондықтан  автоматты  бейнеленулерді  олардың
мәндерінің барлық  мүмкін  аргументтерде  жай  ғана  көрсетумен  салыстыруға
болмайды. Бірнеше анықтамаларды көрсетейік.
      Автоматтың кіріс  және  шығыс  функцияларын,  олар  кіріс  алфовитінің
көптеген  түзілісті  белгілері  арқылы  анықтау  үшін,  кеңейтейік.   [pic]-
алфавит  (көптеген  белгілердің  соңы)   және   [pic]-   [pic]элементтерінің
түзілістерінің типтары. [pic] - белгілерді сақтамаған, бос түзіліс, ал  ^  –
түзілістерді  жабыстыру  (конкатенация)  операциясы.  Сөйтіп,  aab^ba=aabba.
Конкатенация операциясының белгісін көп жағдайда  көрсетпейді.  Түзілістерді
[pic],[pic],[pic],... кіші грек әріптерімен белгілейміз. [pic]  конкатенация
операциясының әрі оң, әрі сол бірлігі екендігі айқын:[pic]   =[pic] =[pic].
     Анықтама 3.3. A=  -  сонғы  автомат  болсын.
Автоматтың кеңейтілген кіріс  және  шығыс  функциялары  [pic]:S[pic]Su  және
[pic]:S[pic], былай анықталып:
     [pic](s,[pic])=s;[pic] (s,a[pic])=[pic]([pic](s,a),[pic]);
     [pic](s,[pic])=[pic];[pic](s,a[pic])=[pic](s,a)^[pic](s,a),[pic].
Кіріс және шығыстың  кеңейтілген  функциялары  көптеген  кірісті  түзілістер
арқылы анықталған.Ал кіріс және шығыс қарапайым функциялары  көптеген  кіріс
белгілері арқылы анықталады.
      Автоматтың  кей  бір  қалпында   бастапқы   қалыптан   жол   жоқ   деп
ойлайық.Басқаша айтсақ, автомат  мұндай  қалыпқа  түсе  алмайды.  Автоматтың
мұндай  қалпы   жүзеге   аспайтын,   ал   қалғандары   мүмкін   жағдай   деп
аталады.Жүзеге аспайтын және олардың өтуді алып тастауға болады, олар  соңғы
автоматтың жұмысына ықпал етпейді. Формальді анықтама берейік.
        Анықтама   3.4.   A=   -   сонғы   автомат
болсын.s[pic]S  егер  ([pic]s[pic],[pic]=s  болған  жағдайда   ғана   жүзеге
асырылады,асырылмайды деп аталады.(қандай да бір кіріс белгінің  түзілістері
арқылы автомат осындай қалыпқа түседі).Соңғы автоматтың қалпы жүзеге  аспауы
–тек кез келгкн кіріс түзілістерінің  ықпалымен  автоматтың  мұндай  қалыпқа
түспеуі                 деп                 аталады.                  Жүзеге
аспайды:(s)[pic]s[pic],[pic]A=  соңғы   автоматтың
жүзеге асатын  көптеген  қалпы  индукцияға  негізделген  алгоритм  көмегімен
құрылады. I-ші қадамға  Oi  қалпын  құрамыз.  Автоматтың  бастапқы  қалпында
кейбір  кіріс  түзілістерінің  ұзындығы  i  артық  емес.  Oo={s[pic]}  екені
айқын.Q[pic]=Q[pic]s[pic]Qi [pic][pic][pic](s,x)) анықтамасы  кез  келген  i
үшін дұрыс. Сонымен бірге, |S| қадамынан  артық  емес  Q[pic]=Q[pic]   екені
айқын. Q[pic] деп осы көптеген қалпы автоматтың  'A=
жүзеге асатын қалыптарын қамтиды.
     Енді соңғы автоматтардың эквиваленттілігі мәселесіне қайта оралайық.
     Анықтама 3.5.Соңғы автоматтар A= и  B= төмендегі екі шарт орындалса эквивалентті деп аталады:
а)егер кіріс алфавиттері сәйкес келсе: ХА=XВ=Х;
б)олардың      жүзеге      асырылатын      бейнелері      сәйкес      келсе:
([pic]SОА,[pic]SОВ,[pic].
     Мысал 3.2.
Суретте көрсетілгендей екі соңғы автомат қалыптарының  саны  әр  түрлі  және
бұл қалыптар әр түрлі аталады. Бірақ сырттай  қарағанда  олардың  әрекеттері
ұқсас: бірінші  автоматтық  кіріс  түзіліске  реакциясы  ааbbabb  тең  [pic]
(qо,aabbabb)=[pic](sо,aabbabb)=0001001.
     Алайда автоматтардың барлық кіріс түзілістерге реакцияларына қарсы  бұл
автоматтар эквивалентті ме деген сұраққа жауап беру мүмкін емес.  Сондықтан,
соңғы автоматтардың эквиваленттілігі мәселесі тривальді емес.
     Бұл мәселені шешудің қарапайым  әдісі  бар.  Әдіс  соңғы  автоматтардың
нақты өндірісі түсінігіне негізделген.
         Анықтама    3.6.     A=     и     B=  сонғы  автоматтың  Х  кіріс  алфавитімен  бірдей  нақты
өндірісі деп A[pic] B= SА[pic] SВ, Х,YА[pic] YВ,( SОА,  SОВ),[pic]>  автомат
аталады, онда:
а)([pic]sА[pic]SA)(  [pic]SB[pic]  SB)(  [pic]X[pic]X)[pic]((  sА,  SB),х)=(
[pic]( sА,х), [pic]( SB,х));
б)  ([pic]sА[pic]SA)(  [pic]SB[pic]  SB)(  [pic]X[pic]X)[pic]  [pic]((   sА,
SB),х)=([pic]( sА,х),[pic]( SB,х));
Басқаша  айтқанда  екі  соңғы  автоматтың  өңдірісі  болып  табылатын  соңғы
автоматтың қалпы бастапқы автоматтардың қос  қалпынан  тұрады.Оның  бастапқы
қалпы – олардың бастапқы қалыптарының қосығы. Шығу алфовиті – көптеген  шығу
автомат  - көбейткіштердің  шығу  символдарының  қосақтары.  Өту  және  шығу
функциялары дұрыс анықталмаған. Сөйтіп, соңғы автоматтардың  нақты  өндірісі
– бұл қарапайым екі қатар тұрған, өзара  ықпал  етпейтін  соңғы  автоматтар,
ортақ кірісте синхронды жұмыс жасайды.
         Теорема     3.1.(Мур     теоремасы)     Екі      сонғы      автомат
A=  и  B=  бірдей  кіріс
алфовитімен тек қана кез келген қалыпқа жететін (SА,  SВ)  олардың  өндірісі
A[pic] B ( [pic]X[pic]Х) [pic]( sА,х)= [pic](  SB,х)  болғанда  эквивалентті
болып табылады.
Дәлелденуі.(қажеттілік)    А    және    В    эквивалентті    болсын,    яғни
([pic]SОА,[pic]SОВ,[pic].
Осы жағдайды дәлелдейміз:
([pic](sА, SB)[pic] SА[pic] SВ) жетеді (sА, SB)[pic]( sА,х)= [pic]( SB,х).
3.4.анықтамасына сәйкес(sА, SB) жағдайы  [pic](  SОА,  SОВ)[pic]=(  sА,  SB)
шартына эквивалентті. Дәлелдеу  қажет,  егер  ([pic]SОА,[pic]SОВ,[pic]  онда
([pic](sА,  SB)[pic]SА[pic]  SВ)[([pic](SОА,  SОВ),[pic]=(   sА,   SB)[pic](
sА,х)=[pic]( SB,х)].
Кері жағдайды қарастырайық, яғни
¬([pic]SОА,[pic]SОВ,[pic]  онда  ([pic](sА,SB)[pic]SА[pic]   SВ)[([pic](SОА,
SОВ),[pic]=( sА, SB)[pic]( sА,х)=[pic]( SB,х)].
және көрсетеміз,  сонда  ¬([pic]SОА,[pic]SОВ,[pic].Салдарын  жоққа  шығаруда
айналдыруға  болады.([pic](  sА,  SB)  [pic]   SА[pic]   SВ)   )[([pic](SОА,
SОВ),[pic]=( sА, SB)&[pic]( sА,х)[pic] [pic](  SB,х)]  [pic]деп  ойлап,анығы
онда:
[pic]( SОА, [pic]  SОА,[pic]х)[pic](  SОА,[pic](  SОА,  [pic],х)[pic](  SОА,
[pic][pic](  sА,х)[pic](  SОВ,[pic](  sА,х)  [pic](  SОВ,[pic]  SОВ,[pic],х)
[pic]( SОВ,[pic]х)[pic] SОВ,[pic]).Осыдан:[pic]
[pic](SОА,[pic]SОВ,[pic]немесе        ¬([pic]SОА,[pic]SОВ,[pic],       осыны
дәлелдеуіміз қажет еді.
(Жеткіліктілік). Кері жағдайды  дәлелдейміз.   ([pic](sА,  SB)[pic]  SА[pic]
SВ) жеткілікті (sА, SB)[pic]( sА,х)= [pic](  SB,х)  дәлелдейміз,  А  және  В
эквивалентті, яғни ¬([pic]SОА,[pic]SОВ,[pic].
Бұл  кіріс   түзілістердің   ұзындығы   индукциясымен   дәлелденеді.Басқаша,
дәлелдейміз
[pic]( SОА, [pic]-[pic]( SОВ,[pic] мына k=0.1.
      Базалық индукция k=0 нақты дәлелі  болып  табылады.  Ол  k=0  болғанда
[pic]  тізбегінің  0-дің   ұзындығында   [pic](   SОА,   [pic])[pic](   SОВ,
[pic])=[pic] тең.
      Индукция қадамы. Басқа i үшін
      ([pic]SОА,[pic]SОВ,[pic] орындалсын.
Бұл i+1 үшін де  орындалатынын  дәлелдейік.[pic]  -  i  ұзындығына  өзгешелі
болсын.[pic]( SОА,[pic])  түрі  Автоматында  және  [pic][pic](  SОВ,[pic]  В
автоматында болғандықтан, дәлелдемелі.
([pic](sА, SB)[pic] SА[pic]  SВ)  дәлелдемелі  (sА,  SB)[pic](  sА,х)=[pic](
SB,х)     қарасты     [pic]х[pic]SОА,[pic]х)[pic]      SОВ,[pic]),х).Осыдан:
[pic]х[pic][pic]( SОА,[pic]х).
Бірақ  [pic]   және  х[pic]  өндірісінің   [pic]х   [pic]  тізбегі.  Теорема
дәлелденді.


                         3. Мили и Мур автоматтары.
      Мили және Мур автоматтары иннициалды  автоматтар  емес.   S(x)=g(q0,x)
бейнелеуінде q0 бастапқы нұсқасын  көрсетейік,сол  уақытта  автомат  қалыпты
жағдайда  болады.  Осы  жағдай  процестің  қалыптасуына  ықпал  етеді,  және
кіріспе тізбектер мен нәтиже тізбектерін анықтайды.
Иннициалды автоматтардың әр түрлі  күйде  жүргізілуін  қарастырайық.  Бұндай
автомат кірісті бір  ұзын  шексіз  тізбекті  алады  да  оны  өңдейді.  Жұмыс
нәтижесінде оның бастапқы түріне қарамастан әр түрлі реакция болуы мүмкін.
Сондықтан да ең басты екі тапсырманы шешу керек:
   1. Автоматтың  сол уақытта қай күйде тұрғанын анықтау;
   2. Берілген уақытта автоматтың жұмысты тоқтатқанына кейінгі  соңғы  түрде
      күйі.
Бұл бастапқы жағдайы келесі байқаулардың бастапқы жүйесі болып табылады.
Бұл анализ тапсырмалары байқаудың түрін анықтау деген атқа ие болған.
Мили автоматы
Мили автоматы – M=(K,X,Y,f,g) түріндегі бестік жүйе, бұл бестік жүйеде:
К-автомат түрінің жиыны;
Х-ену алфавиті
У-ену алфавиті
f-ауыстырулар функциясы (K*X(K түрінде бейнелеуі)
g-шығу функциясы (У*X(У түрінде бейнелеуі)
Басқа  автоматтар  сияқты  Мили  автоматында  кесте  және  графикалық  түрде
бейнелеуге болады.
Мили  автоматының  өту  доғалын  ‘/’   символы   түрінде   бейнелейді.   Өту
таблицалары екі түрден тұрады: функцияның сол жағында ену мәндері  жазылады,
ал оң жақта өту функциялары жазылады.
Мысалы,  өңдеуші  автомат  құрайды,  ол   автомат   грамматикалық   берілген
арифметикалық белгілеулерді оқитын  болсын:  -  S(a+S|a-S|+S|-S|a  және  осы
белгілеулерден унарлық операцияларды жояды.  Мысалы,  берілуі  –а+-а-+-а  ол
мына түрге аударады в-а-а+а. Ену тілінде  а  символы  идентификатор  түрінде
берілген  және  идентификатор  алдында  унарлы   +и-   операциясы   түрінде.
Қарастыра кететін жайт ену тілі қайталанба жиын болып табылады.
M=(K,X,Y,f,g)
К={q0,q1,q2,q3,q4}
Х={a,+,-}
У=X
      Құрастырушы  Мили  өз  жұмысын  q0  күйінде  бастайды  және  реттелген
қатармен q0 мен q4  нүктелерін  «-»  кезектестіру  арқылы  белгілердіңі  жұп
немесе тақ екендігін анықтайды  –  бірінші  а  символына  сәйкес  келеді.  а
шыққан кезде – қалыптастырушы М енуге рұқсат беріп q1 күйіне  өтеді  және  а
береді. Немесе пайда болған  минустардың  сандары  жұп  немесе  тақ  болуына
қарап, сәйкесінше а береді.Келесі а символдарына  ол  q2  жәнеq3  күйлерінің
пайда болған  минустардың  сандарын  жұп  немесе  тақ  болуына  қарап  санап
береді. q2,q3 және q0,q4 қостарының арасындағы жалғыз  айырмашылығы  мынада:
егер  а  символына  минустардың  тақ  сандары  сәйкес  келсе,  онда  олардың
біріншісі тек жай ғана а емес +а береді.
Өту таблицасы келесі түрде болады
|          |Y                              |K                              |
|K/X       |a         |+         |-         |a         |+         |-         |
|q0        |a         |(         |(         |q1        |q0        |q4        |
|q1        |-         |(         |(         |-         |q2        |q3        |
|q2        |+         |(         |(         |q1        |q2        |q3        |
|q3        |-a        |(         |(         |q1        |q3        |q2        |
|q4        |-a        |(         |(         |q1        |q4        |q0        |

           4. Шеткі автоматтардың алгебралық құрылымдық теориясы.
      Логикалық блоктың соңғы автоматты формальды көпшілікпен  автоматтардың
қалпымен өте тығыз байланысты. Бұл қасиеттерді алгебралық әдіспен  зерттеуге
болады.   Біріншіден,    универсалды    алгебрамен    соңғы    автоматтардың
реализациясының байланыстары Хартманиса және Стирнза монографиясында  «соңғы
автоматтардың құрылымдық теориясы» зерттеген.
        Сондағы   шекті   автоматтың   алгебралық    құрылымдық    теориясын
автоматтардың  құрылуымен  мүмкіндіктерінен  бейнелеуге  болады.   Ол   жеке
модульдерден,  нәтижесінде  олардың  реализациясын  қамтамасыз  етеді.   Бұл
теория,  авторлардың  айтуы  бойынша,  «абстрактілі  сұлулықпен   және   таң
қаларлық сөйлемдермен»  берілген.  Келесі  бөлімдерде  біз  осы  теорияларды
қарастырамыз.
                   Шекті автоматтардың ішкі кодтау қалпы.
      Автоматтарды ішкі қалпын кодтау функционалдық  логикаға  ешбір  зиянын
келтірмейді.  Кодтауда  автоматтың  қалпы   енгізу   сигналдарына   шығаруды
орындайды.  Қалыпты  кодтау  құрылғыға  әсер   етеді,   оның   жылдамдығына,
логикалық блоктың қарапайым  блогына  әсер  етеді.  Мысалы,  докладта  іздеу
нәтижесі шешіледі, ол элемент жадысының минималды  күшіне  әсер  етеді.  Бұл
үшін анықталған  типте  екі  қалыпты  енгізілуі  Химминг  кодына  байланысты
болады.
      Автоматтардың қалпының басқа критериилер бойынша  оптимальды  кодталуы
автоматтардың логикалық блогының  реализациясына  байланысты  болуы  мүмкін.
Автоматты қарастырайық, олардың көшу функциялары  ғана  анықталған.  Автомат
қалпының басты себептері жекелеп айтпай-ақ қояйық.
      А 1= автоматты 8 қалыптан тұрсын.  S=  {0,….,7}  және  енгізу
сигналдарының, а және в – дан тұрады. µ автоматының көшу  функциясын  келесі
таблицада көрсетілген.

                        Таблица А1 таблицасының көшуі
|             |а             |b              |
|0            |3             |4              |
|1            |4             |7              |
|2            |3             |0              |
|3            |2             |6              |
|4            |1             |5              |
|5            |1             |4              |
|6            |2             |3              |
|7            |4             |3              |



       Логикалық  функцияны  қарастырайық,  олардың  А1  автоматтардың  көшу
реализациясы А1-ің ішкі қалпының кодталуы үш түрлі жолмен өтеді.  Кодталудың
бірінші нұсқасы екілік кодтық қалып нөмірінен  тұрады.  Көшу  таблицасындағы
кодталу  Карно  картасына  қолдануы  минимальды    ДНФ   екілік   функцияның
құрылуымен түсіндіріледі.  Триггерлердің  блоктық  жадысы  кодталуда  енгізу
сигналдары x=0 үшін а және x=1 үшін в. Бұл нұсқада кодтау әрбір фнкциясы  Q1
Q2 Q3, екілік разрядты келесі қалыптан, үштік  мағынада  тұратын  q1  q2  q3
кодының ағымдағы қалпынан көруге болады.
      Сондықтан а1 автоматы мұндай кодталудан тұрады.  В  схемасын  құрайық,
оның әрбір қадамында бірінші екі разрядты кодтық қалыпты  А1  (Q1  және  Q2)
разрядымен ағымдағы қалыпты А1 (q1  және q2)  қарастырылады.  Бұл  варияндты
басқа көзқарастан қаратырайық, екілік кодталудың  әрбір  разряды  S  қалыпта
жаңа разрядта тобынан анықталады. Таблица 3.5. В көшуінің кестесі.
|            |µа           |µв           |
|<0, 7>      |<3, 4>       |<3, 4>       |
|<1, 2>      |<3, 4>       |<0, 7>       |
|<3, 4>      |<1, 2>       |<5, 6>       |
|<5, 6>      |<1, 2>       |<3, 4>       |

      А1 автоматының  кодталу  қалпының  үшінші  нұсқасын  қарастырайық.  Ол
үшінші разрядтары код мағынасымен ерекшеленеді.

|А1 қалпының       |Көшу таблицасының     |Үштік разрядқа екілік функция   |
|кодталуы          |кодталуы              |                                |
|    |q1   |q2 |q3 |     |a    |b          |Q1=¬xq2v¬q1q2                   |
|    |     |   |   |     |     |           |                                |
|    |     |   |   |     |     |           |                                |
|    |     |   |   |     |     |           |Q2=xq2v¬x¬q2vx¬q1               |
|    |     |   |   |     |     |           |                                |
|    |     |   |   |     |     |           |                                |
|    |     |   |   |     |     |           |Q3=¬xq1¬q3vq1q2¬q3vx¬q1¬q3v     |
|    |     |   |   |     |     |           |Vq1¬q2q3                        |
|0   |0    |0  |0  |000  |011  |010        |                                |
|1   |1    |0  |1  |001  |010  |011        |                                |
|2   |1    |0  |0  |010  |101  |110        |                                |
|3   |0    |1  |1  |011  |100  |111        |                                |
|4   |0    |1  |0  |100  |011  |000        |                                |
|5   |1    |1  |0  |101  |010  |001        |                                |
|6   |1    |1  |1  |110  |101  |010        |                                |
|7   |0    |0  |1  |111  |100  |011        |                                |

Осы нұсқада кодталу кезінде әр функция Q1, Q2, Q3, екілік  разрядтары  кодын
келесі  жағдайларда  яғни   үш  мағынасында  да   q1,    q2,    q3   автомат
жағдайларынан туелді болады.
   Ал  енді,  ADE  аралас  моделдеріне  арналған  шекті  автоматтардың  ішкі
жағдайларының  кодталуын қарастырайық, содан кейін бұл әдісті  AD,  AE  және
BF моделдеріне қарастырамыз. Кодтау жолы  олардың  барлық  ішкі  жағдайларын
өзара әр түрлі болуымен аяқталады. Сонымен қатар  шекті  автоматттың  барлық
ішкі жағдайлары кодттары ортогональды болуы қажет. Шекті автоматтың  енгізу-
шығару жиынтықтары, жиын айнымалы мағынасымен  анықталады  G  =  {g1,...,gL}
және Z = {z1,...,zN}, осы тапсырманы жиі  шешеді.  Одан  кейінгі  шешу  жолы
минималды сан R және де қосымша айнымалылар  e1,...,eR Е жиыны  және  екілік
санау жүйесімен  кодталған  жеке  топтардың  кодталуымен  шешіледі.  Алдыңғы
жағдайдағыдай [1,2], бағандары am, aы, X(am,aы)  и  Y(am,aы)  болатын  шекті
автомат кестесі берілген. ADE аралас моделді  ішкі  жағдайларының  кодталуын
үшінші ретті матрица арқылы W шешіледі.  Матрица  жолдары  шекті  автоматтың
ішкі жағдайларына сәйкес келеді, ал бағандары  жиын  айнымалылары,  яғни   G
және Z. Жолдардың қиылысуы кейбір ai, ai  - болып тавбылады.

Бақылау сұрақтары:
1. Детерминантты шекті автоматтар түсінігі. Мур диаграммалары
2. Шекті автоматтардың эквиваленттілігі. Мур теоремасы.
3. Мили и Мур автоматтарының айырмашылығы неде?
4. Шекті автоматтардың алгебралық құрылымдық теоремасы. Шекті  автоматтардың
   ішкі жағдайларын кодтау.
                         Дәріс №5.  ТЬЮРИНГ МАШИНАСЫ
1. Тюринг машинасы, фон Нейман автоматы.
2.  Бір  қалыпты  өрнек  бойынша  детерминант  емес  шекті   автомат   құру.
   Детерминант емес шекті автомат бойынша детерминант автомат.


1. Тьюринг машинасы
      Тьюринг машиналары (ТМ) тіршілік  өмірде  тұтынылатын  нақтылы  машина
емес.   Ол   қиялдан   туған   –   елестік   машина.   Айқынырақ   айтқанда,
«Тьюрингмашинасы» дегеніміз алгоритмдер туралы  ұғымды  дәлді  анықтау  үшін
және  оның  ерекшеліктері  мен  қызметін  көрнекілеп  талдау   жәнетүсіндіру
мақсатымен алынған дерексіз үлгілеме жүйенің шартты атауы болып табылады.
      Алан Матисон Тьюринг  (1954-1954)  ағылшын  инженері  әрі  математигі.
Оның ғылыми еңбектері, көбінесе, математикалық логика мен  есептегіш  машина
жұмысының  негіздемелік  мәселелерін  зерттеуге  және  уағыздауға  арналған.
Кибернетика ғылымы мен электронды есептегіш  машиналар  теориясының  негізін
алғаш қалаушы Норберт Виннер (1894- 1964) :  «Тьюринг  расында,  ғалымдардың
ішіндегі ойша тәжірибе жүргізу  арқылы  машиналардың  логикалық  мүмкіндігін
тұңғыш зерттнген адам болды.
       Тьюринг  машинасы  дәлді  математикалық  ұғым  болып  табылады.   Оны
ешұқашан кездеспейтін және ұшы қиыақырсыз жады бар механикалық  құрылым  деп
қарастырады.
      Анықтама: Тьюринг машинасы (ТМ) деп ұзындықтары бірдей  шаршы  ұяларға
бөлінген ақырсыз таспамен және уақыттың әрбір моментінде  таспаның  мазмұнын
есепке алатын жаңа белгілеменіжазатын және  таспаны  жылжытатын  Д  тетіктен
жабдықталған А ақырсыз автоматты айтады.
Тьюринг машинасы соңғы автоматтандырудың жай моделі болып табылады.
Қарастырайық, Тьюринг  машинасы мен жай модельдік автоматтың  айырмашылығын.

      Жай автомат ішкі құрлысына қарай күрделі емес  және  ол  екі  лента
арқылы жұмыс атқарады: енгізу және шығару. Жай автомат такт бойынша жұмыс
істейді.  Әрбір  такт  енгізу  символдар  көмегімен  лентаға   енгізілген
ұяшықтарды санайды, және кейбір символдарды алфавит бойынша тереді.
Функционалдық  автоматты  бейнелеуді  оның  программасы  ретінде  санауға
блады: онда 4 – тік санау жүйесі қолданылады < s, a, p, y>  -  бұл  өткен
қалып, а – келесі енгізілген сигнал, р – келесі қалып және  у  –  кезекті
шығару сигналы.  Соңғы  автомат  программасы  аргуметерді  санайды,  және
функцияның нәтижесін шығарады: S*X – S*Y







               Соңғы автомат пен Тьюринг машинасын салыстыру.

СОҢҒЫ АВТОМАТ                                     ТЬЮРИНГ МАШИНАСЫ

Енгізу лентасы



                                 Басыныңың
                                  Басының қозғалысы
                 қозғалысы









Шығару лентасы                                             MT = ( S, X,
Y,
А = (S,X, Y, O)                                                Г = ( L,
R, H)
&: S*X            S*Y                                          &: S*X
       S*Y*Г
Программа:                                                  Программа
1. (s, a)           (p, y)                                        1. ( s,
a)               (p, y, l )
2. (q, b)              (s, z)                                      2. (q,
b )             (s, z, R )

      Тьюринг  өзінің  құрылғысын  енгізуде   ең   элементар   операциялық
процесстерді модельдеді. Адамның соңғы есінде қалыптың ең  соңғы  жүйесін
көрсетуге болады. Ақпаратты шығару және  оны  алгоритмге  қосу  символдар
тізбегі арқылы беріледі.
       Бұл информация сөздікте сөз түрінде берілген алгоритмді  орындауда
адам  есептеуіш  қосымша  жадыны  қолданады,   ал   ақпараттарды   жазуда
символдардықолданады. Адам есептегенде бұрын  жазылған  ақпаратқа  қайтып
келүі мүмкін және кейбір ақпаратты өшіріп тастауына болады.  Осыған  орай
элементар  операциялық  алгоритмдерді  орындауда  символдардыжазуға  және
өшіруге болады.
      Тьюрингтің айтуы  бойынша  формальдық  модельдің  соңғы  автоматтан
айырмашылығы ол – 2 аспект бойынша орындалады.
   1. Ол шексіз жұмыс лентасын қамтамасыз  етеді,  онымен  ол  символдарды
      қайда жазуды және оқуды біледі.
   2.  Жазудың басы онымен ол жұмыс лентасында кез – келген жаққа қозғалуы
      мүмкін.
       Тьюринг  машинасы  такт  бойынша  жұмыс  атқарады.  Әрбір  такта  ол
символдарды оқиды және жұмыс лентасында  ұяшықтарды  құрады.  Функционалдау
бейнесін, оның  программасы  ретінде  санауға  блоады.  Ол  бестік  жиынмен
беріледі. ұндағы: S,A,P және У – сол мағынаны береді,  ол  Д
жұмыс лентасының басын қозғалтуды қамтамасыз етеді. Ол 3 мағынада айтылады.
L – солға, R- оңға, және Н  –  орында  қалу.  Екінші  сөзбен  айтқанда  бұл
программа соңғы бестің тізбегі. Тьюринг машинасы бірінші соңғы  жұмыстық  Х
алфавитін емденеді, онда енгізу және шығару символы  ол  лентада  теріледі,
машина келесі такт бойынша оқиды. Ыңғайына қарай Х элементі бос символдарды
құрайды.
     Қарастырайық: ТЬЮРИНГ машинасы қалай жұмыс істеитінін.
     Тьюринг машинасының  конфигурациясын  оның  өткен  қалпы  деп  атайды.
Программаны атқаруда тактта конфигурация өзгереді.
     Тьюринг машинасының тоқтаған кезінде енгізу тізбегінде өңдеу  нәтижесі
шығады. Осыған орай программа автомвтты символдық  тізбек  болып  табылады.
Тьюринг машинасы көптеген тізбектерді түсіндіруіде мүмкін. Бұл  программада
арнаиы қалыптар беріледі  немесе «!»  және  программа  түсіндіруші  ретінде
берілсе енгізу лентасы бос болады.
     Тьюринг машинасы  тоқтаған  кезде  қалып  өзгереді  және  ақпаратжұмыс
лентасында енгізу ақпаратымен өңделеді.
                      Тьюринг машиналарының қасиеттері.
     Тьюринг машиналарының бірнеше қасиеттерін қарастырайық.
Теорема. Әрбір Тьюринг машиналарына эквиваленция орындалу керек.
Дәлелдеуі:  Тьюринг  машинасының   шығаруында    эквиваленттік   ережелер
орындалады.



 Теорема. Әрбір Тьюринг машинасына орта шексіз лента эквиваленциясы
 орындалады.
    Дәлелдеуі: Бұл теорема конструктивтік, біз оған алгоритм берейік  .  Ол
Тьюринг машинасы  бойынша  құрылады.  1-ден  жұмыс  летентасында  ұяшықтарды
нөмірлейік



    Содан кейін ұяшыққа «*» символын берейік
    Тьюринг машинасын қарастыру
    Тьюринг машинасын қарастырудың сұрақтарын қарастырайық. Қазіргі кездегі
копьютерлерде шексіз аналогтар  берілген.  Олар  Тьюринг  машинасының  жұмыс
лентасында орналасқан. Ол бес команда арқылы орындалады.


    |Команда              |түсіндірмесі                                        |
|Қозғалу (солға, оңға)|Басын 1 – жақ лентаға оңға немесе солға қозғалту.   |
|Көшу, Р              |Сөзсіз р нөмерімен с командасына өту                |
|Егер s, p,           |Шартты өту Р нөмерімен С командасына , егер ұяшықта |
|                     |S символы блоса.                                    |
|Басу, S              |S символының ұяшықта басылуы.                       |
|тоқтау               |тоқтату                                             |


     Мысалы Тьюринг машинасының программасының басы мына түрлерді ұсынады.
00:  егер  а  ,  0,2;  /*  егер  бастапқы  қалыпта  а  символы  оқылса  онда
02*/командасына
01:  өту, 0,5; /* егер жоқ болса басқа символ*/
02: басу, а
03: жылжыту, солға;
04: көшу, 00; /*бастапқы қалыпқа көшу*/
05:  егер,  в  07;  /*  егер  бастапқы  қалыпта  в  символы  оқылса  ,  онда
07*/командасына
06: көшу , /* егер жоқ болса басқа символға */
07: басу, в;
08: қозғалту солға;
09:.........
      Бұл  мысалдан  келесі  нәтижені  шығаруға  болады.  Автоматты  есептеу
құрылғысы кез келген алгоритмді орындай алады.  Тьюринг  машинасының  енгізу
лентасының шексіз аналогы  ретінде  5  операция  орындалады.  Оның  мағынасы
универсалды есептеу машинасы болып табылады.
      Егер Тьюринг машинасы шексіз лентада жұмыс атқарса,  онда  универсалды
Тьюринг машинсы  оның жұмысын көшіріп алуы мүмкін.
Универсалды  Тьюринг  машинасын  қарастыру   оқырманға   жаттығулар   арқылы
беріледі.
      2. Бір қалыпты өрнек бойынша детерминант емес шеткі автомат құру.
      Детерминант емес шекті автоматтар – есептеу  теориясында  қолданылатын
модель.

      Жай шеткі автоматтар.

      Шеткі автоматтардың үш  түрі  болады.  Олар:  Мур  шеткі  автоматтары,
Милдің шеткі автоматтар және жай шеткі автоматтар.
   Сонымен, детерминант шеткі автомат деп келесі параметрге  сәйкес  келетін
құрылғы болады:
    ▪ Q – мағынаның көптік шеткісі.
    ▪ Σ – кіру символдарының көптік шеткісі.
    ▪ δ – өту функциясы. Аргументтер –  күй  –  жағдай  және  кіру  символы,
      күй - жағдай – нәтижесі.
    ▪ q0 – бастапқы күй - жағдайы, Q да болады.
    ▪ F – жиын күй – жағдайының кіру рұқсаты, Q жиын асты болады.
 Келесі түрде құрылған:
    ▪  q0  мағынасында автомат жұмыс істей бастайды..
    ▪ Егер автомат qi, мағынасында болса, ал кіруге b  кірсе,  онда  автомат
      δ(qi, b) мағынасына өтеді.
      Детерминант  шеткі  автоматтардың  жұмысы  символдар  бауларын  айырып
тануда болады, Σ  жиынына  жататын.  Егер,  бауды  өңдегенде,  автомат  кіру
рұқсатындағы күй- жағдайда болса, онда бау  кіру  рұқсаты  болады,  ал  егер
олай болмаса, онда орындалмайды. Сайып  келгенде,  ДША  кейбір  тілге  сұрау
қояды – онымен рұқсат етілген бау жиыны, бұл  тілдің  алфавиті  болады  –  Σ
жиыны.
|        ЕСКЕРТУ                                                           |
|Бұл шеткі автоматтардың анықтамасы есептеулердің теориясында қолданылады. |
|Мур және Миль автоматтары негізінде цифрлық аппаратты жобалауда           |
|қолданылады.                                                              |


      Көлденеңнен кіру алфамитінің символдары алып қойылған, тігінен – қалып
- күй, бастапқы қалып күй бағыттауышпен белгіленген, кіруге рұқсат  алғандар
– жұлдызшалармен. Бйнелеудің бұл тәсілі аса көрнекті  емес,  және  тек  қана
мысал ретінде көрсетілген.

      Детерминант емеске келтірейік.

      Детерминант  емес  шеткі  автоматты  анықтау,   жоғарыда   көрсетілген
детерминант шеткі автоматты анықтауға ұқсас  болады,  тек  екі  айырмашылығы
болады:
    ▪  δ  –  өту  функциясы.  Аргументтер  –  мағына  және   кіру   символы,
      нәтижесінде –  мағынаның көптігі (бос – болуы мүмкін).
    ▪ Егер автомат qi   жағдайында болса,ал  кіруге  b  символы  енгізіледі,
      онда автомат δ(qi, b) жиын мағынасының жағдайына өтеді.  Егер  автомат
      жиын {qi}, жағдайында болса,  онда ол жиын жағдайға өтеді.
     Детерминант емес  шеткі  автомат  символ  тізбегін  анықтайды,  тізбек
кіруге рұқсат алған  деп  есептеледі,  егер  оны  өңдегеннен  кейін  автомат
болған жиын күй – жағдайының құрамында бірақ бір кіру рұқсаты болады.  Сайып
келгенде, сонымен қатар ДЕСА кейбір тілге сұрау қояды.
 2 – ші суретте жай детерминант емес шеткі автомат көрсетілген, 0  ден  және
1 тізіміне рұқсат беретін бау көрсетілген және ол 00 аяқталады.
      Тура осы автомат кесте түрінде:
|   |  |0      |1   |
|-> |q0|{q0,   |{q0}|
|   |  |q1}    |    |
|   |q1|{q2}   |Ø   |
|*  |q2|Ø      |Ø   |


              Кесте 2. Тура осы детерминант емес шеткі автомат.
Оның жұмысын қарастырайық.
Мысалға, автомат кірісіне «100100» тізбек келіп тұрсын делік.


|Дейін     |Кіру |Суреттелуі                                     |Кейін    |
|          |     |Автомат {q0} жағдайындағы жиынында жұмыс істей |{q0}     |
|          |     |бастайды.                                      |         |
|{q0}      |1    |q0   күй- жағдайынан 1 символына тек бір ғана  |{q0}     |
|          |     |өту болады, ал q0 да.                          |         |
|{q0}      |0    | q0  күй жағдайынан 0 символына тек екі өту    |{q0, q1} |
|          |     |болады. q0 ге және q1  ге.                     |         |
|{q0, q1}  |0    | q0 күй жағдайынан 0 символына екі өту болады, |{q0,q1,q2|
|          |     |q0   ге және q1ге q1 күй – жағдайынан – бір өту|}        |
|          |     |бар, q2ге. Өйткені автомат екі күй – жағдайда  |         |
|          |     |орналасқандықтан, жиындар қосылады.            |         |
|{q0, q1,  |1    |Автомат 3 күй – жағдайда орналасқан, бірақ q1  |{q0}     |
|q2}       |     |дан және q2 ден 1 символ бойынша өтулер жоқ.   |         |
|          |     |Нәтижесінде тек q0 қалады.                     |         |
|{q0}      |0    |Т с.с.                                         |{q0, q1} |
|{q0, q1}  |0    |Т с.с. Дәл осылай алынған жиын қалып – күйінде |{q0,q1,q2|
|          |     |q2 – кіру күй – жағдайы бар, автомат тізбекті  |}        |
|          |     |мақұлдайды.                                    |         |


                     Кесте 3.  100100 тізімінің өңделуі.

Бақылау сұрақтары:

1. Тюринг машинасы, фон Нейман автоматы
2.  Детерминант  емес  шекті   автомат   бойынша   детерминант   автоматының
   айырмашылығы?
                         Дәріс №6  ЛЕКСИКАЛЫҚ ТАЛДАУ
Жоспары:
 1. Белгілерді оқу. Лексикалық анализдерді программалау.
 2. LEX лексикалық анализаторының құрылымы.

1. Лексикалық талдау.
      Программаның берілуі текстік шығаруда компилятор жұмысына өте  ыңғайлы
сондықтан программа анализінің уақытында кезегі пайда болады немесе  лексема
пайда  болады.  Лексемалардың   көпшілігі   лексикалық   класстарға   өтеді.
Лексемалар  бір   лексикалық   класқа   көшеді.   Егер   олар   синтаксистік
анализаторда   болса.   Мысалы:   синтаксистік   анализ   уақытында   барлық
идентификаторлардыбірдей деп санауға болады. Лексикалық  класстардың  көлемі
өте алуан түрлі.  Мысалы:  лексикалық  класс  идентификатордан  өте  шексіз.
Басқа жағынан, лексикалық класстар бар, олар  бір  ғана  лексемадан  тұрады.
Мысалы көпшілік ішінде if лексемасынан тұрады.
      Программалау тілінің көпшілігінде келесі лексикалық класстар бар:
* негізгі сөздер
 *идентификаторлар
*жолдық интегралдар
*сандық константтар
      Барлық көпшілік  ішіне  кейбір  сандар  беріледі.  Олардың  лексикалық
класстың идентификаторы немесе лексикалық класс деп аталады.
Мысалы: const pi = 3.1416.
    Паскаль тілінің операиторын қарастырайық. Бұл оператор келесі
лексемалардан тұрады:
    - Const – лексикалық класс, const LS
    - Pi    лексикалық класс Identifier LS
    - =-    лексикалық класс Relation LS
    - 3.1416-  блексикалық класс Number LS
    - ;  - лексикалық класс Semicolon LS
               Программалау тілінің әртүрлі лексикалық талдауы.
      Кейбір тілдердің ерекшеліктері бар, олар лексикалық талдауды  құрайды.
Мұндай тілдер Фортран және Кобол, тілдері конструкциясының  алмасуын  енгізу
жолында позициясы  болады.  Мысалы:  жолды  ауыстырғанда  Коболда  арнайы  6
колонколы символдар қолданылады. Әйтпесе келесі жол дұрыс болмайды.  Қазіргі
кездегі тілдердің негізгі  тенденциясы  программалауда  текстік  программада
еркін алмасады. Бір тілден екіншісіне  тілдегі символдарды  қолдану  ережесі
пайда болады. Кейбір тілдерде,
 Алгол 98 немесе Фортран пробелдері жолдық интегралдарға байланысты.
      Мысалы: ДО5= 1,25 операторында ДО  кілті  сөздің  10-  дық  нүктесінен
анықтауға болады.  Басқа  жағынан,  ДО  5=1,25  операторында  біз  лексеманы
табамыз.
      Кілтті сөз ДО нұсқа5, идентификатор 1, оператор =,  констант  1,  үтір
және констант 25. Сондықтан, үтірді кездестіргенше, бізДО  –  кілтті  сөздің
деңгейін береді. Бұл жағдайды шешу үшін, FORTRAN 77 әрбір үтірде  нұсқа  мен
индекспен  ДО  операторында  орындалады.  Мұндай   үтірдің   қолданылуы   ДО
операторын анықтап береді. Қазіргі кезде прогрммалау тілдерінде  кілтті  сөз
анықталмайды. Егер кілтті сөз анықталмаса,  онда  лексикалық  талдау  кілтті
сөзді анықтайды. Шын мәнінде, нгер лексикалық талдау,  мысалы,  PL/I  келесі
операторда толық болады.
      If then  then then = else ; else; else =then;
                   Лексикалық анализатордың тағайындалуы.
      Лексикалық анализаторды қарастырғанға дейін, лексема не  екенін  біліп
алуымыз керек.
      Лексема (тілдің лексикалық бірлігі) – бұл тілдің  құрылымдық  бірлігі,
ол қарапайым тілдердің символдарынан тұрады және құрамында  басқа  тілдердің
құрылымдық бірліктері болмайды.
      Қарапайым  сөйлесу  тілінің  лексемасы  сөздер  болады.   Программалау
тілдерінің лексемасы идентификаторлар, тұрақтылар, тілдің  негізгі  сөздері,
операция белгілері және тағы басқа болады.
      Программалау тілдерінің құрамы осы тілдің синтаксисімен анықталады.
      Лексикалық анализатор (немесе сканер) – бұл компилятордың бір  бөлігі,
ол шығу программасын  оқиды  және  оны  мәтінде  кіру  тілінің  лексемасымен
белгілейді. Лексикалық анализатордың  кірісіне  шығу  программасының  мәтіні
түседі, ал шығу ақпараты компилятормен келесі өңдеуге көшеді.
      Теориялық жағынан анализатор компилятордың міндеттісі  болмайды.  Оның
барлық функциялары синтаксистік талдаудың қадамында орындалады,  өйткені  ол
толығымен кіру  тілінің  синтаксисі  регламентпен  берілген.  Сонда  бірнеше
себептер болады,  осы  себептер  негізінде  барлық  компиляторлар  құрамында
лексикалық анализ бар:
      • лексикалық анализатор шығу программасының  синтаксистік  қадамындағы
мәтінмен жұмысты жеңілдетеді және өңделетін ақпараттың өлшемін қысқартады.
      • мәтінде лексемалар талдауын  белгілеу  үшін,  қарапайым,  эффектілік
және  тоериялық  жағынан  сараптау  техникасы  жақсы  болса,   осы   уақытта
синтаксистік анализдің қадамында, шығу  тілінің  құрылымында  қиын,  күрделі
талдау алгоритмдері қолданылады.
      • құрылымы бойынша күрделі синтаксистік анализатор және шығу программа
мәтіннің арасындағы айырмашылықты сканер көрсетеді.
      Лексикалық анализатормен орындалатын функциялар және  лексема  құрамы,
оларды  ол  шығу  программасының  мәтінінде  белгілейді,   олар   компилятор
версиясына байланысты өзгере  алады.  Онда  қандай  функцияларды  лексикалық
анализатор орындайды және қандай лексема типтерін  ол  шығыс  программасында
белгілеуі керек, ал қандай типтерді синтаксистік талдаудың қадамына,  осының
бәрін компиляторды өңдеуші шешеді. Негізінен лексикалық анализаторлар  шығыс
программасының айтылуынан ерекшеліктерді орындайды. Сонымен қатар  табуляция
символдарының  және  жол  аударуларының,   сонымен   қатар   келесі   типтер
лексемалар   символдарының:    идентификаторлар,    сандық    және    сандық
тұрақтылардың, негізгі кіру тілінің  сөздерін,  операция  белгілерінің  және
бөлгіштердің ерекшеліктерін орындайды.
      Қарапайым түрде лексикалық және синтаксистік  анализдер  компилятормен
орындала алады. Бірақ көптеген программалау тілдеріне, лексикалық  анализдің
қадамына ақпарат жеткіліксіз болуы мүмкін. Осындай жағдайдың  мысалы  болып,
FORTRAN тіліндегі оператор программасы бола алады. Егер мәтін бойынша DO  10
I=1 оператордың типін анықтауға болмайды.
      Басқа тағы мысал бола алатын С тілінің операторы. Оның  сыртқы  пішіні
мынадай болады: k = i+++++j; Бұл оператордың тек бір ғана түсіндірмесі  бар:
k = i++ + ++j; Оның лексикалық анализаторын  табу  үшін,  барлық  операторды
аяғына дейін қарап шығу керек. Қате  нұсқалары  тек  семантикалық  анализдің
қадамында байқалуы мүмкін. (Мысалы,  k  =  (i++)+++j;  нұсқасы  синтаксистік
жағынан дұрыс болады, бірақ С тілінің семантикасымен рұқсат етілмейді).  Бұл
конструкция дұрыс болу үшін, оған кіретін және операндалар бейнеленуі  керек
және тілінің операциясына рұқсат беру керек.
      Сондықтан  көптеген  компиляторларда  лексикалық   және   синтаксистік
анализаторлар – бұл бір – бірімен байланысты бөліктер.
      Лексикалық және синтаксистік анализаторлар  арасындағы  байланыстардың
екі түрлі әдісі бар:
      • жүйелік
      • параллельдік
      Жүйелік нұсқада лексикалық  анализатор  шығыс  программасының  мәтінін
басынан,  аяғына  дейін  қарастырады.  Сонымен   қатар   бұл   мәліметтердің
жиынтығын лексемалар кестесі деп атайды. Лексема кестесінде  тілдің  негізгі
сөздері, идентификаторлар және тұрақтылар, ереже бойынша, айтылған  кодтарға
өзгертіледі. Сонымен қатар идентификаторлар және  тұрақтылар  үшін,  лексема
кестелерінің   және   идентификаторлар   кестелерінің   арасында    байланыс
орнатылады.
      Бұл нұсқада лексикалық анализатор барлық шығыс программасының  мәтінін
бір рет басынан  аяғына  дейін  қарастырады.  Лексемалар  кестесі  толығымен
құрылады  және  оған  компилятор  қайта  оралмайды.  Барлық  келесі  өңдеуді
компиляцияның келесі фазалары орындайды.
      Параллельдік нұсқада шығу мәтінінің лексикалық талдауы  қадам  бойынша
орындалады,  сонымен  синтаксистік  анализатор,  келесі  тілдің  құрамындағы
талдауды орындап, сканерге келесі лексема туралы хабарлайды.  Сонымен  қатар
ол қандай лексеманы күту керектігін  хабарлайды.  Талдау  барысында  қателік
болса “қайта қайтару” орындалуы  мүмкін,  мәтіннің  талдауын  басқа  негізде
орындау үшін. Синтаксистік анализатор келесі  тіл  құрамының  конструкциялық
талдауын  орындаса,  лексикалық  анализатор  табылған  лексемаларды  лексема
кестесіне және идентификатор кестесіне орналастырып, талдауды сол  тәртіппен
жалғастырады. Параллельдік нұсқауда берілген  синтаксистік  және  лексикалық
анализаторлардың жұмысы 1.1 кестеде көрсетілген.
      ... Begin
         For  i: = 1 to N do
             Fg : = fg *0.5
      ...


















       Сурет. Лексикалық және синтаксистік анализатордың параллельдік
                                  байланысы
               2. Лексикалық анализатордың құрылу принциптері.
      Лексикалық   анализатор   тұрақтылар   және    идентификатор    сияқты
объектілермен қарым қатынаста болады. Тұрақтылар және идентификаторлар  тілі
–  көп  жағдайда  қайталанбас  болады  және  қайталанбас   грамматикаларының
көмегімен жазылуы мүмкін. Қайталанбас тілдердің анықтамасы соңғы  автоматтар
болады. Мынадай ережелер болады, осы ережелер арқылы кез келген  қайталанбас
грамматика үшін детерминировалданған  емес  соңғы  автомат  құрылуы  мүмкін.
Әрбір кіру тізбегінің тілі үшін соңғы автомат сұраққа жауап қайтарады.
      Сканер келесі іс - әрекеттерді орындау керек:
      • лексеманың шекарасын  толық  анықтауы  керек,  олар  шығу  мәтінінде
берілмеген;
      • ақпаратты сақтау үшін, белгілі бір іс - әрекеттерді орындауы керек.
                     Лексемалардың шекараларын анықтау.
      Лексемалардың шекараларын белгілеу қателіктер туғызады.  Өйткені  кіру
программасының мәтінінде лексемалар арнайы  символдармен  шектелмеген.  Егер
сканер  –  программасының  терминында  айтатын  болсақ,  онда  лексемалардың
шекараларын  анықтау  –  бұл  дегеніміз  кіру  символдарының  жалпы  ағымына
кіретін жолдардың белгіленуі. Жалпы түрде  бұл  мақсат  қиын  болуы  мүмкін,
онда сканердің параллельдік жұмысы керек болды  (лексикалық  анализатордың),
синтаксистік талдаудың және семантикалық талдаудың да  жұмысы  керек  болды.
Көптеген   кіру   тілдеріне   лексема   шекаралары   берілген    терминалдық
символдармен  шешіледі.  Бұл  символдар  –  пробелдер,  операция  белгілері,
коментарий символдары, сонымен қатар бөлінділер  (үтірлер,  нүктелі  үтірлер
және тағы басқа). Бұндай  терминалдық  смиволдардың  жиынтығы  кіру  тілінің
синтаксисіне байланысты болады.
      Маңыздысы, операция белгілері лексемалар болады және  оларды  жіберуге
болмайды.
      Ереже бойынша сканерлер келесі  принцип  бойынша  жүзеге  асады:  кіру
ағымы мәтінінің кезекті символы  лексемаға  әрдайым  қосылады.  Егер  символ
лексемаға қосылмаса, онда ол лексеманың шекарасы  және  келесі  лексемасының
басы болып табылады. (егер символ бос  бөлгіш  бомаса  –  пробел,  табуляция
символы немесе жолдың ауыстыруы). Бұндай  принцип  лексема  шекарасын  дұрыс
анықтауға мүмкіндік бермейді.
      Мысалы,  жоғарыда  көрсетілген  С  тілінің  жолы  k  =  i   +++++   j;
лексемаларға келесі түрде бөлінеді:
      K = I ++ ++ +j; - және бұл бөлу  дұрыс  емес,  компилятор  қолданушыға
қате туралы хабарлама жібереді.
      Лексикалық анализатор түзу жұмыс істейді, егер берілген шығу мәтінінде
(шығу тілінің символдар тізбегіне) және ағымдағы  көрсеткіш  онда  лексеманы
анықтайды,  лексикалық  анализатордың  тура  жұмысында   оның   синтаксистік
танытумен байланыста болуы мүмкін.
      Лексикалық анализатор тура жұмыс істемейді, берілген түрдің  лексемасы
және көрсеткіштің ағымдағы түрінде ол  көрсеткіштің  оң  жағында  орналасқан
лексеманы анықтайды, және егер ол талап  ететін  түрге  сәйкес  келсе,  онда
көрсеткішті мәтін белгінің оң жағына  жылжытады.  Тура  нұсқасына  қарағанда
берілген лексикалық анализаторға  кірген  кезде  күтудегі  лексеманың  типін
беру  керек.  Сондықтан  лексикалық  анализдің  тура  емес  жұмысында   оның
синтаксистік танытумен параллельдік байланыс болуы керек.
                      Лексикалық анализатордың құрылуы.
      Енді   сканерлердің   практикалық   орындалуын   қарастыруға   болады:
Компилятордың  құрамында  бір  емес,  бірнеше  лексикалық  анализатор  болуы
мүмкін. Олардың әрқайсысы анықталған лексеманың типін  тексеру  және  таңдау
үшін арналған.
      Сонымен қарапайым лексикалық анализатордың компиляторда жұмысын келесі
түрде бейнелеуге болады:
      •  кіру  ағымынан  бір  символ  таңдалады,  ол  қандай   сканер   іске
қосылатынына байланысты (символ қате болуы мүмкін);
      •  жіберілген сканер негізгі тілде программаның кіру символының ағымын
қарастырады, келесі символды  анықтағанша  талап  ететін  лексемаға  кіретін
символдарды белгілейді, ол лексеманы шектеуі керек.
      • белгіленген лексема туралы  анықтаманың  табысты  анықталуы  лексема
кестелерін және  идентификаторлар  кестесіне  енгізіледі,  алгоритм  бірінші
қадамға қайтады және кіру  ағымының  символдарын  қарастыруға  жалғастырады.
Жалғасы сканерлер тоқталған жерден басталады;
      • егер танылу дұрыс  орындалмаса  қате  туралы  хабарлама  келеді,  ал
қалғаны сканердің жұмысына  байланысты  болады  –  оның  жұмысы  тоқтатылады
немесе келесі лексеманы орындайды. (алгоритмнің бірінші қадамына  өту  жүріп
жатыр).
     Лексикалық анализатордың құрылу автоматизациясы (LEX программасы).
      Лексикалық танушылар (сканерлер) – бұл  компилятордың  маңызды  бөлігі
ғана емес. Сонымен қатар лексикалық анализ басқа да облыстарда  қолданылады,
мысалға компьютерде мәтіндік  ақпаратты  өңдеумен  байланысты.  Ең  алдымен,
лексикалық анализ барлық командалық процессорларды  және  утилиттерді  талап
етеді.  Сонымен  қатар,  енгізілу  мәтінінің  лексикалық   анализін   барлық
мәтіндік редакторлар және мәтіндік процессорлар қолданады.
      Лексикалық анализаторды құруға  арналған  көптеген  программалар  бар.
Олардың арасынан ең танымалысы LEX программасы.
      LEX  –  сканерлерді  генерациялауға  арналған   прграмма   (лексикалық
анализатордың).
      LEX программасының нәтижесі, программалау тілінің кейбіреуінде болады,
ол ену файлын оқиды және одан берілген айтылуларды белгілеп алады.
      LEX программасының тарихы UNIX операциялық жүйесінің  тарихымен  тығыз
байланыста. Бұл программа  OC  UNIX  утилиттердің  құрамында  пайда  болады,
қазіргі уақытта осы типтің әрбіріне кіреді.
      Қазіргі кезде кез келген OC үшін LEX программасының  көптеген  түрлері
бар.
      LEX тің жұмыс  принципі  өте  жеңіл:  оған  енгізілуге  мәтіндік  файл
беріледі,  ал  шығу  кезінде  сканер  программасының  шығу  мәтінімен   файл
алынады. Сканердің шығу программасының  мәтіні  кез  келген  кітапханалардың
кез  келген  функцияларымен  толықтырылуы  мүмкін.  Осындай   жағдайда   LEX
лексикалық анализатордың өңделуін жеңілдетеді.



Бақылау сұрақтары:

 1. Лексикалық анализдерді программалау жолдары қандай?


 2. LEX лексикалық анализаторының құрылымын атаңыз?









                        Дәріс №7  СИНТАКСИСТІК ТАЛДАУ
Жоспары:
1. Шығарылған синтаксистік талдау.
2. LL(1) - грамматикасы.
3. Рекурсивтік түсу.
4. КС-грамматикасының бейнеленуі.
5. Сол жақ рекурсияның жойылуы. Сол жақ факторизация.
6. Енгізілген синтаксистік талдау. LL(1)-анализаторы.
7.  Синтаксистік  талдаудың  құру  және  қолдану  кестесі.   LR   талдауының
   ерекшелігі және нұсқасы.

   1. Шығарылған синтаксистік талдау. LL(1) - грамматикасы.

      Синтаксистік талдау – бұл оның, ол берілген  мағынасына  кейбір  ерте
берілген  синтаксистік   ережемен  сәйкес   келе  ме?  Мысалы,  синтаксистік
талдау мағынасы компиляторды  жүзеге асырады.  Егер  рограмма   синтаксистік
тілге  сәйкес келмесе, компилятор қатені көрсетеді.
      Берілген  бөлімде  мысал ретінде  талдау және  арифметикалық   есептеу
мағынасын  аламыз.  Қарапайым  мысалдан  күрделі  мысалға  өте  отырып,  бір
толыққанды   калькулятор    құраймыз.   Берілген    арифметикалық    өрнекті
операцияны  санай  алатын  және  м  ауыспалы   функцияны   қолдана   отырып,
жақша  арқылы  жүзеге асырып  өзгерте  алатын.
      Синтаксистік талдау – бұл процесс, онда лексем таблицасы   орнатылады.
Ол құрылымды шартты қамтамассыз етеді.  Формуляцияланған  және  синтаксистік
тілде  анықалғаны анық.
      Синтаксистік тілдің негізгі тапсырмасы – программа құрылымын   талдау.
Ереже   сияқты  құрылым   ішінде   ағаш   түсіндіріледі,  контексті    еркін
грамматикалық  тілге сәйкес келетін. Қазіргі  уақытта көбінесе  LL(1)-талдау
және   LR(1)-талдау  және  оның  варианты  қлданылады.  Рекурсивті    жіберу
көбінесе  синтаксистік анализаторды  қолмен  программалағанда   қолданылады,
LR(1)-автоматты    жүйе    синтаксистік    анализаторда    қолдана    отырып
орындайды.
        Синтаксистік   талдаудың   нәтижесі   синтаксистік   ағаш    таблица
объектісіне  жіберу  болып  табылады.  Синтаксистік   талдаудың   процесінде
қателар  табылады,  программа  құрылымымен  байланысты.
       Контекстік  тілдің   этаптары   программа   бөліктеріне   тәуелділігі
анықталады, контексті  еркін  синтаксистік  жазылған.
      Бұл  негізхгі байланыс  «суреттеу - қолдану», объектіге  анализ  типі,
облысты  талдау түрлері, параиетрлер сәйкестігі, белгілер және тағы   басқа.
Контексті  талдау  объект  таблицасы    нәтижесінде    объектіні    суреттеу
ақпаратты  толықтырады.
       Ассемблер   таблицасының   құрылымы   жоғарғы    жылдамдығые    іздеу
қамтамассыз  ету  арқылы  таңдалады.   Команда   таблицасы   және   директив
әрқашанда  мәлімет  қоры  болып  табылады.  Олар   бір   рет  толтырылады  –
Ассемблерді  өңдегенде,  одан  кейін  өзгертілмеген  болып  қалады.
      Бұл  таблицалар   тура   хеширлеу   функциясын   құрады,   мнемониканы
таблицадағы  адрес  жазуы  жүзеге  асырады.
      Тырысы мағынасын және функцияны  хеширлеуді  таңдауға  ие.   Таблицада
коллизиялардың болмауы. Толтырылған таблицалар бір рет жүзеге асырылады,  ал
өту қайта-қайта шығару арқылы,  бұл  шығындар  өтеледі.
      Символ таблицасы динамикалы қалыптасады. 1-өткелдегі жұмыс   нәтижесі.
Сол  таблицадағы  іздеу 1-деңгей  өткелде  жүзеге  асады.
      Бұл  таблицаның құрылымы тура өту таблицасы сияқты дұрыс емес. Сондай-
ақ  коллизиялардың  дұрыс  еместігі.  Сондықтан  символ   таблицадағы  іздеу
дихотомиялық болуы мүмкін, бұл үшін таблица  реттелген  болуы  керек.
       Жаңа  аттар  таблицаға   қосылады   «бір-бірлеп»,   және   әрбіруінің
қосылғаннан кейін таблицфның реттелуі қалпына келтірілуі керек,   алгоритмді
 сорттау  қолдану, шығушы  реттелген  мәліметтер.
      Бұл түсінік басқа таблицаға қатысы бар,  жұмыс  барысында  Ассемблерде
үлкен мүлшердегі таблица және  сыртқы  жадыға   орналастыру   және   күрделі
әдістер оның  организацясын  қолданылады. Мысалы,  -В+ ағаш.


                    2.  LL (1) грамматикалық анықтамасы.
      Бұл идеяның  логикалық жалғасуы, рекурсивтік  көшуге байланысты  ,  ол
енгізу тізбегінде  бірнеше  символдарды  қолданумен  қатар  ,  альтернативті
біреуін  ғана  қолданумен  түсіндіріледі.  Егерде  альтернативті  алгоритмді
таңдайтын болсақ, онда ереже бойынша, грамматикалық әртүрлі  тізбектері  бар
екендігін көреміз. Сонымен  қатар  грамматикалар  классы  пайда  болды,  бұл
негізгі  принципке  арналған-  альтернативті  бір  тізбекті  таңдасақ,  онда
көршілік  мүмкіндіктердің  негізінде  бірнеше  кезекті  тізбек   символдарын
кездестіреміз. Бұл тізбекті  біз LL (1) грамматикасы деп атаймыз.   Шынымен,
жұмыс  алгоритмі  бұларға  өте  оңай  келмейді,   қарастырылған   жоғарыдағы
алгоритм рекурсивті өтуге сәйкес келеді.
      Грамматика LL(k),k>0 деген  қасиетпен  иемденген.  Егер  әрбір  шығару
қадамы  бірмағыналы,   кезектіальтернативті   МП-   автоматында   жеткілікті
стектегі  символдармен  берілсе,  онда  бірінші  қарастырылған   k   символы
ағымдағы қалыптан енгізу тізбегіндегі символдарға беріледі.
            Бұл грамматика LL(k) грамматикасы деп  аталады,  егер  ол  LL(k)
қасиетімен k>0 болса.
      LL (1) атының  өзі  анықтамалық  мағына  береді.Бірінші  литер  ‘left’
сөзінен шыққан және  мынадай  мағына  береді:  енгізу  тізбегі  символдармен
оқылады солдан оңға қарай. Екінші литер сонымен қатар ‘left’ сөзінен  шыққан
және мынадай мағына береді: жұмыс барысында  солжақтық  шығару  қолданылады.
(1)  орына  грамматика  классының  аты  бүтін  санмен  беріледі,  ол  мынаны
көрсетеді, қарастырылған  қаншама  символ  бірмағыналы  альтернативті  болуы
тиіс. Сонымен қатар LL(1) грамматикасы,LL(2) грамматикасы және т.б  класстар
да бар. Барлық LL(k) грамматикасы  k>0 болғанда  LL  грамматикасына  жатады.
Бұл грамматикалдағы енгізу тізбегіндегі алгоритмді  өңдеу,  «к»  алгоритмдік
атаумен белгіленген. Оның  орындалу  принципі   көбінесе  МП  –  автоматының
айырмашылығымен  және  әрбір  қадамның  жұмысты  к   символымен  қарастыруын
береді.
      LL(1) грамматикасына келесі қасиеттер тән:
    •  Барлық LL(1) грамматикасы, әрбір k>0 –де бірмағыналы болуы керек.
    •  LL(1) грамматикасының к-санында  анықталғаның  немесе  анықталмағаның
      қадағалайтын немесе тексеретін алгоритм  бар.  Сонымен  қатар,  айқын,
      барлық граммаикалар рекурсивтік көшіруде  белгілі- бір  әдіспен  LL(1)
      грамматикасының  ішкі классы  болып табылатындығы мәлім.  Яғни,  әрбір
      грамматика   рекурсивтік   көшуде   белгілі   –бір   әдіспен     LL(1)
      грамматикасында анықталады.
     Барлық LL(1) грамматикалары  солжақтық  шығаруда  қолданылады,  сонымен
қатар  альтернативті  алгоритмде   олар   солжақттық    рекурсияға   көшеді.
Солжақтық  рекурсия  грамматикасы   болып  LL-грамматикасы  болады.  Ізінше,
бірінші  жұмыс  болып,  LL-грамматикасының  класстары  өте  кең,  бірақ   ол
жеткіліксіз.
      Ол программалау тілдерінде  синтаксистік  конструкцияда  мүмкіндіктері
мол болады.  Белгілі, kc  –  тілінде  детерминал   LL(k)  –  грамматикасымен
беріледі. Бірақта LL-грамматикасын  қолдануға   өте  ыңғайлы.  Оны  сызықтық
характеристикамен құрылады.
                  LL (1) грамматикасының  алгоритмін өңдеу.
     LL (1) грамматикасы үшін  жұмыс алгоритмі өте  оңай.   Ол  екі  шартпен
бекітіледі, ол қадамдарды таңдауда альтернативте  тексеріледі.  Мәліметтерді
шығаруда бұл шарттарға  сәйкес символдарда беріледі және  МП  –  автоматында
есептеледі.
       Бұл шарттарды былай анықтауға болады:
         •  Альтернативті ереже бойынша А→х, егер а€FIRST(1,x)
         •  Альтернативті ереже бойынша А→λ, егер а€ Follow(1,A)
     Егер бұл екі шарттың екеуі де орындалса, онда  тізбек  МП-  автоматында
берілген тілде оқылмайды.
     LL  (1)  грамматикасындағы  шарт  қатты  болып  келеді.  Осы   көптеген
грамматикалар LL (1) грамматикасының класстары болып есептеледі. Мысалы,  ең
қарапайым грамматика G({a},{S},S) бұл шартқа сәйкес келмейді.  Кейбір  кезде
грамматиканы  құру  ережесі,   олардың   LL   (1)   грамматикасын   шығаруда
айқындалады. Мысалы жоғарыда көрсетілген грамматика G(a) түрінде  туындаған.
 Мұндай формадағы LL (1) грамматикасымен  түсіндіріледі.
     МП-автоматтың  жұмысын программалау үшін  ,  енгізу  тізбегінде  келесі
тілдік символдарды өңдеу керек. Бұларға екі ережеден беріледі. Бұл екеуі  де
терминалдық символдардан басталады. Бұл түрді λ ережесін қосып,  өзгертейік.
Нәтижесінде жаңа грамматика аламыз.
        P:
        S→TR
        R→λ|+TR|- TR
        T→EF
        F→λ|*EF|/EF
        E→S|a|b


     G-құрылған грамматикасы G шығару  грамматикасында  эквиваленцияланады.
Бұған  көз  жеткізуге  болады,  егер  λ-  ережесінің  алгоритмін  қолдансақ,
келтірілген грамматикалар G- грамматикасын береді, ол шарт бойынша  берілген
алгоритм болады.  Осыған орай біз эквивалентті  грамматиканы  аламыз,  бірақ
ол формальді әдіспен алынбаған.
     Бұл грамматика LL (1) грамматикасы болып табылады.  Бұған көз  жеткізу
үшін , FIRST және Follow көпшілігін құрайық.
     FIRST көпшілігін құру үшін, шығаруда G- грамматикасын  қолданады.  Ары
қарай алгоритмдер қарастырылады, олар формальді  түрде орналсқан.
     Бұл жағдайда  дайындықты  барлық  шығару  мәләметтерінде  формальдауға
болады және автоматтандыруға болады.
            Бұл іс-әрекеттерді компьютер көмегімен орындауға болады.
                              Рекурсивтік түсу.
      Рекурсивтік  түсу,  көптеген  әйгілі  трансляторда   қолданылады,   ол
синтаксистік талдаудың ең бірінші детерминироваланған әдісі болып  табылады.
Бұл әдістің кең қолданылуы,  ол  орындалуға  өте  жеңіл,  егер  компиляторды
жазуда   программалау   тілді    қолданады,    рекурсивтік    процедураларда
қолданылады.
      Рекурсивтік    түсудің    негізгі    әдісі,    әрбір     грамматиканың
терминалсыздығына процедура сәйкес  келеді,  ол  процедура  терминалсыздықты
тудыратын тізбекті анықтайды. Сондықтан,  МП  –  түрлендіргіштің  модельдеуі
рекурстік процедуралардың механизмімен алмасады. Жоғарғы  деңгейдегі  тілдер
қиын стектік механизмдерді қолданады, МП – автоматы  орындалуына  қарағанда.
Рекурсивтік  түсудің  әдісі  уақыт  мөлшерін   және   жадының   синтаксистік
сараптаудың әдісіне қарағанда жол береді.
      Рекурсивтік  түсудің  әдісі  кез  –  келген  LL(1)  –   грамматикасына
қолданылады, ол баламалық оң бөлшектерінің формасында жазылу керек.
      Pascal программалау тілін рекурсивтік түсу әдісінің орындалуын көрсету
үшін қолданайық. Синтаксистік  анализатордың  Recurs  Method  басты  модулі,
рекурсивтік  түсудің  әдісін  орындайтын,  процедураларды   шақырады,   кіру
тізбегі бастапқы грамматиканың символы  арқылы  жаратылуын  тексереді.  Егер
кіру тізбегі грамматикасымен  шығарылған  тілге  жатса,  онда  Access  (Кіру
рұқсаты)  процедурасы   орындалады,   әйтпесе   Error   (Қате)   процедурасы
орындалады. Осы кезде кіру тізбегі арнайы символмен аяқталуы  тиіс  –  соңғы
маркермен,  мысалы  (L).  Соңғы  маркердің  кіріспесі   қосымша   грамматика
ережесінің түрінің S’→S . қосылуына сәйкес келеді.
      Алгоритмнің жұмысын орындау үшін Next Symb функциясы  болу  керек,  ол
кіру тізбегінің символын оқиды және бұл символдың өзгергіш  Symb  символының
мағынасын  иемденеді.  Процедураларды  құрғанда  тізбектерді  анықтау  үшін,
грамматиканың  терминалсыз  символдарымен  жасалынған,   келесі   ережелерге
сүйену керек:
      Егер   ағымдағы   символмен   грамматика   ережесінің   оң   бөлігінде
терминалсыздық  болса,  оған  процедураның  шақыруы   сәйкес   келеді,   бұл
терминалсызбен жаратылған тізбекті анықтайды.
      Егер ағымдағы символмен грамматика ережесінің  оң  бөлігінде  терминал
болса, оған  шартты  оператор  сәйкес  келеді,  терминалдың  сәйкес  келуіне
тексеруді  жүзеге  асыратын   грамматиканың   ережелерінен   және   ағымдағы
символдың мағынасы Symb өзгергіштен. Егер символдар сәйкес келсе, онда  Next
Symb процедурасының шақыруы орындалады, болмаған  жағдайда  келесі  баламаға
өту жүзеге асады.  Егер  барлық  баламалар  таусылса,  Error  процедурасының
шақыруы орындалады.
      Ереженің бос оң бөлімдері процедураның соңына өту талапқа сай  болады.
Мысалға  G1   грамматикасының   рекурсивтік   түсу   әдісімен   синтаксистік
анализатордың жазылуын көрейік.
     Е→ТE’
     E’→ +TE’| ε
     T→PT’
     T’→*PT’| ε
     P→ (E) | I
      Грамматиканың ережесін тағы бір ережемен толықтырайық. S → E 1.
G1  грамматикасына  рекурсивтік  түсуді  орындауға  арналған  процедура  1.1
листингіде көрсетілген.
Листинг 1.1
Procedure       Recurs_ Method    (List_ Token : tList);
                                                      (List_  Token  –  кіру
тізбегі)
         Procedure      Proc_E;
            Begin
                  Proc_ T;
                  Proc_ E1
End   (Proc_ E);
Procedure  Proc_ E1;
        Begin
              If  Symb = ‘+’ then
              Begin
      Next Symb
               Proc_ T;
                    Proc_ E1
              End
  End    (Proc_ E1);

Procedure       Proc_ T;
        Begin
            Proc_ P;
                Proc_ T1
End    (Proc_ T);
Procedure     Proc_ T1;
    Begin
         If  Symb = ‘*’ then
          Begin
               Next Symb
               Proc_ P;
                    Proc_ T1
              End
  End    (Proc_ T1);
Procedure  Proc_ P;
    Begin
       If  Symb = ‘(’ then
          Begin
               Next Symb;
           Proc_ E;
              If  Symb = ‘)’ then
      Next Symb;
              Else
                    Error
    End
    Else
         If  Symb = ‘i’ then
                Next Symb
        Else
           Error
End   (Proc_ P)
Begin
         {анализдің басында Symb  өзгергішінің құрамында  тізбектің  бірінші
символы болады}
    Proc_E;
          If  Symb = ‘i’ then
                 Access
         Else
               Error
End (Recurs _ Method);
                 КС – грамматикасының эквиваленттік өзгеруі.
      Тәжірибеде көргендей, шығару қиындықтарын шешу тек КС – грамматикасына
анықталған шек қою арқылы ғана мүмкін.
      Дәлелденген, КС – грамматиканың эквиваленттік  проблемасы  алгоритмдік
шешілмейтін  болады.  Бірақ  КС  –   грамматиканың   пайдалы   эквиваленттік
өзгертулердің қатары  болады.  Бұл  тілдің  талдалуын  жеңілдетуге  әкеледі.
Грамматика   өзгертулерінде   мынаны   ескеру   қажет,   грамматика   тілдің
синтаксистік құрылымын анықтайды,  сондықтан  оның  кез-келген  өзгкертулері
осы құрылымның өзгеруіне әкеледі.
                       Керексіз символдардың жойылуы.
      Алгоритм  1.1  Жиынның  анықталуы,  КС  –  грамматиканың   терминалсыз
өндіретіндер символдары.
Кіру: КС – грамматика G=(N, ∑, P, S).
Шығу: Терминалсыз символдардың жиыны
Np={A| A→ + x, A ε N, x ε ∑+}
Алгоритмнің бейнеленуі:
□ Терминалсыз өндірудің рекурсивтік жиынды құру N p, N p,…; N p,…
Келесі түрде:
   1. Қою N p = Ø, i=1.
   2. Қою N p=N  p  {A| A→ ά ε P, ά ε (N  p ∑ )+}
   3. Егер N p≠ N  p , қоямыз I = i+1 және 2 –ші қадамға өту.
   4. Қою Np = N p
      Алгоритм  1.2  Жиынның  анықталуы  КС  –   грамматиканың   орындалатын
символдары.
Кіру: КС – грамматика G=(N, ∑, P, S).
Шығу: орындалатын символдардың жиыны Nr ={X| S→ άΧβ, X ε (∑  N), ά ,β  ε  (∑
N)*}
      Алгоритмнің бейнеленуі:
□ орындалатын символдардың рекурсивтік жиынын құру.
1. Қою N r = {S}, I = 1
2. Қою N r = N  r   {X | A → άΧβ ε R және A ε N   r}
3. Егер N r≠ N   қою I = i+1 және 2-ші қадамға өту.
4. Қою Nr = N r
      Алгоритм 1.3 Керексіз символдарды жою.
Кіру: КС – грамматика G=(N, ∑, P, S), L(G)≠ Ø үшін.
Шығу: КС – грамматика G=(N’,  ∑’,  P’,  S),  онда  L(G)≠  Ø  және   керексіз
символдар жоқ .
      Алгоритмнің бейнеленуі:
1.G грамматиканың  Np терминалсыз жиынын құру.
2. Қою G1= (Np,  ∑,  P1,  S),  онда  P1   P  жиынының  ережелерінен  тұрады,
құрамында тек  символдары бар.
3. N1   жиынын құру,  G1 грамматика символдарының орындалуы.
4. Қою G’ = (N ’,  ∑’,  P’,  S),  онда.  P1  жиынының  ережелерінен  тұрады,
құрамында тек Nr жиынының символдары бар.
КС  –  грамматикадағы   керексіз   символдарды   жою   үшін   1.1.және   1.2
алгоритмдерін 1.3 алгоритмнің тәртібі бойынша орындау керек.  Бұл  дегеніміз
басында өндірмейтін  терминалсыздықты  алу,  ал  содан  кейін  орындалмайтын
символдарды. Егер бұл алгоритмдердің қолданылу тәртібін өзгертсек,  онда  КС
– грамматиканың құрамында керексіз символдар болуы мүмкін.
                         Бейнеленудің грамматикасы.
      LR  (K)  –  грамматикасының  класс  тармағы  болады,  ол   бейнелеудің
грамматикасы деп аталады. Бейнелену грамматикасының  негізгі  белгісі,  олар
үшін үлгі алгоритмін құру оңай. Синтаксистік сараптаудың тәсілдері,  негізгі
осындай грамматикаларда салынған.
Синтаксистік анализдің өрлеп келе жатқан әдістерінде сентенциалдық  ағымдағы
түрде ά негізгі іздеуі орындалады,  ол  А  →  ά  грамматикасының  ережесімен
сәйкестікте терминалсыз А символына оралады. Өрлеп келе жатқан  синтаксистік
талдаудың негізгі проблемасы  терминалсыз  символдың  және  негізді  іздеуде
болады.
                       Бейнелеу қатынасының түсінігі.
      Сентенциалдық форманың тек 2 көршілес символды қарастырғанда, негіздің
соңы мен басын табу. Сентенциалдық  форма  бар  άX1X2β    онда,  X1,X2εN  ∑.
Немесе талдаудың кейбір кезеңінде X1,  символы  немесе  X2  символы,  немесе
олар бірігіп негізге кіру керек. Келесі үш оқиғаны қарастырайық:
Х1 – негіздің бөлімі, Х2 символы негізге кірмейді. Х1 символы  Х2  символына
қарағанда ертерек оралады. Бұл жағдайда айтады,  Х1  символы  Х2  символынан
бұрын болып өтеді және оны былай жазады Х1·  >X2.  Осыдан  айқындалатыны  Х1
символы – негіздің соңғы символы (негіздің соңы),  кейбір  ереженің  оң  жақ
бөлімінің соңғы символы, ал Х2 символы – терминалдық символ.
Екі Х1 және Х2 символдары негізге кіреді, бірге оралады. Әдетте  бұл  фактті
былай белгілейді Х1=Х2. Бұл жағдайда  символдар  Х1  және  Х2  грамматиканың
кейбір ережелерінің оң жақ бөліміне  кіруі  керек.  Х2  символы  –  негіздің
бөлімі, ал Х1 негізге кірмейді. Х2 символы Х1  символына  қарағанда  ертерек
орануы керек. Оны былай жазады Х1< ·Х2 . Айқынды, бұл жағдайда Х1 –  символы
ол негіздің бірінші символы (негіздің басы), бұдан кейбір  ереженің  оң  жақ
бөлігінің бірінші символы.









(<·), (=) және (·>), мына символдармен  белгіленетін  қатыстар,  бейнелеудің
қатынастары деп аталады.
      Грамматиканы ережемен қарастырайық:
    1) S → bAb                                  (3) A →  a
    2) A →  cB                                     (4) B → Aad
   Грамматика символдардың арасындағы қарым – қатынасты анықтау үшін  кейбір
сентенциалдық түрінің жиынын қарастыру керек.
   Сентенциалдық                             bcBb             bcAadb
   Түр      bab


      S     S                       S
      b     b
            b    b                A
   Синтаксистік  b     A    b
   Ағаш     c                B    d           B
      a     A    d

                                               a


   Негіз    a    cB    Aad


      cb                              c=B      a=d
   қатынас  B>b  d>b






                     Қарапайым грамматиканың белгіленуі.
   Қарапайым белгілеуге негізделген синтаксистік анализ,  άβώ  тізбегінің  3
қатысын шығаруда қолданылады. (<·), (=) және (·>) келесі түрде
   □ Егер β – негіз, онда көршілес ά   тізбек  символдарының  арасында  (<·)
   немесе (=) қатынас орындалады;
   □ ά  тізбегінің соңғы символы арасында және β  тізбегінің   1  символының
   арасында  (<·)  қатысы орындалады;
   □ негіздің көршілес символдардың арасында  (=) қатысы орындалады;
   □  β тізбегінің  соңғы символы арасында және  ώ   тізбегінің   1  символы
   арасында  (·>)қатысы орындалады;
   КС –  грамматикасы  үшін  бейнелену  қатынасы  G=(N,  ∑,  P,  S).  жиында
   анықталады. (N  ∑  { })X  (N  ∑  { ε }) келесі түрде:
   ▪ X< ▪Y,  егер P грамматика ережесінің жиынында A→αXBβ ережесі және шығуы
   бар болса B+Yγ;
   ▪ X=Y,  егер P – да  A→αXγβ  түрдегі ереже бар болса;
   ▪ X ▪>a,  егер P- да A→αβγβ түрдегі ереже бар болса  және шығу бар болса;
   ▪ < ▪Х барлықтарға арналған Х, әрбір үшін S→ +X α ;
   ▪ Y ▪>E барлықтарға арналған Y, әрбір үшін S → +α Y;


                           Сол жақ рекурсияны жою.
      Программалау тілдерінде  рекурсиямен  және  рекурсивті  алгоритмдермен
танысайық.Рекурсия-абстрактілі  ойлау  қабілетін  дамытады,әртүрлі  түрлерде
(математикада,синтаксистік   анализде,трансляцияда,көне    өңдеуде,құрылымды
мәліметтерді   өңдеуде,шахматтық   есептерде   қолданылады.)Оларды   қолдану
процесстермен жүзеге асады.Алгоритм рекурсивті болады.
Егер  ол  өз-өзімен  рекурсивті  болса,тағы  да  алгоритм   тік   рекурсивті
болады.Егер ол  өзін-өзі  орындаса,математикада  белгілі  мысалдардың  бірі-
рекурсивті алгоритм болып факториалды функция есептеледі.Бұл  анықтама  мына
түрде болады:
      F(n)=n+f(n-1), егер n>0
      F(0)=1
      Мұндағы F(n) функциясы f(n-1) функциясынан өтеді,ол f(n-2)  функциясын
анықтайды. Осыған  орай,бұл  мысалда  рекурсия  F  денгейді  құрайды.Осындай
процесс шексіз болу үшін рекурсивті анықтама айнымалыны анықтауы керек
Рекурсивтік алгоритмдерді жазуда шартты мағыналарда Маккрати формасында
қолдануға болады.Ол мынадай түрде болады:
      [b1-a1,b2-a2,…bn-1-an-1,an], bi(i=1.2…n-1) шарты мағына  береді.Шартты
айтылудың  мағынасы  солдан  оңға  қарай  шартпен  есептеледі.Ол  bi   шарты
табылмағанша,аі  мағына   береді.Маккарти   формасына   мысал   ретінде   н-
факториалын алуға болады.
      F(n)=[(n>1)-n+f(n-1),1]
      В-рекурсивтік алгоритмін қарастырайық.
Алг длинцел в
Мағынасы
Басы
   Егер n>1
Онда
    f-n+f(n-1)
Сонда
    f-1
соңы
      Программалаушы бұл жазылымды нақты реттік анықтамаға сәйкес
орындалады.
Алг длинцел faktorial
Мағынасы n
 Длинцел р,к
  Басы
      Р-1
  К үшін 2 n  1 қадамы орындалады.р-р+к
Цикл соңы
  Factorial-p
Соңы
      Рекурсивтік   функция   автоматты   түрде    локальда    обьектілермен
байланысады.  Әрқашан  рекурсивтік  алгоритм  ағымдағы  локальды   мағынамен
беріледі. Ереже облысында аттар әрекеті идентификаторда орналасады.
Басқа мысал болып рекурсивтік алгоритмдердің Евклид алгоритмлерінде жұмыс
істеуі болып табылады.
      Бұл қарапайым әдісте рекурсия терендігі мысалымызда  мағынасын береді.
Жазылымда Евклид алгоритмдік рекурсиясы мына түрде болады.
Gcd(u,v)=[(v=0)-u,gcd(v,u mod v)]
Алг длинцел gcd
Мағынасы a,b
Длинцел u,v
Басы
  u-(a) v-(b)
Егер v=0
Онда
  Gcd-u
Сонда
Gcd-gcd(v,u,mod v)
әйтпесе
соңы егер
  қайтымды болса,
соңы
алгоритмнің орналасуы
алгоритм Euclid_recursive
  алг длинцел gsd
конст one-‘----------------------------‘
длинцел  a,b
басы
   шығару two
шындыққа шығару
  шығару a,b
енгізу ch=’y’
 шығару two
егер ch=’y’
цикл-соңы
 шығару two
соңы
Қорытындылай келе Герон рекурсивтік алгоритмін  Маккарти формасында
жазайық.
Heron (a,x,[pic])=[(x-a/x)/2)<[pic]-x,heron(a,(x+a/x)/2)]
Алг зат
Мағынасы a,x
Басы
Егер [(x-a/x)+0.5] baCa
      LR-процесс жағдайы түйгенге дейін.
             +---------
             | aMBbaCa    bcdef
             +---------
      Осы ереже бойынша LR-процесс жағдайы түйгеннен кейін:
             +---------
             | aMBA       bcdef
             +---------
      ("baCa" сөзінің соңы стекте «А» ауыстырылған)
Анықтауыш. LR-процессі сәтті орындалады, егер оның соңында оқылмаған енгізу
тізбегі бос болса, ал стекта метасимвол грамматикасының басы болса.
LR-процессінің сәтті соңғы жағдайы:
       +----
       | S
       +----

Мысал: грамматиканы қарастырайық:
    S -> F
    F -> a
    F -> F+F
    F -> F*F
Осы шығарылған грамматикадағы тізбекті қарастырайық "a+a*a". Реттік
жағдайын және LR-процессінің сәтті әрекетін осы тізбекке қарастырайық.

Басты жағдай
  1.     +--
  2.     |     a+a*a
  3.     +--
      әрекет –қозғалыс.
       
  4. LR-процессінің жағдайы
  5.     +--
  6.     |a    +a*a
  7.     +--
      F -> a ережесі бойынша түйгеннің--әрекеті.
       
  8.     +--
  9.     |F    +a*a
 10.     +--
 11. әрекет –қозғалыс.

      
 12.     +---
 13.     |F+    a*a
 14.     +---
 15. әрекет –қозғалыс.
      
 16.     +---
 17.     |F+a   *a
 18.     +---
 19. F -> a ережесі бойынша түйгеннің--әрекеті.

      
 20.     +---
 21.     |F+F   *a
 22.     +---
 23. әрекет –қозғалыс.
      
 24.     +----
 25.     |F+F*   a
 26.     +----
 27. әрекет –қозғалыс
         +-----
 28.     |F+F*a
 29.     +-----
 30. F -> a ережесі бойынша түйгеннің--әрекеті.
         +-----
 31.     |F+F*F
 32.     +-----
 33. F -> F*F ережесі бойынша түйгеннің--әрекеті.
         +----
 34.     |F+F
 35.     +----
 36. F -> F+F ережесі бойынша түйгеннің--әрекеті.
         +--
 37.     |F
 38.     +--
 39. S -> F ережесі бойынша түйгеннің--әрекеті.
         +--
 40.     |S
 41.     +--
 42. LR-процессінің сәтті соңғы жағдайы.

Бақылау сұрақтары:

     1. Шығарылған синтаксистік талдауын атаңыз?
     2. LL(1) – грамматикасы қызметі қандай?
     3. Рекурсивтік түсу?
     4. КС-грамматикасының бейнеленуінің жүзеге асыру жолдарын атаңыз?
     5. Сол жақ рекурсияның жойылуы. Сол жақ факторизация?
     6. Енгізілген синтаксистік талдау. LL(1)-анализаторы?


                        Дәріс №8 СЕМАНТИКАЛЫҚ ТАЛДАУ
Жоспары:

   Тілдің контексті бос емес қасиеттері.  Символдар кестесінің  ұйымдастыру.
   Идентификатордың кестесі. Орналастыру кестесі.


   Тізімді қойылым кестесі. Орналастыру функциясы. Ағаштар кестесі.  Блоқтық
   құрылым.


                   Тілдің контексті еркін емес қасиеттері
       Текстік  редакторден  контексті   еркін   емес   тілдерді   текстілік
тапсырмалармен қарастырайық, ол анализ жасауға  рұқсат  етеді  және  процесс
олардың құрылысы болып табылады. Текстер соңғы қорытынды секілді  статикалық
емес, олардың құру технология түріндегі динамикалық болып көрінеді.
       Контексті  еркін  емес  текстілік  редактор   текстілік   редактормен
айырмашылығы олардың белгілеулері ортақ болып  келеді,  ол  тексті  дайындау
кезінде  үрдістің  құрудың  көтеріп,  жіберілген  қатерлерді  тексереді.  Ол
негізгі құрылым тіліндегі  контекстілік  қасиетті  қолданған  жағдайда,  тіл
сөзіндегі ұйымдықты қолданушы қалған жағдайда болады. Контексті  еркін  емес
редактор  тілдері  оқулық   материалдарда    информатика   бойынша   негізгі
объектілер болып,  контекстік  еркін  емес  тілдерде  құрастырылған  текстік
программалар және  олардың  фрагменттері  кезінде  пайдалы  болады.  Осындай
материалдар маңыздылығы өспелі болады,  егер  объектілер  тек  қана  текстік
программаларды ғана емес, сонымен қатар үрдісте  көрсетсе.  Дәстүрлі  оқулық
әдебиеттерінде   демонстрациялық   технологиялық   барабарлар   программалық
тапсырманы  шығару  іске  асыруға  қиынға  түседі,  егер  ол  оның   алынған
технологиясы мен бір мезетте құрылған, контексті еркін  емес  тіл  редакторы
сақталған тарихты құрылымдық мәтінде жабдықтаса.
       Эффектілік  контексті  емес  тіл   редакторы   мүмкін   болатын   сан
альтернативі  үшін  қолданылады.  Егер  альтернативте   контекстілік   санды
шамадан асыруға рұқсат етсе – ол ұйымдық болып саналады, мақсатқа жету  үшін
контексті есебінсіз мәтіндік  редактор  режиміне  көшу  керек.  Грамматикада
ережесі кең спектор альтернативін  жібергенде, дайындау  мәтіндік  контексті
еркін емес тілдер фрагментті кезінде сондай редактордан эффектіні   күтпеуге
де болады. Шекті  жағдайда  мұндай  мүмкіндіктер  дәстүрлі  дайындау  мәтіні
толығымен қандай да бір мәтінде қолданса. Бұл жағдай редакторменде ұқсас.
      Контексті еркін емес тілдер дайындау фрагменттері кезінде, өз  бетінше
символдарды тере бастайды.
      Дайындау программалық мәтінінің технологиялық барабарлары  редавкторде
псевдо  –  мәтіндік  механизмде  ұсталынады  және   мәтіннің   айналасындағы
бақылауыш механизмді болып табылады. Псевдо – мәтіндік – ол атауларды,  оның
иерарахия құру кезінде мәтіндік фрагменттің белгілеулерін анықтайтын  шығару
мәтіні.  Мәтіннің  айналасында  псевдо  –  мәтінді  толықтыру  мүмкіндіктері
қолданылады. Мәтіннің айналасыдағы мысал  программмалау  тілі  кезінде  шығу
және  кіру  параметрлері,   тапсырмаларға   және   процедураларға   шешімдер
қолданушы,   анықтаушы,   объект   қасиеттерінің   атауы   болады.    Мұндай
механизімінің  кіріспесі  қолданбалы  тапсырмаларды  шешу   автоматтың   көз
қарасын суреттелген, құрылған урдіс барабарларымен қамтамасыз етеді.
      Контексті негізгі тілдегі есеп “ойшылдық” редакторын кеңейтеді.  әрбір
мәтінде  редактор  мәтіндік  объект  анықтамасын   құрайды   және   берілегн
объектілер.  Кіріспе  сервистік  процедурада  алдын-ала   контексті   анализ
дайындау мәтіндік  программма  кезінде  қателерден  алшақ  жүрді,  мәлімдеме
объектілері қайталау,  көріну  облыстарындағы  объектілер  секілді.  Сонымен
қатар  бұл  ппроцедура   синтаксикалық   анализатордағы   абсолютті   аналог
болмайды.
       Мәтіндік  контексті  еркін  емес  тілдегі   реализациясы   қолданулар
объектісінде  негізделген.  Негізінде  нақты  тілге  көбінесе  Pascal   тілі
таңдалынған. Синтаксикалық ережесі әрбір қадам  үшін  болса,  ал  басқасы  –
анықтауыш шекара мәтіндік қасиет болады.  Зерттеу  нұсқасында  “контекстілі”
редакторы былай болады.
      - <программа>,
      - <блок>,
      - <оператор>,
      - <оператор бағыттауышы>,
      - <шығу  - кіру операторлары>.
      әрбір түсінікте реализация кезінде ұқсастығында объект  қойылған  және
стандартты сол объект үшін теру тәсілдері.  Шартты  барлық  тәсілдерді  құру
және  бұзу  тәсілдеріне,  өзгеру  құрылымдық  бөлім  тәсілдеріне,  контексті
анализ тәсілдеріне навигация тәсіліне бөлуге болады.
        Навигация  мәтін  бойынша  контекстілік   курсор   болып   саналады.
Контекстілік  бөлімде  курсор  контекста  белгілеу  үшін   болып   саналады.
Батырмалар [pic] көріну контексте навигацияны іске асырады. Клавиша Page  Up
псевдо – мәтінде  көрсетіледі.  Ал  Page  Down  клавишасы  псевдо-мәтінді  –
көрсетеді.
      Таңдау альтернативі үшін дайындау мәтіні үшін қалғып шығу менюі алдын-
ала  ескерілген.  Сонымен  теру  альтернативі  менюда  ағымдағы  контекстілі
курсорды анықтайды. Редактор шығуда және  әртүрлі  стандарттағы  дайындалған
мәтінді қамтамасыз етеді.
        Қолданушы  редакторлар  екі  деңгейге  бөлінеді  –   авторлар   және
оқырмандар. Бұл топтарға  авторлық  және  оқырмандық  режимдер  берілгендер.
Авторлық режим мәтіндерді дайындауға және оларды іске асыруға рұқсат  етеді.
Ал оқырмандық деңгей мәтіндерді қарауды қамтамасыздандырады.

              Идентификаторлар кестесі және символдар кестесі.
      Жоғары да айтқанымыздай,  обьект ақпаратын әдетте  екі  бөлікке  бөліп
қарастырамыз:   атау(идентификатор)   және    бейнеленуі.    Бұл    обьектің
мінездемелерін жеке-жеке сақтау қолайлы. Бұл екі себеппен байланысты:
 1) идентификатордың   символдық  құрылымдарының  белгісіз  ұзындықта  болуы
мүмкін.
2) әрбір облыстағы әртүрлі обьектердің бірдей  атаулары  болуы  мүмкін  және
ол  идентификатордың   қайта  сақталуы  үшін  жадты  босқа  ұстамауы  керек.
Идентификаторды сақтауға арналған кесте идентификатор кестесі  деп  аталады,
ал обьектің қасиеттерін  сақтауға  арналған  кесте-  символдар  кестесі  деп
аталады. Ондай жағдайда обьектің бір қасиеті оның атауы болып табылады  және
 символдар кестесінде  идентификатор кестесіне көрсететін  сәйкес  көрсеткіш
сақталады.
                           идентификатор кестелері
       Егер  идентификатор   ұзындығы  шектеулі  болса,  онда  идентификатор
кестесі  жай  жиым  түрінде  ұйымдастырылуы   мүмкін.   Бұл   мына   суретте
көрсетілген. Кейбір енгізулер бос емес, ал кйбіреулері бос болуы мүмкін.
 +---------------------------------------+
 |                                       |
 |---------------------------------------|
 | s | o | r | t |   |   |   |   |   |   |<----
 |---+---+---+---+---+---+---+---+---+---|
 | a |   |   |   |   |   |   |   |   |   |<----
 |---+---+---+---+---+---+---+---+---+---|
 | r | e | a | d |   |   |   |   |   |   |<----
 |---+---+---+---+---+---+---+---+---+---|
 | i |   |   |   |   |   |   |   |   |   |<----
 |---------------------------------------|
 |                                       |
 +---------------------------------------+
        Идентикатор  кестелерін  ұйымдастыру  әдісі  -  жиымдар   символында
идентификаторларды сақтау. Бұл жағдайда  идентификаторға  символдың  бірінші
номері  сәйкес  келеді.  Кестесінде  идентификатор  белгілі  бір   символмен
аяқталады. (EOS).

 +-------------------------------------
     |                  +------------------
     |                  |       +----------
     |                  |       |    +-----
     |                  |       |    |
     |                  |       |    +--------------+
     |                  |       |                   |
     v                  v       v                   v
----------------------------------------------------------+
  | s | o | r | t |EOS| a |EOS| r | e | a | d |EOS| i |EOS|
    +---+
   0 |   |
     |---|
     |...|
     |---|   +----------+   +--------+
   9 | --+-->| Idenp |--+-->|    | x |
     |---|   +----------+   +--------+
     |---|      v            v
     |...|    идентификатор көрсеткіші.
     |---|   +------------+
  20 | --+-->| Idenp |  x |
     |---|   +------------+
     |---|      v
     |...|    идентификатор көрсеткіші.
     |---|   +--------+   +--------+   +-------+
  32 | --+-->|    |  -+-->|    |  -+-->|   | x |
     |---|   +--------+   +--------+   +-------+
     |...|      v            v
     |---|     идентификатор көрсеткіші.
                  Символдар кестесі және таблицаларды қою.
      Символдар кестесінң ұйымын кесте қою арқылы қарастырамыз.  Кесте  қою-
идентификаторға көрсететні жиымдар көрсеткіші тізімі. әрбір  сондай  тізімге
идентификаторға көрсететін тізімдер кіреді және олар  функцияны  қоюдың  бір
мағынасын  білдіреді.  Бастапқыда  кестені  қою  бос  болып  келеді.  Барлық
элементтердің  NIL   мағынасын  білдіреді.  Id  идентификаторны  іздестіруде
H(id)    функциясын  қою  есептелінеді  және  T[H]-  ның   сызықтық   тізімі
қарастырылады. Кестедегі іздестіру төмендегі процедурадағыдай болуы мүмкін.

type Element= record IdenP:integer;
                     Next:pointer to Element;
              end;
Pointer=pointer to Element
function Search(Id):Pointer;
 var P:Pointer;
 begin P:=T[H(Id)];
      loop if P=nil then return(nil)
           elsif IdenTab[P^.IdenP]=Id then return(P)
           else P:=P^.Next
 end  end; end;

IdenTab – идентификаторлар  кестесі.  Кестеге  обьекті  кірістіру  төмендегі
прогцедурадағыдай болады:

function Insert(Id):Pointer;
 var P,H:Pointer;
 begin P:=Search(Id);
      if P<>nil then return(P)
      else H:=H(Id); new(P);
           P^.Next:=T[H]; T[H]:=P;
           P^.Idenp:=Include(Id);
      end;
      return(P);
 end;

             |--|       +------+      +------+
      H----->| -+-x---->|      |----->|      |----->
             |--| | +-->+------+      +------+
             |  | | |
             |--| | +------------+
                  |   +------+   |
                  +---|      |---+
            P-------->+------+                            7.4.     сурет.
      Кестені жүзеге асырудың бірнеше әдістерін теңестірі.
       Жадты  қолдану  техникасы  тұрғысынан     кестені   жүзеге   асырудың
әдістерін қарастырамыз.  Егер кесте  жиымда  орналасса,  онда   бір  жағынан
динамикалық жадты қолдану мүмкіндігі туады,  ал  екіншіден   қиындық  қатары
туындайды.  Динамикалық жадты қолдануқиын операция. Ол   динамикалық  жадпен
жұмыс істеу механизмін қолдау өте қиын болғандықтан.  Бос  немесе  бос  емес
жадтың  тізімін қолдау керек, сұраныс кезінде  жадтың  қажетті  бір  бөлігін
таңдау керек. Басқа тұрғыдан  қарасақ,  жиымды  қолдану  үлкен  жадты  қажет
етеді, ал ол дегеніміз  мағыналы жад  мүлде  қолданылмайды.   Сонымен  қатар
жиымның барлық элементтерін толтырмауға тура келеді.
      Ағаш анализі және контекстті- еркін грамматикалар.
      Көптеген  синтаксистік  анализдің  әдістері   ағаш   тәрізді   болады.
Қарапайым түрлердің бірі – контекстті- еркін грамматикалар  болып  табылады,
ол мына ережелерге сүйене отырып  S=NP+VP немесе VP=V+NP,   мұнда  сол  жағы
оң жаққа контесттіксіз ауыса алады.Контекстті –еркін грамматикалар  көптеген
машиналық  тілдерде  көп  қолданылады,  және  ол  арқылы  жоғары  эффектілік
анализдің әдістері  құрылған.  бұл  әдістің  жетіспеуі-  граматикалық  бұрыс
фразаларға тыйым салуы жоқ  болады,  мысалы,  бастауыш  баяндауышпен  қатысы
жоқ.Бұл  проблеманың  шешімі  бөлек  екі  грамматикалардың  параллель  жұмыс
істеуі: бір жаңынан- жалғыз, басқа жағынан –көптік жалғауы.     Бұдан  басқа
сөйлемдерге өзінің грамматикасы болуы керек  және  т.с.с.Семантикалық  бұрыс
сөйлем  семантикалық  жазуға  айналуы  мүмкін.Мұның  бәрі   үлкен   ережелер
жиынтығын  береді,  және  контекстті-  еркін  грамматикалар  NLP-ге  жарамай
қалады.
      Трансформатты    грамматика.    Трансформатты    грамматика     жоғары
жетіспеушілікте  және  ЕЯ  рационалды  ережелерде  құрылған,  бірақ   NLP-ге
жарамайды.Трансформатты  грамматиканы  Хомский  құрған,  және  ол  керісінше
болғанда жұмысы қиындатылған, бұл анализ.
        Толық  ауысулар.  Толық  ауысулар  Бобровтың   (Bobrow),  Фрейзердің
(Fraser)  және  көбінесе   Вудстың   (Woods)   жұмыстарымен   жасалған,   ол
синтаксистік  анализдің  және  контектті-еркін  грамматикалардың  ары  қарай
дамуына әсерін тигізді. Ол өзіне тармақтар ұсынады, “кеңейтілген” ,  жанында
тесттер (ережелер), және мұнда анализдің  әрі  қарай  дамуына   жол  береді.
Берілген  шешімдері  ұяшықтарға  жазылады  (регистрлар).   Төменде   мынадай
тордағы мысал келтіріледі,  барлық типтердегі сөйлемдерді   анализдеуге  жол
береді (соның ішінде пассив), олар бастауышқа  бағынады, бяндауыш  және  тік
толықтауыштан, мына мысалға сәйкес The rabbit  nibbles  the  carrot  (Кролик
грызет морковь). Берілген стрелкалар тесттің номерін көрсетеді, және  немесе
белгілерін,  аналогтық түрде  контекстті-  еркін  грамматикаларда  қолданады
(NP), немесе сөйлемдерде (by).  Тесттер LISP  тілінде жазылған  және  өзімен
бірге ережелер типін  ұсынады  егер условие=истина болса, онда Х  белгісінің
анализдеуін қарастырады және оны берілген ұяшыққа жазуы керек.
      Ендігі біздің қарастыратын әдісіміз, конспект-бос грамматика .
      Анықтама: G=(N, (,P,S) конспект-бос грамматика  .  G-дара  шешу,  енді
келесідегідей 4 мәселені қарастырамыз:
   1. Әрбір тізбекте V-алфавит символы;
   2. 2. Тізбектің соңы-S;
   3. 3. Егер тізбек соңында бір ғана ереже , тізбек терминалды емес болуы
      керек;
   4. Егер n1, n2, n3,……nk түзу сызықты n ережесі , тізбекте А1, А2, А3,
      Ак байланысы, түзу тізбегінде n бар, А немесе  А1, А2, А3, …..Ак
      болады.
   5.  Екі  ішкі  сынып  АТ  грамматикасын  қарастырайық.
      Тілдік  процессордағы  қолданылатын  АТ  программасындағы   екі   ішкі
сынып  программасын  қарастырайық:  L-атрибуттық  трансляциялық   грамматика
 және  S-атрибуттық  трансляциялық  грамматика.
L-атрибуттық  және  S-атрибуттық  транслияциялық  граммаатикалар
       АТ-грамматикасында   L-арибуттық   бет,   тексеруге    болады,    осы
атрибутта  әрбір  ережені  шығара  отырып  қолдануға  болады.  Мысалы   L  –
атрибуттық  транслияция  грамматикасына  GA   грамматикасы  жатады.
      Шығару  алдында  қарастырылып  отырған   атрибут   тек   қана   шығару
атрибуттық  белгіге  байланысты,  L   атрибут   грамматикасын   шығарылмаған
синтаксистік   анализаторды   қолдануға   мүмкіндік   береді.   2   және   3
бөлімде  АТ-грамматикасын  жинақы  Қылып  жасайды.
    Шектелген     L-атрибуттық    транслияциялық    грамматиканы    салады,
атрибуттық  мағынасын  шығарылмайтын  процесте  шығаруға мүмкіндік   береді.
 Шығарылмаған  астерминалық  анализатор    LL(1)-грамматика   керек   етеді.
L-атрибуттық  транслятор   грамматика   суреттелетін   аудару   жай   түрдің
өзіне  қаратуы  болады.
                  Қойылым кестесі. Тізімді қойылым кестесі.
      Бюфонның қарауынша, былай деп айтуға  болады,  программист  -  ол  өзі
жазған программаның  стилі.  Программалау  стилі  және  оның  элемементтері-
формальды емес ұғым. Әртүрлі адамдардың стильге деген  әртүрлі  көзқарастары
болады.   60-жылдары   жақсы   стильдің   пайда    болуы-бұл    программаның
қойылымдылығы.
      Қойылым кестесі фрагменттерден құралады,олардың әрқайсысы бір  кіретін
бір шығатын бағыттауыш стрелкадан тұрады. Қарапайым фрагменттен  –  бос-  ол
бір бағыттауыш стрелкадан, кіретін жіне шығатын бір  уақытта,  оның  артынан
бір операторлы фрагмент жүреді.
      Барлық  түрлердің   фрагменттері   үш   немесе   төрт   операторлардың
композициялары  болып  табылады.Басқа   да   түрлердің   фрагменттері   ішкі
фрагменттерді ауыстыра алады.
      2.  Кезектес  композицияда  шығатын   бағыттауыш   стрелка   біреуінің
екіншісінен шығатын операторлы сәйкес келеді, кіретін бағыттауыш  стрелкамен
ол басқа оператордікі.Қалған композицияның түрлері  басқа  операторлардың  В
фрагменттерін қарастырып,  шарттардың  орындалуын  және  басқа  орындалмаған
іһәрекеттерді қарастырады, сондықтан программа өзгермейді.
      Альтернативті композицияда бір бағыттауыш стрелка ішкі операторға  S1,
екіншісі-S2  операторға   апарады.   Шығатын   бағыттауыш   стрелкалар   осы
операторлардың  міндетті   түрде   біреуіне   құйылады   және   олар   басқа
фрагменттерге кіруге құқықтары болмайды.
      Кесте тағы бір оператор  сақтайды  деп  ойлауға  болады,  ол  ешқандай
әрекет  жасай  алмайды.Ол   кішкентай   квадрат   түрінде   көрсетіліді.Онда
стрелкалар құйылады.Альтернативті композицияның   басқа  да  нұсқалары  бар,
онда ішкі бір фрагмент бос болып келеді.
      Ақырғы  композиция  циклді.  Стрелкалардың  бірінің   кіруі   берілген
фрагменттен    шарттардың    тексерілуінен     шығуы     болады.     Ациклді
фрагменттер.Егер  фрагментте  ешқандай   тереңдікте   циклді   композициямен
кезектессе,  онда  фрагмент  ациклді  граф  болады.  Кіретін  және   шығатын
бағыттауыш стрелкалардың жолдары –  жай  болады.  Оларды  саны  нешеу  екені
қызықты.
      Альтернативті  композициялы  фрагменттердің   жолдарының   саны   ішкі
фрагменттерінің санына тең болып саналады.
      Циклді композиция ішкі жағынан бір қарапайым жол қарастырады,ол бір  В
псевдооператорында  цикл  алдын  ала  тексеруші  және  екі  оператордан   SB
құралған – цикл кейін тексеруші. Мұнда бір қарапайым  контур  қарастырылады:
BSB.Қарапайым жолдардың санын қарастырсақ  ең ішкі сапасында болса, онда  ол
1-ге тең болады мынадай жағдайда жай жолдардың санының алдын ала және  кейін
тексеруден  кейін.Жай  контурлардығ  саны  –  бұл  ішкі  S  фрагмнтінің  жай
контурының сандары және жай жолдардың осы фрагментте сандарының жатуы.
      Базалық жай контурлар схемасы барлық циклді  фрагменттерде  тұр  екені
дәлелденген. Осы ішкі  Z  фрагменттерден   ациклді   граф  және  максимальды
жолдардан табуға болады. Осындай жолдардың саны z көптігінің  элементтерінің
санынан көп, сондықтан шарт арқылы  әдіс  табу  керек  болады.  Қарастырылып
отырған графтардың бастысы- операторлар болып саналады.


      Бақылау сұрақтары:

   Тілдің контексті бос емес қасиеттері.  Символдар кестесінің  ұйымдастыру.
   Идентификатордың кестесі. Орналастыру кестесі.


   Тізімді қойылым кестесі. Орналастыру функциясы. Ағаштар кестесі.  Блоқтық
   құрылым.





               Дәріс № 9 ЖАДЫНЫҢ БӨЛІНУІ ЖӘНЕ КОД ГЕНЕРАЦИЯСЫ

Жоспары:
1. Жады ұйымдастыру. Статикалық және динамикалық жады.
2.  Компиляцияның уақыт адресі. Уақытша жады.
3. Кодтың генерациясы. Кодты  құру. Үш адресті код. Р – коды. Байт  –  коды.
   Машиналық кодты құру.
4. Нұсқаның таңдауы. Регистрлердің үлестіру. Объектті кодтың ықшамдылығы.

    Жады ұйымы.
             Фундаменталды  шешім  бірінші  РС-ны  жобалағанда  қабылданған.
8088-ші  микропроцессор  қолдануы  үшін,  ол  мекендік  болу  тиіс.  Белгілі
болғандай,  қолданылған  IBM  PC,  PC/XT  микропроцессор  і8088  өзінің   20
мекендік шині арқылы барлық 1-Мбайттік жадтың кеңестігіне кіре алады.
            ІВМ конструкторлары спецификалық мақсатта жадтың арнайы  аймағын
бөлуді қажет деп тапты. Олар  барлық  жадты  бөлімдерге  бөлуді  және  әрбір
бөлім  өзінің  функциясын  таратуға  арналған.  Нәтижесі  диаграмма   жадтың
картасы деп аталған. РС-ны  өндіруде  барлық  жадтың  жартысы  резервтелген.
Мекендік кеңістіктің жоғарғы жартысы ВІОS кодының мазмұны  үшін  және  жадқа
тікелей процессорлық кіруге бөлінген. Алғашқы бірнеше Кбайт  система  туралы
ақпаратқа және негізгі кодтар  секциясының  орналасуына  резервтелген.  Олар
программаны қамтамасыз ету кезінде  орындалады.  Бұл  жад  ұяшықтары  үзіліс
векторлары деп аталады, ал программалық кодтың функциясы – үзіліс  механизмі
деп аталады.
       Мекендік кеңістіктің аяғында 16 байт  номиналымен  клавиатура  буфері
орналасқан.  Бұл  буфер  процессор  басқа  тапсырманы  орындағанда  терілген
мәтінді сақтау үшін қажет. Тапсырма  орындалғаннан  кейін  бұл  мәтін  қайта
өңделеді. Компьютердің ұнамсыз дыбысы буфердің толғанын және ары қарай  басу
қажет еместігін  көрсетеді.  Сонымен  қатар,  әртүрлі  системалық  жалаулар,
(системалық ішкі жағдайын  көрсететін)  олар  да  жадтың  төменгі  бөлімінде
сақталады. Сол кезде компьютерлер 60К жадына ие болғанда 512К  жады  ғажайып
болып   көрінеді.   Сондықтан   128К    программалау    қамтамасыз    етудің
юрисдикциясына  беріледі,  қалған  384К   бастапқы  мекендік  кеңістік  BIOS
программасын қолдануға және көру жадына арналды. Бұл шешім  640К  стандартты
жадты (DOS-қа  арналған)  шығарды.  Бұл  программаны  орындау  кезінде  8088
операция орындай алатын мекендік кеңістіктің  жоғарғы  мүмкіндігі,  кейіннен
бұл 640К базалық жад деп аталады, себебі  барлық  ІВМ  біріңғай  системалары
орын алатын негізгі стандарт болып есептелді.
                      Статикалық және динамикалық жады.
      Осы уақыттта дейін біз  программалаудың  статикалық  деректерді  өңдеу
жағдайларын  қарастырдық.Статикалық  шамалар   дегеніміз   жады   компиляция
кезінде  бөлінетін  және  барлық  жұмыс   программасы   кезінде   сақталатын
шамаларды  айтады.  Паскальда    динамикалық   деп   аталатын   басқа   әдіс
қолданылады.  Бұл  жағдайда  шамалар  астындағы  жады  программаны   орындау
кезінде шығарылады. Осындай шамаларды динамикалық  деп  атаймыз.  Статикалық
таратылған оперативтік жады  бөлімі  статикалық  жады  деп,  ал  динамикалық
таратылу бөлімі динамикалық  жады деп аталады.
      Динамикалық шамаларды қолдану  программалаушыға  қосымша  мүмкіндіктер
береді. Біріншіден, динамикалық жадқа қосылу деректерді  жаңалаудың  көлемін
ұлғайтады.
      Екіншіден, кейбір деректер программасының аяғына дейін қажет  болмаса,
онда ол сақталған жадты басқа информация үшін босатуға болады.
      Үшіншіден, динамикалық жадты қолдану  арқылы  деректердің  құрылымының
өлшемін өзгертуге болады.
      Динамикалық шамалармен жұмыс істеу тағы бір деректерді сілтеме түрімен
байланысты сілтеме түрдегі деректерді нұсқаулар деп атайды. Нұсқау  біртекті
типтегі шамаларды сақтайтын динамикалық жадтағы жазықтықтың орнын құрайды.
                   Статикалық жад                           Динамикалық жад

                         Нұсқау         Шама



      Шама мекені – бұл жазықтық жадының бірінші байтындағы номері. Жазықтық
 өлшемі типпен анықталады
      Сілтеме типінің шамасы айнымалыларды  анықтау  бөлімінде  төмендегідей
анықталады:
                      Var <идентификатор> := <сілтеме типі>
      Паскаль стандартында әрбір нұсқау  шаманың  тек  бір  ғана  анықталған
типіне   жібереледі.  Бұл  нұсқаудың  базалық  типі.  Базалық  типтің  атауы
жазбада мынадай түрде көрсетіледі:
      < сілтеме типі > : ^<тип атауы>
Нұсқауды анықтау мысалдары:

                      Type Massiv=Array [1..100] of Integer;
                       Var P1: ^Integer;
                              P2: ^Char;
                              PM: ^Massiv;

      Мұндағы Р1 – бүтін типтегі динамикалық шамаға нұсқау.
      Р2 – белгілік типтегі динамикалық шамаға нұсқау.
      РМ – ТУРЕ бөліміндегі динамикалық массивке нұсқау.
      Динамикалық  шамалардың  өздері  программада  жазылуы  талап  етпейді,
себебі,  компиляция  кезінде  оның  астындағы  жады  білінбейді.  Компиляция
кезінде тек статикалық шамалардың  астындағы жады білінбейді.
      Нұсқаулар – бұлар статикалық шамалар, сондықтан жазуда қажет етеді.
      Динамикалық жадтың астындағы қандай жағдайда бөлініп шығады? Нұсқаумен
байланысқан  динмикалық  астындағы  жады   NEW   стандартты   процедурасының
орындалу нәижесінде бөлінеді. Бұл процедураға  сұрау  салу  форматының  түрі
мынадай:
                                 NEW (<нұсқау>);
       Бұл операторда орындағаннан кейін:
                       <динамикалық шаманың аты>:=<нұсқау>^
түріндегі динамикалық шама құралады деп есептеледі.
      Программада NEW(P1); NEW(P2); NEW(PM); операторлары  қатысқан  болсын.
Олар орындалғаннан кейін динамикалық жадта үш шаманың (екі скаляр  және  бір
массив) астындағы орны бөлінбейді. Олардың идентификаторлары мынадай
                                          Р1^,P2^,PM^.
      Мысалы, P1^ белгісін былай түсінуге болады: Ол Р1 нұсқауына сілтенетін
динамикалық айнымалы  болып  табылады.  Мына  суретте  көрсетілген  схемада,
динамикалық  шамалар   мен   олардың   нұсқауларының   арасындағы   байланыс
көрсетілген.

Статикалық жад                                       Динамикалық жад
                 Нұсқау
     Шама



      Динамикалық айнымалылармен ары қарай жұмыс істеу тура  сәйкес  типтегі
статикалық айнымалылардғы сияқты  жүргізіледі.  Оларға  мынадай  мән  беруге
болады, оларды өрнектерде операнд  есебіне  иқолдануға  болады,  сол  сияқты
параметр астындағы программаларға, тағы  сол  сияқты  жағдайларға  қолдануға
болады. Мысалы, егер  P1^  айнымалысы  25  мәнін  иелену  қажет  болса,  P2^
айнымалысы “W” белгінің мәнін иелену қажет болса, ал PM^массиві  1-ден  100-
ге дейінгі сандарды ретімен толтыру керек болса, онда бұл былай орындалады:
                      P1^:=25;
                      P2^:=’W’;
                    For I:=1 To 100 Do PM^:={I}:I;
      NEW процедурасынан басқа нұсқау мәні иелену оператормен анықталады
                      <нұсқау>  :=<сілтеме өрнек>;
   Сілтеме өрнек ретінде мыналарды қолдануға болады:
    - Нұсқау

    - Сілтеме функциясы (мәні нұсқау болатын функция)

    - Ni 1 константасы.

     Ni  1  –  бұл  қосымшаланған  константа,  ештеңені  көрсетпейтін   бос
сілтемені көрсетеді. Нұсқаудың базалық типін  иелену  кезінде  және  сілтеме
өрнектер бірдей болуы қажет. Ni 1 константасын кез  келген  базалық  типтегі
нұсқауға иеленуге болады.
     Сілтеме  айнымалының  мәнін  иеленуге   дейін   (иелену   операторының
көмегімен немесе NEW процедурасы арқылы) ол анықталмаған болады.
   Кіру және шығу нұсқаулары жіберілмейді
   Мысал қарастырайық. Программада төмендегі нұсқаулар жазылған болсын:
                     Var   D,P: ^Integer;
                              K: ^Boolean;
      Онда иелену операторлары  D:=P;  K:=Ni  1  қолдануға  болады.  Себебі,
сәйкестендіру  типінің  принципі  сақталатын  болғандықтан.  K:=D  операторы
қатеб  себебі  оң  және  сол  бөліктерінің  базалық  типі  әр  түрлі.   Егер
динамикалық  шама  өзінің  нұсқауын  жоғалтса,  онда  ол  <<қоқыс>>  болады.
Программалауда бұл сөздің мағынасы жадты ауыстыратынб бірақ енді керегі  жоқ
информацияны береді. Егер программада жоғарыда аталған  нұсқаулар  қатысатын
болса, операторлар бөлімінде төмендегідей жазылады:
                    NEW(D); NEW(Р);
    (Екі бүтін айнымалының астындағы динамикалық жадта бөлінген орын.
   Нұсқаулар сәйкес мәнге ие болады)
                       D^:=3; P^:=5;
            (Динамикалық айнымалыларға мәндер берілді)
                     P:=D;
      {Р және D нұсқаулары 3-ке тең сол шамаға сілтенеді}ю
                    Writeln (P^,D^);
      {3 саны екі рет басылады}
      Осындай үлгіде 5-ке тең динамикалық шама, өзінің нұсқауын жоғалтты  да
кіргізілмейтін болды. Бірақ ол жадтан  орын  алады.  Міне  осы  <<қоқыстың>>
пайда болу мысалы.
   Мына суреттегі схемада P:=D операторының орындалу нәтижесіндене болғаны
   көрсетілген
                    Болды                                             Қалды
                                                    P:=D





      Паскальда қажетсіз болып қалған, жадты берілгендерден босататын
стандарттық процедура бар. Оның форматы:
                                Dispose (<нұсқау>);
      Мысалы,  егер  Р^  динамикалық  айнымалысы  керегі  жоқ  болса,   онда
Dispose(P) операторы оны жадтан шығарады.  Бұдан  кейін  Р  нұсқауының  мәні
анықталмайды. Әсіресе үлкен массивтерді жоятын  жадтарда  үнемдеу  эффектісі
мағыналы болады. MS DOS операциялық системасының басқаруымен жұмыс  істейтін
Турбо  Паскаль  нұсқаларында  бір  программаның  астында  64  килобайт  жады
бөлінеді.   Міне   осы   жадтың   статикалық    облысы.    Үлкен    массивті
информациялармен жұмыс істегенде бұл аздық етеді. Динамикалық жадтың  өлшемі
әлдеқайда көп (жүздеген киллобайт). Сондықтан динамикалық деректермен  жұмыс
істеу программаның орындалуын тежейді. Шамаға кіру 2 қадамға  жүзеге  асадыЖ
алдымен нұсқау ізделеді,  содан  кейін  шама  сол  бойынша  табылады.  Үнемі
болатын   <<келеңсіздіктің   сақталу   заңы>>   орындалады;   Жадтағы   ұтыс
уақытындағы ұтылыспен қорландырады.
      1 мысал. 10 000 сандардан заттық массив құру керек. 0-ден 1-ге дейінгі
диапазонда оларды кездейсоқ сандармен толтыру қажет. Массивтің орташа  мәнін
есептеу керек. Динамикалық  жадты  тазалау  керек.  100-ден  100-ге  дейінгі
диапазонда бүтін кездейсоқ сандармен толтыру керек, және оның  орташа  мәнін
есептеу керек.
Program Sr;
Const NMax=10000;
Type Diapazon=1..NMax;
         MasInt=Array[Diapazon] of Integer;
         MasReal=Array[Diapazon] of Real;
Var   PIint: ^N|MasInt;
         PReal: ^MasInt;
           I, Miding: LongInt;
           MidReal : Real;
Begin
         MidReal:=0; MidInt:=0;
         Randomize;
         NEW (PReal);
         {Заттық массивтің астындағы жадтың бөлінуі}
         {Массивтің қосындысы және есептенуі}
         For  I:=1 To NMax Do
         Begin PReal^[I]:=Random;
                   MidReal:=MidReal+PReal^[I]
         End;
        Dispose (PReal); {Заттық массивті жою}
        NEW (PInt); {Бүтін массивтің астындағы жадтың бөлінуі}
        {Бүтін массивтің қосындысы мен есептеуі}
         For I:=1 To NMax Do
         Begin
                   PInt^[I]:=Random (200)-100;
                   MidInt:=MidInt6+PInt^[I]
         End;
                 {Орташа мәннің қорытындысы}
                 Writeln{‘Орташа мән тең:’,MidInt Div Max};
                 Writeln(‘Орташа шама тең:’,(MidReal/NMax):10:6);
End.
Байланысқан тізімдер.
Мынадай сұрақты қарастырайық:
      Динамикалық жадқа айнымалы өлшемдегі  берілгендердің  құрылымын  қалай
құрау  керектігін  келесі   мысалда   талдайық.   Физикалық   эксперименттер
процесінде құралдардың көрсетілуі бірнеше  рет  анықталады  және  ары  қарай
өңдеу үшін компьютер жадына жазылады. Алдын ала  қанша  өлшем  жүргізілетіні
белгісіз .
      Егер  мұндай  берілгендерді  өңдеу   үшін   ішкі   жадты   (файлдарды)
қолданбасақ,  онда  динамикалық  жадта  мұны  дұрыстап  орналастыра  аламыз.
Біріншіден, динамикалық жад статикалық жадқа қарағанда  үлкен  информациялар
көлемін  сақтауға  мүмкіндік  береді.  Екіншіден,  динамикалық   жадқа   бұл
сандарды  байланысқан  тізімдерде  ұйымдастыруға  болады.  Себебі,  массивке
ұқсас сандардың мөлшерін қосымша қажет етпейді. Байланысқан тізім  дегеніміз
не? Схемалық түрде оны былай көрсетеді:






   Тізімдегі әрбір элемент екі бөліктен тұрады: информациялық бөлік (  P2,P3
  және т.с.с.   ) және тізімнің келесі элементін нұсқау бөлігі. (X1,X2  және
т.с.с.)  Соңғы  элемент  бос  нұсқауды  көрсетеді:  Ni  1.  Осындай  типтегі
байланысқан бір  бағыттағы  тізбек  деп  аталады.  Жоғарыдағы  тұжырымдалған
есептің информациялық бөлігі берілген заңдар тізімі:
   X1 - бірінші өлшеу нәтижесі,
   X2 - екінші өлшеу нәтижесі,
    сол сияқты X4–соңғы өлшеу нәтижесі. Байланысқан тізімнің ерекше қасиеті
бар, оны информация түскен сайын толықтырып отыруға болады. Толықтыру
тізімнің соңына жаңа элементті тіркеу негізінде жүргізімді.
   Ni 1 мәні соңғы элементте тізбектің жаңа элементіне сілтемемен
   ауыстырылады:




     Байланысқан тізім  артық  жадтан  орын  алмайды.  Түскен  информацияға
қажетті жағдай бойынша жады сондай көлемде шығындалады.  Программада  тізбек
элементтерін ұсыну мақсатында араласқан тип қолданылады. Біздің  мысал  үшін
мұндай элементтің үлгісі мынадай болуы мүмкін:
                      Type Pe=^Elem;
                               Elem=Record
                                          T: Real;
                                          P: Pe
                                          End;


      Мұндағы, Ре –  Elem  айнымалы  типіне  сілтеме  типі.  Осы  атпен  екі
жазықтан тұратын аралас тип белгіленген. Оның біріншісі: Т  –  заттық  шама,
температурасы сақталған, Р – Elem динамикалық типіне нұсқау. Мұндай  жазбада
Паскальдың негізгі принциптерінің бірі  бұзылған.  Кез  келген  программалық
объектке оның жазбасынан кейін сілтеме жасауға болады.  Негізінен,  Ре  типі
Elem типі арқылы анықталады. Бірақ Паскальда сілтеме  типі  мен  байланысты,
бұл ережеден тыс жалғыз мүмкіндік бар.  Программаның  келтірілген  фрагменті
дұрыс болып табылады.
   2 Мысал:
                Type Pe=^TypElem;
                TypElem=Record
                                      T:Real; P: Pe
                                       End;
                Var Elem, Beg: Pe;
                X: Real; Ch: Char;
                Begin {Тізімнің алғашқы мекенінің анықтамасы}
                NEW (Elem); Beg:=Elem;
                Elem^.P:=Elem;
{Тізімге кіргізу мәндерінің диалогтық кірісі және элементтер арасындағы
байланыс ұйымы}
                 While Elem^ . P<>Nil Do
                 Begin
                            Write (‘Санды енгізіңіз’);
                            ReadLn (Elem^ . T);
                 Write (‘Кіруді қайталау? (N/Y)’);
                 ReadLn (Ch);
                 If (Ch=’n’) or (Ch=’N’)
                 Then Elem^ . P:=Nil
                 Else Begin
                                   NEW (Elem^.P);
                                   Elem:=Elem^.P
                           End
 End;
WriteLn(<<Берілгендерді кіргізу>>);
{Алынған санды тізбектердің қорытындысы}
WriteLn (<<Бақылап шығару>>);
Elem:=Beg;
Repeat
              WriteLn (N,’:’,Elem^.T:8:3);
              Elem:=Elem^.P
Until  Elem=Nil
End.


    Beg айнымалы сілтеме тізбектің алғашқы мекенін сақтау үшін  қолданылады.
Тізбекті әрқалай  өңдеу  оның  бірінші  элементінен  басталады.  Программада
өңдеу  кезінде  тізбектің  қалай  жүргізілетіндігі  көрсетілген.   (Берілген
мысалда тізімнің информациялық бөлігін рет бойынша  басылған).  Бір  бағытта
тізбек – байланысқан тізімнің қарапайым нұсқасы. Программалау  практикасында
екібағытты   тізбектер   қолданылады.   (әрбір   элемент   тізімнің   келесі
элементтеріне нұсқау сақтайды) Осындай берілгендер құрылымдар деп аталады.
                    Код генерациясының  ақпараттық ұйымы.
      Объективті код генерациясы – бұл  ішкі  командаларды   аударумен  және
шығару   программаларын   енгізу  тізбегіндегі   символдармен   түсіндіреді.
Объекттік код генерациясы  ассемблер  тілінде   программаны  құруда   немесе
машиналық тілде   құруды   айтады.   Программа  ішінің  анықтамасы   әртүрлі
құрылымнан  тұруы  мүмкін. Сондықтан объектік  кодтың   генерациясы   барлық
жағдайда   іс  -  әрекетті   орындау    керек.    Ол    сызықтық    тізбекте
синтаксистік   құрылымның    қиындығынан    туындайды.    Код    генерациясы
функция  деп  атауға  болады.  Егер  ол  синтаксистік  ағашта  информациялар
 берсе.  Ол   идентификатор   таблицасында   беріледі.  Сондықтан   объектік
кодтың    генерациясы    орындалғаннан    соң     программа     синтаксистік
анализінің   қалай   орындалғанын  және   код   генерациясына    дайындаудың
барлық  іс- әрекетті  орындау  керек: Ауыспалы функцияда   кеңістік   адресі
анықталған,   ауыспалы   типтерде   аттары   анықталған,    констант    және
шығару   программаның   синтаксистік   конструкциясы    берілген.    Негізгі
программаның  принциптері  командаларға  генерацияларға   енгізу   тілдеріне
есептеуіш  жүйенің  архитектурасына  байланысты.   Компилятор   синтаксистік
енгізілген   программаларды   орындайды.  Содан   соң    оны    семантикалық
анализге  көшіреді,   код   генерациясына   дайындайды.   Сондықтан   мұндай
компилятор   жұмысының   схемасы   практикада   қолданылады.   Мәселен   бұл
жағдайда  бір семантикалық  анализаторда   және  бір   компиляторда   енгізу
программасы   бүтін   түрде   келеді.   Ереже    бойынша    компилятор   код
генерациясые  этап  бойынша  орындайды.  Компилятор  енгізу   программасының
текстік  синтаксистік  конмтрукциясында  аяқтайды.  Содан   соң   ол  келесі
синтаксистік  констукцияға  келеді.  Сонымен  барлық  енгізілген   программа
 өңдегенше  осылай  жалғаса  береді.   Синтаксистік   конструкцияның   әрбір
мағынасын  енгізу тілінде  анықтауға   болады.   Оның   типін   синтансистік
анализаторын   айқындайды.   Мұндай  типтерге   циклдік   оператор,   шартты
оператор, таңдау  операторлары   қолданылады.  Мұндай  типтер   синтаксистік
конструкциясында  программалау   тілінде  белгілі   бір    мағына    береді.
Компилятор енгізу  тіліндегі синтаксистік  басқару әдісі   қолданылады.  Бұл
әдіс ыңғайлы  болу үшін  синтаксистік   ыңғайды   қолданамыз.  СУ  ауысуының
прициптері   келесідегідей.  Әрбір    ағаштың    биіктігінде    синтаксистік
өңдеуде  N тізбегі C(N) аралық   кодында   беріледі.   Өз   кезегімен  ол  N
биіктігінде  кодтарды  құруды  және  N   биіктігінің   деңгейінде  табылады.
Бұл  процесс төменне   жоғары   қарай   ретімен   орындалады.   СУ  аударуын
құру  үшін  берілген   синтаксистік   ағашта   түпкі   ағашты  табу   керек.
Сондықтан   әрбір  ағаш   биіктігі   код    тізбегін    туындатады.    Жалпы
жағдайда   код   интерпретациясын   алу   үшін    N   биіктігінен    C(N)-ді
белгілейміз.  Бұл  принцип  бойынша  бұл  есептің  өзіндік   мағынасы   бар.
СУ аударуын  қолдану   үшін   код   интерпретациясының   есебі   әрбір  ағаш
биікігіне   сәйкес   келуі   керек.  Компилятор   моделі   беріледі,    егер
синтаксистік   анализде   енгізу   программасы    және    код    генерациясы
нәтижелі   болса.  СУ   компиляциясының    схемасын    программалау    тілін
енгізгенде  көруге  болады.  Егер   СУ  аударуының   принципі   КС   тілінде
енгізілсе,  онда СУ командасын  қолдану   мүмкін   болады.  Жалпы   жағдайда
СУ  аударуының  схемасы  келесі  әрекеттермен  орындалады:
    ❖ Берілген  машиналық  клдта   немесе   ассемблер   тілінде   компилятор
      жұмысының  нәтижесі.
    ❖ Табылған  қателерді  және  есептеулерді  енгізу  тізбегінен  шығару.
    ❖ Туынды  және  командаларды  орындау.

                  Программаны  орындаудың  ішкі  әдістері.
       Компиляторда   шығару  программасын  синтаксистік    конструкциясында
орындау  мүмкіндіктері бірнеше  этаптардан  тұрады.  Этаптарда  қолданылатын
  синтаксистік  анализдер   жұмыс   генерациясында   және    объектік    код
оптимизациясында   өте   ыңғайсыз.  Сондықтан   операцияда  объекті    кодты
генерациясында  программаны   таңдау   тізбек   формасына   сәйкес   келеді.
Программаның  барлық  ішкі  туындысы   екі   принцип   бойынша   орындалады.
Операторда    және    операндыда.     Бұл    екі     форманың     арасындағы
айырмашылықтары  жоқ.   Қалай   операторда   орындалса,   солай   операндыда
орындалады.  Бұл  екеуі  өте тығыз   байланысты.   Сонымен  қатар   оператор
және  операндылар  бір  бірінен  ажыратылуы  керек.  Егер   олар   әр  түрлі
ретте   кездессе,   операторлар  және   операндылардың   мағынасы   жоғарыда
айтылғандай  компьютерде  өңдеумен  байланысты. Олардың   келесі   формалары
белгілі:
      ❖  Байланысты  тізбекті  құрылым
      ❖ Көп  адресті код  және  нәтижесі
      ❖ Көп  адресті код және нәтижесіз
      ❖ Қайтымды операцияларды  жазу
      ❖ Ассемблер  және машиналық код
      Әрбір нақты кодта  бұл формалардың  біреуі  қолданылуы  мүмкін.  Бірақ
жиі жағдайда  компьютерде   бұл   формалардың   біреуі   ғана   кездеспейді.
Кейбір   компьютерлер    нәтижелі   код   береді.    Жалпы    жағдайда    СУ
компиляциясында    схема    қолданылады.    Олар    синтаксистік    өңдеудің
фазалары,  семантикалық  анализдер,   объекті   кодың   генерациясы.   Сонда
ішкі  программада  келесі  алгоритмдер   қадамы  орынды.   Барлық   жағдайда
компьютерлер  әрқашан  машиналық  командалармен  жұмыс  жасай  алады.
                     Кодтарды  құру.  Үш  адресті  код.
       Код  дегеніміз  –  белгілердің,  символдардың    ақпаратты    берудің
ережелерінің  жиынтығы.
       Екілік және үштік кодты  айыруға болады.  Біріншісінің   алфавиті   2
символмен  шектелген (0,1), ал екіншісі  3-тік символдармен (-1,0,1).  Кодты
 қарастыратын  сигналдар  келесідей  сипатталады.
➢  Униполялы код.
➢  Полярлы код.
➢  Биполярлы код.
        Биполярлы    кодтар    каналдарда    анықтамаларды     беру     үшін
қолданылады.    Мұндағы    бірліктер    оң    және    теріс    импульстармен
анықталады.  Егер   импульстің   қалпы   ноль   болса,    ол    тоқтатылады.
Биполярлы  кодтау   және    қателерді   қарастыруға   керек.   Егер  нольдің
орнына   бір   пайда   болса,   онда   бір   нольге    айналады.   Бұл   тез
айқындалады.
      Дискретті  ақпараттық  әдістерін   қарастырайық. Бірінші  мысал  болып
 Морзе  алфавиті  болып  табылады.  Онда  латын  әріптері   және    цифрлары
кодталған    олар    нүктеден    және    сызықшадан    тұрады.     Кодталған
элементтерді   енгізу  алфавитында  символдар  деп   аталады.   Символ   деп
ереже   бойынша   сандарды   әріптерді,  иероглифтерді    пробел    белгісін
пунктуациялық   белгілерді   операциялық   символдарды   арнайы   белгілерді
ұғамыз.
      Морзе  кодының  фрагменттері.
|Енгізу  алфабитінің      |МСС бойынша  мнемоникалық|                        |
|символдары               |ұғымдар                  |                        |
|                A        |          Alfa           |                .-      |
|B                        |Bravo                    |-…                      |
|C                        |Charlie                  |-.-.                    |
|D                        |Delta                    |-..                     |
|E                        |Echo                     |.                       |
|…                        |…                        |…                       |
|Y                        |Yankee                   |-.-                     |
|Z                        |Zulu                     |-…                      |
|1                        |One                      |.--                     |
|…                        |…                        |…                       |
|9                        |nine                     |--.                     |



    Кодталған   элементтер   енгізу   алфавитында   белгілер   деп  аталады.
Енгізу  алфавитіндегі  әртүрлі   белгілер   санын   белілік   деп   аталады.
Кодталған   символдар    белгілерінің   санын   кодтың    разрядталуы    деп
аталады.  Соңғы  кодта   бірінен    кейін   бірі   орындалады.   Ал   кейбір
белгілер  параллель   біге   орындалады.  Морзе  азбукасында:
➢  Символдар  деп алфавит  тілінің  элементтерін  және  сандық  алфабитті
  атайды.
➢  «Нүкте» және «Сызықша»  белгілері  бойынша  (немесе  «+» немесе «-»
  немесе «1» немесе «0»).
➢  Екі  белгілеу  бойынша  Морзе  азбукасы  екі  мағыналы  болып  келеді.
  (Болжарлық,  екілік  код)  егер  олар  үшеу  болса,  онда  біз  үштік
  тернарлық  үш мағыналы  кодпен  жұмыс  атқарушы  едік.
➢  Морзе  азбукасы  бірден  беске  дейінгі   әріптермен   және   цифрлармен
  берілсе  онда  мұндағы  код  ауыстырылымдылы  разрядты деп  атлады.  Егер
   белгілеулер   бірінен   кейін   бірі   берілсе   онда   Морзе   азбукасы
  кезекті  код   деп   аталады.   Бірінші   телеграф   және   радиобайланыс
  әдістері   осы   Морзе   азбукасымен   орындалған.   Мұнда  нүкте    және
  сызықша түрінде  импульс  құрылғысы  берілген.  Олар   телеграф   лентасы
  арқылы  XX ғасыр  басында   бес   разрядты   телеграф   кодына   айналды.
  Бірде   сегіздік   таблицасында   белгілі   кодтар    тізбегі   берілген.
  Олардың  кейбіреуі  ең  басында  байланыс   үшін  анықтамаларды    кодтау
  үшін  ЭВМ-да ақпаратты  өңдеу  үшін  қолданылған.
➢  Бодо коды – бес  разрядты  код. Европалық  стандартты  телеграф
  байланысында  қолданылған. (Екінші  атауы IA-1- international  alphabet #
  1);
➢  М-2 немесе  IA-2  телеграф  коды  ол  бүкілхалықтық  комитетпен
  телефон  және  телеграф  байланысының  және  Бодо кодының  орнына
  қолданылған.
➢  ASCII стандартты 7 биттік код.  Ол  128  символдан  тұрады, және
  бағанның  символдары  латынша  сандары  арнайы  белгілеулермен  және
  символдармен   жазылған.  Бұл кодқа  ұлттық  символдар  10  бинарлық
  комбинация  құрылған.
➢  EBCDIC  8- разрядты  код  IBM фирмасымен  ұсынылған. IBM/360-375 машина
  сериясына  арналған.
➢  ASCII -8-8 –разрядты  код ішкі және  сыртқы анықтамаларды  беруде  және
   жүйелерді  орындауда  қолданылады. Ол 128- симролдан тұрады, оның
  ұлттық кодтық таблицасы  бар.
➢  Холлерита  коды – ол ДК-ға  ұсынылған. Содан ол  ақпаратты  енгізудің
  кодын  ЭВМ перфокартында  қолданылады.  Ақырғы  сөздерді  өзгерісте
  жүйелерді  символдың  кодтауда  универсалды  код UNICODE қолданылады.  Ол
  16- разрядты  кодтау  символдарынан  тұрады.
        UNICODE стандартты  техникалық  комитеті  екі   үлкен   фирмада   өз
жұмыстарын  көрсеткен.  Ол  кодты анықтайды  және   әр  түрлі   символдарды,
әріптерді,   иероглифтерді,   цифрларды   идентификациялайды.  Код   7-8   –
биттік  және  ASCII  орнына   қолданылады.   16-  разрядты   UNICODE   65536
символдарды  128 ASCII кодының  орнына  кодталады.

Кейбір кодтың  кестелік фрагменттері.
|Символ     |IA-2      |Бодо   |ISO-7      |EBCDIC     |ASCII-8    |Холлерид  |
|     А     | 03       |10     |41         |С1         |А1         |900       |
|     В     |19        |06     |42         |С2         |А2         |880       |
|    С      |OE        |16     |43         |C3         |A3         |840       |
|    D      |09        |1E     |44         |C4         |A4         |820       |
|    a      |          |       |61         |81         |E1         |          |
|    b      |          |       |62         |82         |E2         |          |
|    c      |          |       |63         |83         |E3         |          |
|    d      |          |       |64         |84         |E4         |          |
|.(нүкте)   |1C        |05     |2E         |4D         |4E         |842       |
|,(үтір)    |0C        |09     |2C         |6B         |4C         |242       |
|:(қос      |1E        |       |3B         |5E         |5B         |40A       |
|нүкте)     |          |       |           |           |           |          |
|?(сұрақ)   |10        |0D     |3F         |6F         |5F         |206       |


     UNICODE  28000  әріптерді,   белгілерді,   тіркестерді,   иерогливтерді
дүние  жүзі    ұлттық    тілдерін    қамтамассыз    етеді.   UNICODE   30000
математикалық  және  техникалық  символдарды  құрайды.
     Бірлік  стандартты  тілдік   форматта   ол   халықаралық   алфавиттерді
кодтауды  ретке  келтіреді.   Мұндағы  тілдер  иврит  және   араб   тілдері.
Мұнда  мәтін  оңнан  солға қарай  жазылады.  Анықтамаларды  беруде    қалдық
 қодтар  қолданылады.  Оларға  бірінші  кезекпен   қатені   табатын   кодтар
жатады.  Бұл  кодтарды  циклдің  қалдық  кодтары  деп аталады.   Бұл  кодтың
түрі  барлығын  нақты  анықтайды.  Бұл  код   берілген   блокта   және   CRC
циклдік қалдық  кодында   қатені   табу   үшін   кеңінен   қолданылады.   Ол
берілген  блокта  қайталанып  орындалады.  Егер   нәтиже   шығарылмаса  онда
мазмұнда  қате  бар  деген  сөз.   Қатені   түзеуде   кодтар  маңызды   роль
аталады.  Бұл кодтарды   қолдануда   берілген   қателерді   анықтауға   және
түзетуге болады.  (Хемминг коды берілген  блоктағы  қателерді  түзейді).
                                            Кодтау  және  сандарды  түзеу.
        Символдарды  кодтаудан  басқа  ЭВМ-да сандарды    кодтау   беріледі.
Біз   заттарды   ондық   санаумен   және   100-дік   санаумен    санауға   т
үйрендік,  он бірлік ондықты  құрайды.  Он  ондық   жүздікті  ,  он   жүздік
мыңдықты  құрайды. Он ондық  жүйелік санау   болып   табылады.   Мысалы   он
екілік жүйелік  санау  немесе  Римдік  жүйелік  санау   бар.  Ең   қарапайым
әдіс  болып  компьютерлік  жүйе  болып  табылады.  Санау  жүйесі   символдар
   көмегімен   сандарды   анықтайды,   оның   мағыналарын   ашады.   Жүйелік
сандарды  санауда  келесі  түрлерге  бөлінеді:
➢  Позициялық  емес;
➢  Позициялық;
  Позициялық емес  жүйелік  санау  сандарды  реттеген  кезде  олардың
мағынасын
ауыстырмайды. Ең  қарапайым мысал  болып жүйелік  санау  яғни  ондағы
сандар  бірлікпен немесе  таяқшамен  беріледі.
      1=I;
      2=II;
      5=IIIII;
      10=IIIIIIIIII.
Келесі  символдар  санмен  беріледі.
     -1;
     -6;
     -12;
     -24;
     -60;
     -365,
 және  ереже бойынша  сандармен   ол кез  келген  символдың
комбинацмяларды  жазуына  және  оның  нәтижесін  шығаруға  болады. Мысалы
444 – үш әдіспен  жазуға  болады.
                             (365+60+2+6+1);
                             (6+1+365+60+12);

   Позициялық  жүйелік  санау әрбір  санның  мағынасын  ашады.  Оның
жүйелік  санауы  позициялық  болып табылады.
   Мысалы:
23=2*10+3;
32=3*10+2;
және 23=32

  Римдік  жүйелік  санау  араласқан  болып  табылады. Оның  сандарының
әрбір  мағынысы  оның  реттілігінің  орнына  байланысты.
   VII;
   VI;
   IV.
  V- бесті  білдіреді, I- бірді білдіреді.  Ал  екінші  жағынан  цифрлардың
 бір – бірімен  қалай  орналасқаны  маңызды.
   VII=5+1+1=7;
   VI=5+1=6;
   IV=5-1=4.
     Жүйелік  санаудың  негізі  болып  әртүрлі  цифрлардың   саны  олардың
позициялық  жүйелік  санауда  қолданылады. Цифрлардың  мағынасы  0-дан  Р-1-
ге  санау  жүйесі  екі  түрде  беріледі.

N=[pic]
  Төменгі  индекстер  цифрда   мыналарды  анықтайды:
➢  Индекстің  мағынасының  ондығы;
➢  Бүтін  мағынаның  тірістігі;
  Максималды  бүтін  сан  a m разрядында берілген.
     N[pic]=[pic]
  Минималды  бөлшек  сан  S  разрядында  берілген.
     N[pic]=P[pic]
    Екілік   санау  жүйесі  Р=2  0  және 1 екі  цифрының  ақпаратын
  қолданады.  Бірінші  жүйелік  санаудан  екінші  жүйеге  көшу  ережесі
  пайда  болады. Мысалы екілік сан 101110,101 ондық санға 46,625-ке тең.
  101110,101[pic]=1*2[pic]+0*2[pic]+1*2[pic]+1*2[pic]+1*2[pic]+0*2[pic]+1*2[pic]
  =46.625[pic]
                          Екілік санау  жүйесін  алгебралық  қолданылуы.
    Санның белгісі  әдетте  екілік  цифрмен  кодталады:
➢ код ноль «+» белгісін  білдіреді.
➢ Код бір «-» белгісін  білдіреді.
    Сандардың  алгебралық қолданылуы  сандардың  белгілеулеріне  байланысты
 және арнайы  кодтардың  машинада  қолданылуына  байланысты:
➢  Санның  түзу  коды.
➢  Қайтымды код.
➢  Қосымша  код.
   Сонымен  қатар  екі  соңғы  код  командасында  операциялық  санаудың
теріс  санның болып  табылады.   Қосымша  код  операцияның  орындалуын
түзетеді.  Сондықтанда  командаларда көп  қолданады.
 Санның  түзу коды N
  Егер N=a1,a2,a3,…am, онда
N>0, (N)пр=0,a1,a2,a3,…am;
N<0,(N)пр=1,a1,a2,a3,…am;
N=0 бірдей  мағынада  болмайды. (0)пр=0.0…=1.0… .
  Егер ЭВМ-да бірдей  белгі берілсе,  онда операция сол  жолмен
орындалады. Егер ол әртүрлі  мағына  берсе,  онда абсолютті  үлкен көлемде
орындалады. Операциялық  түзу  кодқа  бөлінуі  және  көбейтілуі  қарапайым
түрмен  орындалады.
Кодқа  операцияның  саналуы  теріс  санмен  беріледі, сондықтан  ЭВМ-да
түзу  кодты  қолданған   кезде қиындықтар  пайда  болады.
   Қайтымды код   N санында  белгілейік.
Егер N=a1,a2,a3,…,am және [pic]а инверсияны  білдіреді, егер а=1 болса,
онда а=0,  және  керісінше. Сонда N>0,(N)обр= 0,a1,a2,a3,…,am;
                              N<0,(N)обр=1,a1,a2,a3,…,am;
N=0 бірдей  емес  мағынаны  білдіреді (0)обр=0.000…0=1.11…1.
Қайтымды кодты алу  үшін цифрларды инверциялау  керек. Оның  белгісінің
алдына  бір  санын  қою керек және басқа  разрядтағы нольді бір мен бірді
нольмен ауыстыру  керек.
Мысалы:
N=1011(N)обр=0.1011;
N=-1011(N)обр=1.0100.
 Қосымша  код  N санын  белгілейік.   Жоғарыдағыдай  N=a1,a2,a3,…,am және  а
биіктігін  білдіреді,   қайтымды  а,   егер  а=1  болса,  онда   а=0,   және
керісінше.
Онда:N>=0,(N)доп=0.,a1,a2,a3,…,am;

 N<=0,(N)доп=1,a1,a2,a3,…,am+0.00…1 .
   Қосымша  кодты  алу  үшін барлық  цифрларды  инверциялау қажет.  Содан
соң ең  төмен  разрядқа  1-ді  қосу керек.
Мысалы:
N=1011,(N)доп=0.1011;
N=-1100,(N)доп=1.0100;
N=-0000,(N)доп=10.0000=0.0000 (1 жоғалып кетеді)
   Бір  мағыналы  емес бейнелеуде  ноль  жоқ. Эмперикалық  ереже,  қосымша
кодты алу  үшін  теріс сандарды  және  барлығын  инверциялау  қажет.
              Регистрлердің бөлінуі. Объект кодтың ықшамдылығы.
       Адрестік   регистрлер   шапщаң   жадтағы   адрестерді   сақтау   үшін
қолданылған.   Бұл   адресс   арифметикалық   және   логикалық   операциялық
процессорларда қатысуы мүмкін. Көптеген қазіргі процессордағы  регистрлердің
бөлінуі адрестерде немесе регистрлерде шартты болуы  мүмкін,  ал  АЛУ  адрес
пен сол шартты  бірдей  көреді,  яғни  екеуін  бөлмейді.  Алайда  практикада
программа   айқын   регистрлерге   адрестерді   бекітіп   қояды.    Көбінесе
микропроцессорларда  Motorola  MC  680  XO   сериясы   тек   қана   адрестік
регистрлерді  операциялық  адрестерінде  қолданылады.  Ал  А7  регистрлерден
функция стека шындары бекітілген.
      Келесінде адрестік регистрлер қолданылады:
      Базалық регистр (Base) – олар  көрсетілген  бастапқы  адрестік  объект
үшін қызмет етеді.
      Стек көрсеткіші (Stack Pointer) – процессорлармен, яғни жұмыс  ұйымдар
үшін  қолданылады.  Мұндай  операциялар   кейде   мысалға   айтқанда   стека
операциялық көшіру, әлде  стекадан  шығаруда,  ішкі  программаларда  шақыру,
әлде оларға келу;  шақыру  программалық  өңдеудің  үзілуі,  үзілуден  қайту,
басқа тақырыпты қосу,  деңгей  ағымын жеңілдеттіру және т.б. да жұмыс  істеу
мүмкін.   Микропроцессорларда  ХР  көрсеткіш  стекада  регистрдің  SP  –   і
қолданылады,    сол    стека    шынын    ағымдағы    шығымға     адрестейді.
Микропроцессорларда Motorola  сериясы MC 68  XO  көрсеткіш  стекасы  адресті
регистрді А7 қолданылады және көрсеткіш стеканың қолдануы.
       Көрсеткіш  базасы  (Base  Pointer)  -    стектің   ыңғайлылығы   үшін
қолданылады, оның шынында болмайтын, мысалы ішкі программалардың  параметрі.

      Объектілік код – ең біріншіден өзін мәлім құрылым ретінде таныстырады.
Объектілік кодтан шығару кодына көшіру  не  оны  өзгерту  мүмкін  емес.  Шек
ойған  көлемдерде   программаның  бір  бөлігін  тілге  аудару  мүмкін.   Бұл
белгілеуді кері өндіру үшін заң шығарушы мынадай термині  `программалар  ЭЕМ
үшін қолданылады`  қолданылады.Техникалық қабылдаудан қолдану  облысына  шек
қойылады.
      Техникада қолданылған аудан шектелген болады  мысалға,  әртүрлі  тілде
жазылған программалар бір немесе сол сияқты  объектілік  код  болып  шығады,
сол  сияқты  шығару  мәтіні  нақты  компьютерге   бағынышты  болады.  Шығару
мәтіндегі  программ  ереже  бойынша   құпияда   сақталған.   Сондай   атақты
программалар мысалға айтқанда Microsoft  Word   объектілік  түрге  жайылады.
Оларды  түсіну  үшін  біршама  программаны  мысалға  келтірсе,  координатада
берілген екі нүктенің арасындағы арақашықтықты аламыз. Бұл программада  шығу
мәтіні бүгінгі күндегі үш атақты тіл программасында көрсетілген   және  оның
объектілік коды әрбір компьютерге  түсінікті   Intel    Pentium  процессоры.
Алдыға жылжу барысында тағы бір терминдік мәселені атау керек.
       Заң шығарушы бұл - әртүрлі зат болуы мүмкін.  Программаны  сатып  алу
мүмкін емес. Программаның данасы мен  жай  программаның  айырмашылығы  кітап
пен әдеби шығармалар секілді қарастыруға болады.  Алдымен талдасақ,  негізгі
файлдан қалай ұқсас  бинарник  шығады.  Мысалы,  гусеница  бірден  көбелекке
ауыспайды,  сол  сияқты   файл   да   бинарникке   ауыспайды,   сол   сияқты
компиляциядан кейін  объектілік  код  құрылады.  Бұл  орындалатын  код  –  ‘
дақтармен’, яғни солар үшін объектілік  код  әлі  де  орындалмайды.  Мәселен
басқа кір жуатын машина еске түседі.  Сіз оны жаңа ғана сатып  алдыңыз  және
ол үйде бір қорапта тұр делік. Сондай күйде ол кір жумайды, бірақ сіз  бәрі-
бір қуаныштысы, өйткені оны тек қана алып шығып және оны қосу.
            Объектілік кодқа келсек, ‘Бұл сол дақ’ арасындағы  ең  негізгісі
– символдық кесте.
      GCC ережесі
      Сіз компиляцияны жабық  компилятор  кодымен   бос  программа  құрылымы
ретінде  елестете  аласыз  ба?  Сіздің   орындалатын   файлдарыңызда    оның
орындалатын қайдан білесіз ? Ken  Thompson,  барлық  уақытында  компиляторды
жазды. Және ‘login’ программасын қарады.
   Басында...
Ең алдымен біз бірінші рет  компиляторды  қалай  шақырамыз  екенін  білуіміз
қажет. Бұл өте қарапайым – біз мәңгі бірінші классикалық программа  Си-  дан
бастаймыз.
# include < stdio.h>
Int main ()
{
Printf(‘Hello world !/n’);
Бұл фйлды game-ге сақтап қойыңыз. Сіз оны командадан өңдей аласыз.
 Gcc game.c
Соңында, компилятор Си a.out атымне аталатын құрылған файл құрады.  Сіз  оны
жібере аласыз, егер
  a.out
Hello world
      Әрқашанда  сіз  программаны  өңдеген  кезде,   жаңа   a.out    алдыңғы
программаны  ескереді. Бірақ сіз программаның қайсысы программасын  құрғанын
айта алмаймыз. Біз бұл мәселені gcc ережесінің көмегімен  шеше  аламыз,  біз
орындалған файлды қалай атауымыз мүмкін, оны мына –о кілттің көмегімен.  Біз
бұл программаны   game  деп атаймыз,
  G c c – o game game.c
   Game
Hello world
      Біз бұл жерде әлі де алынған керекті программадан  алыспыз.  Егер  сіз
бұны қате деп ойласаңыз, сіз  фактіге  көңіл  бөлесіз,  бізде  өңделетінжәне
жұмыс істейтін  программа  бар.  Егер  біз  программаға  функционалды  біраз
қоссақ, онда программа жұмыс  істеуге  қабілетті  екенін  көреміз.  Бастапқы
программист 1.000 бет шығару кодын жазғысы келетіні  мәлім,  содан  оны  сол
уақытта түзету. Менің ойымша оны ешкім олай істей алмайды.  Сіз бір  кішкене
жұмысқа қабілетті программа  құрасыз, сіз оны өзгертіп қайтадан оны  жұмысқа
саласыз. Ол қателік санын көбейтіп, бір рет оның  қатесін  түзетуіңіз  қажет
болады.
        Келесі қадам –  біздің  ойынымызға  қатысты  файл.  Бұл  файл  басқа
файлдарды немесе функциоларды жазылуын тек бір жерде жинайды.   Ол  біркелкі
анықтауыш құрылымдарды өңдейді,  сондықтан  программаның  әрбір  бөлігі  бір
затты бірдей қабылдауы мүмкін.
  # ifndef  DECK – H #define DECK- H
  # define DECKSIZE 52
  Typedef struct deck-t
  {
   Int card [DECKSIZE];
   /*number of cards used*/
   Int dealt;
   } deck –t;
   #endif/* DECK-H*/
Бұл файлды Deck.h. секілді сақтаңыз. Сол  сияқты  .с  файлы  өңделгендіктен,
біз game.c-ді өзгертуіміз керек. 2game.с  файылында, #  ihclude  “deck.h”-ты
жазамыз. Ал 5 жолда deck-t deck жазамыз.  Оның  ештеңесін  сындырмағанымызға
оған көз жеткізу үшін оны қайта өңдеңіз.
       Gcc – o game game.c
      Қате жоқ – онда жұмыста жоқ. Егер ол өңделмесе, онымен жұмыс істеңіз.
  (Рre- compile)- Процессинг
  Компилятор deck-t  қандай тип екенін қайдан біледі? Өйткені ол  процессинг
кезінде “deck.h “  файлын “game.c” файлына  көшіреді.  Директивті  процессор
шығу кодына былай өзін көрсетеді: “#”. Сіз процессорда  gcc-ндағы  кілт  –Е.
Арқылы шақыры аламыз.
3.200 жолдың шығуы! Олар көбінесе бастапқы  файлда  stdioh  құрылады,  бірақ
оларға қарасақ сіз сол біздің жазылуымызда көресіз. Егер сіз кілт  арқылы  –
о шығу файлына ат еңбізбесеңіз,  ол  соңғы  болып  қала  береді.  Процессинг
кодқа үлкен қасиет береді, егер ол мына 3 мақсатты орындаса.
1. “Өшіру (#include)” файлын өңдеу шығару файлына көшірсе.
2. “Анықталған ( # define)” тексті нақты мәлімге ауыстырса.
3. Оларды шақыру кезіндегі жолдағы макросты ауыстырса.
   Компиляция (Compile)
Сапалық жолымен gcc сіздің кодыңызды Ассемблер  тіліне  аударады.  Егер  сіз
синтаксикалық қателер жіберсеңіз, онда ол сізге  хабарлайды.  Кейде  адамдар
қате ойлап қалуы мүмкін, бұл тек бір жалғыз процессордың  қадамы.  Сондықтан
gcc үшін өте көп жұмыс қалады.
      Біз  автоматты түрде game.o. атты файлды құрамыз. Біз мұнда ең маңызды
нүктеге  тоқталамыз.  Біз  әртүрлі  файлды  юс  алуымыз  мүмкін  жене   одан
объектілік  код  құруға  болады.  Бізжің  мысалға  келсек,  карталық  ойынды
программаласақ және картаны deck-t секілді анықтадық, бізге  енді  функцияны
жазу керек. Бұл функция көрсетілген картаны алып, оны орындайды. Ол  “drawn”
массив көмегімен картаға қарайды. Бұл массив DECKSIZE картаның   қайталануын
қадағалайды.


      Бақылау сұрақтары:


1. Статикалық және динамикалық жады айырмашылықтарын атаңыз?
2.  Компиляцияның уақыт адресі. Уақытша жады.
3. Кодтың генерациясы. Кодты  құру.
4.  Үш  адресті  код.  Р  –  коды.  Байт  –  коды.  Машиналық  кодты  құруға
   тоқталыңыз?






3. ЗЕРТХАНАЛЫҚ САБАҚТАР

         Зертханалық жұмыс № 1  Толық автоматтардың эквиваленттілігі


        Мазмұны:  Формальдық тілдер мен  грамматиканың  типтерін  айқындау.
   «алфавит»,   «тізбек»,    «формальдік    грамматика»,    «эквиваленттілік
   грамматика» түсінігін бекіту. Формальді тілдердің типін, грамматикалардың
   эквиваленттілігі мен бірмәнділігін Хомский классификациясы бойынша туынды
   грамматикалардың иерархиясын құруды дағдыландыру.

      Мақсаты: - «алфавит», «тізбек», «формалды грамматика»  және  «формалды
тіл», «қорытынды тізбек», «эквивалентті грамматика» түсініктеріне шек қою;
      - Хомский  классификациясы  эквивалентті  грамматиканы  құру  кезінде
іскерлік пен дағдыларды ұйымдастыру.

                                 Негізгі теория

      Анықтама 1.1. V  алфавиті деп соңғы символ жиындарын айтады.
      Анықтама 1.2. V алфавитіндегі α  тізбегі  деп  сол  алфавиттегі  әрбір
жүйелік символдарды айтады.
      Анықтама 1.3. Бірде бір символды қамтымайтын тізбекті бос тізбек деп
                 атайды және ε белгіленеді.
      Анықтама 1.4. V  алфавитіндегі  формальды      а   нықтауыш     тізбек
символдары:
   1) V  алфавитіндегі ε - тізбегі;
   2) егер α – тізбегі  V  алфавитінде және  а - сол алфавиттегі белгілер,
      онда αа – символы V алфавитінде болады;
   3) β - тізбегі V  алфавитінде болады егер бекітулер күшінде болса. ковой
      1) және  2).
      Анықтама 1.5. Ұзын тізбекті  α деп оны құратын сандар символдар  (|  α
белгіленеді|).
      V* жиын арқылы берілсін, V алфавитіндегі барлық тізбекті  қамтитындар,
ε бос тізбектерін қосқанда, V+  -жиыны,  V  алфавитіндегі  барлық  қамтитын
тізбектер, ε  бос тізбегін қосқанда.
      Мысал 1.1.  V = {1,0} болсын, онда V* = {ε, 0,1, 00,01,10,11, 000,K},
      ал

V+ = {0,1,00,01,10,11,000,K}.
      Анықтама 1.6. Формалды грамматика деп төртік түрді айтады:

           G = (VT,VN,P,S), (1.1)

   VN - терминалды емес символдар грамматикасының соңғы жиындары (әдетте
       латын әріпімен жазылған);
   VT - грамматика символдарының терминалды жиыны (әдетте латын әріпімен,
       сандарымен және т.б.), VT ∩VN =∅;
   Р -   соңғы ішкі жиынның жиыны болып табылатын грамматика қорытындысының
       ереже жиыны, (VT [pic] VN)+ × (VT  [pic]VN) ; элемент (α, β) Р
       жиыны деп шығару ережесі және ол мына түрде жазылады α →β  (былай
       оқылады: «α тізбегінен  мынандай тізбек шығарылады.
   S -   бастапқы  символ грамматикасы, S [pic] VN.
   Шығару ережесінің жазылымы бірыңғай сол бөлікті түрі α → β1,α → β 2,K,α →
β n  K,α→ βn   қолданылады.

      Мысал 1.2. Грамматика G1=({0, 1}, {A, S}, P1, S), мұндағы   Р1   ереже
түрінен тұрады: 1) S→ 0A1;   2)0A→00A1;       3) A →ε.
      Анықтама 1.7. β [pic] (Vt [pic] VN)*  тізбегі   α[pic]  (V  T[pic]VN)+
тізбегінен  грамматикаға  шығарылуы)G  =  (VT,VN,P,S    (былай  белгіленеді:
а^>Р), егер α = ξ1γξ2и β = ξ1δξ2, £, ξ2 , δ  [pic] (VT  [pic]  VN)*  ,γ[pic]
(VT[pic]VN)+и шығару ережесі у γ → δ  Р жиынында қолданылады.
      Анықтама 1.8. β[pic] (V[pic]TVN)*  тізбегі выводима из цепочки α [pic]
 (VT [pic] VN)+в тізбегінен шығып G = (VT, VN, P, S)  грамматикасына  барады
 (а==>*Р белгіленеді), егер жүйелік жиындар қолданса  у^, у-^,..., уп {п>0),
  онда а = у$ => у\ =>...=> уп = р болады.
      Мысал   1.3.  G1   5'=^*000111 грамматикасында ,  S => 0A1 => 00A
=> 000АШ => 000111 қорытындысы пайда болады.
      Анықтама 1.9. Туындаған грамматика тілі )G = (VT, VN,P, S),
деп VT грамматикасындағы S бастапқы символ  грамматикасынан  шығатын  барлық
тізбектерді айтады.  Р ереже жиын көмегімен  анықталады,  жиын}  L(G)  =  {α
[pic]Vt | S => *α.
      Мысал 1.4. грамматик үшін G1 L(G1)={0n1n | n>0}.
      Анықтама 1.11.  α[pic](VT[pic]VN)* тізбегі, L(G1) = L(G2) кейде шығару
үшін қолданылады.
Мысал   1.5.   G1 грамматикасы үшін   эквивалентті  грамматика  болып     G2
=({0, 1}, {S}, P2, S), шығару жиын ережесі болған жағдайда  S  →  0S1  |  01
ереже түрін қамтиды.

                 Хомский бойынша грамматика классификациясы
0 тип. G = (VT, VN, P, S) грамматика деп 0 грамматика типін  деп айтады,
      егер де оның шығару ережесіне ешқандай ұйымдар кірмесе, анықталған
      грамматикадан басқа.
1 типі. G = (VT,VN,P,S) грамматика деп  контекстно-тәуелдіні айтады, егер
      де барлығы Р жиындағы шығару ережесі болса
Р  типі α→β түрін қамтиды, α [pic] (VT V[pic]N)+, β ([pic]VT [pic]VN)*
және  |α| ≤ |β|.
2 типі. G = (VT,VN,P,S) грамматикасы контекстно-бос грамматика  деп  аталады
(КС-грамматикасы), егер де оның  ережесі  мынадай  түрді  қамтыса:  A  →  β,
A[pic]Vn және  β [pic]V*
3 типі. Грамматика  G  =  (VT,  VN,  P,  S)  сол  жақ  терістігінің  жүйелік
грамматикасы  (Р-грамматикасы), егер де оның ережесі мынадай түр  қамтыса  A
→ aB | a , мұндағы a [pic]VT; A, B[pic]VN.
      Грамматика G = (VT, VN, P, S) оң жақ терістігінің жүйелік грамматикасы
(Р-грамматикасы), егер де оның ережесі мынадай түр қамтыса A → aB | a ,
мұндағы a [pic]VT; A, B[pic]VN.
      Анықтама 1.12. L(G)  тілін  деп  k  тілін  айтамыз,  егер  де  оны   k
грамматика типінде жаткызсақ, k - грамматика типінің максималды мүмкіншілік
нөмірі. Арақатынас грамматика типтері және тілдер 1.1 суретте көрсетілген.
   Р - жүйелі грамматика ;
   КС - контекстно-бос грамматика;
   КЗ - контекстно-тәуелді  грамматика;
   0 типті - грамматика  0 типі.
















            1.1 сурет - Арақатынас грамматика типтері және тілдер
      Мысал 1.6. Хомский  классификациясының  әртүрлі  фомалды  түрлер  және
грамматика мысалдары. Терминалдарды мәтіндік жол символдарымен  белгілейміз,
терминалды емес – жазылған әріппен, бастапқы символ грамматикасы - S.
                            n2−1
      а) Тіл түрі  0 L(G)={ a2 b      | n ≥1} шығару ережесімен грамматика
анықталады:
      1) S → aaCFD;          2) AD → D;
      3) F → AFB | AB;            4) Cb → bC;
      5) AB → bBA;           6) CB → C;
      7) Ab → bA;            8) bCD → ε

      б) Контекстно-тәуелді тіл L(G)={anbncn | n≥1} шығару ережесімен
грамматика анықталады:
      1) S → aSBC | abc;    2) bC → bc;
      3) CB → BC;      4) cC → cc;
      5) BB → bb.


      в)    Контекстно-бос тілдер L(G)={(ab)n(cb)n |  n>0  }  S → шығару
ережесімен грамматика анықталады:
        1) Q → cSc.
      2) Q → cSc.
      г)    Жүйелі тіл L{G)={col|  ω[pic]  {a,  b}+,  а}  шығару  ережесімен
грамматика анықталады:
1) S → A   | B    ;
2) A → a | Ba;
3) B → b | Bb | Ab.

                № 1 зертханалық жұмысқа орындау тапсырмалары

      Зертханалық жұмысты  орындаған  кезде  келесі  іс-әрекеттерді  орындау
қажет:
1) грамматикаларды құру, тудырушы формальды  тілдер,  берілген  нұсқаларымен
сәйкестігі;
2) Хомский классификацисясындағы формалды грамматика  типтері  мен  тілдерді
анықтау;
      3) программалық құрылымды қамсыздандыру, Хомский классификациясындағы
берілген өрістерді тану типі.

  1.1 кесте - № 1 зертханалық жұмыстағы жеке тапсырма нұсқамасы


|Нұсқа       |Формалды тіл                                                 |
|1           |L(G)={anbmck      |n, m, k>0}                                |
|2           |L(G)={(ab)n(cb)m    |n, m≥                                   |
|3           |L(G)={0n(10)m     |n, m≥                                     |
|4           |L(G)={wcwcw       |w[pic]{a,b}+}                             |
|5           |L(G)={c2ndn     |n>0}                                        |
|6           |L(G)= {l+l-l    |lG{a,b}+}                                   |
|7           |L(G)={(10)n-1(01)n+1  n>0}                                   |
|8           |L(G)={(ac)      |n>0, a [pic]{b, d}, c[pic]{+, -}}           |
|9           |Z(G)={   (010)w     |n>0}                                    |
|10          |L(G)={a1a2…anan…a2a1       |ai [pic]{0, 1}}                  |
|11          |L(G)={a1a2…ana1a2…an       |ai[pic] {c, d}}                  |
|12          |L(G)={ab.b      |ai[pic] {+, -}, b {[pic]0, 1, 2, 3, 4, 5, 6,|
|            |                |7, 8, 9}+}                                  |
                            Зертханалық жұмыс № 2

  Шекті айқындауыштар, берілген автоматты грамматика үшін шекті автоматтың
                        ауысу графын құру және өңдеу


        Мазмұны:   Шекті   айқындауыштардың   эквиваленттілігі   және   бір
   мәнділігін құру, тұрақты  грамматика  бойынша  шекті  автоматтарды  құру,
   «детерминатты емес  және  детерминантты  емес  шекті  автоматтар»  ұғымын
   бекіту
      Мақсаты: - «жүйелік грамматика», «детерминалды емес және  детерминалды
соңғы автомат» шек қою;
           -  жүйелік  грамматикада  соңғы  автоматты  форматтау   және   и
преобразования детерминалды соңғы автомата  детерминалды   соңғы  автоматқа
ауыстыру.
                              Негізгі теориясы
      Жүйелі грамматиканы тану үшін соңғы автомат қажет (СА).
      Анықтама 2.1. Детерминалды  соңғы автомат  (ДСА)  деп  бестік  объекті
айтамыз.
           M=(Q,T,F,H,Z),   (2.1)
      Q- болған жағдайда - соңғы жиын автомат жағдайы;
      Т - соңғы жиын кіру автоматы;
      F – ауысу функциясы, Q × T  жиынын көрсететін Q жиынында;
      Н - автомат жағдайындағы бастапқы соңғы жиын;
      Z - автомат жағдайындағы қорытынды жиыны, Z [pic]Q.
      Анықтама  2.2.  детерминалды  емес   соңғы  автомат  (ДСА)  деп  соңғы
автоматты айтады, ауысу функциясында қолданылатын  өту функциясы Q ×Т  ішкі
жиын  автоматындағы  жиындар)P(Q),  ағымдағы  қос  жэиындар   секілді   өту
функциясы біркелкі емес, (q, t ) автомат жиынына ұқсас q′  [pic]P(Q).


                     Өту функцияларын көрсету тәсілдері
      Командалық тәсіл. СА – та әрбір команда пішін түрінде былай жазылады
F(,q, t) = p болғанда
                             q,.p[pic]Q,t[pic]T
      Кестелік тәсіл. кесте жолдарының ауысуы кіру символ  автоматына  ұқсас
t [pic] T, а бағандар – Q жағдайында.  Кесте  ұяшықтары  жаңа  жағдайлармен
толтырылады,  функция мағынасына ұқсас)F(q,t.
Анықталмаған өту функциялары бос ұяшық кестелерге ұқсас.
      Графикалық тәсіл. автоматта диаграмма құрылады – ол ретсіз таңбаланған
граф болып табылады. Граф төбелері аттармен таңбаланған . Доға qжағдайыннан
  p жағдайынаапарады  және  барлық  t[pic] T символдарына таңбаланады,  для
которых F(.q, t) = p  Төбесі,  кіру  автоматына  ұқсас  және  бағыттауышпен
жабдықталады. Граф қорытындысы екі концентрлі шеңберлермен белгіленеді.
           Алгоритм 2.1. Жүйелік грамматикада СА құру
      Кіру: жүйелік грамматика G = (VT ,VN,P,S).
                       Шығу : КА M = (Q, T, F, H, Z).
      Қадам 1. Грамматиканы ереже бойынша толтырамыз А A → aN, A  [pic]VN,a
[pic]VT және N болғанда - жаңа нетерминал, әрбір ереже үшін А A → a, егер
грамматикада оған ұқсас ереже болмаса A→aB, В B ∈VN болғанда.
      Қадам 2. Бастапқы  символ  грамматикасы  S  СА  бастапқы  H  жағдайына
берілген.. Терминалды еместен жиын автоматын  анықтауға  болады    Q  =  VN
[pic] {N}, ал терминалдардан  - кіру алфавитіндегі жиын символы T = VT.
      Қадам 3. Әрбір ереже бойынша A→aB өту функциясын анықтау  F(,A,a) = B
болғанда A,.B[pic]VN,a[pic] VT
      Қадам 4. Қорытынды жағдайда барлық шыңдарды қосу  керек,  символдармен
таңбаланған В B[pic]VN ереже түрінен A→aB,  олар  үшін  қолданылатын  ұқсас
ережелер А A → a, A болғанда ,.B[pic] VN,a  [pic]VT
        Қадам 5. Егер грамматикада S→ ε ережесі орындалса, онда S –бастапқы
символ грамматикасы болып табылады, әлде S – ті қорытынды жиынға жіберу.
Адым  6.НСА алынса, онда оны  ДСА деп аламыз.
                   Алгоритм 2.2. НКА – ны  ДКА-ға өзгерту
      Кіру: НКА М = (Q, T, F, H, Z).
      Шығу: ДКА М' = (Q′, T, F′, H, Z′).
      Қадам 1. M′ ДКА кестесіндегі бірінші бағанды ауыстыру  (бастапқы  жиын
жағдайы) НКА M .
      Қадам  2.  M′  өту  кестесіндегі  бағанды  толтырамыз,  D   символымен
таңбаланған, ол үшін әрбір жолдардағы D  символына   қол  жеткізу  керек   x
кіру символдары кезінде. Әрбір табылған  R жиынды  D  бағанына  M  кестесіне
сыйдыру керек. (сонымен қатар ∅).
           F′(D,x) = {s|s [pic]F(t,x) t ∈D} үшін.
      Қадам 3.  Әрбір  R  жиыны  үшін   (∅  басқасы),  D  бағанында  M′  өту
кестесінде алынған,  кестеге жаңа бағандарды құру, R – мен таңбаланған.
      Қадам 4. Егер СА M′ өту кестесінде толтырылмаған баған болса,  онда  2
адымға шығуға болады.
      Қадам 5. Z′  ДКА  M′  жиынында   әрбір  жиынды  қосу  керек,  M′   өту
кестесіндегі бағандарымен таңбаланған және  q Z НКА M[pic]ұсталынған .
      Қадам 6. Кестеге жаңа жиындарды құрып, ДКА M′ анықтау. таблицу
      Мысал  2.1. Жүйелік грамматика G = ({a,b},{S,A,B},P,S) ережелерімен P:
1)S → aB| aA; 2)B →bB|a; 3)  A→aA|b  СА  жүйелік  грамматикасымен  құрып  ,
детерминалды түрінде алынған автоматты өзгерту.
      Тапсырма есептері келесі «с - әрекеттерді қолданады
      1 КА жүйелік грамматиксы ретінде құрамыз.
1. Грамматиканы ережелермен толтырамыз А A →bN иB→aN, где N – жаңа терминал
емес.
2. Бастапқы соңғы автоматH = S. Жиын автоматы Q = VN = {S, A, B, N}, кіру
алфавитіндегі жиын символдары T = VT={a,b}.
3.  Кестеге өту функциясына шек қою
                    2.1 кесте - M ауысу функция автоматы


      1.4. Қорытынды жиын Z = {N}.
      1.5 Бастапқы символ грамматикасы үшін ε-ережесі берілсін.
      Соңғы автомат М – детерминалды емес, граф НКА  2.1. сол жақ суретте
      көрсетілген
2.1 сурет  - Граф НСА (сол ) және  ДСА (оң) Р- грамматикасы үшін


      НКА бойынша М ДКА М’ құру керек
      Кесте 2.2 - ДКА M′ өту функциясын өзгерту


  2.2 Қорытынды жиын автоматында M′ элементтерді қосамыз Z′ = {(A, N), (B,
N), N}.
  2.3 Келесі жаңа автоматтарды құрамыз   M′: (A, B)=С, (A, N)=D, (B, N)=E.
  2.4 ДСА   келесі бестік объектілер арқылы анықталады:
Q′ = {S, A, B, C, D,E,N}, Т = {a, b}, өту функциясы кестеде көрсетілген
2.3,
H = {S},Z′ = {N,D,E}.
      ДКА алынған граф 2.1 суретте оң жағында көрсетілген.
      Кесте 2.3 - ДКА M′ өту функциясы


                № 2 зертханалық жұмысқа орындау тапсырмалары
      Программалық қамсыздандыру ,келесі функциялар анықталады:
кіру формалды грамматикасы және оны тексеретін жүйелік грамматикалар;
Жүйелік грамматикадағы соңғы автоматтар;
детерминалды емес  соңғы автоматтың детерминалды автоматқа ауысуы;
   4) экранға шығару жүйелік соңғы автомат графы.
      Жеке нұсқалар тапсырмалары 2.4 кестесінде көрсетілген.
2.4 кесте - № 2 лабораторялық жұмыстың индивидуалды тапсырмасы








                            Зертханалық жұмыс №3

                Дербес автоматтар және олардың минимизациясы
      Мазмұны: «Автоматтардың эквиваленттілігі», «минимальді шекті  автомат»
   түсінігін  енгізу,  детерминантты  шекті  автоматтарды   минимизациялауды
   дағдыландыруды қалыптастыру.
      Мақсаты: -  «Соңғы  автоматтың  жетіспеуі»,  «Автоматтың  эквивалентті
күйі», «Соңғы автоматтың минималы» түсініктерін қалыптастыру;
    -Соңғы автоматтың детерминирлеген  минимизациясын меңгеру.

                              Негізгі теориялар

   Соңғы автоматтың 2-і типі бар: Эквивалентті күй және  жетіспеушілік күй.
   Анықтама 3.1.Соңғы автоматтын М = (Q,  T,F,  H,  Z)   екі    q  және   q′
әртүрлі  күйлер n эквивалентті  деп аталады.  Егер  осылардың   бір  күйінде
орналасып,   ω:[pic]  VT*  ,  |ω|≤n,  символының   тізбегіне   кірсе.   Онда
автоматтың соңғы  күйлердің біреуіне  өтуіне мүмкіндік бар.
   Анықтама 3.2.Соңғы автоматтың q күйінің   жетіспеуі-  егерде   автоматтың
басты күйінен   оған жолы болмауы.
   Анықтама  3.3.   Эквивалентті  және  жетіспеу  күйі   сақталмайтын  СА  –
минималды автомат деп аталады.

                       Алгоритм 3.1.СА қалыпының жетіспеуі

      Кіру: КА М = (Q, T, F, H, Z).

      Шығу КА)M′ = (Q′, T, F′, H, Z′).

      Қадам1.Соңғы  автоматтың    бастапқы   қалпын   Qд    қалып   тізіміне
орналастыру керек, сонда Qд0=H шығады.
      Қадам2.Жаңа элементтер үшін  тізімдегі  қалыпты толтыру  үшін
қолданылады.
      Қадам 3.2-ші қадамды қайталау, қалыпқа жеткен  тізім ауыстырылуы
тоқталмағанша , егер  Qд ф Q-f  сонда  i:=i+1, әйтпесе Qд =Qдi
      Қадам4. Q жиынындағы СА  қалпын щығару  үшін Qд   қалыпқа жеткен . Q′
= Q ∩ Qд болмайды.
      Қадам 5.Соңғы  қалыпқа  және  функция жұбына  өтуді  шектеу,
жеткіліксіз күйді құрайды.  Z′ = Z   ) = p|q[pic] (Q−Qд)}.

      Мысал 3.1. Жеткіліксіз  СА  күйін  М = (Q, T, F, H, Z), мұндағы  Q =
{A, B, C, D, E,F,G},T= {a, b}, H= {A},Z= {D, E} және 3.1. кестесінде
көрсетілген.
       Кесте 3.1 – СА функциясының өтуі.
|F        |А        |В        |С        |D        |Е        |
|а        |В        |         |         |С        |В        |
|Ъ        |С        |D        |Е        |Е        |D        |


        СА граф  M′ жетіспеу күйі  3.2. суретте көрсетілген.




        Суретте СА граф  M′ жетіспеу күйі  көрсетілген

          Алгоритм 3.2. СА эквивалентті күйінің бірігуі

       Кіру КА M′′ = (Q′, T, F′, H, Z′) жетіспеушіліксіз қалыпта
       Шығу: Минимальды СА  М" = (Q′, T, F′, H, Z′).
             Қадам  1.  Бірінші  қадамда  нөлдік   R(0)  бөлінуін   құрамыз,
эквивалентті екі класстан  тұратын:  СА  -  Z   қорытынды  қалпы  және   Q-Z
қорытынды емес  қалпы..
      Қадам 2. Өткен қадамда  R(n) бөлінуін  эквивалентті  класста   бұрынғы
күйіне қосылады, олар біркелкі кіру  символымен  n-1  эквивалентті  қалыпқа
өтеді
             R(n) = {ri(n): {qij cQ:VtcTF(qij,t) ⊆ гДи-1)} Vi, j∈N}.

         Қадам 3. Әзірше R(n) ≠ R(n-1  орындалғанша n:=n+1 деп ойлап, қадам
2 – ге өтеміз.

       Қадам 4. Қалған бөлінбеген топтардың күйімен  және  автоматтың жаңа
кестесіне енгіземіз.
      Қадам 5. СА M    эквивалентін  анықтап, жаңа енгізулер енгіземіз.
      Мысал 3.2 Мысалдағы3.1. СА  минималдаймыз. Онда мынаны аламыз:
      R(0)={{A,B,C},{D,E}},n = 0;
      R(1)={{A},{B,C},{D,E}},n = 1;
      R(2)={{A},{B,C},{D,E}},n=2.
       R(1) = R(2),

      Бөлінбеген топтардың қалпын  белгілейміз: X={B,C},Y={D,E}.

      M минималды автоматтын аламыз, мұндағы Q′′={A,X, Y}, Z′={Y}.
      Функцияның  M′′ автоматына өтуі кесте 3.3. көрсетілген
      Кесте 3.3 - Функцияның  M автоматына өтуі


|F′′              |А                |X                |Y                |
|а                |X                |                 |X                |
|Ъ                |X                |Y                |Y                |


      СА минимизациядан кейінгі  өтуі сурет3.3-те графы көрсетілген.

                     [pic]

                    Сурет 3.3 – СА M′′    минималды өтуі



                 №3 зертханалық жұмысқа орындау тапсырмалары

      Программалық жабдықты өңдеп, келесі функцияларды  ұйымдастырамыз:
      1) СА шығуын және экран бетінде  қорытындысының графы  болуы керек;
      2) СА жетіспеген  қалпын шығару;
      3)    СА эквивалентті қалпын  шығару;
      4) Минималды  СА  графын экран бетіне шығару.
      5) Алгоритмге  арналған  тестер  бақылау  мысалдарының сериясын
      өңдейміз.


        №3 зертханалық жұмысқа орындау тапсырмалары сурет3.4 берілген

                            Зертханалық жұмыс № 4

                     Контексті-тәуелсіз (КТ) грамматика


        Мазмұны:   КТ-грамматиканың  бірмәнділігі.  Оң  жақ  және  сол  жақ
   шығару.  Контексті-тәуелсіз  грамматикаларды  келтіру   және   түрлендіру
   эквиваленттілігі.

      Мақсаты: - «эквивалентті грамматика»,  «КС-грамматикасы»  түсініктерін
қалыптастыру;
           - Эквивалентті  контекстті-бос грамматикканы қолдану.

                                    Негізгі  теория

      Анықтама 4.1. КС-грамматикасы келтірілген  болады,  егер  оларда  цикл
болмаған жағдайда. Егер оларда циклдар болмаса,  ε-ережесі   және  керексіз
символдар  болса.
      КС-грамматикасына негізгі алгоритмдерді қарастырамыз.
      Алдымен  басқа   зерттеулермен   және    КС-грамматикасы    грамматика
тілінің  тексерілуін орындайды.

           Алгоритм 4.1. Грамматика тілінің  бар екенін тексеру.
      Кіру: КС-грамматикасы G = (VT ,VN,P,S).
      Шығу: Грамматика тілінің  бар екенін немесе жоқ екенінін  қорытындысы.
      Жиынның терминалды емес екенін  терминалды жолдардан анықтаймыз, N =
{Z | Z [pic] VN, Z => *x, x [pic]VT*.
      Қадам 1. N0=Ø  қоямыз.
      Қадам2.  есептейміз.
      Қадам 3.Егер Ni ≠Ni−1,онда  i=i+1,2- пункке   өтеміз.Әйтпесе  N = Ni
деп санайды.
      Егер  S  N,  онда грамматика тілі бар деген  хабарлама шығады, әйтпесе
  хабарлама  жалған болып шығады.
      Мысал 4.1. G=({0,1}, {S, A,  B},P,  S),грамматикасы  берілген,  ондағы
жиын Р: \)S→AB\ 2)A→0A; 3)A →0; 4)B  →1.  N  жиынның  бірізділік  жақындауын
құрамыз :
      N0=Ø;
      N1= {A,B};
      N2={S,A,B};
      N3={S,A,B}.
       N2=N3, әйтпесе  N= {S, A, B}, одан язык грамматика тілін  бар  екенін
көз жеткіземіз.
      Анықтама 4.2. Керексіз символдар грамматикасы деп:
      а) терминал емес,  терминальды жолдардардан  туындамауы. Жиын
символдар
                   {X | X [pic] VN,^3(X => *x), x[pic]V*T}
      б)  терминал  еместің  жетіспеуі  ,  терминальды   жолдардың  туындауы
жиынның символы
              {X | X [pic] VN, -3(S => *αXβ), 3(Х => *x); α, β [pic]V*; x
              [pic]V*Т);
      в) терминалдың жетіспеуі , жиынның символы

                       {X | X [pic] VT,^3(S => *αXβ); α, β [pic] V*}.

 Алгоритм 4.2.Терминал еместі шектету.

      Кіру: КС-грамматикасы )G = (VT ,VN,P,S.
      Шығу: КС-грамматикасы G′ = (VT, VN′, P′, S), L(G′) = L(G) және барлық

Z [pic]VN′ үшін қорытындылар бар Z => *x, мұнда  xgVj .

      Қадам 1. Терминал емес жиынды алгоритм4.1. көмегімен  анықтау.
      Қадам 2. VN′ =VN∩N,, NБ = VN − VN′, P′ = P − PБ есептеу, мұндағы
PБ[pic]P –бұл жиын ережесі.Ол керексіз терминал емес X [pic]NБ құрайды..
      Мысал4.2. G = ({a, b, c}, {S, A,  B,  C},P,  S  грамматикасы  берілген
ережелермен Р:  1) S→ab;   2)S → АС;   3)А→АВ;   4)B→b;   5)С→сb.
      Оны  эквивалентті  грамматикаға  G′ алгоритм 4.2 бойынша келтіреміз:
      N0 = Ø;
      N1={S,B,C}.
      N2={S,B,C}.


      N1 = N2, онда  N = {S, B, C}. Терминал емес керексіздерді   өшіргеннен
кейін   және   қорытынды   ережесіннен    кейін    G′=({a,b,c},{S,B,C},P′,S)
грамматикасын  ережелерімен аламыз,  P′: 1) S → ab;   2)B→b;   5)C→cb.

               Алгоритм 4.3. Жеткіліксіз  символдарды шектеу.
      Кіру: КС-грамматикасы G = (VT, VN, P, S).
      Шығу: КС-грамматикасы G' = {Vj, VN′, P′, S, ол L{G') = L(G  және
      барлық  Z[pic] V′ қорытындысы бар S => *αZβ,  мұндағы  α, β[pic] (V′)*
      .
      Z грамматики G грамматикасының Z символының  жиының анықтаймыз. Жиын
                      W = {Z | Z [pic] V, 3 (S => *αZβ); α, β[pic] V*}.
      Қадам1. W0 = S қоямыз.
      Қадам 2.Келесі  жақындауды төмендегі  үлгідей  есептейміз:


        Қадам3. Егер Wf ≠ Wi-1 онда  i:=i+1 2-ші  қадамға   өтеміз,  әйтпесе
W = Wi есептейді.
      Қадам 4. V'N =VN ∩W,VT′ =VT ∩W,VБ  V−W,P′=P  −PБ  ,есептеу,мұндағы  PБ
[pic]P  - Бұл жиын ережесі. Ол жеткіліксіз символдарды құрайды.
      Мысал 4.3. G = ({a, b, c}, {S, B, C},P, S ережесімен   жиын  берілген.
)S→ab;   2)B→b;   5)C→cb Оны  эквивалентті етіп, G′ грамматикасын  алгоритму
4.3 бойынша орындаймыз:W2={S,a,b}.
      W1=W2,    онда   W={S,   a,   b}.  Жеткіліксіз  символдардың жиыны =
   {B, C, c}.   Одан кейін  жеткіліксіз  символдарды өшіргеннен  соң
G′ = ({a, b}, {S}, P, S) грамматикасын  P′: . S → ab ережесін аламыз.

                      Алгоритм 4.4. ε-ережесін шектету

      Кіру: КС-грамматикасы G = (VT, VN, P, S).
      Шығу: Эквивалентті  КС-грамматикасы   G′  =  (VT,  VN′,  P′,  S′)   ε-
ережесіз терминаль емес  символдардың  барлығы  үшін,  тек  ғана  бастапқыға
емес, ол оң бөліктегі грамматика ережелерімен  кездеспеуі ерек.

      Қадам 1. G шығару грамматикасында  найти  ε  терминаль  емес  минальды
символдарды  A[pic] VN, A =>*£ табу керек.
   1. }N0 = {A | (A → ε) [pic]P қоямыз.
   2. Nt = Ni−1 [pic]{B|(B →α)[pic]P,α[pic] Ni*− 1 есептейміз.
3. Егер    Ni ≠Ni−1, i:=i+ I  1.2пункке өтеді әйтпесе  N = Ni есептейді.
      Қадам 2. G грамматикасын  жиыннан Р ауыстырамыз  P.
      Қадам 3. P′ жиынын ережелермен толықтырамыз , олар бұл жиынның   әрбір
ережесін  шығару жолымен  терминаль емес  оң бөлігінде шығады..
      Қадам   4.   Егер   S[pic]N, онда   P′= P[pic]{S′ →ε,S′ → S},VN′ =VN
      [pic] S′,   Мұндағы V ∩ {S′} = ∅; әйтпесе VN′ =VN, S′ = S.
     Мысал  4.4. G = ({0,1}, {S, A, B},P, S грамматикасы    Р  ережелерімен
берілген: 1)S→A B; 2)A→0A|ε; 3)B → 1 B |  ε.Оны   эквивалентті  грамматикаға
алгоритму 4.4. бойынша келтіреміз.
     N1 = N2, жиын құрылған және  N= {S,A,B}.
     Қадам 2, 3. P′ жиыны : 1) S→AB|A | B;   2) 0A→0A|;   3).B→1B|1
Қадам4. S [pic]N ,то терминал  емес С енгіземіз және   P жиынын C →S|ε
толықтырамыз′..Грамматика мұндай  түрге енеді:: G′ = ({0,1},{S,A,B,C},P,C)
ережелерімен:P ′   ; 1) C → S |ε ; 2) S → AB | A| B; 3) A → 0A| 0; 4) B →1B
|1.
                  Алгоритм 4.5. Тізбек ережесінің шектелуі.

      Кіру: КС-грамматикасы G = (VT, VN ,P,S).
      Шығу: Эквивалентті КС-грамматикасы G′= (VT,VN′,P′,S′) тізбек ережесіз,
ереже түрі A→B,  мұндағы  A,.B[pic]VN
      Қадам  1.  Для  каждого  нетерминала  A  терминал  емес  үшін   жиынды
есептейміз ,N   = {B | A => *B мұндағы  В е V^N.
   1. Nq = {A қоямыз.
   2. Nf = NiA−1 [pic]{C|(B →C)[pic]P,B [pic] NiA−1, C[pic]Vn  есептейміз
   3. Егер  Ni A≠NAi−1, онда i:=i+1  1.2.пунктіне  көшеді, әйтпесе N   A=Ni
      A
      Қадам 2. P′ жиынын құрамыз: егер  (B→α)[pic]P  тізбектік ереже болмаса
(aeVft),онда P′ ережесі A→ α әрбір  A үшін.

      Мысал 4.5. Грамматикасы  G = ({+,n}, {L, M, N},P, L)    ережелерімен
      Р:
1) L → M ;   2 ) M → N;   3) N —→ N+ | n.    Эквивалентті  грамматиканы  G
алгоритм 4.5 бойынша құрамыз.
      Қадам 1.;N0L={L}
N0L = {L};
N1L = {L, M};
N2L = {L, M, N};
N3L = {L, M, N}.
Сонымен қатар N2L = N3L , то N L = {L, M, N}.
N0M = {M};
N1M = {M, N};
N2M = {M, N}.
Сонымен қатар N1M = N2M , то NM = {M, N}.
N0N = {N};
N1N = {N}.
N1N = N0N , то N N = {N}.
              Алгоритм 4.6. Сол  факторизация ережесін  шектеу.

      Кіру: КС-грамматикасы G = (VT, VN, P, S).
      Шығу:  Эквивалентті    КС-грамматикасы    G'=(VT,VN′,P′,S′)   біркелкі
префиксіз  оң бөліктегі бөлімнен   терминал еместі анықтайтын.
      Қадам 1. Записать все правила для нетерминала X терминал емес   барлық
ережелерді жазу, біркелкі  префиксы   α  [pic]  V*  барларды   альтернативті
түрдегі : X →αβ1 αβ 2 K αβ n β1 β 2 K β n [pic]V
       Қадам 2. Сол жақтағы  жақшадан  префикс α-  ны  альтернативтің  әрбір
жолына шығару:.X → α (β1 | β2 | K | β n Рп )•
Қадам 3. Терминал еместі  Y жаңа белгімен белгілеймі қалған жақшадағы: X
→αY, Y → β1 | β 2 |K| β n.
       Қадам 4. Терминал еместі  жаңа териналь емес Y –мен толықтырамыз және
ережені X және  Y өзгертеміз.
      Қадам 5.Қадам 1-4  қайталаймыз.
Мысал 4.6. G = ({k,l,m,n},{S},P,S)  грамматикасы ережелерімен P: 1) S →
kSl; 2) S → kSm; 3) S → n.
 Эквивалентті  грамматиканы  G′  алгоритму 4.6 құрамыз:
      Қадам1. S→kSl|kSm|n.
      Қадам2. S→kS(l|m)|n.
      Қадам 3,4. Терминал еместі  жаңа териналь емес С –мен  толықтырамыз  ,
сонда G′ = ({k,l,m,n}, {S, C},P′, S) грамматикасын  ережесімен аламыз P: 1)
S → kSC;   2)S→n;   3) C → m.
       Алгоритм 4.7. Тура сол рекурсияны  шектеу.
      Кіру: КС-грамматикасы G = (VT, VN, P, S).
      Шығу: Эквивалентті  КС-грамматикасы  G'= (VT,VN′,P′,S′  ереже
түрінсіз. A→Aα, A[pic] VN, α [pic] V *
      Қадам 1. Грамматикадан  барлық  X терминал емес рекурсия ережелерін
шығарамыз:



      Қадам 2. Жаңа терминал емес  Y  шығарамыз




      Қадам 3. X  оң  бөлік  үшін   рекурсивті  ережені  ауыстырамыз,   жаңа
терминал еместі қолдана отырып, бірақта  тіл өзгермеуі қажет:
      [pic]
      Қадам 4. Жиынды  жаңа терминал емес Y  грамматикасымен   толықтырамыз.
Қадам3–тегі алынған жиынның грамматика ережесімен толықтырамыз
      Қадам 5.  Барлық  рекурсивті  терминал  емес   грамматикаға   қадам1-4
қайталаймыз.Одан кейін   терминал  емес   жиынды  және  ережені  мына  түрде
қарастырамыз VN′ және .P′


                                   №   4   зертханалық    жұмысқа    орындау
    тапсырмалары.
      Программалық   жабдықты   өңдейміз,   эквивалентті     КС-рамматикасын
автоматтандыратын процесс.Программалық жабдық  келесі функцияларды  орындау
керек:
1) КС-грамматика классы грамматиканы еңгізу және тексерудге  тәуелді екенін
ұйымдастыру ;
   2) КС-грамматика тілінің бар екенін тексеру;
   3) Эквивалентті грамматиканың  өшіруге бағытталғаның ұйымдастыру:
           а)    қажетсіз символдар;
           б)    Жетіспеушілік  символдар;
           в)    ε-ережесі;
           г)    тізбек ережесі;
           д)    сол факторизациялық ереже;
           е)    тура сол рекурсиясы.
      Кесте4.1. –де жеке нұсқалар тапсырмалары көрсетілген.
|Кесте 4.1 дің жалғасы-  № 4  және 5 лабораториялық  жұмысқа жеке нұсқа  |
|тапсырмалары                                                            |
|Нұсқа    |Контекстті – бос грамматика                                         |
|11       |G=({S, R, T, F, E}, {a, b, k, {,[,}, l Ц,Р, S), қайдаP: 1)S→{R|[R;  |
|         |2)R→Ra} |Ra] |a| T|F|ε;   3)F→{F}   bb;  4) T→[T];                  |
|12       |G=({Y,K,M,L,S},{a,b,*,/,^ 1)|},P, Y), қайда P: |S;   3) S→Sa/ | Sb/ |
|         |Y→KS | KM;   2) K→K* | K/ 5)||ε;   4)M→*M*;                         |
|         |L→L^ | ^a.                  |                                       |



                            Зертханалық жұмыс№ 5
                         Магазинді жадылы автоматтар

      Мазмұны: Магазинді жадылы автоматпен КТ-грамматикалардың
   эквиваленттілігі. Контексті-тәуелсіз грамматика бойынша магазинді жадылы
   автоматтарды құру.


      Мақсаты:  -  «магазин   жадысының   автоматы   (МП-автомат)»,   ұғымын
қалыптастыру  «кеңейтілген  МП-автоматы»,  «МП-автоматының  құрылымы»;  «МП-
автоматоматына жіберілген жол және тіл»;
        - КС –  грамматика  бойынша  кеңейтілген  МП-автоматының  және  МП-
автоматының  құрылымын  құруға,  МП-автоматының  көмегімен  енгізу  жолының
талдалуы.
                                 Теория негізі
      КС-тілдерін магазин жадысы  бар  автомат  арқылы  тануға  болады  (МП-
автомата).
      Анықтама 5.1. МП-автоматын жеті түрінде ұсынуға:
           M = (Q,T,N,F,q0tN0,Z),      (5.1)
     мұнда Q – автомат қалпының соңғы көптігі;
     T- соңғы енгізу алфавиті;
     N-соңғы магазин алфавиті;
     F – көптікті бейнелейтін, магазиндік функция )(Q × (T ∪ {ε}) × N
             Жиын барлық ішкі жиындарының жиынына QxN , бұл дегеніміз.
             F: (Q×(T[pic]{ε})×N)→P(Q×N*);
          q0 – автоматтың бастапқы қалпы, q0 [pic]Q;
         N0- магазиннің бастапқы символы, N0 [pic] Т;
         Z – автоматтың соңғы қалпының көптігі, Z [pic]Q.
      Анықтама 5.2. МП-автоматтың кескін үйлесімі үш түрі болады:
           (q,a>,a)c(QxT*xN*),   (5.2)
      мұнда q – автоматтың ағымдағы қалпы, q [pic] Q;
         со – енгізу жолының бөлігі, оның бірінші символы енгізу басының
         астында орналасқан, ω[pic]T* ;
         [pic]α – магазин құрамы, a[pic]N *
      МП-автоматының жалпы схемасы 5.1. суретте көрсетілген

















               Сурет 5.1 - МП-автоматтың схемасы Алгоритм 5.1.

                         МП-автоматының жұмыс жасауы

      МП-автоматының бастапқы конфигурациясы (q0, ω, N0) болады.
      МП-автоматының жұмыс қадамын  қатынас  түрінде  ұсынамыз  («|=»  былай
белгілейміз)   және   қатынастардың   қол   жетерлігімен   (   «|=*»   былай
белгілейміз).  Егер  магазин  функцияларының   мағыналарының   біреуі   )F(q
[pic]Q,t [pic] (T[pic]{ε}),S[pic]  N   болса  )(q′  [pic]Q,γ[pic]N  *,  онда
жазылады )(q, tω, Sα) |= (q′, ω, γα. Осыдан келесі нұсқалар болуы мүмкін.
      1)    Жағдай t[pic] T. Автомат q  қалпының ағымында болып тұр,  енгізу
t, символын оқиды, стектың басында Sсимволы бар.  Олкелесі   q′,     қалыпқа
өтеді, енгізу басын  бір  ұяшыққа  оңға  қарай  жылжытады  және  жоғарғы   S
символын γ жолына магазинн символына жылжытады. γ  =  ε  бұл  дегеніміз,   S
стектан жойылады.
      2)    Жағдай t = ε. Бірінші жағдайдан айырмашылығы, енгізу t символына
көңіл бөлінбейді және енгізу басы жылжымайды.  МП-автоматының  бұндай  жұмыс
қадамы ε -қадамы деп аталады, ол енгізужолының оқылуы аяқталса да  орындалуы
мүмкін.
      МП-автоматының соңғы конфигурациясы (q, ε, α)  конфигурациясы  болады,
мұнда q [pic] Z.
      Анықтама  5.3.  МП-автоматы  ω  енгізу  жолын   рұқсат   етеді,   егер
конфигурациялар бойынша жол бар болса  (q0,ω,N0)|=*(q,ε,α)кейбіреулер  үшін
q[pic] Z және
α[pic]N*.
      Анықтама  5.4.  МП-автоматымен  анықталған  L,  тілі  М  көптік  түрде
анықталады:

      L(M) = {ω | ω[pic] T *  және  )(q0,ω,N0)|=*(q,  ε,α  кейбіреулер  үшін
q[pic] Z және α[pic]N*}.

Анықтама 5.5. МП-автоматы магазин функциясымен


                   F : (Q× (T [pic]{ε }) × N*) → P(Q× N*)
кеңейтілген МП-автоматом деп аталады, бұл дегеніміз стектың басында соңғы
ұзындығындағы тізбекті өзгерте алатын автомат.
      Сол бұрынғы тілді анықтайтын КС-тілдер, МП-автоматтар және кеңейтілген
МП-автоматтар болады.


         Алгоритм 5.2. МП-автоматтын КС-грамматика бойынша құрылымы
      Сол жақ талдауын жүргізетін МП-автоматын құрайық. Берілген  автоматтың
тек  бір  ғана  қалпы  болады  және  ол  магазинді  босатып  енгізу   жолын
қабылдайды.  Ағымдағы  сентенцияны  орналастыру  үшін   стек   қолданылады,
бастапқыда ол грамматиканың бас символы болады.  Келесі  сентенция  жоғарғы
стектың анықталмағандығы болып табылады.
          Енгізу: КС-грамматика ) G = (VT, VN ,P,S).
      Шығару: МП-автоматы М = (Q, T, N, F, q0,n0, Z  сондай, бұл дегеніміз
      L(M) = L(G).
       1 қадам.Қою Q = {q}, q0 = q,Z=∅,N=VT[pic] VN, T= VT, N0= S.
       2 қадам.  Әрбір ереже үшін (А→β) [pic]P, где ,β [pic] V *
магазиндік функцияны құру F(q, ε, A) = (q, β).  Грамматика ережесі бойынша
стектың басында бұл функциялар терминалсыздың орнын басуға бұйрық береді.
       3 қадам. Әрбір t [pic]VT үшін магазиндік функция құру
      F(q, t, t) = (q, ε), ол стектан символды шығарады, ол енгізумен сәйкес
келеді, және ол оқитын  басты  жылжытады.  Бұл  функциялар  стекты  босатуды
қамтамасыз етеді.

      Мысал 5.1.  КС-грамматикасы берілген:
      G({+, (, ), a}, {S, A}, {S→S+A | A, A→(S) | a},  {S}).  МП-автоматының
құру жүйелілігі мынадай түрде болады.
      1)    Q= {q},q0 = q, T= {+,(,), a },N= {+,(,), a, S,A},N0 = S, Z=Ø.
      2)    F(q,  ε, S) = (q, S+A), F(q,   ε, S) = (q, A), F(q,   ε, A) =
(q, (S));
F(q, ε,A) = (q,a).
      3)    F(q, t, t) = (q, ε ) әрбіреуі үшін t [pic] {+, (, ), a}.

      МП-автоматы  бойынша  құрылған  (а)    жолын   тану   5.1   кестесінде
көрестілген. Алынған МП-автомат терминалсыз болады.



       Кесте 5.1 – МП-автоматы бойынша (а)жолын анықтау


| Конфигурации  |Ағымдағы    |Енгізу жолы         |Магазин құрамы            |
|номері         |қалпы       |                    |                          |
|1              |Я           |(a)                 |S                         |
|2              |я           |(a)                 |А                         |
|3              |Я           |(a)                 |(S)                       |
|4              |я           |a)                  |S)                        |
|5              |Я           |a)                  |A)                        |
|6              |Я           |a)                  |a)                        |
|7              |Я           |)                   |)                         |
|8              |Я           |£                   |£                         |


      Алгоритм 5.3. КС-грамматика бойынша кеңейтілген МП-автоматын құру

      Оң жақ талдау жасайтын МП-автоматын құрайық. Берілген  автоматта  тек
 жалғыз ағымдағы қалпы және жалғыз соңғы қалпы бар, онда стек бос.  Ағымдағы
 сентенцияның сол жақ бөлігінде стек  бар.  Алдымен  стекқа  арнайы  магазин
 символы орналастырылады, бос стектың маркеры #.  Әрбір  қадамда  грамматика
 ережесі   бойынша   автомат   стектың   жоғарғы    жолындағы    символдарды
 терминалсызбен ауыстырады.

   Енгізу: КС-грамматика G = (VT ,VN,P,S).
   Шығару: кеңейтілген МП-автомат M = (Q, T, N, F, q0,N0, Z) сонда, ол
 L(M) = L(G).

        1 Қадам. Қою Q = {q, r}, q0 = q, Z = {r},N= VT[pic] VN [pic] {#}, T
       = VT,

        2 Қадам. Әрбір ереже үшін (A → β) [pic]P, где β [pic] V*  ,  магазин
 функциясын құру F(q, ε, β) = (q,  A)   енгізу  жолының  ағымдағы  символына
 қарамастан, ереженің  оң  жағын  жоғарыдағы  стекта  терминалсызындағы  сол
 жағымен ауыстыру.
       3 Қадам.  t [pic] T әрбір терминалы үшін магазин функциясын құру
 F(q,t,ε) = (q,t), егер онда ереженің оң жағы болмаса, онда ол енгізу
 жолының символын стектың басына орналастырады, және оқитын басты жылжытады.
      Қадам 4. Автоматты соңғы  қалпына  аудару  үшін  магазиндік  функцияны
 қарастыру F(q, ε,#S) = (r, ε).
 Мысал 5.2. Грамматика үшін 5.1 мысалынан кеңейтілген МП-автоматын құру.
 Последовательность построения МП-автомата құру жүйелілігі мынадай болады.
  1) Q={q,r}, q0 = q, T={+,(,),a}, N={+,(,),a,S,A}, N0 = #, Z=r.
  2)  F(q,  ε, S+A) = (q, S), F(q,   ε, A) = (q, S), F(q,   ε, (S)) = (q,
 A), F(q, ε,a) = (q,A).
 3)   F(q, t, ε ) = (q, t) әрбіреуі үшін t [pic] {+, (, ), a}.
 4 )F(q,ε,#S) = (r,ε).
      Кеңейтілген МП-автоматы бойынша құрылған(а)  жолын тану 5.2 кестесінде
көрестілген. Алынған МП-автомат детерминалсыз болады.
       Кесте 5.2 – Кеңейтілген МП-автоматы бойынша (а)жолын анықтау
|Конфигурации   |Ағымдағы    |Енгізу жолы         |Магазин құрамы            |
|номері         |қалпы       |                    |                          |
|1              |q           |(a)                 |#                         |
|2              |q           |a)                  |#(                        |
|3              |q           |)                   |#(а                       |
|4              |q           |)                   |#{А                       |
|5              |q           |)                   |#(S                       |
|6              |q           |ε                   |#(S)                      |
|7              |q           |ε                   |#A                        |
|8              |q           |ε                   |#S                        |
|9              |r           |ε                   |ε                         |


                № 5 зертханалық жұмысқа орындау тапсырмалары
      Келесі функцияларды орындайтын, бағдарламалық құралды өңдеу:
       а)   формальды грамматиканы енгізу және оның КС – грамматика классына
 сәйкестігін тексеру;
       б)   КС – грамматика бойынша МП-автоматын құру;
       в) КС – грамматика бойынша кеңейтілген МП-автоматын құру;
       Құрылған автомат көмегімен кейбір енгізу жолын бейнелеу:
       а)   енгізу жолы КС-грамматикасының тіліне енеді және  МП-автоматымен
 қабылданады;
       б)   енгізу жолы КС-грамматикасының шығу тіліне енбейді және МП-
 автоматымен қабылданбайды.
       Тапсырманың дара нұсқалары 4.1 кестесінде көрсетілген.
                            Зертханалық жұмыс №6
LL(1)- грамматикасы үшін рекурсивті түсу әдісімен синтаксисті талдау


       Мазмұны:  LL(1)-грамматикасы  үшін  айқындауыштардың   функционалдық
   модельдеуі.  LL(1) - грамматикасының қажетті  және  жеткілікті  шарттарын
   қолдану.  LL(1) - грамматикасы үшін тізбектерді анықтау функционалдау.


      Мақсаты:  -  «LL(k)   -   грамматика»   түсінігін   толықтыру,   LL(k)
–грамматикасының қажетті және жеткілікті шарттары;
            -  LL(1)-грамматика  үшін  FIRST(k,  α)   және   FOLLOW(k,   α),
көптігінің құрылымын үйреніп дағдылану.
                                 Теория негізі
      Анықтама 6.1. КС-грамматикада LL(k) қасиеті бар кейбіреуіне k>0,  егер
әрбір шығу қадамында біртекті таңдау үшін МП-автоматына стектың  жоғарыдағы
символын білу жеткілікті және енгізу жолының  басындағы  ағымдағы  қалыптың
бірінші k символдарын қарастыру.
      Анықтама 6.2. егер ол кейбіреуіне k>0 LL(k) қасиетінде болса, онда КС-
грамматикасы LL(k)-грамматикасы деп аталады.
       LL(k)-грамматика талдауының негізінде тіл  жолының  сол  жақ  талдауы
орналасқан.  Грамматиканың  бастапқы  символы  шығу  сентенциальдық   форма
болады,  ал  бүтін  –  тілдің  берілген  жолы.  Талдаудың  әрбір  қадамында
грамматика ережесі  сентенцияның  терминал  емес  сол  жағына  қолданылады.
Берілген процесс талдау ағашын  жоғарыдан  төменге  құруға  сәйкес  келеді.
Осыдан шықанны LL(k): бірінші «L»  («left»  сөзінен)  символдар  тізбегінің
соңғы енгізілудің  сол  жақ  шығаруы  дегенді  білдіреді,  екіншісі  «L»  -
анықтаманың жұмысындағы сол жақ шығуы.
      Анықтама  6.3.  LL(k)-грамматикасын  анықтауды  құру  үшін  екі   жиын
қолданылады:
* FIRST(k, α) – терминалды жиындар тізбегі, k  символына дейін шектелген
α[pic](VT[pic]VN)*, тізбегінен шығарылған;
* FOLLOW(k, A) – терминалды тізбектегі k символына дейін қысатылған жиын,
олар A [pic] VN   шығару тізбегімен аяқталады. Формальды түрде бұл жиындар
төмендегідей тілдермен анықтауға болады:
* -   FIRST(k, α) = {ω [pic] VT* | 3 нәтижесі α ^*со и |ω| ≤ k немесе 3
нәтижесі α ^

      - FOLLOW(k, A) = {ω [pic] VT* | 3 нәтижесі S^*aA/n иω[pic]FIRST(k, γ);
α, γ[pic] V* A[pic]VN,k>0}.

    Теорема 6.1. LL(1)-грамматикасының қажетті және жеткілікті шарттары.

        G(VN, VT, P, S)  грамматикасы  LL(1)-грамматикасының  қажетті  және
жеткілікті болу үшін, әрбір А[pic]VN, у  символ  үшін,  А→α  1  |α2  |…|  αn
ережесі түріндеграмматикаға бөлу үшін, мына шарттар орындалу керек:

      FIRST(1, αiFOLLOW(1,A)) ∩ FIRST(1, αjFOLLOW(1, A)) = ∅, V i≠j,

      Бұл дегеніміз А символы үшін А→ε, түрінде  ереже  болса,  онда  барлық
жиын  FIRST(1, α1),  FIRST(1,  α2),…,  FIRST(1,  αn)  олар  жұппен  қиылысуы
керек, егер А→ε,  ереже бойынша қатысса, онда олар сонымен  қатар  FOLLOW(1,
A)  жиынымен қиылысу керек.
      LL(1)-грамматикасын құру үшін FIRST(1, x) және  FOLLOW(1,  A).  жиынын
құру керек. Егер х жолы а символының терминалынан  басталса,  онда  FIRST(1,
x)=a, және егер ол А,  терминал  емес  символдан  басталса,  онда   FIRST(1,
x)=FIRST(1, A). Бұл  дегеніміз,  FIRST(1,  A)  және  FOLLOW(1,  A)  жиынының
алгоритмнің құрылуын қарастыру үшін, әрбіреуіне А  терминалды  емес  символы
қажет.

                Алгоритм 6.1.  FIRST(1, A) жиынының құрылымы

      Алгоритмді орындау үшін G шығу грамматикасын G′, грамматикасына аудару
керек, FIRST(1, A)  жиынының құрылу алгоритмі G′ грамматикасын қолданады.
       1қадам. Алдымен  әрбір  терминал  емес  А  символын  бірінші  жиынның
құрамына енгізу керек, ол бөліктің басында
          [pic] 2 қадам. Барлығы үшін А[pic]VN орналастыру:
          FIRSTi+1(1, A) = FIRSTi(1, A) [pic] FIRSTi(1, B), V
          В[pic](FIRST(1, A)∩VN).

       3қадам. Егер А[pic] Vn, болса, онда FIRSTi+1(1, A)  ≠  FIRSTi(1,  A),
онда оны орнатып i=i+1 2 – ші қадамға қайту, немесе 4 – ші қадамға өту.
       4қадам. Құрылған жиыннан барлық терминал емес символдарды шығару, бұл
дегеніміз

          V A [pic] VN FIRST(1, A) = FIRSTi(1, A) \ N.

                 Алгоритм 6.2. FOLLOW(1,A) жиынының құрылуы

      Алгоритм G  грамматикасының ережесін қолдану негізінде құрылған.
       1қадам. Алдымен терминал емес А  символының  әрбіреуіне  келесі  жиын
символдарын енгізу, олар шығару ережесінің оң жақ  бөлімінде  А  символымен
сәйкестеледі. Бұл дегеніміз
      [pic][pic] 2 Қадам. Жиынға бос жол енгізу FOLLOW(1, S), бұл  дегеніміз
FOLLOW(1, S) = FOLLOW(1, S)[pic]{ε}.
       3Қадам. Барлығы үшін А[pic]VN есептеу:
    [pic]  4Қадам. Барлығы үшін А[pic]VN қою:

          FOLLOW″i(1, A)=FOLLOW′i(1, A)[pic] FOLLOW′i(1, B), MB [pic](FOLLOW
           ′i(1, A)∩VN), егер З ережеде B→ε.

       5Қадам. Барлығы үшін АVN анықтау:

           FOLLOWi+1(1, A) = FOLLOW″i(1, A)∪FOLLOW″i(1, B),
           Барлық терминал емес символдар үшін B ∈VN, ереженің түріндей

       6 Қадам. Егер A [pic] VN болса,  онда  FOLLOWi+1(1,A)≠FOLLOW  i(1,A),
онда оны қойып i:=i+1 және 3 – ші қадамға қайту, немесе 7 – ші қадамға өту.
       7Қадам. Құрылған жиыннан терминал емес барлық символдарды шығару, бұл
дегеніміз V A[pic] VnFOLLOW(1, A) = FOLLOWi(1, A)\N.

      Алгоритм 6.3. LL(1)-грамматикасы үшін тізбекті анықтау функциясы

       1 Қадам. Стекқа S грамматикасының бастапқы  символын  орналастырамыз,
ал енгізу буферіне символдардың шығу тізбегін орналастырамыз.
       2 Қадам. Стекте және енгізу буферінде ε  жолы  бос  қалғанына  дейін,
келесі әрекеттердің біреуін орындаймыз:
Егер стектың басында терминал емес А символы және енгізу жолының  а  символы
орналасса, онда  А→х  ережесі  бойынша  «түйіншек»  операциясын  орындаймыз,
бірақ  шарт  бойынша,  онда  а[pic]FIRST(1,  x),  бұл  дегеніміз  стектан  А
символын шығарамыз және  стекқа  жолын  х  енгіземіз,  ал  енгізу  буферінің
құрамын өзгертуге болмайды;
Егер  стектың  басында  терминал  емес  А  және  енгізу  жолының  а  символы
орналасса, онда А→х ережесі бойынша «свертка» операциясын орындаймыз,  бірақ
шарт бойынша, онда а[pic]FOLLOW(1, A),  бұл  дегеніміз  стектан  А  символын
шығарамыз және  стекқа  жолын  х  енгіземіз,  ал  енгізу  буферінің  құрамын
өзгертуге болмайды;
Егер стектың басында терминал  емес  а  символы  орналасса  және  ол  енгізу
жолының символымен сәйкес келсе, онда «алып тастау» операциясын  орындаймыз.
Бұл дегеніміз стектан және енгізу  буферінен  берілген  терминалды  символды
өшіреміз;
Егер стектың құрылымы  және  енгізу  буфері  бос  болса,  онда  шығару  жолы
толығымен оқылады, және талдау сәтті аяқталды;
Егер шарттардың біреуі орындалмаса, онда тізбек берілген тілге жатпайды,
және алгоритм өзінің жұмысын қателікпен аяқтайды.

      Мысал 6.1. G ({S, T, R}, {+, -, (, ), a, b}, P, S), грамматикасы P: 1)
S→TR; 2) R→ε |  +TR  |  -  TR;  3)  T→(S)  |a|b  ережелерімен  берілген,  G
грамматика тілінің (a+(b-a)) жолына анықтауышты құру.
       1 Кезең.  G грамматикасын G′, граммтикасына айналдырайық, оның
 құрамында ε-ережесі болмауы керек:
      N0={R};
      N1 = {R}, т.к. N0 = N1, онда P ′жиынына ерже енеді:
       1) S→ TR | T;    2) R→ +TR | +T | -TR | -T;    3) T→(S) |a|b.

        2 Кезең. А терминал емеске FIRST(1, A) жиынының құрылуы 6.1.
 кестесінде көрсетілген.

       Кесте 6.1 – FIRST(1, A) жиынының құрылуы


|FIRSTi(1,A)   |0             |1             |2             |FIRST(1,A)     |
|S             |Т             |T, (, a, b    |T, (, a, b    |(,a,b          |
|R             |+,-           |+,-           |+,-           |+,-            |
|Т             |(,a,b         |(,a,b         |(,a,b         |(,a,b          |


       3 Кезең. А терминал еместің әрбіреуіне FOLLOW(1, A) жиынының құрылуы
 6.2. кестесінде көрсетілген.

      Кесте 6.2 - FOLLOW(1,A) жиынының құрылуы


|Қадам |Терминал емес|FOLLOWi(1, A)   |FOLLOWi’(1,A)      |FOLLOWi’’(1,A)      |
|0     |S            |)               |                   |                    |
|      |R            |Ø               |Ø                  |Ø                   |
|      |Т            |R               |R,+,-              |R,+,-               |
|1     |S            |),ε             |),ε                |),ε                 |
|      |R            |),ε             |),ε                |),ε                 |
|      |Т            |R,+,-           |R,+,-              |R, +, -, ), ε       |
|2     |S            |),ε             |),ε                |),ε                 |
|      |R            |),ε             |),ε                |),ε                 |
|      |Т            |R, +, -, ), ε   |R, +, -, ), ε      |R, +, -, ), ε       |
|FOLLOW(1,S)          | ),ε                                                     |
|FOLLOW(1,R)          | ),ε                                                     |
|FOLLOW(1, T)         |+, -,), ε                                                |


       4 Кезең.  FIRST(1, A) және FOLLOW(1, A) әрбір А терминал емес
   жиындары 6.3. кестесінде көрсетілген.

      Кесте 6.3 - FIRST(1,A) және FOLLOW(1, A) жиындары


|А              |FIRST(1,A)          |FOLLOW(1, A)          |
|S              |(,a,b               |),ε                   |
|R              |+,-                 |),ε                   |
|Т              |(,a,b               |+, -,), ε             |


       G грамматикасы LL(1)-грамматикасы болып табылады, бұл дегеніміз әрбір
А, терминал емес жиын үшін, FIRST(1, A) жиыны қос – қостан  қиылыспайды,  ал
терминал емес R жиынында да олар FOLLOW(1,R)жиынымен қиылыспайды.

 5 Қадам. G грамматикасы үшін (a+(b-a)) жолының  талдануы   6.4.  кестесінде
көрсетілген

       Кесте 6.4 – G грамматикасы үшін(a+(b-a))  жолының талдануы
|Стек          |Ену буфер        |Әрекет                                     |
|S             |(a+(b-a))        |түйіншек S→TR, т.к. ([pic]FIRST(1, TR)     |
|TR            |(a+(b-a))        |түйіншек T→(S), т.к. ([pic] FIRST(1, (S))  |
|W             |(a+(b-a))        |алып тастау                                |
|S)R           |a+(b-a))         |түйіншек S→TR, т.к. a[pic] FIRST(1, TR)    |
|TR)R          |a+(b-a))         |түйіншек T→a, т.к. a[pic] FIRST(1, a)      |
|aR)R          |a+(b-a))         |алып тастау                                |
|R)R           |+(b-a))          |түйіншек R→+TR, т.к. +[pic] FIRST(1, TR)   |
|+TR)R         |+(b-a))          |алып тастау                                |
|TR)R          |(b-a))           |түйіншек T→(S), т.к. ([pic] FIRST(1, (S))  |
|(S)R)R        |(b-a))           |алып тастау                                |
|S)R)R         |b-a))            |түйіншек S→TR, т.к. b[pic] FIRST(1, TR)    |
|TR)R)R        |b-a))            |түйіншек T→b, т.к. b[pic] FIRST(1, b)      |
|bR)R)R        |b-a))            |алып тастау                                |
|R)R)R         |-a))             |түйіншек R→-TR, т.к. -[pic] FIRST(1, -TR)  |
|-TR)R)R       |-a))             |алып тастау                                |
|TR)R)R        |a))              |түйіншек T→a, т.к. a[pic] FIRST(1, a)      |
|aR)R)R        |a))              |алып тастау                                |
|R)R)R         |))               |түйіншек R→ε, т.к. ) [pic] FOLLOW(1, R)    |
|)R)R          |))               |алып тастау                                |
|R)R           |)                |түйіншек R→ε, т.к. ) [pic] FOLLOW(1, R)    |
|)R            |)                |алып тастау                                |
|R             |ε                |түйіншек R→ε, т.к. ε[pic] FOLLOW(1, R)     |
|ε             |ε                |жол толығыменқабылданды                    |


        6 Қадам. Шығарудың келесі тізбегін алдық:
       [pic]

                № 6 зертханалық жұмысқа орындау тапсырмалары
      Программалық әдісті орындау үшін, LL(1) грамматикасының  тізбегі  үшін
талдау процесі орындалады. Программалық  әдіс  келесі  функцияларды  орындау
тиіс:
   1. КС грамматикасына енгізуді орындау
   2.  FIRST  (1.A)  және  FOLLOW  (1.A)жиындарын  әрбір  терминалды   емес,
      символдар грамматикасына құру.
   3. LL(1)шартын қажетті және жеткілікті түрде  тесеру,  КС  грамматикасына
      енгізу.
   4. LL(1)грамматикасы үшін функционалдық модельді тану
   Осы жағдайда бақылау мысалдарын құру:
   А) енгізілген КС грамматикасы LL(1) грамматикасы болып табылмайды.
   Б) шығарылған КС грамматикасы LL(1)грамматикасы болып табылады.
   В)  берілген  КС  грамматикасы  LL(1)грамматикасы  болып  табылады   және
   енгізілген жол грамматика тіліне жатады.
      Тізбектің жиынын кесте көмегімен көрсету, шығару ағашы. Тапсырмалардың
   индивидуалдық  нұсқаларын   зертхналық   жұмыста   шығару   мәліметтеріне
   негіздейді.
                 (а+(b-a)) тізбегі үшін ағаштардың шығарылуы





                            Зертханалық жұмыс № 7

          Төмен түсу әдісі бойынша КТ-тілдердің синтаксистік талдау


      Мазмұны: Жоғарыдан төмен синтаксистік талдауды автоматы жүзеге  асыру,
қарапайым көрсетілімді грамматика үшін  анықтауыштың  функционалдау  моделін
құру.  L(A)  және R(A) жиындарын құру, грамматика белгілерінің  матрицаларын
төмен түсу әдісі бойынша құру.

      Мақсаты  -  «Қарапайым  қатынас  граматикасы»   мағынасын   толықтыру-
көпмүшенің құрылымын талдай білу.L(A) және  R(A),  матрицаның  грамматикалық
символдарының  қатысы  және   қарапайым   «сдвиг-свертка»   үлгісімен   табу
грамматикасы.
                                Теория негізі
      Анықтама7.1.  Келтірілген КС-грамматика G (VN, VT, P,  S)    қарапайым
келтіру грамматикасы деп аталады егер келесі шарттар орындалса.
      1)    Әрбір реттелген терминальды және терминальданбаған жұбтар үшін
қатынастың біреуі ғана орындалады.
    а) Bi = Bj (V Bi, Bj [pic] V), егер тек  қана  мына  шарттар  орындалса
    A→xBiBjy[pic]P, мұндағы x,y [pic]V*;
    б) Bi < Bj (V Bh Bj [pic] V), егер текқана мына шарт орындалса
A→xBiDy[pic]P және шығуD[pic]*BjZ, осыA, D  [pic]VN, x,y,z [pic] V*
    в)Bi > Bj (V Bi, Bj[pic] V егер тек осы шарт орындалса  A→xCBjy және
    шығу C[pic]*zB{ егер шарт бар болсаA→xCDy[pic]Р шығу  C^>*zBt и D^*BjW,
    meA,C,D[pic] VN, x, y,z,w[pic] V.
      2)    Грамматикада түрлі ережелер әртүлі дұрыс бөлімдерден тұрады.

      Анықтама 7.2. =•, <•,  •>  Мына  қатынасты  грамматикуа  символдарының
қарапайым келтірім қатынасы деп атайды.
      Қарапайым келтірім грамматиканы табу кезінде  жол  тілінің  оң  бағыты
жатыр. Соңғы специялды  өлшем  үшін  жолының  келтірім  түрлері  жатады.  Ал
бүтінге грамматиканың быстапқы символы соңғы  символдардың  тізімінің  әрбір
қолдануында  тізім атын ерекшелуге болады.  Шығару  грамматикасының  оң  жақ
бөлігіндегі ережеге сәйкес келеді  және  оны  терминал  емес  ауыстыру.  Осы
ереженің сол  жақ  бөлігінде  тұрған  берілмеген  операция  терминалданбаған
орынша деп аталады. Ал ауыстырушы жол сантенция негізі деп аталады.
      Шешілген процесс жазбасы  тізім бұтағының төменнен жоғары  (жапырақтан
тамырға)сай келеді.
      Келістіру әдісі жолда  табылған  еш  қос  көрші  символдың  келесі  үш
варианттары сай кедеді.

   * Егер мынандай символдар негізгіболса Bi = • Bi+1, Bi жәнеBi+1
   * Bi < Bi+1, егер Bi+1 – кейбір негіздің артқы сол жақ символы;
   * Bt > Bi+1, егер Bi –кейбір негіздің артқы жақ символы.

              Алгоритм 7.1. Грамматика сиентециясының негізін табу
      Егер грамматика қарапайым кездестіру грамматикасы болса, онда негізді
 табу үшін әрбір оның  сентенциясы  элементтерін  солдан  оңға  қарай  күйде
 қарастыру керек және символдардың соңғы сол жақ жауыптарын табу  керек.  xj
 және xj+1, сондай Xj->Xj+\ сияқты. Грамматика  сентенция  негізін  табудағы
 жүйесі 7.1 суретте көрсетілген..

              Сурет 7.1 – Сентенция негізіндегі грамматика сызбасы


       Кездесу   қатынасы   негізінде   грамматика   кездестіру   матрицасын
 тұрғызады.  Мұндағы  матрицаның  бос   клеткалары   берілген   символдардың
 кездестіру қатынасымен байланыспағанын көрсетеді.
       Анықтама  7.3.   Қақтығысу  матрицасының  құрылысын    келесі   түрде
 анықталатын көпмүше көмегімен негізделген.
      * L(A) = {X | 3 A^*Xz}, A[pic]VN, X[pic]V, z[pic]V* -  соңғы сол
        жаққа негізделген А терминалданбаған символының көптігі.
      * R(A) = {X | 3 A^*zX}, A[pic]Vn, X[pic]V, z[pic]V* - Соңғы оң
        символдың А терминалданбаған символына қатысты көптігі.
       Анықтама  7.4.  Қақтығысу  қатынасын  келесідегідей  үлгіде  енгізуге
 болады.
   * Bi = Bj ([pic] Bi, Bj [pic] V),  егер шарт орындалса A→xBiBjy [pic]P,
     онда A[pic]VN,x,y[pic] V*
      - Bi < Bj ([pic] Bi, Bj [pic] V),     егер шарт орындалса
A→xBiDy[pic]P и Bj [pic] L(D),
     онда A, D  [pic]VN, x, y [pic] V*
      Қақтығысу матрицасын  символдар толтырады [pic] (тізімнің соңы және
 басы).  Оларға қақтығыстардың келесідегідей түрлері анықталған:

   * [pic] < X, [pic]X [pic]V, егер X  [pic]L(S);
   * [pic]->Х, [pic]X[pic] V, егер Х[pic] R(S).
                       Алгоритм 7.2. Көпмүшелерді құру L(A) и R(A)
      1 қадам .Әрбір детерминалданбаған А символ ережесі арқылы, А  мазмұны
кері бөлімі.L(A) жиыны кері символын оң бөлік ережесімен   R(A)  –ең  қысқа
бөлігінде тағы сол сяқты
      [pic]
      2 қадам. Әрбір  детерминалданбаған  А  символы:  Егер  көпмүшеде  L(A)
детерминалданбаған  символдар грамматикасынан тұрса А’ А”,…,   L(A)  қосымша
символдар жиыны шығысымен әсерлеседі, L(А′), L(A″) и.м.с. және  шығыс  L(A).
Аналогиялық операция  R(A) жиыны орындалды.
      [pic]

      3  қадам.  Егер  бастапқы  көпмүше   L(A)  және  R(A)   әрбір   символ
грамматикасы өзгереді,  екі  қадамға  өзгереді  немесе  аяқталады  тағы  сол
сияқты A∈VN: Ri(A)≠Ri-1(A) немесе Li(A)≠Li-1(A), онда i:=i+1 екінші  қадамға
оралады. R(A) = Ri(A) және L(A) = Li(A) бітеді.
       Мысал 7.1. G({a,(,)}, {S,  R},P,  S)  жеке  грамматика,   P  ережесі
бойынша: 1) S→(R | a; 2) R→Sa). Жол бойынша кӨрсетілген (((аа)а)а)±.к  жолға
арналған құрылым.
      1- кезең. Оң айналымдағы және сол айналымдағы көптік символдар   L(A)
         және R(A) грамматикадағы барлық терминал емес символдардың қарым –
         қатнасы 7.1 – кестеде көрсетілген.

       7.1 – кесте. G грамматикасына арналған L(A) и R(A)көптік құрылымы.


|Қадам     |A)                             |                                 |
|0         |L0(S)={(,a} L0(R)={S}          |R0(S)={R,a} R0(R)={)}            |
|1         |£i(5HGa}                       |R1(R)={)}                        |
|          |L1(R)={S,(,a}                  |                                 |
|2         |L2(S)={(,a} L2(R)={S,(,a}      |R2(S)={R,a,)} R2(R)={)}          |
|Нәтижесі  |дербес а) L(R)={S,(,a}         |R(S)={R,a,)} R(R)={)}            |


       2 - кезең. Грамматиканың құрамындағы матрица көптік ережесінің  шығуы
 тығыз қарым – қатнаста. Ол 7.2 – кестеде көрсетілген.
       Бұдан  біз  матрицаның  қарым  –  қатнасын  түсініміз.  Грамматикалық
 ережеде  S→(R символы (R символы терминалды емес сол жақта орналасқан. L(R)
 көптік кіріс символы S, (, a. Матрица клеткаларының үлкендік белгісі < •  ,
 Бұл символ жолға арналған символ.
       R→Sa)грамматика ережесінің символы бойынша, a  мұндағы  S  терминалды
 емес символ. R(S) көптік кіріс символы R, a, ).  Матрица  клеткасының  кіші
 белгісі >, Бұл символ a бағанасына арналған.
       [pic] жолдық символдың қою белгісі  <  клеткалық символ, көптік кіріс
  L(S), т.с.с. символ (, a. Жолдық символдың [pic] қою  белгісі   >  клетка,
 көптік кіріс R(S), т.с.с. символдар R, a, ).
      Клеткада, S жолдық символы және a жолдық символдық қою  белгісі  =  ,
 т.к. анықтау  ережесі  R→Sa),  бұл  символда  қатар  тізбектей  орналасады.
 Мұндағы қою белгісі  =  клеткалық жол а жәнебағаналар ), ендігі жолда (және
 бағанада R.
|кесте 7.2 – кестесі. Матрицаның грамматикасы                                |
|                                                                            |
|                                                                            |
|                                                                            |
|                                                                            |
|                                                                            |
|                                                                            |
|                                                                            |
|                                                                            |
|                                                                            |
|                                                                            |
|                                                                            |
|                                                                            |
|Симв|S              |R                           |а        |(        |)       |
|олы |               |                            |         |         |        |
|1   |Мәліметтер және|Динамикалық және            |Конспект |3 апта   |5       |
|    |типтері        |статис-тикалық программалау |         |         |        |
|    |               |тілдері. Атаулы және        |         |         |        |
|    |               |құрылымдық типтер           |         |         |        |
|    |               |эквиваленттілігі.           |         |         |        |
|2   |Мәліметтер және|Модульдер түсінігі. Суреттеу|Конспект |3 апта   |5       |
|    |типтері        |және әрекеттер облысы.      |         |         |        |
|3   |Трансляция     |Программалық қамсызданудың  |Семинар  |5 апта   |5       |
|    |әдістері       |компилятор орыны.           |         |         |        |
|4   |Трансляция     |Компилятор құрылымы.        |Семинар  |6 апта   |5       |
|    |әдістері       |                            |         |         |        |
|5   |Лексикалық     |Регулярлық жиын және        |Семинар  |6 апта   |5       |
|    |талдау         |регулярлық өрнек.           |         |         |        |
|6   |Лексикалық     |Лексикалық анализаторды     |Семинар  |6 апта   |5       |
|    |талдау         |программалау                |         |         |        |
|5   |Синтаксистік   |1. Кестелік басқаруды       |Семинар  |9 апта   |5       |
|    |талдау         |болжаушы талдау.            |         |         |        |
|    |               |2. LL(1)-грамматикасын және |         |         |        |
|    |               |жоғары-төмен талдаудың      |         |         |        |
|    |               |алгоритмі                   |         |         |        |
|6   |Программаның   |1. Код генераторындағы      |Конспект |  9 апта |5       |
|    |аралық ұсынылуы|ақпараттың ұйымы.           |         |         |        |
|    |               |2. Аралықтың ұсыну деңгейі. |         |         |        |
|7   |Код генерациясы|Айнымалылар трансляциясы    |Семинар  |9 апта   |10      |
|8   |Код генерациясы|Трансляцияның логикалық     |Семинар  |12 апта  |5       |
|    |               |өрнек ерекшелігі            |         |         |        |
|9   |Компилятор     |1. Орналастырып қою         |Семинар  |12 апта  |5       |
|    |кестелерінің   |функциялары                 |         |         |        |
|    |ұйымы          |2. Блоктық құрылым          |         |         |        |
|    |               |орындалуы.                  |         |         |        |
|10  |Семантикалық   |1. Транслятордың прог-лық   |Семинар  |12 апта  |10      |
|    |талдау         |орындалуы                   |         |         |        |
|    |               |2. Жеке автоматтардың       |         |         |        |
|    |               |программалық орындалуы      |         |         |        |








4. СТУДЕНТТЕРДІҢ ӨЗДІК ЖҰМЫСТАРЫНЫҢ ҚҰРЫЛЫМЫ:

           Студенттердің  өздік  жұмыстары  ұйымдастырылған  оқыту  формасы,
яғни педагогикалық  шарттардың  жүйесі,  студенттердің  оқу  қызметін  бөгде
біреудің көмегінсіз білім мен біліктілікті меңгеруді қамтамасыз ету.
    Өздік жұмыс негізгі қызметтерді орындайды:
 - білімді меңгеруге көмектеседі, болашақ маманның кәсіптік біліктілікті пен
   дағдыны қалыптастырады;
 - өздік білімнің қажеттілігін тәрбиелейді, жеке тұлғаның шығармашылық  және
   танымдық қабілетін максималды дамытады;
 - ғылыми зерттеу жұмыстарын оятады.
      Студенттердің өздік жұмыстарына келесі  өздік  жұмыстардың  түрлері
   енеді:
 - тәжірибелік және сарамандық жұмыстарда тапсырмаларды өздігімен орындау;
 - өздік жұмыстың орындалу графигіне сәйкес оқу материалдарын өңдеу;
 - рефераттар, баяндамалар жазу;

                Студенттердің өздік жұмыстарының жоспарлануы
   1. СӨЖ-ді жоспарлау әр пән бойынша барлық  тапсырмалар  түрлерін  орындау
      уақытына сәйкес жүргізіледі.
   2. СӨЖ графигіне міндетті түрде орындалатын өздік жұмыстар енгізіледі.
   3. Аудиториядан тыс жоспарланған сағат  көлемі  уақыттыңжалпы  лимитесебі
      негізінде  анықталады,   бірақ   оқу   аптасының   аудиториялық   және
      аудиториядан тыс оқу жұмыстарын қосқандағы 54 сағатынан аспау керек.
   4. СӨЖ графигін оқытушы бақылайды.
             Семинар  (басқаша  -  тәжірибелік)  сабақтары  –  бұл   дәрісте
қабылданған  оқу  хабарын  және  өзіндік  жұмыстарда  арнайы   әдебиеттерден
алынған жаңа білімді  дискуссия,  өз  ойын  ашықтау  істерін  дамыту  арқылы
жүзеге асыру болып табылады. Семинарға дайындық ретінде оқу жоспарымен  және
әдебиеттермен  берілген  семинардың  сұрақтарына  қысқаша  нұсқау  жауаптары
дайындау үшін, керекті  тақырып  бойынша  дәрістің  конспектісін  оқып  шығу
керек.  Семинарға  бөлінген  әдебиет  .үшке  бөлінген.   Бірінші   бөлімінде
берілген материлдарды мәндетті  түрде  оқып  шығып,  оның  негізгі  мазмұнын
біліп алу  қажет.  Бұл  жұмыстардан  алынған  білім  семинарда,  сынақтарда,
емтихандарда тексеріледі.
            Екінші  берілген  әдебиеттердің  негізгі  білімі  бүкіл  семинар
тақырыптарын немесе оның жеке бөлігін қамтитын қаладағы  ғылыми  жұмыстардан
және  оқу  құралдарынан  құралған.  Әрине,  осы  бөлімде   берілген   қайнар
көздерінің барлығын оқу міндетті емес. Бұнда  басқа  мәселе,  мұнда  семинар
сабағының берілген сұрағына дәл сәйкес келіп тұрады.
             Үшінші  бөлімде  қарастырылатын  тақырыпты   қамтитын   көлемді
теориялық ғылыми монографиялар, алғашқы  қайнар  көздер,  даулы  және  сізде
өздігінен ойлау және эрудициянудың көтерілуы байқалады.
             Семинарға  дайындалған  кезде  және  рефератты  жазғанда,   оқу
орынының интернет-класын немесе өзіңіздің  және  компьютеріңіздің  интернеті
арқылы құралдарды қолдануыңыз мүмкін.
    • Оған қосылу тәртібін информатика лабараториясынан сұрап, біле аласыз.
      Семинарға қатысудың негізгі мақсаты мыналар болып табады:
    • Оқу жоспарындағы негізгі теориялық сұрақтарға жеке жауап беру;
    • Теориялық материал бойынша студенттің жауабын толықтыру;
    • Теориялық сұрақ және оған  қосымша  толықтырулар  енгізгеннен  кейін,
      талқылауға қатысу;
    • Егер семинар сабағында оқытушы өздік жұмысын берсе, оны орындау.
      Негізінде, семинар бойынша, сол студент ең жоғары  баға  алады,  егер,
семинар сабағына дайындалған кезде, келесі нұсқауларды орындаса:  бес  деген
бағаға жауап бере алатындай, тізімнен  бір-екі  сұраққа  терең  дайындалады,
тақырыптың келесі  сұрақтарына  жақсы  деген  бағаға  сай  қысқаша  деңгейде
дайындалады. Ешқашан бір сұраққа ғана дайындалып келмеңіз: өйткен, ол  сұрақ
сізге түспеуі мүмкін, ал сіз бүкіл семинар  бойынша  қанағатсыз  деген  баға
аласыз.  Тәжірибеде  студенттердің  семинар  сабағының   жұмыстары   кезінде
көптеген қателіктер жіберген соң: студент семинар сабағына өздік,  алдын-ала
дайындалмай, семинар алдындағы қоңырауда кітапты оқу арқылы дайындалады,  ал
мұндай оқудан ми  пайда  болмайды;  ауызша  сұрақтарға  студент  аудиторияда
жазып келген конспектісін оқу арқылы жауабын білдіреді.  Семинар  сабағында,
жазылғанды оқуы  тексерілмейді,  сондықтан  мұндай  жауап  қанағатсыз  болып
есептелінеді; студент оқытушы одан кітаптың материалын сұрайды деп,  сұраққа
өз ойын емес, кітаптың өз ойын береді, мұнда негізгі мәселе,  өздік  ойлауды
дамыту,  сондықтан,  ғылыми  проблемаға  өз   ойыңызды   айтуды   және   оны
факторлардан белгілеуден қорықпаңыз; студенттерге аз  көлемді  жұмыс  болады
деп, топта бүкіл  семстрге  берілген  сұрақтар  алдын  ала  екі  алмас  үшін
бөлініп  тасталады,  мұндай   дайындық   курс   бойынша   мықты   дайындықты
көрсетпейді. Сондықтан, оқытушы ниеті бойынша мықты дайындықты  көрсетпейді.
Сондықтан, оқытушы ниеті бойынша ешкім кімге қандай түсінетінін білмейді.
             Семинар  сабағының  жоспарынан   теориялық   сұрақтар   бойынша
ашықталып берілген  жауапқа  материалдың  қабалдану  тереңдігіне  байланысты
негізгі  баға  қойылады.  Сұрақ  бойынша  теориялық  материалды  берілгеннен
кейін,  активті  түрде  талқылауға  қатысқандарға  оқытушы  деп  белгілейді.
Семинар сабағына көп алған студент  дәрежесі  көтеріледі.  Маңызсыз  жауапқа
жауап болмаған да,  теріс  баға  қойылады.  Әрбір  айдын  аяғында  деканатқа
оқытушы студенттердің үлгерісі  жөнінде  мәліметтер  тапсыруы  қажет.  Егер,
студент сабақта үлгермесе, онда деканат оқу орнының нормативтік  құжаттарына
сай, әкімшілік шаралар қолданады. Әрбңр семинарға қатал қараңыз, кез  келген
қанағатсыз баға сіздің жалпы оқу  көрсетіміңізде  және  сынақта  дәрежеңізді
түсіруі мүмкін.
            Реферат - 10-18  бет  көлеміндегі  шығармашылық  жұмыс,  бірнеше
уақыт арлығындағы студентпен  орындалатын  жұмыс.  Реферат  -  қандайда  бір
сұрактын нақты қысқа  мағынасын  ашу.  Реферат  құрамында  негізгі  фактілік
мәліметерді және қарастырлған сұрақтарды  шығару  керек.  Реферат  тақырыбын
оқытушының  өзі  немесе  студентөзі  таңдауына  болады,  соңғы  жағдайда  ол
оқытушының келісімінсіз болуы керек.


      Реферат функциясы:
      Ақпараттық  (танысу);  іздеу,  мәліметтік,   индикативтік,   сигналдық
адрестік коммуникативтік.
      Бұл функциялардың орындалу деңгейі  мазмұнынан  рефераттың  формальдық
сапасын тексеру.
   1. Сыртқы беттен кейін жеке бетте оның мазмұны жазылады.
   2. Мазмұнынан кейін кіріспе болады. кіріспенің көлемі 1,5- 2 бет болуы
      тиіс.
   3. Рефераттың негізгі бөлігі бір немесе бірнеше бастамадан тұруы мүмкін,
      ол 2- 3 параграфтан құрылады.
   4. Соңғы бөлімі негізгі шығаруды құрайды.
   5. Қосымшаның графигі кестесі.
      Реферат пен жұмыс кезеңдері
      Рефератпен жұмыс жасауды үш кезеңге бөлеміз:
   1. Дайындау кезеңі
   2. Нәтижені мәтін түрінде шығару
   3. Реферат тақырыбын ауызша айту.
      Рефератты бейнелеуде қолданылатын талаптар.
      Рефераттың көлемін 10-18 беттен тұрады. Жұмыс стандартты формат
бетінде орындалады.

|№   |Тақырыбы    |Тапсырма мазмұны            |Өткізу  |Балл   |Тапсырманы |
|    |            |                            |түрі    |       |орындау    |
|    |            |                            |        |       |уақыты     |
|    |Тілдер және |Алгоритмдік проблемалар:    |реферат |30     |4 апта     |
|    |оларды      |бос, идентификациялау,      |        |       |           |
|    |өрнектеу    |тілдердің эквиваленттілігі  |        |       |           |
|    |Шекті       |Шекті автоматтарды тізбектеп|коллокви|45     |7 апта     |
|    |автоматтар  |және параллель жіктеу. Анық |ум      |       |           |
|    |            |емес грамматикалар,         |реферат |       |           |
|    |            |автоматтар және тілдер      |        |       |           |
|    |Лексикалық  |Лексикалық талдаудың        |коллокви|30     |10 апта    |
|    |талдау      |өңделуі.  Лексикалық        |ум      |       |           |
|    |            |талдаумен синтаксистік және |реферат |       |           |
|    |            |семантикалық талдаулардың   |        |       |           |
|    |            |өзара әрекеттесуі           |        |       |           |
|    |Синтаксистік| Синтаксистік талдау        |реферат |45     |13 апта    |
|    |және        |кестесін құру, және оларды  |        |       |           |
|    |семантикалық|қолдану. Тізімдері бар      |        |       |           |
|    |талдау құру |орналастыру кестесін құру.  |        |       |           |


СӨЖ  үй  тапсырмасы  ретінде  А4  форматтағы  қағазға  орындалып,  оқытушыға
тапсырылады. СӨЖ программасы оқытушыға электронды түрде өткізіледі.
  Өздік жұмысын бақылау келесі түрде болуы мүмкін:
– орындалған жұмыстың презентациясы;
– өзбетімен оқылған тақырыптың баяндамасы;
– оқытушының ауызша сұрауы;
– жазбаша түрде;
    Ескерту:  Жақсы бағада  аттестация  алу  үшін  СОӨЖ,  СӨЖ  тапсырмалары
аттестация уақытына дейін оқытушыға 1 апта бұрын тапсырылуы қажет.










   1. Аралық бақылау сұрақтары:


1. Алфавиттер
2. Тізбектер
3. Тілдер.
4. Программалау тілдерінің даму тарихы. Тілдерді өрнектеу.
5. Синтаксис, семантика және программалау тілдерінің грамматикасы.
6. Формализациялау проблемалары.
7. Формальді грамматиканың негізгі түсінігі және классификациясы.
8. Грамматикаларды классификациялау: регулярлық,  контексті-бос,  контексті-
   тәуелді, жалпы көріністегі, атрибутты, программалық.
9. Хомскийдің формальдық тілдер иерархиясы.
10. Детерминантты шекті автоматтар. Мур диаграммалары.
11. Шекті автоматтардың эквиваленттілігі. Мур теоремасы.
12. Мили и Мур автоматтары.
13. Шекті автоматтардың алгебралық құрылымдық теоремасы.
14. Шекті автоматтардың ішкі жағдайларын кодтау.
15. Тюринг машинасы, фон Нейман автоматы.
16. Бір қалыпты өрнек бойынша детерминант емес шекті автомат құру.
17. Детерминант емес шекті автомат бойынша детерминант автомат.
18. Белгілерді оқу. Лексикалық анализдерді программалау.
19. LEX лексикалық анализаторының құрылымы.
20. Шығарылған синтаксистік талдау.
21. LL(1) - грамматикасы.
22. Рекурсивтік түсу.
23. КС-грамматикасының бейнеленуі.
24. Сол жақ рекурсияның жойылуы. Сол жақ факторизация.
25. Енгізілген синтаксистік талдау. LL(1)-анализаторы.
26.  Синтаксистік  талдаудың  құру  және  қолдану  кестесі.  LR   талдауының
   ерекшелігі және нұсқасы.

      Тілдің контексті бос емес қасиеттері.


      Символдар кестесінің ұйымдастыру.


      Идентификатордың кестесі. Орналастыру кестесі.


      Тізімді қойылым кестесі. Орналастыру функциясы.


      Ағаштар кестесі. Блоқтық құрылым.

27. Жады ұйымдастыру.
28. Статикалық және динамикалық жады.
29. Компиляцияның уақыт адресі.
30. Уақытша жады.
  31. Кодтың генерациясы. Кодты  құру.
  32. Үш адресті код. Р – коды. Байт – коды. Машиналық кодты құру.
  33.  Нұсқаның таңдауы.
  34. Регистрлердің үлестіру.
  35. Объектті кодтың ықшамдылығы.




5.2 Өзін – өзі тексеруге арналған тест сұрақтары

1. Шекті автоматтардың логикалық блогын іске асыру неге байланысты ?
А) алгебра және шекті автоматтардың ерекшеліктеріне
В) автоматтардың қалыпты сипаттауының бөлінуіне
С) шекті автоматтардың жіктелуіне
Д) шекті автоматтардың маңыздылығына

2. Программалау тілі дегеніміз не ?
А) көптеген типті процессорлардың архитектураларының көрінісі
В) тек ғана алгоритмдік тілдегі программалар
С) құралдар мен есептеуіш машинада орындау үшін  көрсетілген  алгоритмдердің
ережелерінің байланысы
Д) дұрыс жауабы жоқ


   3. Машиналық тілдерге жақындығы бойынша программалау тілдері қандай болып
бөлінеді ?
А) өте төмен және жоғары деңгей        В) тек ғана төмен деңгей
С) төмен және жоғары деңгей       Д) биік және төмен деңгей


   4. Жоғарғы деңгейлі тілдердің алғашқысы:
А) Algol         В) Pascal             С) Fortran            Д) C++


   5. Синтаксистік қателер дегеніміз не ?
А) программа мәтініндегі қателер       В) трансляциялау процесіндегі
қателер
С) программаны орындаудағы қателер     Д) дұрыс жауабы жоқ


   6. Basic тілі қашан дүниеге келді ?
А) 1954                В) 1964               С) 1965         Д) 1966


   7. Pascal тілінің авторы кім ?
А) Паскаль Вирт        В) Никлаус Вирт       С) Паскаль      Д) авторы жоқ


   8. Ең тұңғыш программист:
А) Никлаус Вирт     В) Бил Модульс   С) Ада Лавлейс             Д) дұрыс
жауабы жоқ


   9. Программалау тілдері мынадай элементтерден тұрады :
А) символдар, өрнектер, сөздер, сөйлемдер
В) операторлар, лексемдер, сөздер, сөйлемдер
С) лексемдер, өрнектер, операторлар, символдар
Д) құрамдас операторлар, лексемдер, сөздер


   10. Тілдің семантикасы деген не ?
А) жазылу ережелерінің жүйесі                     В) тілдің құру мағынасы
С) программаны орындаудағы қателер                Д) дұрыс жауабы жоқ


   11. Вирттің синтаксистік диаграммалары деген не ?
А) блок схемелер арқылы тілді сипаттау
В) түзу сызықтармен біріктірілген блоктарда пайдаланып, тілді графикалық
түрде сипаттау
С) әр түрлі әдістермен тілді графикалық түрде сипаттау
Д) дұрыс жауабы жоқ


   12. Қазіргі  уақытта Pascal-дың неше халықаралық стандарты бар ?
А) үш            В) бір           С) екі                Д) стандарты жоқ


   13. Программалық өнім деген не ?
А) есепті дұрыс шешу қабілеті
В) ерекшеленген жадының көлемінде талап етілген дәлелденген нәтижені алу
С) саудада тауар ретінде қойылған адамзаттың еңбегінің азығы ретінде
компьютерлік программа
Д) достық қолданушы интерфейс


   14. Қандай программалық өнімдерді білесіңдер ?
А) эффектілік,  ашықтық                В) тираждық, тапсырыстық
С) сенімділік, тираждық                Д)  эффектілік, тапсырыстық


   15. Өмірлік циклдың бірнеше кезеңдерін көрсет:
А) есептің қойылымы, шығарылуы, нәтиже алу
В) есептің қойылымы, анализі және оны модельдеу
С) есептің  қойылымы,  анализі  және  оны  модельдеу,  алгоритмдерін  өңдеу,
программаның құрылымын жобалау, кодтау, программаны  тестілеу  және  қатесін
түзету, нәтижесін басу, программаны жалғастыру және модельдеу
   16. Кодтау деп нені түсінеміз ?
А) табиғи тілде пәндік облыстағы мамандар арқылы орындау
С) алгоритмді программалау тілінде жазу
В) алдыңғы кезеңдердің мәліметтері негізінде орындау
Д) программада қателерді болдырмау


   17. Программалау жүйесі дегеніміз не ?
А) әр түрлі әдістермен тілді графикалық түрде сипаттау
В) программаны құрудың және жөндеудің автоматтануын қамтамасыз ететін
программалық құралдардың жиынтығы
С) ерекшеленген жадының көлемінде талап етілген дәлелденген нәтижені алу
үшін қамтамасыз ету
Д) дұрыс жауабы жоқ


   18. Жоғарғы дәрежелі тілдер дегеніміз не ?
А) процессорға жақын тілдер            В) машиналық тілге жақын тілдер
С) адамдарға жақын тілдер              Д) өте қиын тілдер


   19. Аударғыш деген не ?
А) бастапқы мәтіндерді автоматты түрде жұмыс істейтін программадарға
айналдырады
В) әр түрлі әдістермен тілді графикалық түрде сипаттау
С) көптеген типті процессорлардың архитектураларының көрінісі
Д) программа мәтініндегі қателер
|a     |b     |?    |
|0     |0     |1    |
|0     |1     |1    |
|1     |0     |0    |
|1     |1     |1    |


   20. Мына ақиқаттық кестесі қай логикалық амалға сәйкес келеді:
А) инверсия
В) эквиваленттілік
С) импликация
Д) конъюнкция


   21. Мына ақиқаттық кестесі қай логикалық амалға сәйкес келеді:
|a     |b     |?    |
|0     |0     |0    |
|0     |1     |1    |
|1     |0     |1    |
|1     |1     |1    |


А) инверсия
В) эквиваленттілік
С) дизъюнкция
Д) конъюнкция


   22. Конъюнкцияның белгісін көрсет:
А) [pic];              В) [pic];             С) [pic] ;            Д)
[pic].


   23. F(a, b)=[pic] функциясының мәнін есептеңдер. Нәтижесі қалай болады.
А) 0 1 1 0       В) 1 1 1 0       С) 0 0 1 1            Д) 0 0 0 1
|a     |b     |?    |
|0     |0     |1    |
|0     |1     |0    |
|1     |0     |0    |
|1     |1     |1    |


   24. Мына ақиқаттық кестесі қай логикалық амалға сәйкес келеді:
А) инверсия
В) эквиваленттілік
С) дизъюнкция
Д) конъюнкция


   25. Математикалық логиканың логика  алгебрасы  атты  тарауы  қай  ғасырда
пайда болған ?
А) ХХ            В) ХХІ           С) ХІХ          Д) ХV


   26.«Жел соқты, және жаңбыр жауды»  пікірі  қай  логикалық  амалға  сәйкес
келеді?
А) инверсия В) эквиваленттілік    С) дизъюнкция   Д) конъюнкция


   27. «Мектепте үздік оқығаным үшін мен алтын  немесе  күміс  алқа  аламын»
пікірі қай логикалық амалға сәйкес келеді ?
А) инверсия      В) эквиваленттілік    С) дизъюнкция    Д) конъюнкция


   28. «Егер далада күн болса, онда біз өзенге барамыз» пікірі қай логикалық
амалға сәйкес келеді?
А) инверсия      В) импликация    С) дизъюнкция   Д) конъюнкция
|a     |b     |?    |
|0     |0     |0    |
|0     |1     |0    |
|1     |0     |0    |
|1     |1     |1    |


   29. Мына ақиқаттық кестесі қай логикалық амалға сәйкес келеді:
А) инверсия
В) эквиваленттілік
С) дизъюнкция
Д) конъюнкция
|a     |b     |?    |
|0     |0     |0    |
|0     |1     |1    |
|1     |0     |1    |
|1     |1     |0    |


   30. Мына ақиқаттық кестесі қай логикалық амалға сәйкес келеді:
А) инверсия
В) эквиваленттілік
С) қатаң дизъюнкция
Д) конъюнкция


31. Программалау тілдерін сипаттаудан ажырату үшін не қолданылады ?
А) константтар   В)  терминдер    С) диаграммалар       Д) белгілер


   32. Неше тілдің белгілері бар ?
А) 2             В) 3             С) 4                  Д) 1


   33. Логикалық программалау тілдердің кең тараған түрін атаңыз:
А) Pascal              В)  Prolog      С) Assembler          Д) Logika


   34. Тілді сипаттау дегеніміз -...
А) программасын тексеру                В)  программада қателер болмау
С) тілдің элементтерін сипаттау        Д) тілдің қызметші сөздерін сипаттау


   35. Синтаксистік диаграммалар не тағайындайды ?
А) тілдің алгоритмін құру схемасын жобалайды
В) тілдің элементтерін құру ережелерін тағайындайды
С) элементтердің қолдану ережелерін анықтайды     Д) дұрыс жауабы жоқ


   36. Машиналық және машиналы-бағдарлық тілдер қандай тілдер ?
А) визуалды тілдер                     В) объектілі-бағдарлы тілдер
С) белгілі бір қызмет атқаратын және белгілі бір ортада қолданылатын
құрылымдық тілдер
Д) мәліметтерді өңдеу процесінің кішкене бөліктерін көрсетуді қажет  ететін
төмен деңгейдегі тілдер


   37. Мәтіндік редактор, жинақтаушысы бар  компилятор  және  қатені  түзету
программасы қандай ортаға біріктірілген ?
А) машиналық ортасына             В) өңдеудің интегралданған ортасына
С) өңдеудің интегралданбаған ортасына             Д) дұрыс жауабы жоқ


   38. Қателердің қандай типтері бар ?
А) синтаксистік қателер, орындау қателері, семантикалық қателер
В) синтаксистік қателер, семантикалық қателер
С) синтаксистік қателер, іске асыру қателері, семантикалық қателер
Д) синтаксистік қателер


   39. Орындаушы кодты алу үшін  жоғарғы  деңгейлі  программалау  тілі  неше
этаптан өтуі тиіс ?
А) 4             В) 1             С) 2            Д) 3


   40. Трассировка процессі дегеніміз не ?
А) Әр қадамның аралық нәтижелерін көрсете отырып, қадам бойынша орындау
В) Программист қадам бойынша барлығын ескере отырып, нақты нәтижелерін алу
С) Бір орыннан келесі орынға айнымалыларды тасу процессі
Д) дұрыс жауабы жоқ


   41. Программалық өнімнің нақтылық және қатесіздік мінездемесінің қызметі:
А) жұмыс істемей қалудан сақтау        В) тез әрекетті қамтамасыз ету
қабілеті
С) есепті дұрыс шешу қабілеті          Д) берілген программалық өніснің
басқа өнісдермен қиылысуы


   42. Эффектілік мінездемесінің қызметі:
А) жұмыс істемей қалудан сақтау
В) тез әрекетті қамтамасыз ету қабілеті
С) есепті дұрыс шешу қабілеті
Д) берілген программалық өніснің басқа өнісдермен қиылысуы


   43. Сенімділік мінездемесінің қызметі:
А) жұмыс істемей қалудан сақтау
В) тез әрекетті қамтамасыз ету қабілеті
С) есепті дұрыс шешу қабілеті
Д) берілген программалық өніснің басқа өнісдермен қиылысуы


   44. Ашықтық мінездемесінің қызметі:
А) жұмыс істемей қалудан сақтау
В) тез әрекетті қамтамасыз ету қабілеті
С) есепті дұрыс шешу қабілеті
Д) берілген программалық өнімнің басқа өнімдермен қиылысуы


   45. Тестілеу дегеніміз не ?
А) қателерді іздеу          В) қателерді түзету      С) қателерді болдырмау
     Д) қателерді тасымалдау


   46. Лексемдер дегеніміз не ?
А) программаның мәтінін құрайтын бөлінбейтін белгілер
В) кейбір мәндердің есептеу тәртібін беретін белгілер
С) айнымалылардың барлық мәндерін бейнелейтін тізбектер
Д) өзбетімдік мағынасы бар алфавиттің, символдардың бөлінбейтін тізбектері


   47. Жоғарғы деңгейлі программалау тілдері ...
А) машина – тәуелді болып табылады     В) машина – тәуелсіз болып табылады
С) машиналық болып табылады       Д) дұрыс жауабы жоқ


   48. Algol  тілі қай жылы басылып шықты ?
А) 1959          В) 1958          С) 1860         Д) 1960


   49. Ассемблер тілінде программа жазу үшін не маңызды ?
А) компьютердің архитектурасы маңызды     В) компьютердің жадысы маңызды
С) ассемблер тілі ешқандай жағдай таңдамайды         Д) дұрыс жауабы жоқ


   50. Өмірлік цикл дегеніміз не ?

А) есепті өңдеу процессінің қорытындылануы


В) өңдеу процессінің аяқталуын, нақты нәтиже алуы


С) өңдеу процессінің периодты қайталануы, программалық өнімнің енуі


Д) дұрыс жауабы жоқ



   51. Basic тілі қашан дүниеге келді ?
А) 1954                В) 1964               С) 1965         Д) 1966


   52. Pascal тілінің авторы кім ?
А) Паскаль Вирт        В) Никлаус Вирт       С) Паскаль      Д) авторы жоқ


   53. Ең тұңғыш программист:
А) Никлаус Вирт        В) Бил Модульс        С) Ада Лавлейс
Д) дұрыс жауабы жоқ


   54. Программалау тілдері мынадай элементтерден тұрады :
А) символдар, өрнектер, сөздер, сөйлемдер
В) операторлар, лексемдер, сөздер, сөйлемдер
С) лексемдер, өрнектер, операторлар, символдар
Д) құрамдас операторлар, лексемдер, сөздер


   55. Тілдің семантикасы деген не ?
А) жазылу ережелерінің жүйесі                     В) тілдің құру мағынасы
С) программаны орындаудағы қателер                Д) дұрыс жауабы жоқ


   56. Шекті автоматтардың логикалық блогын іске асыру неге байланысты ?
А) алгебра және шекті автоматтардың ерекшеліктеріне
С) шекті автоматтардың жіктелуіне
В) автоматтардың қалыпты сипаттауының бөлінуіне
Д) шекті автоматтардың маңыздылығына


   57. Программалау тілі дегеніміз не ?
А) көптеген типті процессорлардың архитектураларының көрінісі
В) тек ғана алгоритмдік тілдегі программалар
С) құралдар  мен  есептеуіш  машинада  орындау  алгоритмдердің  ережелерінің
байланысы
Д) дұрыс жауабы жоқ


   58. Машиналық тілдерге  жақындығы  бойынша  программалау  тілдері  қандай
болып бөлінеді ?
А) өте төмен және жоғары деңгей                   В) тек ғана төмен деңгей
С) төмен және жоғары деңгей                  Д) биік және төмен деңгей


   59. Жоғарғы деңгейлі тілдердің алғашқысы:
А) Algol         В) Pascal        С) Fortran      Д) C++
   60. Синтаксистік қателер дегеніміз не ?
А) программа мәтініндегі қателер       В) трансляциялау процесіндегі
қателер
С) программаны орындаудағы қателер     Д) дұрыс жауабы жоқ


   61. Вирттің синтаксистік диаграммалары деген не ?
А) блок схемелер арқылы тілді сипаттау
В) түзу сызықтармен біріктірілген блоктарда пайдаланып, тілді графикалық
түрде сипаттау
С) әр түрлі әдістермен тілді графикалық түрде сипаттау
Д) дұрыс жауабы жоқ


   62. Қазіргі  уақытта Pascal-дың неше халықаралық стандарты бар ?
А) үш            В) бір           С) екі                Д) стандарты жоқ


   63. Программалық өнім деген не ?
А) есепті дұрыс шешу қабілеті
В) ерекшеленген жадының көлемінде талап етілген дәлелденген нәтижені алу
үшін оптимальдық тез әрекетті қамтамасыз ету қабілеті
С) саудада тауар ретінде қойылған адамзаттың еңбегінің азығы ретінде
компьютерлік программа
Д) достық қолданушы интерфейс


   64. Қандай программалық өнімдерді білесіңдер ?
А) эффектілік,  ашықтық                      В) тираждық, тапсырыстық
С) сенімділік, тираждық                      Д)  эффектілік, тапсырыстық


   65. Өмірлік циклдың бірнеше кезеңдерін көрсет:
А) есептің қойылымы, шығарылуы, міндетті түрде нәтиже алу
В) есептің қойылымы, анализі және оны модельдеу
С) есептің  қойылымы,  анализі  және  оны  модельдеу,  алгоритмдерін  өңдеу,
программаның құрылымын жобалау, кодтау, программаны  тестілеу  және  қатесін
түзету, нәтижесін басу, программаны жалғастыру және модельдеу
Д) дұрыс жауабы жоқ
|a     |b     |?       |
|0     |0     |0       |
|0     |1     |1       |
|1     |0     |1       |
|1     |1     |1       |


   66. Мына ақиқаттық кестесі қай логикалық амалға сәйкес келеді:
А) инверсия
В) эквиваленттілік
С) дизъюнкция
Д) конъюнкция


   67. Конъюнкцияның белгісін көрсет:
А) [pic];                   В) [pic];        С) [pic] ;            Д)
[pic].


   68. F(a, b)=[pic] функциясының мәнін есептеңдер. Нәтижесі қалай болады.
А) 0 1 1 0       В) 1 1 1 0       С) 0 0 1 1            Д) 0 0 0 1
|a     |b     |?       |
|0     |0     |1       |
|0     |1     |0       |
|1     |0     |0       |
|1     |1     |1       |


   69. Мына ақиқаттық кестесі қай логикалық амалға сәйкес келеді:
А) инверсия
В) эквиваленттілік
С) дизъюнкция
Д) конъюнкция


   70. Математикалық логиканың логика  алгебрасы  атты  тарауы  қай  ғасырда
пайда болған ?
А) ХХ            В) ХХІ     С) ХІХ     Д)ХV


   71. Кодтау деп нені түсінеміз ?
А) табиғи тілде пәндік облыс мамандар арқылы орындау
С) алгоритмді программалау тілінде жазу
В) алдыңғы кезеңдердің мәліметтері негізінде орындау
Д) программада қателерді болдырмау


   72. Программалау жүйесі дегеніміз не ?
А) әр түрлі әдістермен тілді графикалық түрде сипаттау
В) программаны құрудың және жөндеудің автоматтануын қамтамасыз ететін
программалық құралдың жиынтығы
С) ерекшеленген жадының көлемінде талап етілген дәлелденген нәтижені алу
Д) дұрыс жауабы жоқ


   73. Жоғарғы дәрежелі тілдер дегеніміз не ?
А) процессорға жақын тілдер            В) машиналық тілге жақын тілдер
С) адамдарға жақын тілдер              Д) өте қиын тілдер


   74. Аударғыш деген не ?
А) бұл арнайы программа бастапқы мәтінді автоматты түрде жұмыс істейтін
программаға айналдырады
В) әр түрлі әдістермен тілді графикалық түрде сипаттау
С) көптеген типті процессорлардың архитектураларының көрінісі
Д) программа мәтініндегі қателер
|a     |b     |?       |
|0     |0     |1       |
|0     |1     |1       |
|1     |0     |0       |
|1     |1     |1       |


   75. Мына ақиқаттық кестесі қай логикалық амалға сәйкес келеді:
А) инверсия
В) эквиваленттілік
С) импликация
Д) конъюнкция


   76. «Жел соқты, және жаңбыр жауды» пікірі  қай  логикалық  амалға  сәйкес
келеді ?
А) инверсия В) эквиваленттілік    С) дизъюнкция   Д) конъюнкция


   77. «Мектепте үздік оқығаным үшін мен алтын  немесе  күміс  алқа  аламын»
пікірі қай логикалық амалға сәйкес келеді ?
А) инверсия В) эквиваленттілік    С) дизъюнкция         Д) конъюнкция


   78. «Егер далада күн болса, онда біз өзенге барамыз» пікірі қай логикалық
амалға сәйкес келеді?
А) инверсия В) импликация         С) дизъюнкция         Д) конъюнкция
|a     |b     |?        |
|0     |0     |0        |
|0     |1     |0        |
|1     |0     |0        |
|1     |1     |1        |


   79. Мына ақиқаттық кестесі қай логикалық амалға сәйкес келеді:
А) инверсия
В) эквиваленттілік
С) дизъюнкция
Д) конъюнкция
|a     |b     |?        |
|0     |0     |0        |
|0     |1     |1        |
|1     |0     |1        |
|1     |1     |0        |


   80. Мына ақиқаттық кестесі қай логикалық амалға сәйкес келеді:
А) инверсия
В) эквиваленттілік
С) қатаң дизъюнкция
Д) конъюнкция


   81. Машиналық және машиналы-бағдарлық тілдер қандай тілдер ?
А) визуалды тілдер                В) объектілі-бағдарлы тілдер
С) белгілі бір қызмет атқаратын және белгілі бір ортада қолданылатын
құрылымдық тілдер
Д) мәліметтерді өңдеу процесінің кішкене бөліктерін көрсетуді қажет  ететін
төмен деңгейдегі тілдер


   82. Мәтіндік редактор, жинақтаушысы бар  компилятор  және  қатені  түзету
программасы қандай ортаға біріктірілген ?
А) машиналық ортасына             В) өңдеудің интегралданған ортасына
С) өңдеудің интегралданбаған ортасына        Д) дұрыс жауабы жоқ


   83. Қателердің қандай типтері бар ?
А) синтаксистік қателер, орындау қателері, семантикалық қателер
В) синтаксистік қателер, семантикалық қателер
С) синтаксистік қателер, іске асыру қателері, семантикалық қателер
Д) синтаксистік қателер


   84. Орындаушы кодты алу үшін  жоғарғы  деңгейлі  программалау  тілі  неше
этаптан өтуі тиіс ?
А) 4        В) 1       С) 2       Д) 3


   85. Трассировка процессі дегеніміз не ?
А) Арнайы қателерді түзету программасы әр қадамның аралық нәтижелерін
көрсете отырып, қадам бойынша орындау
В) Программист қадам бойынша барлығын ескере отырып, нақты нәтижелерін алу
С) Бір орыннан келесі орынға айнымалыларды тасу процессі
Д) дұрыс жауабы жоқ


86. Программалау тілдерін сипаттаудан ажырату үшін не қолданылады ?
А) константтар   В)  терминдер    С) диаграммалар       Д) белгілер
   87. Неше тілдің белгілері бар ?
А) 2             В) 3             С) 4            Д) 1


   88. Логикалық программалау тілдердің кең тараған түрін атаңыз:
А) Pascal        В)  Prolog       С) Assembler               Д) Logika


   89. Тілді сипаттау дегеніміз -...
А) программасын тексеру                      В)  программада қателер болмау
С) тілдің элементтерін сипаттау              Д) тілдің қызметші сөздерін
сипаттау


   90. Синтаксистік диаграммалар не тағайындайды ?
А) тілдің алгоритмін құру схемасын жобалайды      В) тілдің элементтерін
құру ережелерін тағайындайды
С) элементтердің қолдану ережелерін анықтайды    Д) дұрыс жауабы жоқ


   91. Программалық өнімнің нақтылық және қатесіздік мінездемесінің қызметі:
А) жұмыс істемей қалудан сақтау
В) тез әрекетті қамтамасыз ету қабілеті
С) есепті дұрыс шешу қабілеті
Д) берілген программалық өнімнің басқа өніммен қиылысуы


   92. Эффектілік мінездемесінің қызметі:
А) жұмыс істемей қалудан сақтау              В) тез әрекетті қамтамасыз ету
қабілеті
С) есепті дұрыс шешу қабілеті                 Д) берілген программалық
өнімнің басқа өніммен қиылысуы


   93. Сенімділік мінездемесінің қызметі:
А) жұмыс істемей қалудан сақтау            В) тез әрекетті қамтамасыз ету
қабілеті
С) есепті дұрыс шешу қабілеті
Д) берілген программалық өнімнің басқа өніммен қиылысуы


   94. Ашықтық мінездемесінің қызметі:
А) жұмыс істемей қалудан сақтау     В) тез әрекетті қамтамасыз ету қабілеті
С) есепті дұрыс шешу қабілеті     Д) берілген программалық өнімнің басқа
өніммен қиылысуы


   95. Тестілеу дегеніміз не ?
А) қателерді іздеу          В) қателерді түзету         С) қателерді
болдырмау     Д) қателерді тасымалдау


   96. Algol  тілі қай жылы басылып шықты ?
А) 1959          В) 1958          С) 1860         Д) 1960


   97. Ассемблер тілінде программа жазу үшін не маңызды ?
А) компьютердің архитектурасы маңызды
В) компьютердің жадысы маңызды
С) ассемблер тілі ешқандай жағдай таңдамайды
Д) дұрыс жауабы жоқ


   98. Өмірлік цикл дегеніміз не ?

А) есепті өңдеу процессінің қорытындылануы


В) өңдеу процессінің аяқталуын, нақты нәтиже алуы


С) өңдеу процессінің периодты қайталануы, программалық өнімнің енуі


Д) дұрыс жауабы жоқ

   99. Лексемдер дегеніміз не ?
А) программаның барлық мәтінін құрайтын бөлінбейтін белгілер
В) кейбір мәндердің есептеу тәртібін беретін белгілер
С) айнымалылардың барлық мәндерін бейнелейтін тізбектер
Д) өзбетімдік мағынасы бар алфавиттің, символдардың бөлінбейтін тізбектері
   100. Жоғарғы деңгейлі программалау тілдері ...
А) машина – тәуелді болып табылады                      В) машина –
тәуелсіз болып табылады
С) машиналық болып табылады                       Д) дұрыс жауабы жоқ
Негізгі әдебиеттер 7. ӘДЕБИЕТТЕР ТІЗІМІ
5. Негізгі әдебиеттер:


1. Ю.Г. Карпов. Теория автоматов. – СПБ.: Питер, 2002.
2. Ахо А., Дж.Ульм. Теория синтаксического анализа, перевода  и  компиляции.
  М.: Мир, 1978. тт. 1,2.
3.  Касьянов  В.  Н..  Лекции  по  теории  формальных  языков,  автоматов  и
  сложности вычисле ий. — Новосибирск: НГУ, 1995.
4. Языки и автоматы.  Сб. переводов. М.: Мир, 1975.
5. Ф.Льюис, Д.Розенкранц, Р.  Стирнз.  Теоретические  основы  проектирования
  компиляторов. М.: Мир, 1979.
6. Э. Дейкстра. Дисциплина программирования. М. Мир: 1978.
7. Д. Брис. Наука программирования. М.: Мир. 1984.
8. Б. Дисков, Дж. Гатэг. Использование абстракций и спецификаций при
  разработке программ. - М.: Наука, 1996.

Қосымша әдебиеттер:
   1. Кнут Д.. Искусство программирования для ЭВМ. В 3 томах. - М.,
      Мир,1976.
   2. Кормен Т., Ч. Лейзерсон, Алгоритмы. Построение и анализ -М:
      МЦНМО,1999.
   3. А. Ахо, Дж. Хопкрофт, Дж. Ульман. Построение и анализ вычислительных
      алгоритмов - М: Мир, 1979.
   4. Агафонов В.Н. Синтаксический анализ языков программирования.
      Уч.пособие, Новосибирск, НГУ, 1981.
[pic]
-----------------------
A  b  b a c a  c b

Соңғы автоматтық басқару

Соңғы автоматтық бпсқару.

Y  z    z     u

L

R

Шығу программасы

Лексикалық анализатор (сканер)

Идентификаторлар кестесі (атау кестесі)

Синтаксистік талдау (анализ)

                                      А

                                    негіз

                                      А

                                      А

                                    негіз

                                    негіз

                                      а

                                      б

                                      в

 ...  ....  ...         Х1   Х2...   ...Х1   Х2...    ...               ...
                       Х1  Х2  ...          ...   ...





)

(

+

i

)

(

+

i

i

i

i



          Мәні

              Шама

P1^2(2 байта)

           P1

Р2^(1 байт)

           P2

PМ^(200 байт)

          PМ

  5

  P

  5

 Р

  3

  D

  3

 D

X4      Ni 1  111

X3      P4

X1        P2

X2        P3

X5      Ni 1

X4      P5 111

X3      P4

X2        P3

X1        P2


Пәндер