ЗАПРОС 1. Запросы на выборку из одной и нескольких таблиц



Имя запроса: "ЗакупкиЗаМесяц".

Цель запроса: выбрать закупки за последний месяц

Тип запроса: запрос на выборку всех полей из одной таблицы

SQL-запрос: Пояснение к запросу:
SELECT Закупки.* FROM Закупки WHERE Закупки.ДатаРазмещения >Date()-30; ВЫБРАТЬ все поля ИЗ таблицы Закупки ГДЕполе ДатаРазмещения имеет значение больше, чем текущая дата минус 30 дней

Сұраныс құру компоненті Tquery:

DataAccess панелінде орналасқан Tquery компоненті бірнеше кестелерден

қажетті жазуларды шығарып алуға көмектеседі. Ал нәтижесінде алынған

деректермен жұмыс Ttable компонентімен орындалады. Сұраныс құруда

Structured Query Language (SQL) тілінің маңызы зор. SQL операторлары

программалық кодтан оырндалады. Tquery компонентінің SQL қасиетінде

операторды жазып көрсетуге болады., оны орындау үшін ExecSQL әдісі

қолданылады.

SELECT операторы SQL тілінің негізгі операторы болып табылады. Ол

бірнеше кестеден берілген шартты қанағаттандыратын жазуларды алып  шығарады.

Оператордың жазылуы келесідей: SELECT өрістер тізімі FROM кесте атауы;

Мысалы: SELECT Name, Salary FROM Client.db .

Паскальтіліндегідей Select, From сөздері SQL тілініңрезервтегі

кілттікқызметшісөздеріретіндеқабылданған. SQL операторларын бас

әріптермен жазу керек. EnterSQL (SQL тілінің операторларын енгізу)

бөлігінде жоғарыдағы жолды жазып, Execute Query (сұранымды орындау)

батырмасын бассақ екі өрістен тұратын уақытша деректер жиыны деп аталатын

деректер кестесін аламыз.

Егер сұранысқа барлық өрістерді енгізу керек болса, * символын көрсетеді.

Мысалы:

Select * From Client.db

Шарт бойынша деректерді жинақтау үшін Where қызметші сөзінен кейін

Паскаль тілінде шартты өрнекті көрсету керек. Өрнекте мына салыстыру

таңбалары: <, > =, >=, <=, логикалық операциялар: Or, AND, NOT

қолданылады. Жалпы жазылуы:

SELECT өрістер тізімі FROM кесте атауы WHERE шарт;

Мысалы: SELECT * FROM Client.db WHERE Cash>=120000 and Cash<=1000000

Структуралысұраныстартілі SQL

Мысалменқарастырамыз: Client.db кестесіндесұранысқұрукерекболсын.

1. DataAccess панелінен Form1 қалыбына Tquery компонентінорналастырамыз.

Ол Ttable компонентініңонынақолданылады.

2. Қалыпқа TDBGrid, TdataSource компоненттерінорналастырамыз. Қасиеттері:

1) TdataSource:Dataset - Query1 мәнінбереміз.

2) Query1 компонентіүшін DataBaseName - Firma1 болсын.

3. Объектілер инспекторы терезесінде SQL қасиетіндегі “…” батырмасын

басамыз. Бұл жолда SQL тіліндегі команданы жазамыз. Мысалы:

 

А) SELECT ClientsName.Salary FROM Client.db – фамилия мен жалақысы

туралы деректер алынсын деп OK батырмасын басамыз.

4. Query1 компонентінің Active қасиетін True дейміз.

       Сұранымды қосымшада құру

       Мысалмен қарастырамыз:

1. Жаңа қосымша құрамыз.

2. Қалыпта TDBGrid, Tquery, TdataSource компоненттерін орналастырамыз.

Олардың қасиеттерін көрсетеміз. Client.db кестесін қолданайық.

3. Барлық сатып алушы клиенттер шығару керек болсын. Қалыпқа Tbutton

компонентін орналастырып “Filter” деп атаймыз. Tedit өрісіне сатып

алушы фамилиясын енгізгенде осы клиент үшін барлық деректі торкөз түрінде

шығаруы керек болсын. Tquery компонентінің Append қасиетін қолданамыз.

4. “ Filter” компонентін басу оқиғасына программалық код жазамыз:

Begin

If Edit1.Tet<>’ ‘ then Begin

Query1.Active:=False;

Query1.SQL.Clear;

Query1.SQL.Append(‘select client.db where Name.Like’+’ ’+ Edit1.Text+’

’);

Query1.Active:=True;

End;

Else Begin

Query1.Active:=False;

Query1.SQL.Clear;

Query1.SQL.Append(‘select * from client.db);

Query1.Active:=True; End; End;

5. Қосымшаныорындауғажіберіпфамилияныенгізгенсоң “Filter” батырмасын

басамыз.

! Ескерту. Фамилияны жартылай жазуға болады.

! Ескерту. Жаңа сұраным құру үшін Edit1 өрісін тазалап қайтадан

“Filter” батырмасын басу керек. Сонда барлық өрістер шығады.

Тапсырмалар:

1. Деректер базасы бір бірімен байланысатын екі немесе одан көп

кестелерден тұрсын. Бірнеше кестелер арасында байланыс орнату. Схемасынкөрсету.

2. Деректер базасы бойынша сұраныстардың түрлерін құрып көрсету:

- қарапайым сұраныс құру.

  - сұранысты компоненттер көмегімен құру.

- сұраныс құрудың программалық кодын қолдану.

- барлық деректерді қолданып толық нәтижелі сұраныс құру.

 

3. LR-талдаудың ерекшеліктері. LR-талдағыштарының нұсқалары

Контекстті-еркін грамматика берілсін. Терминаьды тізбекті қарастырайық. Біріншіден оның грамматикамен берілген тілге жататындығын анықтау керек, егер жатса қорытындысын құру керек. Талдаудың екі түрі атақты: рекурсивті талдау және талдау стекті және соңғы автоматты қолданылады. Біз рекурсивті талдауды қарастырмаймыз, өйткені грамматика классы LR талдауына қарағанда мағыналы. Енді стекті және соңғы автоматты қолданылатын LR талдауына көшелік. L-әрпі тізбектің солдан оңға қарай шығатынын білдіреді, ал R-әрпі осыдан оң болады.

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

LR-стегінің процессі терминалды және терминалды емес сөзін білдіреді, ол оң жақ бөлігінен шығарылады.

LR-процессін орындаған кезде кез-келген уақытта келесі екі әрекет орындалуы мүмкін:

+----------------- |содержимое стека << входная цепочка +-----------------

1. Қозғалу. Біз бірінші енгізу тізбегінің оқылмағанм символын алып, оны стекке ауыстырамыз. Мысалы:

2. +---------3. қозғалысқа дейін| aMBbaC abcdef4. +---------5. 6. +---------7. қозғалыстан кейін| aMBbaCa bcdef8. +---------

("a" символын енгізу тізбегінің басынан стекке жылжыту.).

9. Түйген. кейбір ереже бойынша. по некоторому правилу. Стекте бар сөздің соңы, грамматика ережесінің оң жақ бөлігімен сәйкес келуі керек. Сонда осы ереже бойынша ереженің сол жақ бөлігіне ауыстырылу болып табылады. Келесі мысалды қарастырайық. Грамматикада ереже болсын.

10. A -> 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-процессінің сәтті әрекетін осы тізбекке қарастырайық.

Бастыжағдай

+-- | a+a*a +--

әрекет –қозғалыс.

LR-процессініңжағдайы

+-- |a +a*a +--

F -> a ережесібойыншатүйгеннің--әрекеті.

+-- |F +a*a +--

әрекет –қозғалыс.

+--- |F+ a*a +---

әрекет –қозғалыс.

+--- |F+a *a +---

F -> a ережесібойыншатүйгеннің--әрекеті

+--- |F+F *a +---

әрекет –қозғалыс.

+---- |F+F* a +----

әрекет –қозғалыс
+-----

|F+F*a +-----

F -> a ережесібойыншатүйгеннің--әрекеті.
+-----

|F+F*F +-----

F -> F*F ережесібойыншатүйгеннің--әрекеті.
+----

|F+F +----

F -> F+F ережесібойыншатүйгеннің--әрекеті.
+--

|F +--

S -> F ережесібойыншатүйгеннің--әрекеті.
+--

|S +--

LR-процессініңсәттісоңғыжағдайы.

 

 

№ 22 БИЛЕТ 

1. Жолдарды өңдеу алгоритмдері

Жолдардыөңдеуалгоритмдері

Жол- алдын – алаанықталғаналфавиттеналынғансимволдарреттілігі.

Реттілік – жол, бірөлшемдіқұрылымды. Яғни, әрэлементтіңнөмертүріндебірегейтаңбасыболады.

Төмендежолдардыөңдеуалгоритмдерікөрсетілген:

 

Кнут – Моррис – Пратталгоритмі (КМП-алгоритм) — берілгентекстжолындаішкіжолтармағынтабуалгоритмінайтамыз. АлгоритмдіалғашашқанамериканғалымдарыДональдКнутжәнеВонПраттеді, оларжекедараөзбетіментапқанДжеймсМоррисболды. Өзеңбектірініңжемісінолар1977 басыпшығарды.

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

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

Бұлкелесіалгоритмгеалыпкеледі: префикс–функциясыжолынанболсын. Сондажылжығаннанкейінменекеуініңсалыстыруыннұсқаныңорналасужерінжоғалтпайжаңартуымызғаболады. Амортизацияланғананализбойыншакестесісалыстыруыменіздеуалдындашешілгендігінболжамдауғаболады. Алжолыдәлбірретжүргізілгенболса, жиынтықтағыуақыталгоритмытеңболады, n мәтініңұзындығы.

 

Рабиналгоритмі. РабиналгоритміҚатардаішкіқатардыіздейтіналгоритмдер.

SF-алгоритмныңмодификациясынантұратынқарапайымидеяғанегізделген. Мысалысөздіңұзындығы m, жәнедебіз n үлгісііздепжатырмыз. n өлшемібар “терезені” қиыпалып, кірерсөзбойықозғалтсақ. Біздіқызықтыратынжай, ол “терезедегі” сөзүлгігесәйкескелетіні. Әріптербойыншасалыстыруөтекеш. Оныңорынынасөздің n ұзындығындағыфункцияныаламыз. Егердефункцияныңмәні “терезеде” жазылғанүлгіменсалыстырғандаайырмашылықболса, ондаұқсастықжоқ. Текқанамәндербірдейболса, ондатізбектіәріптерібойыншасалыстырукерек.

Мұндайдабізнежеңеміз? Біздіңойымызша, кезкелгенсөздіоқуүшіноныбәрібірдеәріптепоқиды. Алайда “терезешікті” жылжытукезіндесөзтүгеліменөзгермейді, мұндаәріпсоңынақосыладыда, басынаәріпқосылады. Мысалы: (функцияныоңайесептеуүшін). Сөздіңбарлықәріптерінолардыңнөмерлеріменауыстырайық, нөмірлерәркездебүтінсандар. Ондаыңғайлыфункцияғаәріптердіңқосындысыжатады. (“терезешікті” жылжытуүшінжаңаәріптіқосыпжәнеодан “жоғалыпкеткен” әріптіалыптастауқажет.) Әрбірфункцияғакейбірсөздердұрысқолданылмайды. Алайдабасқафункциямүұндайжағдайдажақсықолданады. Идеятуады: функциялардыңбарлығынжинапалып, алгоритмніңбасталуыкезіндефункциялардыңкезкелгенінқолдану.

Мысалы: Қандайдабір p санын (жайсандарболсын) жәнермодулібойыншахайырымынқарастырайық. Әрбірұзындығы n сөздібүтінсандардыңтізбегіретіндеқарастырайық (әріптердіолардыңкодтарыменауыстырайық). Бұләріптерді n-1 дәрежесіндегікөпмүшеніңкоэффициентытүріндеқарастырайықжәнехнүктесіндермодуліарқылыкөпмүшеніңмәнінесептейік. “Терезешікті” бірбірліккежылжыту, олүлкенмүшесініңайырымынасәйкесболады, мұндах – кеқосыпбосмүшеніқосқандұрыс. рсаныберілсінжәнебұлжайсан, X мен Y – n ұзындығыбарекібөлексөз. Ондаоларғаәртүрлікөпмүшелерсәйкескеледі (барлықәріптердіңкодтарыәртүрлі – мұндайжағдайр –даболуымүмкін, алфавиттыңсаныныңкөптігі). Функциямәндерініңсәйкестіктері, хнүктесіндекөпмүшеліктербір-біріменсәйкескеледі, яғниолардыңайырмашылықтары 0-гетең. Айырмашылықол n-1 дәрежесіндегікөпмүшежәне n-1 түбірлеріненартықемес. Егер n көптікр-данкішіболса, ондахмәніне “сәттілікемес” нүктесінетүсуәдістеріазаяды.

 

Боуэр-Мур (Boyer-Moore) алгоритмініңқарапайымнұсқасы. Қарастырылыпжатқаналгоритмалғашқыжағдайдақарапайымсияқтыкөрінеді, бұлалгоритмбарлықәріптердіңқандайдабірбөлігінғанаоқиды. Бұлқалайболуымүмкін? Мұныңидеясыөтеқарапайым.

Мысалы, егербіз "abcd" үлгінітапқымызкелсе. Осыкездесөздіңтөртіншіәріпіненазараударамыз, егердеолмысалы "e", ондаалдыңғыүшәріптіоқуғакерекемес (шындададаүлгіде "e" әріпіжоқ, сондықтанолбесіншіәріптенбұрынбасталмайды. Бұлалгоритмныңқарапайыммысалынкелтіреміз, бұлалгоритмбарлықжағдайлардатезжұмысістемейді.

X=x[1]...x[n] – сөз - үлгі, бұлсөздііздеуқажет. S – тіңәрбірсөзінеХсөзініңоңжақкіріссөзінтабукерек, яғни k еңүлкен, мұндағы x[k]=s. Бұлмәліметтерді Posit[s] массивтесақтуақажет. Егер s әріпімүлдекездеспесе, онда Posit[s]=0 теңболады (әріқарайнегеекенінқараймыз)[4].

2. ДҚБЖ-де пішіндерді, есептемелерді құру

НақтыДҚБЖ – дапішіндерді құру

Формалардықұрутәсілдерініңжеңілдігі, әртүрлілігіжәнеолардыңсыртқытүрлері MS Access программасыныңбасқаДҚБЖартықболуынаәсеретеді. Бұғанформаларменжұмысбарысындакөзжеткізугеболады. ФормажапсырмасындағыҚұрубатырмасыншерткендепайдаболатынЖаңаформатерезесіндегіформақұрутәсілдерінқарастырамыз:

Формашеберіменконструкторы

Жаңаформатерезесіндеформашеберінтаңдапжәнекестеатауынкөрсетіп, ОКбатырмасыншертуарқылыФормашеберііскеқосылады. Оныңжұмысынтүсінуүшінмынадайнақтыкестеқарастырайық (мұндағы 4-шіжәне 5-өрістер OLE типінде, яғнисуретпенберілгенобьект):

Формашеңберітөмендегідей 4 қадамнантұратынәрекеттербар (қадамәрекеттерітандалғанкестебойыншажақшаішінденақтыланған):

1-қадам. Формақұруғақажеттіөрістердітаңдау.

2-қадам. Форманыңүштүрініңбірінтаңдау (мысалыүшінбағатүрітаңдалсын).

3-қадам. Формастилінтаңдау. Формастилідепоныңфоныныңшрифтін, қолтаңбарельефінберусаналады. Мысалы, бұлт (облака) стилітаңдалсын.

4-қадам. Жаңафорағаатауберіпжәнеоныңдайынформаныкөрунемесеформаүлгісінөзгертупараметрлерініңбірінтаңдап, Дайынбатырмасыншерту. Мысалы: форма1 атауыберіліп, дайынформаныкөрупараметрітаңдалсын. Формашеберіжұмысыкөрсетілген

Бағдарламадаформақұрубарысындакестеніңбарлықөрістерінэкранбетінесыйдыруғатырысады. Оныңформақұрудағыәсемдіксапасыұнамағанжағдайдаонықұрастырушырежиміндежөндеугеболады.

ФорманықұрастырушыкөмегіменқұруүшінФормаобъектісінебарып, ҚұрастырушытәсілінжәнеқажеттікестенемесесұранысатауынтаңдапОкбатырмасыншертеміз. Экрандақұрастырушытерезесіашылады. Бұлтерезегеөзімізгеқажеттіөрістердіөрістертізіміненорналастырып, олөрістердіңшрифтін, өлшемін, түсінқалауымызшаөзгертеміз. Дайынболғанформаныатберіпсақтаймыз.

Автоформалар

MS Access-теформаның, автоматтытүрдеқұруғаболатынстандарттытүрібар: бағандықавтоформа; таспалықавтоформа; кестелікавтоформа. Автоформатүрлерін, нақтымысалретіндеСтуденткестесінқарастырамыз: ОсыкестеніңстандарттытүрдегіформасыналуүшінЖаңаформатерезесіндеавтоформалардыңбірінбелгілептерезеніңтөменгіжағындаСтуденткестенітаңадап, ОКтүймесінтаңдаукерек. Бағандықформадакестеніңбарлықөрістерібағантүріндеорналасқан. Экранбетіндеоныңбірғанажазбасыкөрінеді. Кестеніңқажеттіжазбасынкөруүшіноныңжазбаларбойыменжылжубатырмаларыпайдаланылады.

Таспалықформакестегеұқсас, бірақондағыберілгендеркестедегідейжинақыемес, олардыңәрқайсысыбіртаспадаорналасқан.

Кестелікформасыртқытүрібойыншакәдімгікестеденайырмашылығыжоқ. Шындығында, формастатусындағыкесте, басқашаайтқанда, формаүшінкестережиміқамтылған

3. Программалау тілдерінің семантикасын формалдау. Спецификациялау тілдері

Семантика - бұл бағдарламалау тілдері сөйлемдерінің (бағдарламаның) мағынасы, бағдарламалау тілінің семантикасын құрастыру қосымша үстемділік - бағдарламаның дұрыстығын дәлелдеу мүмкіндігін береді. Программалау тілі үш құраушының: алфавит, синтаксис және семантика бірлігі болып табылады. Тілдің алфавиті – тілдің сөйлемдерін жазуда пайдаланылатын, тілдің барлық символдарының жиынтығы. Тілдің синтаксисі – тілдің сөйлемдері мен оның құрамдас бөліктерін құру үшін пайдаланылатын ережелер жиынтығы. Тілдің семантикасы – тілдің синтаксисі бойынша құралған оның құрылымын түсіну ережесін анықтайды.Семантикалық анализ – бұл шығу программасының дұрыстығын тексеретін компилятордың бөлігі. Тексеруден басқа семантикалық анализ мәтінді өзгертуі тиіс. Семантикалық анализдің бір бөлігі синтактикалық талдауға, бір бөлігі генерациялық код дайындық фазасына кіруі мүмкін. Генерациялық кодқа дайындық - бұл фаза компилятор арқылы жұмыстар істелінеді, ол әрине нәтижелік программа синтез мәтініне байланысты. Семантика синтаксистік анықтамалар берілген элементтердің қолдану ережелерін және мағынасын анықтайды.

Тілдің құру мағынасы - бұл оның семантикасы. Басқа сөзбен айтқанда,тілдің синтаксисі жеке құрастырушылардың сыртқы түрін анықтайды,ал семантика осы құрастырушылар арқылы компьютер орындайтын әрекеттерді талқылайды.Жоғарғы деңгейлі қазіргі тілдер симантикалары бойынша ұқсас,бірақ синтаксисте кейбір ерекшеліктері бар. Осыдан шығатын маңызды қортынды:программалауды алғаш меңгерушілер тілдің семантикасына көңіл аударуы қажет.Сапалы программаларды жазу тілдің синтаксисіне байланысты емес. Семантиканы соңына дейін түсіну күрделірек .Тілдің әрбір құрастырушысын жеке алгоритімдер жазуда міндеттері бойынша пайдалану одан сайын күрделірек.

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

Функция семантикасын спецификациялаудың негізгі жолдары

Функция семантикасын спецификациялаудың келесі жолдары қолданылады: кестелік, алгебралық және логикалық [4.1, стр. 30-73], графикалық [4.2].

Функцияны кестелік анықтаудың әдісі орта мектеп курсынан белгілі. Олкестелерді пайдалануға негізделеді. Бағдарламалауда бұл әдістер кестелерді шешу әдісінде қолданыс тапты.

Функцияны алгебралық анықтау әдісі теңдіктерді пайдалануға негізделген. Осы жағдайда кез келген функцилар жинағын анықтау үшін теңдіктер жүйесі пайдаланылады:

(4.1)

Осындағы Li және Ri, i=1, ....n, анықталатын функция (бұл функциялардың формалды шамалары) тәуелді болатын алдын ала анықталған констаталар, айнымалылар, операцияларды белгілейтін шартты белгілер жинағы. Анықталатын функция семантикасы бұл теңдік жүйесінің инетрпритациясы нәтижесінде алынады. Бұл интерпритация әр түрлі жолмен жүргізілу мүмкін, бұл әрине әр түрлі семантикаларды тудырады. Қазіргі кезде операционды, денотационды, аксиоматикалық семантикалар белменді түрде зерттелуде.

Үшінші логикалық әдіс аргументтері әр түрлі шамалар бола алатын, ал нәтижелері логикалық шама (ШЫНДЫҚ және ӨТІРІК) болатын функция предикаттарын пайдалануына негізделеді. Бұл жағдайда функциялар жинағын анықтау үшін предикаттар жүйесі пайдаланады. Алгебралық әдістің теңдік жүйелерін предикаттар жүйесінің келесі түрі арқылы беріле алады:

(4.2)

егер бірінші және екінші аргументтерінің шамасы тең болса осындағы ТЕҢ предикаты шын болады. Бұл логикалық әдістің функцияларды анықтауда үлкен мүмкіндіктері бар екенің көрсетеді, бірақ БҚ- ты құрастырушылардан математикалық логика әдістерін қодана білуді талап етеді. Бұл әдісті біз терең қарастырмаймыз.

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

Спецификация тілдері

Жоғарыда айтылғандай функционалдық спецификация математикалық дәл бірақ формалданған емес БҚ-дың жұмыс жүрісінің сипатын түсінеміз. Бірақ функционалдық спецификацияның формалданған түрі, функционалдық спецификацияны автоматты бақылаудың кейбір түрлерін пайдалануға мүмкіндік береді.

Спецификация тілі деп функция спецификациясы үшін пайдаланатын формалды тілді айтамыз. Онда сипатталатын функциялардың семантикасын бейнелеп, олардың синтаксисын бекітуге мүмкіндік беретін құралдар тізбегі қолданылады. Бағдарламалау тілдері мен спецификация тілдері арасындағы айырмашылығы шартты да болу мүмкін: егер спецификация тілі қандай да бір жолмен ол арқылы көрсетілген спецификацияларды орындау мүкіндігін беретін компьютерде реализациясы болса, ондай тіл кейде жоғары нәтижелі бағдарламаларды жазуға мүмкіндік бере алмайтын бағдарламалау тілі бола алады. Бірақ спецификация тілі үшін нәтижелілік емес айқындық маңызды. Бағдарламалау тілі болып есептелмейтін спецификация тілдері де БҚ- ты құрастыруда пайдалы болу мүмкін (бақылауды автоматтандыру үшін, тестілеу үшін және т.б.).

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

БИЛЕТ -23

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

Символдар кестесін құру

Компилятор жұмыс істеп түрған кезде арнайы символдар кестесінде бағдарламаның объекті жайлы ақпарат сақтайды. Ереже бойынша, объекттідегі ақпарат екі негізгі элементтен тұрады: объект аты және объекттің сипаттамасы. Бағдарлама объекттері жайлы ақпараттар төмендегідей ұйымдастырылуы керек, яғни, іздеу мүмкіндігінше тез, ал қажет болатын жады мүмкіндеігінше аз болу. Сонымен бірге программалау тілі жағынан ақпаратты ұйымдастыруға қосымша талап ету болу керек. Анықталған көріну аумағы болу керек. Мысалы: Өріс жазбасы құрылым шеңберінде бірегей болу керек. Сол уақытта өріс атты қосылу операторымен ашылуы мүмкін, сонда аттар арасында жанжал туындауы мумкін. Егер тіл блоктық құрылымды болса, мынадай ақпаратты сақтау әдісі қажет. Біріншіден, блоқтық механизм, екіншіден, блоктан шығу кезінде жадыны тиімді босату. Кейбір тілдерде бір уақытта бірнеше объектті бір атпен көрінуі мүмкін

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

Объект жайлы ақпаратты екі бөлікке бөлінеді: ат және суреттеу. Егер идентивикатор ұзындығы шектелсе, символдар кестесі қарапайым фиксироланған ұзындықтағы жол массиві түрінде ұйымдастырылуы мүмкін. 7,1 Суретте көрсетілген. Кейбір шығу бос емес,кейбірі бос болуы мүмкін.

Рис. 7.1:        

 

 

Біріншіден, массив өлшемі идентификаторлар санынан кем болмау керек, программада нақты пайда болатын. Екіншіден, потенциальді әр түрлі идентификаторлар саны кесте өлшемінен үлкен болу керек.

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

Символдар кестесінде идентификаторлар кестесіне шығатын тиісті көрсеткіш сақталады. Идентификаторлар кестесін тұтас массив түрінде ұйымдастыруға болады. Идентификатор массивта қандайда – бір арнайы символмен EOS аяқталады.

  1. ДБ физикалық ұйымдастырылуы.

ДҚ физикалық ұйымдастырылуы.

Реляциялық ДБ- ның физикалық моделі дегеніміз ДБ- ның қатынастары мен олардың арасындағы байланыстардың SQLкомандаларының тізбегі түрінде жүзеге асатындай етіп бейнеленуі. Бұл командалар тізбегінің орындалуы нәтижесінде нақты ДБ және оның объектілері құрылады.

Реляциялық ДБ- ның физикалық моделін құрудағы жобалаушының негізгі міндеттерінің бірі- ДБ- ның логикалық қатынастарын ДБ- ның кестелеріне айналдыру.

Ал оның қарапайым ішкі міндеттерінің бірі- ДБ- ның кестелерін құру. Реляциялық ДББЖ-дегі кестелер бір немесе одан да көп бағандардан(оны атрибуттар, өрістер, бағаналар деп те атайды) тұрады. Бағандар – ішінде мәндері бар, жазбаның аттары жазылған ұяшықтар. Сондай-ақ, бағандар да спецификация арқылы анықталады, спецификация өз кезегінде бағанның пішімі (форматы) мен шектеулер арқылы берілген сипаттамаларын білдіреді. Кесте CREATE TABLE командасымен анықталады.

Физикалық жобалау сатысында жүйенің өнімділігімен байланысты сұрақтарды шешеді, деректерді сақтау құрылымы анықталады.

Жобалаудың сатылары мен словарьлі (словарная система) жүйелер арасындағы іс-әрекетті жеке қарастыру қажет. Жобалау процедурасы словарьлы жүйе жоқ болған жағдайда да қолданыла береді. Словарьлы жүйенің өзі жобалауды автоматтандыру элементі ретінде қарастырылуы мүмкін.

Жобалау әдістері мен бағалау критерийлері құрастыру сатысында пайдаланылады. Қазіргі уақытта критерийлерді таңдау кезіндегі анықсыздық ДБ жобалауда ең әлсіз жер болып табылады. Бұл суреттеудің қиындығымен және альтернативті шешімдердің үлкен санын идентификациялаумен байланысты.

Сапалы критерийлерге иілгіштік, адаптивтілік, жаңа пайдаланушыларға кіру мүмкіндігі, басқа жүйелермен өзара байланысқан, қайта жаңарту мүмкіндігі, бөлу және кеңейту мүмкіндігі жатады.

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

ДБ физикалық жобалау – бұл қосымшаның тиімді жұмыс істеуін қамтамасыз етуге арналған сыртқы тасымалдағыштарға ДБ тиімді салуды таңдау.

Физикалық жобалау нәтижесі сақтау ортасына даталогиялық модельді байланыстыру үшін пайдаланылатын физикалық модель болып табылады.

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

Деректер базасының физикалық өндірілуі келесілерді қарастырады:

· Деректерді физикалық сақталуын ұйымдастыру;

· Деректердің қажетті элменеттерін іздеу процедураларын анықтау.

 

 

  1. Рабин алгоритмі.

Алгоритм Рабина — Карпа — хештеу негізінде тексттен жолдарды іздеу алгоритмі, Оны 1987 ж Майклом Рабином и Ричардом Карпом жасады.

Ол жалғыз шаблондар үнін жиі қолданылмайды, мағыналы теориялық маңызы бар және көптік шаблондардың сәйкестік іздеуінде жиі қолданылады. N ұзындықты текст үшін және m ұзындықта шаблон үшін жақсы жағдайда тура O(n) уақыт жұмсалады , жаман жағдайда O(nm),бұл алгоритмнің жиі қолданылмауының себебі де осында. Алгоритм шаблонды к жолдың кез келгенінен оның өлшеміне қарамай O(n) уақытта табады.

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

1function NaiveSearch(string s[1..n], string sub[1..m])2for i from 1 to n-m+13for j from 1 to m4if s[i+j-1] ≠ sub[j]5            jump to next iteration of outer loop6return i7return not found

БИЛЕТ 24

1.Рекурсивті алгоритмдер.

 

Рекурсия (өздігінен қайталану) – «өзіне-өзі» қатынайтын іс-әрекет. Екі түрлі рекурсия бар: 1) түзу рекурсиясы, процедура өзін-өзі шақырады; 2) жанама рекурсиясы, мұнда бір процедура екінші процедураны шақырады, ал бұл тура немесе жанама түрде бастапқы процедураны шақырады. Егер есеп рекуссивті есептеуіне жатса, рекурсияны пайдалануға болады. Кез келген есеп рекурсияда шығарылса, осы есеп сонымен қатар рекурсиясыз да шығарылады. Рекурсия түсінігімен «рекуррентті тізбектелу» түсінігі сәйкес келеді, мұндағы n мүшесін есептеу үшін рекурсия қолданылады. Бұл түсініктің анықтамасын анықтайық: сандық тізбектелу {xk} рекурренттілік деп аталады, егер сонымен қатар, егер p=1  егер р=2: .

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

 


Қатардың ерs-інен кем емес мүшелерінің қосындысын табу керек. (Ерs – қандай кіші болса да, есептеу дәлдігін білдіретін алдын ала берілген оң сан. Ерs дәлдігі бойынша табылған мән осы дәлдікпен алынған соsх мәні де болатыны математика курсынан белгілі.)

Нұсқау. Қатардың жалпы мүшесі (к=0, 1, 2,...): Жалпы, берілген есепті бастапқы берілгендер мен шешуі бірдей болатын оңайлатылған ішкі есепке ауыстыру (ол бәсеңдету стратегиясы деп аталады), ал кезегімен оны да осы сияқты басқа ішкі есепке ауыстыру процесі рекурсия деп аталады (Информатикада ішкі программаны қайталап өзін-өзі шақыру жағдайлары да жиі кездеседі. Мұндай тәсіл де рекурсия делінеді).

 

2. Хештеу және индекстеу файлдары.

Хэштеу файлдары.

Хэш-секциялау – хэштелген секциялау кілтінің мәндері бойынша кесте, жолдарының тағайындалған кестелік кеңістіктерге қалыпты үлестірілуін білдіреді.

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

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

Xэштeу:

Клaccикaлық жaғдaйдa кiлт кecтeдeгiaдpec, Xэш фуeкцияғa қoйылaтын нeгiзгi тaлaп aдpecтiң мәнiн бip қaлыпты үлecтipу мұндaғы aдpec кiлт пeн жaзбaлapдaн тұpaтын жимa (cвepткa) cияқты бoлaды.Кoлизия туындaғaн жaғдaйдa (кiлттiң бipнeшe мәнiнe бipcвepткaнiң кeлуi) тoлып кeту тiзбeгi пaйдa бoлaды. Бұл әдicтiң шeктeуioл кecтeнiң бeкiтiлгeн paзмepi бoлып тaбылaды.Eгep кecтe кқбipeк тoлca нeмecaacып кeтce, oндaaca көп acып кeту тiзбeктepi пaйдa бoлaды. Xэштeудiң бacты apтықшылығы жaзбaғa қaтынaудың тaблицaғa бippeт қaтынaуы apқылы icкeacу жoйылaды. Кecтeнi кeңeйту жaңaxэш функция apқылы oны жaңaдaн қaйтa жacaуғa әкeлeдi.Aл ДҚ жaғдaйындa мұндaй әpeкeттiopындaуғa бoлмaйды. Coндықтaн көбiнeceapaлық кecтeлepдiaнықтaмaлapды қoлдaнылaды. Aнықтaмaлapдa кiлттiң мәнi мeн жaзбaлapдың aдpecicaқтaлaды,aл жaзбaлap жeкecaқтaлaды.Aнықтaмa тoлып кeткeн жaғдaйдaoны тeк жөндeу қaжeт бoлaды, шығыны aз бoлaды. Aнықтaмaлapды тoлық қaйтaдaн жaзуды бoлдыpмac үшiн В бұтaқ тexнoлoгияcын қoлдaнaды. Бұл жaғaдaйдa В бұтaқтың тepeңдiгiнe қapaй динaмикaлық түpдe өзгepeдi. Қocымшa тexнoлoгиялық тәciлдepдi қoлдaнып, жaзбaлapдың peтiн кiлттepдiң мәнiнecәйкeccaқтaуғa қoл жeткiзугe бoлaды. Ocылaйшa В бұтaқ пeн xэштeу бip-бipiнe жaқындaйды.

SQL-гe бaғыттaлғaн peляциялық ДҚБЖ-iн мұндaй жaлпы түpдeгiaнықтaмa бoйыншa дeдуктивтi жүйeгe жaтқызуғa бoлaды. Шынындa дa ДҚ -ның интeнциoнaльды бөлiгiндeгiдeй peляциялық ДҚ -ның cxeмacындaaнықтaлғaн көpiнcтep (пpeдcтaвлeния) бap. Мыcaлы: SQL жaғдaйындa SQL тiлiнiң ipiктeу oпepaтopы көpiнicтiaнықтaудың нeгiзгi элeмeнтi бoлaды. , өйткeнiipiктeу oпepaтopының нәтижeci кeccтe бoлaды. Oны қaжeтiншe кeңeйтугe бoлaды, өйткeнi көpiнicтepдi бaзaлық кecтeлepгe ғaнaeмec, көpiнicтepгe дeaнықтaуғa бoлaды.

Индeкcтep – Oбъeктiлep түpлepiнe қoлдaнылып, cұpaныcтың opындaлуының жылдaмдығының ұлғaюынa әкeлeдi. Индeкcтep клacтың бapлық түpiнe жәнe бөлiктepiнeapнaлып, құpacтыpылaды. Мыcaлы: Book клacын aapнaлғaн индeкcтep Reader Book.Student жәнe Book бөлшeкeтepiнeн тұpaды. Teacher cтудeнттep мeн oқытушылapғaapнaлғaн. Кepiciншe Book Student индeкcтep тeк қaнacтудeнттepгeapнaлғaн.

Индeкcтep клacтың бip нeмece бipнeшe түpiнe нeгiздeлiп, туындaйды. Ocы уaқыттacopттaу пpинциптepiн aнықтaй aлaмыз:

EXACT – түpлeнуciз.

UPPER – бac әpiптepгe түpлeнумeн.

ALPHAUP – жaзу әpiптepiмeн түpлeну жәнe бapлық тыныc бeлгiлepiн жoю.

SPACE – caндapғa дaapнaлғaн aлфaвиттiк copттaу.

PLUS – тapaмдapғa дaapнaлғaн aлфaвиттiк copттaу.

MINUS – кepicaнaулы copттaу.

Индeкcтepдe қacиeттepiнeн бacқacopттaу жүpгiзугe бoлaды, Дepeктep aлaңынaн бacқa дacopттaу жүpгiзiлeдi. Ocығaн бaйлaныcты нәтижeгe тeз қoл жeткiзугe бoлaды.

Индeкcтiң нeгiзгi қызмeтi қaтынacтың кopтeжiнe кiлт бoйыншa тiкeлeй қaтынaудың тиiмдiлiгiн қaмтaмacыз eту. Көбiнece индeкc бip ғaнa қaтынacтaaнықтaлaды.Кiлт peтiндeaтpибуттың мәнi қoлдaнылaды(кeйдe құpaмa.) Eгep индeкc кiлтi қaтынacтыi кiлтi бoлca, oндa индeкcтiң қaйтaлaнбac қacиeтi бoлaды, яғни кiлттiң дубликaты бoлмaйды.Тiлдiк дeңгeйдe көптeгeн(SQL) oпepaциялapды opындaу бapыcындa қaтынacтapды кeйбipaтpибуттapдың мәнiнecәйкeccopттaу бoлғaндықтaн индeкcтiң мaңызды қacиeтi бoлып кiлттiң мәнiнiң өcу нeмece кeму peтi бoйыншa кiлт мәндepiнiң диaпaзoнындa қaтынacтың кopтeждepiн тiзбeктi түpдe қapacтыpуды қaмтaмacыз eту бoлып тaбылaды.Кeз-кeлгeн индeкcтa ұйымдacтыpудың жaлпы идeяcы –aз кiлттepдiң мәндepiнiң peттeлгeн тiзiмiн caқтaу. Мұндa кiлттiң әp мәнiнe кopтeждepдiң идeнтификaтopлapының тiзiмi бaйлaныcтыpылaды. Индeкcтiң ұйымдacтыpылуының бacқa ұйымдacтыpудaн aйыpмaшылығы бepiлгeн мән бoйыншa кiлттiiздeу тәciлiндe.

Индeкcтi ұйымдacтыpу түpлepi. В -бұтaқ жәнexэштeу.

Peляциялық ДҚ –дaғы индeкcтepдi ұйымдacтыpудың кeң тapaғaн әдic. В бұтaқтың cыpтқы лoгикaлық бeйнeлeнуi бұл cыpтқы жaдыдaғы бaлaнcтaлғaн, aca қaтты тapтылғaн бұтaқ.Мұндaғы бұтaқтың тaмыpының кeз-кeлгeн жaпыpaғынa жoл бipдeй.Бұтaқтың көп тapмaқтылығы бұл бұтaқтың әp түйiнiaca көп түйiн ұpпaқтapғaciлтeмe жacaу қacиeтi ,aл физикaлық (нaқты) ұйымдacтыpылуы oл cыpтқы жaдыдa бeттepдiң мульти тiзiмдiк құpылымы бoлып тaбылaды. Яғни бұтaқтың әp түйiнiнecыpтқы жaдыдa блoк(бeт) cәйкec кeлeдi. Iшкi жәнe жaпыpaқтың, бeттepдiң құpылымы әp түpлi бoлaды. Iшкi бeттiң құpылымы:

N1 кiлт (3) 1 N2 кiлтт2… Nn кiлт n/ N(n+1) кiлт (n+1)

Мұндaғы кiлт 1 ≤кiлт 2≤ кiлт n Яғни кiлттepлiң мәндepi өcу peтiмeн бoлып жaтыp дeгeндi бiлдipeдi. 2)бұтaқтың Nm  бeтiндeгi кiлтiндeгi мәнi кiлт(m) ≤k≤кiлт(m+1) жaпыpaқ opнaлacқaн бeттiң құpылымы. Кiлт(1) ln(1) кiлт (2) ln(2) … кiлт (k) ln(k) Жaпыpaқ бeттiң қacиeтi: Кiлт(1) <кiлт (2)< … <кiлт (k)

Индекстеу (indexing) – бұл бағандардың мәндеріне бағандардың комбинацияларына жылдам қатынауды қамтамасыз ету тәсілі. Іс жүзінде жаңа жолдар кестенің соңына орналасады, соның нәтижесінде бағандардағы мәндердің орналасуы ретсіз болады. Ешқандай реттеу әдістерін қолданбай ДББЖ жағынан бағандардың мәндерін қараудың жалғыз тәсілі – әр жолды кестенің басынан бастап біртіндеп аяғына дейін қарап шығу, мұны кестені сканерлеу деп атайды. Мұндай сканерлеудің өнімділігі кесте көлеміне, деректер базасының физикалық беттеріне, жолдың ұзындығына пропорционал болады. Сондықтан кестедегі жолдардың табиғи орналасуын бұзбай бағандардың мәндеріне реттеу қатынасын енгізудің бір тәсілі – ол реляциялық ДББЖ объектісін, яғни индексті құру.

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

Орналастыру кестесі келесі параметрлердің кез келгенін қамтиды:

· Оқиға Кесіп алу басын қадағалайды. Кесіп алу оларды орналастыруды бастауға болатындай жазбаларды жабу дегенді білдіреді. Кесіп алу ескі жазбалардың белсенді қолданысын аяқтайды.

· Кесіп алу әрекеті Кесіп алу іске қосылғаннан және көрсетілген өшіру уақыты өткізілгеннен кейін жазбаларда әрекет автоматты түрде орындалады.

· Ауытқу Кесіп алуды бастау және кесіп алуды іске қосу әрекеті арасындағы уақыт бөлігі.

· Тастау кезеңдері Көрсетілген уақыт мерзімі үшін нақты күйде жазбаларды сақтауды басқару үшін анықталатын кезеңдер.

· Кезеңді орналастыру нұсқаулары/әрекеті Кезеңді сақтау мерзімі аяқталғанда қажет әрекетті қолмен бастау қажет. Әрбір кезеңде байланыстырылған орналастыру әрекеті болады. Кезең орналастыру әрекеттері сараптау не жою мүмкіндігіне ие.

· Орналастыру жұмыс үрдістері Әрбір орналастыру әрекетінде байланыстырылған жұмыс үрдісі болады. Әрекет басталғанда, жүйе жазбалардағы нұсқаулардың алдын ала анықталған жинағын орындау үшін байланыстырылған жұмыс үрдісін іске қосады.

Орналастыру кестесін жазба санатымен не жазба қалтасымен байланыстыруға болады. Жазба қалтасында өзінің орналастыру кестесі болуы мүмкін немесе ол тектік жазба санатымен байланыстырылған орналастыру кестесін мұраға бере алады.

Әдепкі бойынша, жазба жарияланатын қалтаның орналастыру кестесін мұраға береді. Жазба тікелей жазба санатының астынан жасалғанда жазба, жазба санатының орналастыру кестесін мұраға алады.

Жалпы ең төменгі деңгейдегі орналастыру кестесі қол жетімді болады. Келесі диаграмма әртүрлі жағдайларда әртүрлі жазбалар арқылы жоспарланатын орналастыру мұраға алуды шығарып алады:

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

Өкілеттілік берілген пайдаланушылар орналастыруды бастай алады. Records Manager бағдарламасынан бекітуді алғаннан кейін, жүйе бекітілген жазбаларда байланыстырылған орналастыру әрекеттерін орындайды.

Орналастыру механизмі h орналастыру функциясы, орналстыру кестесі және берілгендер кестесінен тұрады. Орналастыру кестесі n элементтен тұрады, мұнда n – алдын-ала белгілі. Әрбір элемент кестеде екі өріске ие: атау өрісі және көрсеткіш өрісі. Басында кестедегі барлық элементтер бос деп есептелінеді. Егер алдын α объекті кездескен болса, орналастыру кестесінің қайсыбір әдетте h(α) ұяшығында, атау өрісінде α бар болады (немесе, α сақтаулы тұрған атаулар кестесінің ұяшығына көрсеткіш) және көрсеткіш өрісінде α-ға қатысты мәліметтер сақталынған жады бөлігіне көрсеткіш бар болады. бар болады.

Берілгендер кестесі физикалық тұрғыдан орналастыру кестесімен сәйкес түсуі мүмкін. Мысалы егер әрбір объект үшін k сөзден тұратын мәлімет керек болса, онда kn –өлшемді орналастыру кестесін пайдалануға болады. Орналастыру кестесінде сақталынған әрбір объект k сөздер тізбегінің бір бөлігін иелейтін болар еді. Орналастыру кестесіндегі α объектіне сәйкес келетін ұяшықты α үшін орналастыру адресі h(α)-ны k-ға көбейтіп табу оңай және алынған адресті α-ға қатысты сөздер тізбегінің бірінші ұяшығы ретінде аламыз.

h орналастыру функциясы – бұл h0, h1,..., hmфункциялар тізбегі. Бұлардың әрқайсысы {0,1,…,n-1} бүтін сандар жиынындағы объекттер жиынтығын бейнелейді: h0функциясын орналастырудыңбастапқы функциясыдеп аталады. Жаңа α объекті кездескенде, h(α)-ны есептеу үшін келесі алгоритмді қолдануға болады. Егеробъект алдын кездескен болса, онда h(α) – орналастыру кестесіндегі α сақталынған ұяшық. Егер α объекті алдын кездеспеген болса, онда h(α) - α-ны сақтап қоюға болатын бос ұяшық.

№ 25 БИЛЕТ

1. Қайтару алгоритмдері

Әдістің негізгі идеясы, ол шешімді дәйекті құрып, Е(ұзындық 0) бос реттіліктен бастап жүзеге асады. Бұл шешімнің жартылай шешімі бар ,,(x1, x2, ...,xi), біз xi+1  нәтижені табуды іздейміз. Бұл тұжырымнан (x1, x2, ...,xi+1) үлкейтуге болмайтының анықтап, шешім қабылдауға болады. Себебі (x1, x2, ...,xi+1) тұжырымы жауап болады. Егер бұндай тұжырым бар болса , бірақ қолданылмаған xi+1 жауабы бар. Онда оны (x1, x2, ...,xi+1). жартылай жауабымызға қосып үдерісті тізбектілік үшін жалғастырамыз.Бірақ бұл алгортим жауаппен сәйкес болмай жатса, онда біз (x1, x2, ...,xi-1) жартылай шешімімізге келіп, жаңа және қолданылмаған xi' ықтимал жауаптарды іздеп, үдерісті жалғастырамыз. Сондықтан бұны қайтару алгоритмі деп атаймыз.(ағылшынша . Backtracking)

Қайтару алгоритмдерінің жалпы схемасы

- Біз іздейтін шешім <X (1), ..., X (n)> жалғасты түрінде болсын

- Біз оны ұзындығын 0 бос жолынан бастаймыз

- Бір кезеңде ұзындығының жартылай (толық емес) шешімі құрылған болсын i: <X(1), …, X(i) >.

- Біз бұл шешімнің тағыда бір қадаммен жалғастыруға тырысамыз

- Ол үшін мүмкін болатын X(i+1). X(i+1) табу қажет, егер < X(1), …, X(i+1) > шешімі болатын болса, немесе <X (1), ..., X (i + 1) қатысты болсақ, оны толық шешімге дейін жеткізу мүмкін емес екенін бірден айта алмаймыз.

Әрі қарай екі мүмкіндік бар:

· Егер X(i+1) рұқсат етілген болса, онда келесі Х-тің мүмкін болатын мәнін <X(1), …, X(i+1)> ішінара шешуге ұмтылады.

· егер рұқсат етілмеген X (i + 1) болмаса, онда біз бір қадамды <X(1), …, X(i-1) > ішінара шешіміне ораламыз және сол үшін бұрынғыға X (i) сәйкес келмейтін тағы бір X’[i] іздейміз

Енді қайтару алгоритмінің жалпы схемасы мынадай формаға ие:

1.begin

2.k:= 1;

3.while k>0 do

4.if существует еще новый y Î A(k),
являющийся допустимым then

5.begin

6. X[k]:= y; {y использован}

7. if <X[1],…,X[k]> является решением then
write (<X[1],…,X[k]>);

8. k:= k+1

9 .end

10. else {возврат на предыдущее частичное решение,
все элементы A(k) становятся
неиспользоваными}

11. k:= k-1

12. end.

2. ДҚқорғау. ДҚБЖақпараттыққауіпсіздікәдістері. Аутентификация. ДҚБЖқолжетімділіктібасқару. Деректерқорыартықшылықтарыныңдеңгейлері

Аутентификация.

Аутентификация (Authentication) дегеніміз пайдаланушының, процесс немесе құрылғының шын екендігін тексереді. Мұндай тексеру пайдаланушының (процестің немес құрылғының) шын мәнінде өзі екендігін сенімді түрде көз жеткізеді. Тексеру кезінде пайдаланушы да ақпарат алмасуға қатысады. Пайдаланушы өзінің идентификаторының шын екендігін дәлелдейді. Ол үшін парольді немесе сертификатты енгізеді.

ДБ- мен жұмыс кезінде деректер қауіпсіздігінің жоғары деңгейі қолданушының жұмысын жұмысын қиындатпайтындай болып қамтамасыз етілуі керек. Кез- келген өндірістік ДҚБЖ- нің ажырамас бөлігі- деректерге қатынау деңгейінде ақпараттың қорғалуын қамтамасыз ету. Oracle-де қабылданған қатынау қауіпсіздігін қамтамасыз ету концепсиясы: қолданушыларды идентификациялау және аутентификациялау. ДБ-дағы оның объектілерінің қолжетімдігін анықтайтын кең ауқымды әрекеттерді бақылау. ДБ- ның объектілеріне қатынауды бақылау. ДБ- ның объектілеріне жасалатын операцияларды бақылау. Қолданушы- ДБ-ның объектісі. ДБ- ның қолданушсын жасағанда міндетті түрде оның аты көрсетіледі. Қолданушы жасауды қолданушыны аутентификациялау деп те атайды. Деректер базасының серверінің жұмысын басқарар алдында әр қолданушы өз есімімен идентификациялайды, ал аутентификациялау үшін пароль қолданады.

ДҚБЖ қатынауды басқару.

Көбінесе ДҚБЖ-да қалауы бойынша қатынау, яғни қатынауды еркін басқару қолданылады. Бұл базаның иесі осындай құқық привилегия бергенде болды. Привелегиялар жеке топқа, қолданушыларға, рольге, тіпті барлық қолданушыларға берілуі мүмкін.

Топ- ортақ аты бар қолданушылардың жиынтығы. Бір қолданушы бірнеше топтарға кіруі мүмкін.

Роль- атауы бар привилегияны алып жүруші. Деректер базасымен жұмыс барысында рольдердің парольдерін енгізеді. Рольдің привилегиясы топ пен қолданушының привилегиясынан жоғары.

ДҚБЖ-ның привилегиясы екі категорияға бөлінеді:

1. қауіпсіздік

2. қатынау

Қауіпсіздік привилегиясы әкімшілік әрекеттер жасайды. Тек бір қолданушыға беріледі. Бес түрі бар:

1. Security- ДҚБЖ қауіпсізжігін басқару және қолданушы әрекеттерін қадағалау құқығы. Бұндай привилегиясы бар қолданушы кез келген деректер базасына қосыла алады, қолданушылардың, топтардың, рольдердің сипаттамаларын жасау,өзгерту, жою бар.

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

2. Createdb- деректер базасын құру және жою құқығы. Деректер базаның серверінің әкімшісі және жекелеген деректер базасының администраторына беріледі.

3. Operator- операторлардың құзырындағы әрекеттерді орындайды. Яғни серверлерді қосу, тоқтату, ақпаратты сақтау, қалпына келтіру. Привелегия ДҚ администраторына және операциялық жүйенің администрпторына беріледі.

4. Maintain_location- ДҚ мен ОЖ- ның орындалуын басөаруға құқық.

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

Қатынау привилегиясы субъектілердің жеке объектілерге қатынау құқығы. Ол жеке қолданушыға, топтарға, деректер базасының администраторына және security привилегиясы бар деректер базасының сервер администраторына беріледі.

Топтар мен рольдерге қатынау привилегиясын бермес бұрын, алдын ала оларды жасау керек. Ол үшін субъектілер мен олардың привилегиясы тұратын деректер сақталынған. Iidbdb деректер базасына қосылу керек.

Деректер қорын қорғау. Деректер қорларының маңыздылығының (привилегия) деңгейлері.

Ақпараттық жүйелердің қауіпсіздігі жөнінде негізгі стандарттар 1983(АҚШ) шыққан. “Оранжевая книга” деп аталатын “Критерий, оценки надежных компьютернх систем” кітабында негізі қаланған. Осы кітаптың талабына сәйкес мынадай жүйе қауіпсіз деп саналады: ақпаратқа қол жетіді бақылайтын қауіпсіздікті сақтау механизмдері арқылы арнаулы өкілеттілігі бар тұлғалар немесе олардың атынан орыдалатын процесстер ғана информацияны оқуға, жазуға, құруға, жоюға мүмкіндік беретін жүйе. Бұл кітата қауіпсіздікті сақтау деңгейлері көрсетілген: А- ең жоғары, Д- ең төмен деңгей (А, В, С, Д). Д класына басқа кластардың талабына жатпайтын барлық кластар жатады (А, В, С).

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

С1- деректерді қолданушының қателерінен сақтайды (қаскүнемдерден сақтай алмайды).

С2- құпия кіру құралы бар, ол арнаулы қайталанбас (уникальный) есім және пароль арқылы қолданушыларды айқындап, жүйеге кіруге рұқсат береді.

Қатынауды іріетеу түрде бақылау С деңгейінде рұқсаттың иесіне, кім ресурсқа еіре алады және ол онымен не істей алатыны туралы анықтауға мүмкіндік береді. Ресурстың иесі оны қолданушыға берілген немесе топқа берілген қатынау құқықтары арқылы іске асады.

Есепке алу және қадағалау құралдары жүйелік ресурстарға қол жеткізу, жасау және жоюға байланысты түолі әрекеттерді немесе қауіпсіздікке байланысты түрлі оқиғаларда анықтап, оны есепке алады. Жадыны қорғау барысында жады қайталап қолданудың алдында инициализацияланады. Бұл деңгейде жүйеде қолданушының қателерінен қорғаныс жоқ, бірақ олардың әрекеттері аудит құралдры арқылыжазылған журналмен бақыланады.

В деңгейі. Белгіліленген деректерге және қолданушылврды категорияларға бөлу үшін негізделген, яғни қатынауды мандатты бақылау іске асады мандатный контроль доступа. Әр қолданушыға қорғаныс рейтингі беріледі. Осы рейтенкке сәйкес деректер базасына қатыный алады. Бұл деңгейде жүйе қолданушының қателерінен қорғана алады (Ұлттық Қауіпсіздік Комитетінде қолданылады).

А деңгейі ең жоғарғы деңгей. Мұнда В деңгейінің барлық талаптарына қосымша жүйенің қауіпсіздігін сақтауды қамтамасыз ететін формаларды математикалық негізделген дәлелдеулердің орындалуын талап етеді. Бұл деңгей ядролық құралдарды басқару жүйелерінде қолданады.ДҚБЖ-ның привилегиясы екі категорияға бөлінеді:

3. қауіпсіздік

4. қатынау

Қауіпсіздік привилегиясы әкімшілік әрекеттер жасайды. Тек бір қолданушыға беріледі. Бес түрі бар:

6. Security- ДҚБЖ қауіпсізжігін басқару және қолданушы әрекеттерін қадағалау құқығы. Бұндай привилегиясы бар қолданушы кез келген деректер базасына қосыла алады, қолданушылардың, топтардың, рольдердің сипаттамаларын жасау,өзгерту, жою бар.

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

7. Createdb- деректер базасын құру және жою құқығы. Деректер базаның серверінің әкімшісі және жекелеген деректер базасының администраторына беріледі.

8. Operator- операторлардың құзырындағы әрекеттерді орындайды. Яғни серверлерді қосу, тоқтату, ақпаратты сақтау, қалпына келтіру. Привелегия ДҚ администраторына және операциялық жүйенің администрпторына беріледі.

9. Maintain_location- ДҚ мен ОЖ- ның орындалуын басөаруға құқық.

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

Қатынау привилегиясы субъектілердің жеке объектілерге қатынау құқығы. Ол жеке қолданушыға, топтарға, деректер базасының администраторына және security привилегиясы бар деректер базасының сервер администраторына беріледі.Топтар мен рольдерге қатынау привилегиясын бермес бұрын, алдын ала оларды жасау керек. Ол үшін субъектілер мен олардың привилегиясы тұратын деректер сақталынған. Iidbdb деректер базасына қосылу керек.

Объектілерге байланысты қатынау привилегиясы 5-ке бөлінеді:

6. кестелер және көріністер

7. процедуралар

8. деректер базасы

9. деректер базасының сервері

10. оқиғалар

Кестелер мен көріністер мынадай қатынау құқықтары арқылы басқарылады:

Select- деректерді алу (таңдау)

Insert- деректерді қосуға құқық

Delete- деректерді жоюға құқық

Update- деректерді жаңалауға құқық.

 

3.Ағаш түріндегі кестелер. Блоктық құрылымды жүзеге асыру

Ағаш – бұл түйіндерден тұратын және белгілі бағыттар бойынша қабырғаларын қосатын деректер құрылымы. Түбір – бұл ағаштың бастапқы түйіні. Жапырақ – бұл бір доға да тоғысатын түйін. Ағаштар солдан оңға қарай төменнен жоғары қарай оқылады.

Ағаштар көмегімен бағыныштылық қатынас ұйымдастырылады(иерархия, «үлкен– кіші», «ата-ана – бала»). Ағаштың биіктігі – бұл түбірінен жапыраққа дейін (доғалар саны) ең үлкен арақашықтық. Ағаш – рекурсиялық құрылымдар. Рекурсия: 1. Бос құрылым – бұл ағаш. 2. Ағаш – бұл түбір және онымен байланыскан бірнеше ағаштар. Екілік (бинарлы) ағаш – бұл әр бұтақтың екі тарамнан артық емес түйіні бар ағаш. 1. Бос құрылым– бұл екілік ағаш. 2. Екілік ағаш– бұл түбір және онымен байланысқан екі екілік ағаш (сол және оң ағаштар). Екілік ағаштар

Қолданылуы: 1) Арнайы құрылған ағаштардан деректерді іздеу (деректер базасы);

2) Деректерді сұрыптау;

3) Арифметикалық теңдеулерді шығару;

4) кодтау (Хоффман әдісі).

Ағаштың индексі мен төбелеріндегі мәні негізінде кестелер құрылады. Кестелер орналастыру функциясының көмегімен құрылса әр кесте үшін өзінің орналастыру кестесі құрылады.

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

 

№ 26 БИЛЕТ

  1. Программалаудың фундаменталды әдістері.

Модульдік программалау дегеніміз – программаны логикалық бөліктерге бөлу процесі. Программа бірнеше модульдерге бөлінеді және мына 2 мақсат орындалуы тиіс:

· модулдің дұрыс болуы және оның контекстерден тәуелсіз болуы қажет;

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

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

Pascal тілінде модуль процедуралар мен функциялардың көмегімен құрылады, Cи тілінде функциялардың көмегімен құрылады.

Құрылымдық кодтау деп программада басқарушы конструкциялардың–шартты операторлардың, циклдің (параметрлі, цикл-әзір, цикл-дейін) қолданылуын айтады. Шартсыз көшу операторы программада сирек қолданылуы керек немесе шартты оператордың, циклдің көмегімен өзгертілуі керек.

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

Объекті-бағытталған программалау                                                   

Объекті-бағытталған программалау тілдерінің негізгі концепциясы– құрылатын қосымша өзара байланысқан негізгі объектілерден тұрады. Объекті-бағытталған технологияда қолданушы үш базалық элементпен: объектілер, хабар және класстармен жұмыс істейді.

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

Объектілердің өзара байланысуына хабарлар қолданылады және үш бөлімнен тұрады: объект идентификаторы, ағымдағы объектіде қолданылатын әдіс аттары және таңдалған әдіс режимін қалпына келтіретін қосымша информациялар. Күрделі программалар бірнеше біртипті объектілерді қолдануы мүмкін. Бұл жағдайда әр объект үшін әдістер мен айнымалылар туралы информацияны жазу тиімсіз. Бұл мақсатқа объектілер класы деген түсінік енгізілген. Класс дегеніміз біртипті объектілерге арналған шаблон және объектілі айнымалылар типтері мен әдістерін анықтайтын информациялардан тұрады.

Объекті-бағытталған технологияға негізделген программалау тілдері: SmallTalk/v, Object Pascal, ACT++, C++, Simula, Actor, Classic–Aga және т.б.

Объекті-бағытталған программалаудың негізгі үш принципі бар: инкапсуляция, тұқымқуалау, полиморфизм.

Логикалық программалау

Логикалық программалау тілдері PROLOG және LISP жасанды интеллект проблемаларының есептерін шешуге арналған. LISP тілін 50-інші жылы Д.Макартни символдық информацияларды өңдеуге арнап құрды. LISP тілінің мәліменттерінің негізгі құрылымы тізімдер, тізімнің элементтері атомдар. Lisp тілінің бір ерекшелігі динамикалық жаңа объектілерді құру мүмкіндігі, объект есебінде программаның өзі де қатыса алады.

LISP тілі және оның модификациялары символды өңдеуге арналған бағытталған программалық бөлімді құруға кең қолданады және қазіргі кезде көптеген тиімді компиляторлары бар.

70-жылдары Lisp тілінің негізінде құрылған Prolog тілі логикалық программалау тілі болып табылады. Prolog программасының негізгі элементі атом болып табылады және жеке объектілер арасындағы қарапайым қатынастарды көрсетеді, басқа программалау тілдеріне қарағанда атом түсінігінің мағыналық мәні басқа. Тіл тек сипаттамадан тұрады және инструкциялары жоқ, яғни процедуралы емес. Әр Prolog программа сөйлемдер жиынынан тұрады, яғни жәй тұжырымдар немесе импликациялар. Prolog тілінің базасында эксперттік жүйелер, білімді көрсететін жүйелер, білім базасы және жаратылыс тілдерін өңдейтін жүйелер құрылады. Prolog тілінің негізіне математикалық логика элементтері қолданылады. Программа объектілер арасындағы қатынас терминдері арқылы сипатталады. Логикалық программалау тілдерінің жетістігі параллель программалау принципі қолданылады. Prolog тілінің көптеген танымал модификациялары бар, оның ішінде ең көп тарағаны – Borland фирмасының Turbo Prolog программалау жүйесі. Жасанды интеллект проблемасына арналған жаңа логикалық және функционалды программалау тілдері құрылуда, мысалы, DURAL, VALID тілдері.

 

  1. Деректер базасының сақталуы және тұтастығы. ДББЖ – төнетін қатер түрлері.

Деректер қорының сақталуы және толықтығы (бүтіндігі).

Деректердің бүтіндігін сақтаудың негізгі құралы – ережелер мен шектеулер.

Шектеулер (операциялық мәндерге, мәндер бойынша ресурстарға) жеке кестелерге де, бағандарға да болуы мүмкін. Бағандарға шектеулер кестені құрған кезде беріледі. Сілтемелік шектеулер (ссылочные ограничения) - кестелер арасындағы бүтіндікке жауап береді. Мұндай шектеу нені білдіреді: бір кестенің бағананың әр мәніне немесе бағананың тобына басқа кестенің тек 1 ғана мәні сәйкес келеді. ДҚ-ның иесі шектеулердің барлық түрін беріп, алып тастай алады. SQL операциялар орындалып болған соң шектеулер тексеріледі. Егер ДҚБЖ-да шектеулер бұзылған жағдайда дұрыс аяқталмағаны туралы сигнал беріледі, енгізілген барлық өзгерістер жоққа шығарылады. Шектеулер арасында өзара тәуелділік бар. Біреуін алып тастасақ, ол осыған тәуелді басқа шетеуді де жоюды талап етеді.

Ережелер – ДҚ-ның белгілі бір өзгерістер кезінде берілген әрекеттерді орындаттырады. Жай әрекет бұл процедураның шақырылуы. Ережелер кестелерге байланысты. Кестелер өзгерген кезде іске қосылады. Шектеулер қарапайым шарттарды ғана тексерсе, ереже базадағы деректер арасындағы күрделі қатынастарды да тексере алады. Көшірме жасау кезінде шектеу де, ереже де тексерілмейді. Кесте жойылған кезде, оған сәйкес келетін ереже де автоматты түрде жойылады. Сол арқылы ережелер мен кестенің бүтіндігі сақталады. Ереже қолданушының привилегиясын кеңейтеді (неявно).

ДҚБЖ-не төтетін қатерлер.

Ақпараттық жүйелердің қауіпсіздігі жөнінде негізгі стандарттар 1983(АҚШ) шыққан. “Оранжевая книга” деп аталатын “Критерий, оценки надежных компьютернх систем” кітабында негізі қаланған. Осы кітаптың талабына сәйкес мынадай жүйе қауіпсіз деп саналады: ақпаратқа қол жетіді бақылайтын қауіпсіздікті сақтау механизмдері арқылы арнаулы өкілеттілігі бар тұлғалар немесе олардың атынан орыдалатын процесстер ғана информацияны оқуға, жазуға, құруға, жоюға мүмкіндік беретін жүйе. Бұл кітата қауіпсіздікті сақтау деңгейлері көрсетілген: А- ең жоғары, Д- ең төмен деңгей (А, В, С, Д).

Қатерлер: көбінесе қолданушылардан қауіп көп келеді, сонымен қатар дб дұрыс жоспарланбаса, құрылмаса, әкімшілік ісіне салақ қараса ДҚБЖ катер өтеді.

ДББЖ – көптеген пайдаланушылардың деректер базасын құру, жүргізу және бірге пайдалану үшін арналған тілдік және бағдарламалық құралдардың кешені.

Деректердің тұтастығы (целостность)Access деректер басқару жүйесінде байланыстырылғанкестелердегі жазбалар арасындағы байланыстарды қолдау үшін қолданылатын ережелер жүйесін білдіреді. Деректердің тұтастығын бақылау үшін мына шарттар орындалу керек:

- Бір кестенің байланысқан өрісі кілттік өріс болады немесе қайталанбас дара индекс болады.

- Байланысқан өрістердің деректерінің типтері бірдей болады. Ескерту: Алайда, Санауыш (Счетчик) өрісі сандық өрісімен байланыса алады, егер сандық өрістің типі ұзын бүтін (длинное целое) болса.

- Байланыстырылатын кестелер Access-тің бір деректер қорында болуы тиіс

 

3.Жадты ұйымдастыру. Статикалық және динамикалық жады

Жады – мультипрограммалы операциялық жүйе тарапынан мұқият қадағалауды талап ететін маңызды ресурстардың бірі. Жадының маңызды рөлі былай түсіндіріледі: процессор программаның нұсқауларын тек олар жадыда орналасқан жағдайда ғана орындай алады. Жады қолданбалы программалар модульдері арасында бөлінетіні сияқты, операциялық жүйенің өз модульдері арасында да бөлінеді.

Жадты беттік ұйымдастыру жағдайында орналастыру стратегиясы жадтың барлық бөліктерінің өлшемдері бірдей болғандықтан тривиальді түрде іске асырылады. Жадты сегменттік ұйымдастыру жағдайында екі тәсіл ерекшеленеді.

  • Бос жад тізімін жасау. Тізімді адрестердің немесе фрагменттер өлшемдерінің өсу реті бойынша ұйымдастыруға болады. Тізім жасаудің белгілі стратегиясы – 2-ң қайсыбір дәрежесі өлшеміндегі блоктар жағдайындағы егіздер әдісі болып табылады.
  • Жадты нығыздау болып табылатын қоқысты құрастыру. Қоқысты құрастырудың кері әсері жеткілікті, мысалы, оның көзінше ағымдық тапсырмаларды тоқтатып қоюға тура келеді

 

Статикалық жад (Статическая память; static random access memory, SRAM) — ақпаратгы (қоректендіру кернеуі болып тұрса) ұзақ уақыт сақтауға мүмкіндігі бар жад. Статикалық жад ұяшықтары триперлер негізінде жүзеге асырылады. Динамикалық жадқа қарағанда бұл ұяшықтар күрделі және кристалла көбірек орын алады. Бірақ оларды басқару жеңіл және қайта-қайта жаңартудың қажетгігі жоқ. SRAM жадына қатынас құру уақыты 15-25 не (ал DRAM жадына 60-100 не). Егер де SRAM жады жедел жад ретінде пайдаланылса, онда есептеу машиналарының шапшаңдығы жоғары болады және оның құны да өзгереді. Себебі, SRAM бағасы DRAM микросхемасынан әлдекайда қымбат. Сондықтан SRAM элементгері тек арнайы міндетгер орыңдау үшін (бүркеме-жад, BIOS параметрлерінің жады және т.б.) қолданылады. Сақталатын мәліметтер жоғалмау үшін микросхема аккумулятордан қоректеніп түруы керек. Статикалық жадтың түрлері — Async SRAM, Sync Burst SRAM, Pipelined Burst SRAM.[1]

ДИНАМИКАЛЫҚ ЖАД (Дина-мическая память; dynamic Random Access Memory, DRAM) — бұл жадтың сақтау ұяшықтары жартылай өткізгіштік микросхема элементт.ерінен құрастырылған конденсаторлар ретінде жасалған. Логикалық «1(> — қонденсатордың зарядталған, ал «0(> — зарядталмаган қалып-күйіне сойкес келеді. Тексергіш схема оқу операциясын орындаған кезде бүл конденсаторды өзінің үсті арқылы разряд жасайды: егер конденсатор зарядталған болса, онда тексеру схемасының шығысында «1)( мәні көрсетіледі. Уақыт өткен сайын (егер ұяшыққа қатынас құру болмаса), конденсатор разрядталады да, ондағы ақпарат жойылады. Сондықтан бұндай жад конденсаторларды түрақты зарядтап түруды қажет етеді. Динамикалық жадтардың түрлері: MDRAM, FPM, VRAM, EDO, BEDO, SpRAM, SGRAM, WRAM, RDRAM жөне т.б.

 

№ 27 БИЛЕТ 

 

1. Программа құрудың технологиясы және оны іске асыру

Программалау технологиялары

Программалау процесін жақсартатын және кең қолданылатын әдістердің бірі – құрылымдық программалау. Құрылымдық программалаудың 3 бөлігі (құраушысы) бар:

1.Модульдік программалау

2.Құрылымдық кодтау

3.Жоғарыдан төменге қарай жобалау

Модульдік программалау дегеніміз – программаны логикалық бөліктерге бөлу процесі. Программа бірнеше модульдерге бөлінеді және мына 2 мақсат орындалуы тиіс:

1)модулдің дұрыс болуы және оның контекстерден тәуелсіз болуы қажет;

2)модулдің ішкі жұмыстарын білмей тұра әр түрлі модулдерден программа құру мүмкіндігінің болуы қажет.

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

Pascal тілінде модуль процедуралар мен функциялардың көмегімен құрылады, Cи тілінде функциялардың көмегімен құрылады.

Құрылымдық кодтау деп программада басқарушы конструкциялардың–шартты операторлардың, циклдің (параметрлі, цикл-әзір, цикл-дейін) қолданылуын айтады. Шартсыз көшу операторы программада сирек қолданылуы керек немесе шартты оператордың, циклдің көмегімен өзгертілуі керек.

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

Объекті-бағытталған программалау

Объекті-бағытталған программалау тілдерінің негізгі концепциясы– құрылатын қосымша өзара байланысқан негізгі объектілерден тұрады. Объекті-бағытталған технологияда қолданушы үш базалық элементпен: объектілер, хабар және класстармен жұмыс істейді.

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

Объектілердің өзара байланысуына хабарлар қолданылады және үш бөлімнен тұрады: объект идентификаторы, ағымдағы объектіде қолданылатын әдіс аттары және таңдалған әдіс режимін қалпына келтіретін қосымша информациялар. Күрделі программалар бірнеше біртипті объектілерді қолдануы мүмкін. Бұл жағдайда әр объект үшін әдістер мен айнымалылар туралы информацияны жазу тиімсіз. Бұл мақсатқа объектілер класы деген түсінік енгізілген. Класс дегеніміз біртипті объектілерге арналған шаблон және объектілі айнымалылар типтері мен әдістерін анықтайтын информациялардан тұрады.

Объекті-бағытталған технологияға негізделген программалау тілдері: SmallTalk/v, Object Pascal, ACT++, C++, Simula, Actor, Classic–Aga және т.б.

Объекті-бағытталған программалаудың негізгі үш принципі бар: инкапсуляция, тұқымқуалау, полиморфизм.

Логикалық программалау

Логикалық программалау тілдері PROLOG және LISP жасанды интеллект проблемаларының есептерін шешуге арналған. LISP тілін 50-інші жылы Д.Макартни символдық информацияларды өңдеуге арнап құрды. LISP тілінің мәліменттерінің негізгі құрылымы тізімдер, тізімнің элементтері атомдар. Lisp тілінің бір ерекшелігі динамикалық жаңа объектілерді құру мүмкіндігі, объект есебінде программаның өзі де қатыса алады.

LISP тілі және оның модификациялары символды өңдеуге арналған бағытталған программалық бөлімді құруға кең қолданады және қазіргі кезде көптеген тиімді компиляторлары бар.

 

 

2. Транзакцияларды басқару, транзакцияларды сериализациялау. ДҚ өзгерістерді журналға енгізу

 

Бір уақытта бірнеше қолданушылар бір деректер базасымен жұмыс істейтін кездер болады. Сондай кезде бір қолданушы мәліметтергше өзгеріс енгізген жағдайда, басқа қолданышуларда кейбір әрекеттер дұрыс жұмыс жасамауы мүмкін. Мұндай қиындықтар тумас үшін SQL Server транзакция және құлыптау механизмі түсініктерін енгізді. 

Транзакция – бұл Transact-SQL командасының реттелген жиынтығы. Бүтіндей орындалатын қисынды аяқталу блогы. Транзакцияда командалар саны шектелмеген және ол әрі қарай жұмыс істей береді. Тек транзакцияны итергенде ғана орындалмайды. Мұндай жағдайда жүйе қалпына келтіріліп барып, басынан бастап жұмыс жасалады. Жүйенің алғашқы қалпы туралы мәлімет транзакцияның журналында сақталған. Транзакцияға қосылған командалар жиыны келесі міндетті қанағаттандыру қажет:

1) атомарность – транзакцияға қосылған командалар блогы тек тұтастай ғана орындалады немесе орындалмайды;

2) келісім – транзакция орындалып болғаннан кейін, барлық мәліметтер келісім қалпында болу керек;

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

4) Тұрақтылық - транзакция аяқталғаннан кейін, жүйеде сақталынады және оны қайтадан қалыпқа келтіре алмайсың.

SQL Server өзіне құлып салады және оған басқа транзакциялардың

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

 

SQL Server үш басқару транзакцияларымен қамтылады: анық, автоматты және ұқсас.

     Анық транзакциялар қолданушылардың транзакцияның басы мен аяғын анық көрсеткенін қажет етеді. Transact SQL командасын орындау арқылы. Анық транзакцияларды басқару мына командалар түрінде қолданылады: 

BEGIN TRAN[SACTION] [<транзакция аты>]

                                          @ <ауыстыру аты>

<транзакция аты>деген жерде транзакция аты қолданылады, <ауыстыру аты>ауыстыру атын береді. Бір код қолдана отырып бірнеше транзакцияны жасауға болады. 

     COMMIT [WORK]

     COMMIT [TRAN[SACTION] [<транзакция аты>]

                                          @ <ауыстыру аты>

     Транзакцияның аяғы, егер транзакция денесінде қате болмаса, онда ол команда барлық өзгерістерді серверге тіркейді.Транзакцияда істелінген барлық жұмыстар оның журналында сақталады.      

     ROLLBACK [WORK]

     ROLLBACK [TRAN[SACTION] [<транзакция аты>]

                                          @ <ауыстыру аты>

     Транзакцияны жылжыту транзакцияны тоқтату үшін және бастапқы қалпына келтіру үшін қолданады.

     Автоматтық транзакция SQL Serverінде үнсіз қойылымда орнатылады. Бұл режимде әр команда жеке транзакция ретінде қаралады, яғни команда дұрыс аяқталса онда оның өзгерістері тіркеледі, кері жағдайда жүйе алғашқы қалпына келеді.Транзакция тапсырмасы анық режимі бір бүтін команда бірнеше рет қолданылады. Автоматты және анық емес басталу транзакциясы негізге режимі болып табылады және сервер осы режимдердің біреуінде болады. Анық басталу транзакция режимі басқа екі режим үстімен жұмыс істейді. Автоматты басталу транзакциясының орнату үшін Transact-SQL команда тілі орындалады:

     SET IMPLICIT_TRANSACTION OFF

     Анық емес транзакциялар (подразумеваемые). Режимде жұмыс істеу кезінде анық емес басталу транзакцияларында сервер жаңа транзакцияны алдындағысы аяқталысымен бастайды.Транзакцияаяқталды деп есептелінеді, егер ROLLBACK TRAN, COMMIT TRAN командаларыкездессе. ALTER TABLE – кестенің құрылымын өзгерту, CREATE – мәліметтер базасының объектісін құру, DELETE – берілген кестеден жолдың өшірілуі, DROP – мәліметтер базасының объектілерін өшіру, FETCH – курсордың колонкаларынан алынып тастау, GRANT – объектер базасына өтуге рұқсат беру, INSERT – жолдың кестеге қосылуы, OPEN – курсордың ашылуы, SELECT – деректер таңдау, UPDATE – кестенің берілгенін өзгерту.

     Анық емес режимді орнату үшін мына команда Transact-SQL орындалады:

     SET IMPLICIT_TRANSACTION ON

      

3.Құлыптауларды басқару.

     Орнату туралы барлық жұмыстарды арнайы серверде анықталған менеджермен анықталады. Транзакциялармен автоматты режим түрінде үнсіз қойылым типі түріндегі жұмысты жасайды. Бұл жағдайда қандай құлып керек екенін анық көрсетуге болады.Транзакцияны орындаудың алдында сәйкес келетін құлыптау сұралады. Бұны менеджер шешеді. Кейде, егер керекті ресурс құлыптау менеджерімен бос болмаса, онда сұранысты тоқтатады немесе оны кезекке қояды және оны орындайды.Осыдан кейін ғана қажет етілген ресурс құлыптаудан босатылады. Ресурстың құлыптауынан босауды күту уақыты анық келесі командалармен орындалады:

     SET LOCK_TIME OUT <уақыт>

Уақыт деген жерде миллисекунд саны беріледі, ол ресурстың құлыптауынан босауды күту уақытында. 

     Қолданушы барынша тез орындалатын доступқа ие бола алады. Кейде басқа қолданушылар кестенің берілгеніне қол жеткізе алмайды, себебі транзакция әлі аяқталып болған жоқ.

     SQL Server келесі құлыптаулардың түрлерін береді:

1) RID – жол деңгейіндегі құлыптау;

2) KEY – индекс деңгейіндегі құлыптау, мәліметтер транзакциясындағы өзгерістерге сәйкес келеді;

3) PAGE – бет деңгейіндегі құлыптау;

4) EXTERN –extern(а) деңгейіндегі құлыптау;

5) Table – кесте деңгейіндегі құлыптау;

6) DB – мәліметтер базасы деңгейіндегі құлыптау.

Изоляция деңгейі:

1)READUNCOMMITED – аяқталмай қалған оқу, төменгі деңгей изоляцияның тек мәліметтердің бүтіндігін ғана қамтамасыз етеді. Ол үшін изоляцияға анық команда беру керек:

SET TRANSACTION ISOLATION LEVEL

READ UNCOMMITED

2) READ COMMITED – аяқталған оқу еш кедергісіз болады, ол үшін сервер ұжымдық құлыптауды қолданады. Изоляцияның берілген деңгейі үнсіз қойылымда болады. Ол үшін изоляцияға анық команда беру керек:

SET TRANSACTION ISOLATION LEVEL

READ COMMITED

3) REPEATABLE READ – қайталап оқу, бұл қайталап оқымау мәселесін шешеді. Ол үшін, монопольды құлыптау қолданылады. Ол үшін изоляцияға анық команда беру керек:

SET TRANSACTION ISOLATION LEVEL

REPEATABLE READ

4) SERIALIZABLE – бөліктеу, изоляцияның ең жоғарғы деңгейі болып табылады, барлық мәселелерді шешеді.Ол үшін мына команда орындалады:

SET TRANSACTION ISOLATION LEVEL

SERIALIZABLE

     SET TRANSACTION ISOLATION LEVEL орнату изоляциясы деңгейін арнайы кілттік сөздер арқылы шешуге болады.

 

Параллелизм м селесін болдырмау

шін транзакцияларды

параллельді ж не

йлесімді орындалуын бас аруды белгілі бір

дістемесін

жасау

керек.


Б ндай

дістеме


транзакцияларды

сериализациялау деп аталады ж не ол, транзакцияларды параллельді

орындалу рдісі кезінде, олданушыны йлеспеген аралы деректерді

к рмейтіндігіне кепілдік береді. Оларды параллельдігін онша

шектемейтін, транзакциялар жиынты ын сериализациялау

дісін та дау

иыншылы

ту ызуы


м мкін.

Е


д рыс

шешім


болып

транзакцияларды шынында да тізбектелген орындалуы табылады. Біра

сериалды ты са тауды , оларды тізбектелген орындалуынсыз

ситуациялары да болады. Мысалдар ретінде тек о итын транзакциялар

ж не де оларда р т рлі транзакциялар операторларын кез-келген ретпен

орындау а болатындар, я ни деректер базаларыны объектілері бойынша

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

шін ДББЖ-де е ке

олданылатын механизм болып, блоктау

механизмі табылады. Б лшектеуді екі типі белгілі: монополиялы

б лшектеу ж не б лінетін б лшектеу. Параллелизм м селелерін шешу

анализі


зара б лшектеу жа дайы,

оспада,


р

айсысы екіден кем

емес операцияларды рындай алатын, екіден кем емес транзакцияларды

болуы жа дайында пайда болуы м мкін екендігін т жырымдау а

м мкіндік береді. Амалсыз жа дайларды шешу

шін белгілі бір

осымша

рекеттерді

 

олдану керек. Амалсыз жа дайды аны тау

шін екі принципиалды т сіл бар: транзакцияларды біреуін (

рбан-

транзакцияны) кейін шегіндіру; ДББЖ

 

ралдары ар ылы амалсыз

жа дайды аны тау ж не шешу.

 

 

3. Компиляция уақытының адрестері. Куча. Кодты генерациялау

 

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

Компиляция (compilation) - жоғарғы деңгейлі программалау тілінде өзірленген программаны немесе жеке программалық модульді (алғашқы программа, алғашқы модуль) машиналық тілдегі программаға немесе машиналык тілге жуық программаға (объектілік программаға, объектілік модулъге) аудару. Компиляция процесінде программа аралық формаға түрленеді, яғни әрі қарай оны стандартгы бағыныңқы программалар мен процедуралары бар кітапханалық құралдарға қосу керек. Қажет болса пайдаланушының өзі жазған басқа жоғарғы деңгейлі тілдегі объектілік модульге қүрастырылған кез келген басқа модульді де қосуға болады.

Компиляциялау

Компиляциялау (компилировать; compile) — кейбір алгоритмдік тілде жазылған программаны нақты бір процессордың машиналық командалардың тізбегіне аудару процесі. Компиляция нөтижесінде машиналық кодта құрылған программасы бар, алайда жеке программалық процедуралар арасындағы байланыс анықталмағандықтан, орындалуга дайын емес объектілік файл құрылады. Программаны түбегейлі жинау үшін жеке программамен — байланыстар редакторы программасымен — орындалатын осы байланыстардың анықталуьі талап етіледі.

Компиляциялау уақыты

Компиляциялау уақыты (время компиляции; compiling time) — компилятордың жұмысына жұмсалған уақыт; компилятордың алғашқы бағдарламаны объектік модульге түрлендіруге (аударуға) жұмсаған уакьггы.[1]

 

Ку́ча (англ. heap) в информатике и программировании — название структуры данных, с помощью которой реализована динамически распределяемая память приложения.

Размер кучи — размер памяти, выделенной операционной системой (ОС) для хранения кучи (под кучу).

Кодты генерациялау

 

Бағдарлама синтаксисі талданып болғаннан кейін, компиляциялаудың келесі қадамы объектілік кодты генерациялау болып табылады. Объектілік кодтыгенерациялау – бұл бастапқы бағдарламаның ішкі көрінісін ассемблер тіліндегі немесе машина тіліндегі (машиналық кодтарда) объектілік бағдарламаға компиляторарқылы аудару. Нәтижелік бағдарлама сызықтық командалар тізбегін кµрсету кезінде, бағдарламаның ішкі кµрінісі компилятордың жасалуына байланысты кезкелгенқұрылымда болуы мүмкін. Сондықтан объектілік кодтың генерациясы кез-келген жағдайда күрделі синтаксистік құрылымды сызықтық тізбекке түрлендіруіменбайланысты әрекеттерді орындауы керек.

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

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

Генерацияланатын код компиляцияланатын бағдарлама қай компьютерде орындалатына тәуеді болады. Және сондықтан кодты генерациялау процессі машинна-тәуелді болып табылады, осы генерация-ланып жатқан код үшін, біз компьютердің жүйелік командаларын білуіміз керек.

 

 

№ 28 БИЛЕТ 

 

1. Есептеуді оңтайландыру. Программаларды тестілеу және оңдау әдістері

 

Оңтайландыру - мақсатты функциясы бойынша ең жақсы, ымыралы келісімді табу жолымен жүйенің сипаттамаларын жақсарту.[1]

Алгоритмдерді оңтайландыру (Оптимизация алгоритмов; algorithm optimization) — алгоритмдерді эквивалентгік жолмен түрлендіру арқылы алгоритмдер мен есептеу процестерінің сипаттамаларын жетілдіру.

 

Тести́рование програ́ммного обеспе́че́ния — процесс исследования, испытания программного продукта, имеющий своей целью проверку соответствия между реальным поведением программы и её ожидаемым поведением на конечном наборе тестов, выбранных определенным образом

Бағдарламалық тестілеу (Тестирование; testing) — тұтас компьютердің немесе оның жекелеген бөліктері мен программалық жасақтамалары жұмысының дұрыстығын анықтайтын процесс.

Альфа-тестілеу[өңдеу]

Альфа-тестілеу (Альфа-тестирование; а- testing) — арнайы жасалған тапсырмалар арқылы даяр программалық өнімді тестілеу.

Артыгымен тестілеу[өңдеу]

Артығымен тестілеу (Избыточное тестирование; redundancy) — күрделірек тестіні пайдаланып қайта тестілеу.

Бета-тестілеу[өңдеу]

Бета-тестілеу (Бета-тестирование; (3- testing) — программалық өнімді келешек өзгертулерге тегін таратып, нақтылы тапсырмалармен тестілеу.Табылған қателер мен ескертулер жайлы программалаушыға хабарлайды.

Кездейсоқ тестілеу[өңдеу]

Кездейсоқ тестілеу (Стохастическое тестирование; stochastic testing) — құрылғыларды, программаларды және жүйелерді кездейсоқ мәндерді тест ретінде қолдану арқылы тестілеу. Берілген мәліметтердің барлық мүмкін комбинацияларьін шолып шығу қиын болған жағдайларда күрделі жүйелерді тестілеу.

Қурылымдық тестілеу[өңдеу]

Қурылымдық тестілеу (Структурное тестирование) —программаның ішкі құрылымын зерттеу арқылы тестілеу.

Қызметтік тестілеу[өңдеу]

Қызметтік тестілеу (Функциональное тестирование) — программаның ішкі құрылымы қарастырылмастан, функционалдық мүмкіндіктерін тестілеу.

Өрлемелі тестілеу[өңдеу]

Өрлемелі тестілеу (Восходящее тестирование; ascending testing) — программалық өнім төменнен жоғары тексеріліп жинастырылатын программаны тестілеу әдісі. Мұнда алдымен төменгі модульдер жеке- жеке тексеріліп, олардың интерфейстері одан жоғарырақ деңгейдегі модульдермен бақыланады, сонан соң осы деңгейдің модульдерітексеріледі және т.б. [1]

 

 

2. ДҚ мен ДҚБЖ даму келешегі

Деректер қорын басқару жүйелерінің даму перспективалары. Бұл кезең деректерге қолжеткізімнің жаңа әдісі – интернеттің пайда болуымен сипатталады. Бұл бағыттың клиент-сервер технологиясынан негізгі ерекшелігі арнайы клиенттік бағдарламалық қамтама қолдану қажеттілігі жойылады. Алыстатылған деректер қорымен жұмыс істеу үшін стандартты Интернет браузеры пайдаланылады, мысалы, Microsoft Internet Explorer немесе Netscape Navigator, соңғы қолданушыға деректерге қатынау процесі Дүниежүзілік Өрмекпен сырғанағандай болады.

 

3 Аралық код құру. Үш адресті код. Р-код. Байт-код

аралық код – псевдокод

Псевдокод - ресми емес, жалпы компьютер жұмысын сипаттаудың жоғары деңгейлі жолы. Ол кәдімгі компьютерлік тілдің негізгі шарттары мен құрылымын сақтап, адамға оқуға оңай етіп жазылған. Псевдокод әдетте қарапайым адам үшін қажетсіз символдар мен терминдерді және компьютер үшін қажет ақпаратты алып тастайды. Псевдокодты қолданудың басты мақсаты - жай оқырмандардың жүйелік кодтарын оқуын оңайлату. Ол көбінесе арнайы ақпараттама кітаптарында, компьютер жүйесін жоспарлауда және дайын кодтың жазылуының алдында қолданылады. Псевдокод - команда әрекетінің, яғни алгоритм қадамының нақты программалау тілі операторларың қолданбай жәй тілмен сипатталуы.

Адрестіке код - шартты цифр түрінде кодталып жазылған адрес.[1].

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

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

P-код (Пи-код) — концепция аппаратно-независимого исполняемого кода в программировании, часто его определяют как «Ассемблер для гипотетического процессора». Этот термин обычно применяется для обозначения реализаций виртуальной машины для языка Паскаль (например, в UCSD p-System), иногда также используется в качестве синонима термину байт-код для различных виртуальных машин (например, виртуальная Java-машина, байт-код CIL в платформе .NET и т. п.).

Сама концепция абстрактного машинного кода для языков программирования впервые была применена в 1966 году (O-code для BCPL). Термин P-код был введен в начале 1970-х годов коллективом под руководством Никлауса Вирта при реализации переносимого компилятора для языка Паскаль. Введение промежуточного p-кода упростило портирование языка: компилятор (написанный на Паскале) создавал из исходного кода последовательность p-кодов, исполняемую p-системой (интерпретатором p-кода, написанном, например, на ассемблере). Для переноса языка на новую платформу требовалось лишь адаптировать к ней p-систему, что в короткие сроки было выполнено для платформ 6502, 8080, Z-80, PDP-11 и многих других[1][2][3].

 

Байт-код (байтко́д; англ. bytecode, более общо — p-код, p-code от portablecode) — стандартное промежуточное представление[en], в которое может быть переведена компьютерная программаавтоматическими средствами. По сравнению с исходным кодом, удобным для создания и чтения человеком, байт-код — это компактное представление программы, уже прошедшей синтаксический и семантический анализ. В нём в явном виде закодированы типы, области видимости и другие конструкции. С технической точки зрения, байт-код представляет собой машинно-независимый код низкого уровня, генерируемый транслятором из исходного кода.

Многие современные языки программирования, особенно интерпретируемые, используют байт-код для облегчения и ускорения работы интерпретатора. Трансляция в байт-код является методом, промежуточным по эффективности между прямой интерпретацией и компиляцией в машинный код.

По форме байт-код похож на машинный код, но предназначен для исполнения не реальным процессором, а виртуальной машиной. В качестве виртуальной машины обычно выступает интерпретатор соответствующего языка программирования (иногда дополненный JIT- или AOT-компилятором). Спецификации байт-кода и исполняющих его виртуальных машин могут сильно различаться для разных языков: часто байт-код состоит из инструкций для стековой[en] виртуальной машины[1], однако могут использоваться и регистровые[en] машины[2][3]. Тем не менее, большинство инструкций байт-кода обычно эквивалентны одной или нескольким командам ассемблера.

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

№ 29 БИЛЕТ

1. Машиналық кодты құру. Нұсқаулықтарды таңдау. Регистрлерді үлестіру

 

Машиналық код (Машинный код; computer (machine) code) — 1) жоғары деңгейлі программалау тілін аудару арқылы алынған машиналық тілдегі программа; компилятордың немесе ассемблердің көмегімен алынган, микропроцессор қабылдайтын және орындайтын құрылғы.

Машиналық тіл (Машинный язык; Machine language; computer language) — 1) есеп шығаруды бейнелейтін және мазмұны мен ережелері нақты компьютердің аппараттық құралдары арқылы жүзеге асырылатын формальды тіл. Машиналық тілге аударылған программа әрбір операцияны орындауға жарайтын белгілі бір командалардан тұрады. Кейде компьютердің командалар жүйесін де машиналық тіл деп атайды; 2) компьютерде белгілі бір әрекетгер мен операцияларды екілік сан түрінде кодтау, жазу ережелерінің жинағы.

Логика алгебрасының математикалық аппараты компьютердің аппараттық құралдарының жұмысын сипаттауға өте қолайлы, өйткені компьютердің негізі екілік санау жүйесі болып табылады, онда екі цифр: 0 мен 1 қолданылады. Бұл компьютердің бір ғана құрылғылары екілік санау жүйесінде ұсынылған сандық ақпаратты да, логикалық айнымалыларды да өңдеу және сақтау үшін қолданыла алады дегенді білдіреді.

Компьютердің негізгі бөліктерін құрайтын әртүрлі интегралдық микросхемалардың арғы физикалық түбірі-осы күрделі логикалық өрнектер болып табылады. Компьютердің логикалық элементтері дегеніміз – ЖӘНЕ, НЕМЕСЕ, ЕМЕС электрондық схемаларын айтамыз.

ЖӘНЕ элементі. ЖӘНЕ элементінің көмегімен қарапайым екі Х1 мен Х2 айтылымдарының бір құрамдасқа бірігуі логикалық көбейту немесе конъюнкция, ал операцияның нәтижесі – логикалық көбейтінді деп аталады. Құрылымдық схемаларда екі кірісі бар. ЖӘНЕ схемасының барлық кірістерінде бірлік болғанда, тек сонда ғана оның шығуында бірлік болады. Ал кірістердің ең болмаса біреуінде нөл болса, онда шығуында да нөл болады.

НЕМЕСЕ элементі. Біріктіруші мағынада қолданылатын НЕМЕСЕ элементінің көмегімен қарапайым Х1 және Х2 айтылымдарының бір құрамдасқа бірігуі логикалық қосу немесе дизъюнкция (латынша disjunction-бөлу), ал операцияның нәтижесі – логикалық қосынды деп аталады. НЕМЕСЕ схемасының кірісінің ең болмаса біреуінде бірлік болғанда, оның шығуында да бірлік болады.

ЕМЕС элементі. Қарапайым Х айтылымына ЕМЕС шылауын қосу логикалық терістеу операциясы немесе инверсия деп аталады.ЕМЕС схемасы терістеуді жүзеге асырады. Бұл схеманың кірісінде 0 болса, шығуында 1 болады. Ал кірісінде 1 болғанда, шығуында 0 болады.

 

2. Постреляциялық ДҚ: дедуктивті, ережелерге негізделген, темпоральды, тарихи

 

Деректер базасы – есептеу жүйесінің жадысында сақталатын және объектілер жағдайы мен олардың қарастырылатын пәндік облыстағы өзара байланыстарын көрсететін арнайы жолмен ұйымдастырылған деректер жиынтығы.

Дедуктивті деректер қоры. Дедуктивті Дб анықтама бойынша 2 бөліктен тұрады: фактілерден тұратын экстенциональды бөлігі және экстенциональды бөлік пен қолданушы сұратуының негізінде жаңа фактілерді логикалық түрде қорытып шығаратын ережелерден тұратын интенсиональды бөлігі.

Өмірдегі нақты дедуктивті ДҚБЖ-ның реляциялық ДҚБЖ-дан айырмашылығы: Дб-ның интенциональды бөлігінің ережелері мен қолданушының сұратуларында рекурсиялар болуы мүмкін. Рекурсивті ережелер мен сұратуларды анықтау мүмкіндігі реляциялық жүйелерде үлкен проблемалардың тууына әкелетін проблемаларды дедуктивті ДҚ-да оңай шешуге мүмкіндік береді. (Мысалы: күрделі деиальды қарапайым бөліктерге бөлу проблемасы). Екінші жағынан рекурсиялардың болуы дедуктивті ДҚ-ның жүзеге асуын қиындатады, кейде тіпті тиімді шешу мүмкін болмайды.

Дедуктивті ДҚ мен реляциялық ДҚ арасындағы байланыс:

1. реляциялық ДҚ дедуктивті ДҚ-нан туындап, оның жеке жағдайы болады

2. дедуктивті ДҚБЖ-рін жүзеге асыру үшін әдетте реляциялық жүйе қолданылады. Мұндай реляциялық жүйе фактілерді сақтаушы және дедуктивті ДҚБЖ-нен түскен сұратуларды орындаушы ролін атқарады. Әрі мұндай реляциялықДедуктивті деректер қорының жүйелері– ДҚ-ның жүйелері саласында математикалық логика аппараты мен логикалық программалау құралдарын қолданудың нәтижесі.

 

3. Модульді программалаудың негізгі принциптер

 

Модульдік программалау дегеніміз – программаны логикалық бөліктерге бөлу процесі. Программа бірнеше модульдерге бөлінеді және мына 2 мақсат орындалуы тиіс:


  1. модулдің дұрыс болуы және оның контекстерден тәуелсіз болуы қажет;

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

 

Стандартты модульдер.

Модуль құрылымы программа құрылымына ұқсас. Модульдің ішіндегі барлық сипаттамалар бір-бірімен байланысты. Мысалығы, Strings модулі нөлдік белгімен аяқталатын жолдарды өңдейтін ішкі программаларға қажетті сипаттамалардан тұрады. Сонымен қатар ішкі программалар сияқты, модульдер де стандартты және стандартты емес немесе қолданушының модулі, яғни, програмалаушылар өздері құрастыратын бола алады. Стандартты және стандартты емес модульдер құрылымы бірдей болғандықтан, олардың сипатталуы бірдей ережеде құрылған.
Модульдер программаға оның атын uses компилятор нұсқауында сипаттаудың көмегімен қосылады. Мысалы, былай сипатталғанда:
Uses Dos, Crt;
Аталған модульдердің құрамындағы барлық ішкі программалар, айнымалылар, типтер және тұрақтыларды программада қолдануға болады.
Ескерту. Модульдердің аттары оларды хабарлағанда үтірмен бөлінеді, ал соңғы модульден кейін үтірлі нүкте қойылады!

Турбо Паскальда қолдануға дайын процедуралар мен функциялар жинақталған стандартты модульдер бар. Олар:

SYSTEM – барлық программаларда автоматты түрде қолданыла беретін стандартты процедуралар мен функциялардан құрылған модуль.

MS DOS- операциялық жүйе мүмкіндіктерін қолдануға арналған процедуралар мен функциялар DOS модулін құрайды.

CRT- экранның клавиатураның және динамиктің жұмысын басқаруға пайдаланылатын процедуралар мен функциялардан тұратын модуль.

GRAPH- әр түрлі графикалық адаптерлерді қолдайтын компьютердің графикалық мүмкіндіктерін көрсететін көптеген программалардан тұратын модуль.

PRINTER- принтермен жұмысты жеңілдететін модуль.

OVERLAY- оверлей программалар құру кезінде қолданылатын модуль.

WINDOS- модулінің процедуралары DOS модулінің процедураларына ұқсас.

STRINGS- модулі Pchar – типті қатарлармен жұмыста пайдаланылады.

Бұл модульдердің программада қолданылуы:

Program <программанаң аты>;

Uses <модуль аты>

{Егер бірнеше модульдер қолданылатын болса}

Uses <1-модуль аты>,<2-модуль аты>...< N –модуль аты>;

 

SYSTEM-модулінің процедуралары мен функциялары

 

SYSTEM модуліндегі Random(i) функциясы 0-ден i-ге дейінгі кездейсоқ санды анықтайды.

Математикалық (Abs,ArcTan,cos,sin,exp,ln,sqr,sqrt,Frac,int,Pi), түрлендіруші

(chr,ord,trunk,round,pred,succ,odd,т.б.) жолдық қатарларды өңдеуге арналған

(Concat,Copy,Length,Pos,Delete,Insert,Str,Val) процедуралар мен функциялар да осы SYSTEM модулі құрамына кіреді.

 

DOS модулінің процедуралары

Программа жұмысын басқару үшін процедуралары: Exit, Halt.

Exit-процедурасы программаның орындалу барысында блоктан тез шығуға мүмкіндік береді.

Halt-процедурасы программаның орындалуын тоқтатып, басқаруды операциялық жүйеге қайтарады.

Exec(a,b)- a-программаны b-қатардың мәні бойынша тауып, орындайды.

FindFirst- көрсетілген каталогтан атрибуты бойынша файлды іздеу.

FindNext – сол каталогтан дәл сондай атрибутпен келесі файлды іздеу.

 

CRT модулі.

 

Дербес компьютердің экраны әдетте (текстік режимде) 25 жолдық қатардан тұрады, ал әр қатарға 80 таңба сияды. Бірақ кейбір типтегі дисплейлер басқа да режимде болады. Түрлі түстің жалпы саны 16. Бірақ ақ-қара экранды компьютерлер де бар. Экран жұмысын басқару үшін бізге қандай мүмкіндіктер қажет? Керекті таңбаны J-қатардың I-позициясына шығаруға болады. Түсін өзгерту толық экранды игере алу деген сөз. Аталған мүмкіндіктердің барлығы CRT модулінде қарастырылған.

GoToXY(I,J)- процедурасы курсорды экран бетінде J-қатардың I-бағанына жылжытады.

TextColor(Color)- текстің түсін орнатады.

TextBackground(Color)- экран бетінің түсін (фон) орнатады.

ClrScr процедурасы экрандағы жазуларды фон түсімен бояп, тазартып курсорды жоғарғы сол жақтағы бұрышқа апарады.

Window(x1,y1,x2,y2)- экран бетінде тік төртбұрышты терезе сызады. Мұндағы

(x1,y1) және (x2,y2) нүктелері тік төртбұрыштың диагоналының сол жақ жоғарғы және оң жақ төменгі төбелері.

Window процедурасы іске қосылған болса, онда барлық процедура тек таңдалған терезеде ғана жүреді. Курсор әрі қарай өтпейді.

 

Модуль трансляциясы

 

Модуль трансляциясының нәтижесі ретінде сол атымен берілген және кеңейтілуі-ТРU файлды алуға болады, яғни ұзақ қолдану кезінде дискіде сақтауға болады.

Модуль-файлының кеңейтілуі ТРU ету тәсілі:

- компиляциялау (Соmpile) мәзірін ашу; (Compile менюі жүйесі үш бөлімнен тұрады. Бірінші бөлімде компиляция әр-түрлі режимде жүзеге асырылады. Екінші бөлімде компиляциялауға дайындау командалары орналасқан. Үшінші бөлімдегі команда компиляциялау қорытындысының ақпараттарын бейнелейді.)

- опциялар тізімінен жадта адрестеу (Destination Memory) көрінсе, оны дискіде адрестеу (Destination Disk) етіп өзгерту (қатарды таңдау);

- модуль-программаны компиляциялау.

- Дәл осы тәсілмен программа файлын өңдесек, кеңейтілуі – ЕХЕ, яғни орындалуға дайын программаны аламыз.

 

DelLine- процедурасы курсор тұрған қатарды алып тастайды.

HighVideo- процедурасы терілуші таңба анықтығын арттырады.

LowVideo- терілген таңбалардың анықтығын төмендетеді.

InsLine – процедурасы курсор орналасқан жерге бос қатар қояды.

ReadKey- клавиатурадан басылған клавиша коды арқылы символды анықтайды.

 

Тамшылардың үнін келтіретін программаны жазу үшін CRT модулінің келесі процедуралары мен функциялары пайдаланылады:

Sound(i)- динамикті i- жиілікпен дыбысын шығарып іске қосады.

Delay(i)- программаның орындалуын I миллисекундқа кідіртеді.

Nosound- динамикті өшіру.

KeyPressed- клавиатурадан перне басылуын күтеді. Егер клавиатурадан перне басылса мәні True, әйтпесе False болады

БИЛЕТ -30

  1. Құрылымдық программалаудың технологиялары.

 

Программалық жабдықты құрудағы негізгі міндеттердің бірі программаның статикалық күйі, яғни бастапқы жазылуымен (немесе листингісі) оның динамикалық күйі, яғни компьютердегі орындалу тәртібі сәйкес келуі керек немесе программа командалары жазылу реті бойынша орындалуы тиіс.

Бұл мәселені шешу үшін жаңа тиімді программалау технологиясын жасау қажет болды. Бұл ізденістің нәтижесінде 70- жылдардың басында IBM корпорациясы ұсынған, теориялық негізін профессор Э. Дейкстра қалаған құрылымдық программалау технологиясы пайда болды.

Программалау процесін жақсартатын және кең қолданылатын әдістердің бірі – құрылымдық программалау. Құрылымдық программалаудың 3 бөлігі (құраушысы) бар: 1. Модульдік программалау 2. Құрылымдық кодтау 3. Жоғарыдан төменге қарай жобалау

Модульдік программалау дегеніміз – программаны логикалық бөліктерге бөлу процесі. Программа бірнеше модульдерге бөлінеді және мына 2 мақсат орындалуы тиіс: 1) модулдің дұрыс болуы және оның контекстерден тәуелсіз болуы қажет; 2) модулдің ішкі жұмыстарын білмей тұра әр түрлі модулдерден программа құру мүмкіндігінің болуы қажет.

Құрылымдық кодтау деп программада басқарушы конструкциялардың–шартты операторлардың, циклдің (параметрлі, цикл-әзір, цикл-дейін) қолданылуын айтады. Шартсыз көшу операторы программада сирек қолданылуы керек немесе шартты оператордың, циклдің көмегімен өзгертілуі керек.

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

  1. Объектіге бағытталған ДББЖ.

 

Объектіге – бағытталған деректер қорын басқару жүйесі

Объектіге – бағытталған деректер қорын басқару жүйесі компьютердің оперативті жадына сыймаған, объектілерді сақтау үшін керекті құралдардың объектіге бағытталған тілдерде программисттердің қажеттілігінен туған. Қосымша программаның қайталама қосылулары арасындағы объектілердің жағдайын сақтау тапсырмасы маңызды болды.

Oбъeкттi-бaғыттaлғaн дepeктep қopын бacқapу жүйeci дeдуктивтi жәнe уaқытшa ДББЖ мeн қaтap, тeopиялық дepeктep бaзacының дa бipдeн-бip пepcпeктивтi тapaлғaн зaмaнaуи бaғыты. OББЖ дepeктepдi ұзaқ мepзiмгe eнгiзe oтыpып, бip мeзгiлдe бaқылaу, дepeктepдi қaлпынa кeлтipу, ұйымдacқaн cұpaулapды жүзeгe acыpу жәнe бacқa дa мүмкiндiктepгe иe кeңeйтiлгeн пpoгpaммa тiлi.

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

Пайдаланушылар деректер базалармен жұмыс істеу кезінде приложение деп аталатын бағдарламаларды қолданады. Жалпы жағдайда бір деректер базасымен бірнеше приложение жұмыс жасай алады. Мысалы, егер деректер базасы кәсіпорын жұмысын моделдейтін болса, онда онымен жұмыс жасау үшін кадрларды есепке алатын приложенияны, еңбек ақы есептеуге арналған приложенияны, қойма есебін жүргізу үшін приложенияны жасауға болады. Бір деректер базасымен жұмыс істейтін приложениялар бір-бірінен тәуелсіз жұмыс жасап, ДББЖ олардың жұмысының дұрыстығын қамтамасыз ету керек.

60 жылдapдың coңындa Нopвeгиляық Дaл, Миpxaуг жәнe Нигapд (Dahl, Mуhrhaug, Nуgaard) кoмпьютepлiк opтaлықтa күpдeлi өндipicтiк жәнe «Simula» дeп aтaлaтын әлeумeттiк пpoцecтepдiң мoдeльдeу жүйeciн жoбaлaғaн. Coл кeздepi(бүгiнгi тaңдaғыдaй) бaғдapлaмaлық қaмcыздaндыpудың өндipiciндe пpoцeдуpaлық көзқapac үcтeм бoлды. Мәceлeнi шeшу үшiн: бaғдapлaмaлaудың дәcтүpлi түpiнiң бipiндe кoмпьютep opындaуы тиic пpoцeccтep кoдтaлу apқылы cипaттaлды. Виpтуaлды caxнaдaғы әpтicтepгe ұқcac Oбъeктiлep өзiндiк бiлiмгe(=aқпapaттap) жәнe икeмдiлiктepгe(=oпepaциялap) иe бoлды. Өздepiнiң жoғapы қoлдaнулapынa cәйкec, simula aлдымeн жүйeлepдiң шынaйы жұмыc үлгiлepiнe қoлдaнылaды (simulate aғылшыншa «мoдeльдeу»). Aлaйдa кeйiн үлкeн apтықшылықтap aнықтaлды, өздepiнiң coңынaн тoлық бaғдapлaу үшiн жaңa тexнoлoгиялap әкeлдi:

– Eң жaқcы дeгeн жaғдaйдa, кoдтың құpылымды өңдeлуi жүзeгe acaтын пpoцeдуpaлық көзқapacқa қapaғaндa, Oбъeктiлi тexнoлoгия aқпapaттың мәндi құpылымдaнуынa әcepiн тигiзeдi. Ocығaн opaй, ipi бaғдapлaмaлық жүйeнiң бip-бipiнeн тәуeлciз opындaлa aлaтын жәнe өңдeлe aлaтын көз жeтepлiк бipлiктepгe бөлшeктeнуi aвтoмaтты түpдe жүзeгe acaды.

– Oбъeктiлep oлapдың iшкi құpылымын бiлмeй-aқ бacқa Oбъeктiлepдe қoлдaнуғa мүмкiндiк бepe aлaтын aнықтaлғaн интepфeйcтepгe иe.

– Oбъeктiлep шынaйы әлeмнiң мәнiн көpceтeтiнiнiң apқacындa oлapды coл мәндep apқылы көpiнic тaбaтын әpтүpлi қocымшaлapдa oңaй қaйтa қoлдaнуғa мүмкiндiк туaды.

– Oбъeктiгe – бaғыттaлғaн көзқapacқa cәйкec пpoцeccтep eмec, aқпapaттық құpылымдap мoдeльдeнeдi. Coңғылapы cәйкeciншe бaяу өзгepeдi, coндықтaн Oбъeктiгe – бaғыттaлғaн бaғдapлaмaмeн қaмcыздaндыpудың өмipлiк циклындa әлдeқaйдa ұзaқ тeндeнция қaлыптacқaн.

Ocы apтықшылықтap көpiнic тaпқaн cәттeн бacтaп, opтaқ тaғaйындaлғaн бaғдapлaмaлaу тiлi peтiндe Simula қapқынды дaми бacтaды. Кeлeci жылдapы OБ көзқapacтың жeтiлдipiлгeн түpi тaбылaтын, бacқa дa бaғдapлaмaлaу жүйeлepi пaйдa бoлa бacтaды. 90 жылдapдың Oбъeктiгe – бaғыттaлғaн тiлдepiнe C++, Smalltalk, Java - мeн қaтap, Cacһe Object Script тiлi дe жaтaды. Бapлық зaмaнaуи OБ – тiлдep Тэйлop eңбeктepiндe [Taуlor 1990, 1995] бaяндaлғaн кeйбip жaлпы қaғидaлap мeн кoнцeпциялapғa нeгiздeлeдi. Әpi қapaй бiз тeк opтaқ мәлiмeттepмeн ғaнa шeктeлeмiз.

ДҚБЖ -ның нeгiзгi функциялapы

1. Cыpтқы жaдыдaғы дepeктepдi тiкeлeй бacқapу, яғни oл дepeктep қopынa тiкeлeй кipeтiн дepeктepдi caқтaуғa жәнe қызмeтшi дepeктepдi (индeкcтepдi) caқтaуғa apнaлғaн cыpтқы жaдтың қaжeттi құpылымдapын қaмтaмacыз eту.

2. Жeдeл(oпepaтивтi) жaдының буфepлepiн бacқapу. Үлкeн көлeмдi дepeктep қopы жeдeл жaдқa cыймaйды, coндықтaн дepeктepдiң әp элeмeнтiнe бapу үшiн cыpтқы жaдпeн aлмacу жүpeдi, aл бұл жүйeнiң cыpтқы жaд құpaлдapының жылдaмдығымeн жұмыc icтeугe әкeлeдi. Coндықтaн cыpтқы жaдтa opнaлacқaн дepeктep қopындaғы дepeктepгe қaтынaуды жылдaмдaту үшiн жeдeл жaдтa дepeктepдi буфepлeу жүpгiзiлeдi.

3. Тpaнзaкциялapды бacқapу. Тpaнзaкция дeгeнiмiз ДҚ - нa әcep eту тұpғыcынaн қapaғaндa дepeктepгe жacaлынғaн oпepaциялapдың бөлiнбeйтiн тiзбeгi, бұл тiзбeктi ДҚБЖ бip бүтiн peтiндe қapacтыpaды, яғни тpaнзaкцияғa кipгeн бapлық oпepaтopлapдың нәтижeci cыpтқы жaдтaғы ДҚ -дa бeйнeлeнeдi нeмece бapлық бұл oпepaтopлapдың әcepi тoлықтaй бoлмaйды. Көп қoлдaнушыcы бap ДҚБЖ-дe тpaнзaкциялapды бacқapу үшiн тpaнзaкциялapды cepиялaндыpу қoлдaнылaды

4. Жуpнaлизaция. ДҚБЖ - ғa қoйылaтын тaлaптapдың бipi – oл cыpтқы жaдтaғы дepeктepдiң caқтaлуының ceнiмдi бoлуы. Caқтaу ceнiмдiлiгi – кeз кeлгeн пpoгpaммaлық нeмece aппapaттық icтeн шығудaн (cбoй) coң ДҚБЖ дepeктep қopының coңғы кeлiciлгeн жaғдaйын қaлпынa кeлтipe aлa бiлу кepeк.

Aппapaттық icтeн шығудың (aппapaтный cбoй) 2 түpi бap:

a) жeңiл (кoмпьютepдiң кeнeттeн тoқтaуы, мыc. тoк көзiнiң aвapиялық өшуi)

б) қaтaң (cыpтқы жaд тacушылapындaғы aқпapaттың жoйылуы)

Пpoгpaммaлық icтeн шығудың мыcaлдapы:

a) ДҚБЖ-ның жұмыcының cәтciз aяқтaлуы, яғни пpoгpaммaдaғы қaтeгe бaйлaныcты нeмece aппapaттың (кoмпьютepдiң aппapaттық құpaлдapының) icтeн шығуынa бaйлaныcты.

б) Қoлдaнушының пpoгpaммacының cәтciз aяқтaлуы нәтижeciндe тpaнзaкция cәтciз aяқтaлaды.

Aтaлғaн icтeн шығулapдaн coң дepeктep қopын қaлпынa кeлтipу үшiн қocымшa aқпapaт кepeк. Coның бipi – дepeктep қopынa жacaлғaн өзгepicтepдi жуpнaлғa жaзып oтыpу. Жуpнaл – ДҚБЖ-нiң қoлдaнушылapынa жaбық (нeдocтупный), нeгiзгi ДҚ - дaғы бapлық өзгepicтep жaзылaтын ДҚ - ның epeкшe бөлiгi. Жуpнaл әpтүpлi eкi диcкiгe жaзылaды. Дepeктepгe жacaлынғaн өзгepicтep туpaлы дepeк жуpнaлдың cыpтқы жaдыcынa өзгepгeн oбъeкт cыpтқы жaдтaғы дepeктep қopынa түcпecтeн бұpын жaзылaды. Дepeктepдi қaлпынa кeлтipудiң oңaй жoлы – oл жуpнaлдaғы жaзбaлap бoйыншa тpaнзaкциялapды жeкeлeй кepi қaйтapa opындaту (oткaт).

Қaтaң icтeн шығудaн coң дepeктepдi қaлпынa кeлтipу үшiн ДҚ -ның жуpнaлы мeн ДҚ -ның apxивтiк көшipмeci қoлдaнылaды. Apxивтiк көшipмe – дepeктep қopындaғы жуpнaлды тoлтыpғaнғa дeйiнгi дepeктep қopының тoлық көшipмeci.

5. Дepeктep қopының тiлдepiн қoлдaу (пoддepжкa).

Дepeктep қopымeн жұмыc icтeу үшiн apнaулы тiлдepдi қoлдaнaмыз. Көбiнece eкi тiл:

1 Дepeктep қopының cxeмacын aнықтaутiлi (SDL–Schema Definition Language)

2 Дepeктepдi мaнипуляциялaутiлi (DML–Data Manipulation Language)

Қaзipгi ДҚБЖ-дe бipыңғaйбipiктipiлгeнтiл SQL қoлдaнылaды. SQL тiлiндe (Structured Query Language) – ДҚ -ныңжұмыcтapынa қaжeттi, яғнидepeктep қopынжacaудaнбacтaп, дepeктep қopымeнқoлдaнушылapдыңинтepфeйciнқaмтaмacыз eтeтiнбapлықжaбдықтap бap. SQL тiлiнiң нeгiзгi функциялapы:

1. SQL тiлi SDL мeн DML жaбдықтapын үйлecтipiп, peляциялық дepeктep қopының cxeмacын aнықтaп, дepeктepгe мaнипуляция жacaтaды.

2. SQL тiлiндe дepeктep қopының бүтiндiгiнiң шeктeулepiн aнықтaйтын apнaулы жaбдықтap бap. Бүтiндiккe қoйылaтын шeктeулep apнaйы кecтe-кaтoлoгтapдa caқтaлaды, aл дepeктep қopының бүтiндiгiнe бaқылaу жacaу тiлдiк дeңгeйдe icкe acaды, ДҚ-ын мoдификaциялaу oпepaтopлapын кoмпиляциялaғaндa SQL кoмпилятopы ДҚ-ғы бүтiндiктiң шeктeлepi нeгiзiндe cәйкec пpoгpaммaлық кoдты гeнepaциялaйды.

3. SQL тiлiнiң apнaйы oпepaтopлapы дepeктep қopының көpiнicтep (пpeдcтaвлeния) дeп aтaлaтын ДҚ-дa caқтaлынaтын бaғaндapының aты бap cұpaтулapды aнықтaй aлaды (peляциялық ДҚ-нa бepiлгeн кeз кeлгeн cұpaту нәтижeci кecтe бoлaды). Көpiнicтepдi қoлдaу дa тiлдiк дeңгeйдe icкe acaды.

4. SQL-дiң apнaйы oпepaтopлapы apқылы дepeктep қopынa қaтынaуғa aвтopизaция жacaлынaды. SQL-дiң әpтүpлi oпepaтopлapын opындaу үшiн қoлдaнушының түpлi өкiлeттiлiгi бoлу кepeк. ДҚ-ның кecтeлepiн жacaғaн қoлдaнушының ocы кecтeлepмeн жұмыcтың бapлық түpiн icтeугe тoлық өкiлeттiлiгi бap. Қoлдaнушылapдың өкiлeттiлiгi apнaйы кecтe-кaтaлoгтapдa cипaттaлaды, aл өкiлeттiлiктepгe бaқылaу жacaу тiлдiк дeңгeйдe жүpeдi.

 

  1. Объектілік кодты оңтайландыру.

 

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

 

 


Дата добавления: 2018-08-06; просмотров: 347; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!