Структура мультисписка студентов



Описание элемента хранения мультисписка студентов:

Type  
Str30 = String[30]; { тип для описания фамилии_имени_отчества }
PMulty_List: ^ Multy_List; { тип – указатель на узел мультисписка }
Multy_List = record { описание элемента хранения узла мультисписка}
fam: Str30; { фамилия_имя_отчество }
ball: real; { средний балл }
. . .  
fnext, fprev: PMulty; { атрибуты связи в списке по фамилии }
bnext, bprev: PMulty; { атрибуты связи в списке по среднему баллу }
end;  
Var head: PMulty; { указатель на “голову” мультисписка }
   

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

Procedure Print_Fam( head: PMulty ); { распечатка мультисписка, }
Var p: PMulty; { упорядоченного по алфавиту }
Begin  
if ( head <> nil ) then begin { список существует? }
p:=head^.fnext; { установить вспомогательный указатель }
while ( p <> head ) do begin { весь список пройден? }
writeln( p^.fam, p^.ball ); { распечатать информационные поля }
p:=p^.fnext { перейти к следующему узлу }
end;  
end;  
end;  

 

Көп жағдайда ортогоналды тізімдер түрінде өте көп өлшемді матрицалар ұсынылған, онда көптеген элементтер нөлге тең болады (мұндай матрицалар сирек деп аталады).

Көптеген жазбалар осындай құрылыстарды жадта сақтауға мүмкіндік береді - тек нөлден өзгеше элементтер сақталады. Әрбір элемент тізімдер тізімінде және тізім бағанында екі тізімге қосылады. Барлық матрица (m + n) тізімдермен ұсынылған, мұнда m және n - жолдардың саны және тиісінше бағандардың саны. (Жеке байланысты тізімдер қолданылады жағдайда) жолдағы келесі элементі және бағанда келесі элементіне - Әрбір элемент мәні multispiska матрицалық элемент жол нөмірін, баған санын және екі сілтемелер өткізеді. Осы тізімдердің басталуына арналған көрсеткіштер екі массивте сақталады.

Мультитізімдік құрылым ретінде ұсынылған сирек матрица.

 

Описание элемента хранения разреженной матрицы.

Const  
Nrow = 10; { количество строк }
Ncol = 20; { количество столбцов }
Type  
PMatrix: ^ Matrix; { тип – указатель на узел мультисписка }
Matrix = record { описание элемента хранения узла мультисписка}
val: word; { значение элемента }
row, col: word; { номер строки, номер столбца }
frow, fcol: PMatrix; { атрибуты связи в списках по строке и по столбцу }
end;  
Prow=array[1..Nrow] of PMatrix; { тип – массив указателей на первые узлы списков строк }
Pcol=array[1..Ncol] of PMatrix; { тип – массив указателей на первые узлы списков столбцов }
Var  
r: Prow; { массив указателей на первые узлы списков строк }
c: Pcol; { массив указателей на первые узлы списков столбцов }
           

Пример обработки разреженной матрицы – процедура, распечатывающая значения элементов матрицы по строкам.

Procedure Print_Matrix( var fr: Prow ); { fr – массив указателей на списки строк }
Var p: PMatrix; i: byte; { p – вспомогательный указатель для прохода по строке }
Begin  
for i:=1 to Nrow do begin { просмотр строк }
p:=fr[i]; { установка вспогательного указателя на первый элемент списка строки }
while ( p<> nil ) do begin { список строки не пуст? }
writeln ('Matrix[' , p^.row, ',' , p^.col , ']=' , p^.val ); { вывод значения}
p:=p^.frow; { переход к следующему элементу в строке }
end;  
end;  
end;  

 

2. SQL тілі. Тарихы, құрылымы, функциялары, негізгі мүмкіндіктері, деректер типтері және операторлары. Сұранымдарды құру. ДҚ-на түрлі сұранымдарды құру мысалдары

 

 

SQL тілінің тарихы, құрылымы.

       Деректер базасы администраторының, жобалаушысының, құрушысының және қолданушысының реляциялық деректер базасымен қатынас жасауы үшін қолданатын жалғыз құралы – SQL тілі, яғни құрылымдалған сұратулар тілі (Structured Query Language).

SQL – реляциялық деректер базасындағы деректерді манипуляциялаудың толық функционалды тілі. Қазіргі кезде ол Oracle, Sybase, DB/2, MS SQL Server және басқалары (ANSI стандарттары және ISO) сияқты реляциялық деректер базаларына жаппай танылған, стандартты интерфейс болып табылады.

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

       SQL – дің теориялық негіздері реляциялық деректер базасы теориясының дамуына бастау болған белгілі мақалада қаланды, реляциялық алгебра пайда болған соң ХХ ғасырдың 70-жылдары SQL – дің алғашқы прототипі IBM Research компаниясында әзірленді. Алғашқы практикалық жүзеге асуы IBM Chamberlin D. D. және Royce R. F фирмасының зерттеуші зертханасында IBM – нің System R реляциялық ДҚБЖ – нің алғашқы прототипінде орындалды. SQL – дің өндірістік қолданысы алғаш рет Ingres ДҚБЖ – де іске асты. Алғашқы өндірістік реляциялық ДҚБЖ – нің бірі – ол Oracle. Шын мәнінде, реляциялық ДҚБЖ – бұл реляциялық деректер базасының жұмысын басқаратын программалық қамтама.

       SQL тілінің алғашқы халықаралық стандарты SQL-89 (немесе SQL1) 1989 жылы қабылданды, оны кейде ANSI/ISO стандарты деп те атайды, көптеген ДҚБЖ – лері бұл стандартты толығымен қолдайды. Ал 1992 жылдың соңында SQL-92 (немесе SQL2) жаңа халықаралық стандарты қабылданды. Қазіргі кезде реляциялық ДҚБЖ өндірушілердің көпшілігі оны базалық стандарт ретінде қолданады. Алайда SQL тілін стандарттауға қатысты жұмыстар толығымен аяқталған жоқ. 1999 жылы SQL-99 (немесе SQL3) стандарты әзірленді. SQL1 мен SQL2 стандарттары арасында сандық айырмашылықтар болса, олармен SQL3 арасында сапалық өзгерістер енгізілді, атап айтқанда – жаңа деректер типтері, оқиғалар мен триггерлерге арналған стандарттар бөлімі қосылды, тілдің қолданысына «объект» ұғымы енгізіліп, оларға SQL операторларынан сілтеме жасауға рұқсат берілді.

       SQL – дің бастапқы нұсқасында деректердің ағынын басқару командалары болмады, олар кейіннен қабылданған ISO/IEC 9075-5:1996 стандартында пайда болды.

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

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

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

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

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

       SQL – дің барлық командаларының жинағын келесі топтарға бөлуге болады:

1) Деректердіанықтаукомандалары (DDL – Data Definition Language).

2) Деректердіманипуляциялаукомандалары (DML – Data Manipulation Language).

3) Деректердітермелеукомандалары (DQL – Data Query Language).

4) Деректердібасқарукомандалары (DCL – Data Control Language).

Транзакцияларды басқару командалары.

Деректер қорына жасалатын сұрату түрлері

MS Access-те сұранысты пішімдеу үшін үлгі бойынша сұрату деген әдіс қолданылады.Сұрату операциясы барлығы бірігіп сұрыптау кілті (sort key) деп аталатын бір немесе бірнеше бағандардың мәндеріне сәйкес келетін кестені белгілі бір ретпен тізбекті түрде бейнелеу үшін жүргізіледі. Бұл физикалық операцияның кірісінде бір кесте және шығысында бір кесте болады.Қажетті деректерге қатынау үшін деректердің физикалық құрылымындағы навигацияның қалай жургізілетінін анықтайтын ДББЖ –нің SQL компоненті сұратулардың оптимизаторы д.а.Қажетті деректерге қатынауға арналған навигациялық лргика қатынау жолы немесе қатынау әдісі деп аталады.Қатынаудың таңдалған жолдарын қамтамасыз ететін оптимизатордың орындайтын әрекеттерінің тізбесі орындау жоспары деп аталады.Қатынау жолын анықтау үшін сұрату оптимизаторы қолданатын процесс сұратуларды тиімділеу деп аталады.Сұратуларды тиімділеу процесі кезінде SQL DML командаларының барлық типтері үшін қатынау жолдары анықталады.Алайда SQL SELECT командасы қатынау жолын анықтау есептерін шешкенде үлкен қиындық тұғызады.Сондықтан бұл процесті әдетте деректерге қатынау емес,сұратуды тиімділеу дейді.Сұратуды өңдеу жылдамдығын арттыру үшін кеңінен зерттеулер жасалып ,сұратуларды өңдеу тиімділігін арттыру тәсілдерін іздеу үшін тестілеулер жүргізіледі.Қазіргі заманғы реляциялық ДББЖ-нің сұратулар оптимизаторлары бір-бірінен күрделілігі мен жасалу принципі бойынша өзгешеленеді,бірақ олардың барлығы сұратуды тиімділеуде бірдец негізгі кезеңдерден өтеді:

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

· Түрлендіру.Ары қарайоптимизатор сұратудың түрлендіру ережесін оны синтаксис тұрғысынан тиімді форматқа түрлендіру үшін қолданады.

· Альтернативаларды құру.Сұрату синтаксистік тиімділеуден өткен соң,оптимизатор оның орындалуы үшін альтернативалар құрады.

· Сұратуды орындау жоспарын жасау.Ең соңында оптимизатор эвристикалық ережелерге сүйене отырып ең жақсы деген сұратуды орындаудың жоспарын таңдайды немесе орындаудың әр альтернативасы үшін құнды есептейді.

 

 

3. Детерминантты емес ақырлы автоматтарды тұрақты өрнектер арқылы құру

 

Бір қалыпты өрнек бойынша детерминант емес шеткі автомат құру.

Детерминант емес шекті автоматтар – есептеу теориясында қолданылатын модель.

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

Шеткі автоматтардың үш түрі болады. Олар: Мур шеткі автоматтары, Милдің шеткі автоматтар және жай шеткі автоматтар.

Сонымен, детерминант шеткі автомат деп келесі параметрге сәйкес келетін құрылғы болады:

  • Q – мағынаның көптік шеткісі.
  • Σ – кіру символдарының көптік шеткісі.
  • δ – өту функциясы. Аргументтер – күй – жағдай және кіру символы, күй - жағдай – нәтижесі.
  • q0 – бастапқы күй - жағдайы, Q да болады.
  • F – жиын күй – жағдайының кіру рұқсаты, Q жиын асты болады.

Келесі түрде құрылған:

  • q0 мағынасында автомат жұмыс істей бастайды..
  • Егер автомат qi, мағынасында болса, ал кіруге b кірсе, онда автомат δ(qi, b) мағынасына өтеді.

Детерминант шеткі автоматтардың жұмысы символдар бауларын айырып тануда болады, Σ жиынына жататын. Егер, бауды өңдегенде, автомат кіру рұқсатындағы күй- жағдайда болса, онда бау кіру рұқсаты болады, ал егер олай болмаса, онда орындалмайды. Сайып келгенде, ДША кейбір тілге сұрау қояды – онымен рұқсат етілген бау жиыны, бұл тілдің алфавиті болады – Σ жиыны.

ЕСКЕРТУ Бұл шеткі автоматтардың анықтамасы есептеулердің теориясында қолданылады. Мур және Миль автоматтары негізінде цифрлық аппаратты жобалауда қолданылады.

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


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

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






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