«Соңғы автоматтар және формальдік тілдер теориясы»


Екілік санау жүйесін алгебралық қолданылуы



жүктеу 14,81 Mb.
бет99/127
Дата21.05.2018
өлшемі14,81 Mb.
#15467
1   ...   95   96   97   98   99   100   101   102   ...   127

Екілік санау жүйесін алгебралық қолданылуы.

Санның белгісі әдетте екілік цифрмен кодталады:



  • код ноль «+» белгісін білдіреді.

  • Код бір «-» белгісін білдіреді.

Сандардың алгебралық қолданылуы сандардың белгілеулеріне байланысты және арнайы кодтардың машинада қолданылуына байланысты:

  • Санның түзу коды.

  • Қайтымды код.

  • Қосымша код.

Сонымен қатар екі соңғы код командасында операциялық санаудың теріс санның болып табылады. Қосымша код операцияның орындалуын түзетеді. Сондықтанда командаларда көп қолданады.

Санның түзу коды 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 және а инверсияны білдіреді, егер а=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. Үш адресті код. Р – коды. Байт – коды. Машиналық кодты құруға тоқталыңыз?



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


Зертханалық жұмыс № 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 VN)+ × (VT VN) ; элемент (α, β) Р жиыны деп шығару ережесі және ол мына түрде жазылады αβ (былай оқылады: «α тізбегінен мынандай тізбек шығарылады.

S - бастапқы символ грамматикасы, S 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. β (Vt VN)* тізбегі α (V TVN)+ тізбегінен грамматикаға шығарылуы)G = (VT,VN,P,S (былай белгіленеді: а^>Р), егер α = ξ1γξ2и β = ξ1δξ2, £, ξ2 , δ (VT VN)* ,γ (VTVN) шығару ережесі у γδ Р жиынында қолданылады.

Анықтама 1.8. β (VTVN)* тізбегі выводима из цепочки α (VT VN)+в тізбегінен шығып G = (VT, VN, P, S) грамматикасына барады (а==>*Р белгіленеді), егер жүйелік жиындар қолданса у^, у-^,..., уп {п>0), онда а = у$ => у\ =>...=> уп = р болады.

жүктеу 14,81 Mb.

Достарыңызбен бөлісу:
1   ...   95   96   97   98   99   100   101   102   ...   127




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау