ҚҰРЫЛЫМДАНҒАН МӘЛІМЕТ ТИПТЕРІ ТУРАЛЫ ЖАЛПЫ ҰҒЫМ



Жұмыс түрі:  Дипломдық жұмыс
Тегін:  Антиплагиат
Көлемі: 70 бет
Таңдаулыға:   
МАЗМҰНЫ

КІРІСПЕ
3

І - ТАРАУ. ҚҰРЫЛЫМДАНҒАН МӘЛІМЕТ ТИПТЕРІ ТУРАЛЫ ЖАЛПЫ ҰҒЫМ
1.1 Статикалық құрылым 5
1.2 Жартылай статикалық құрылым
26
1.3 Динамикалық құрылым
35

ІІ – ТАРАУ. MACROMEDIA FLASH ОРТАСЫНДА ЭЛЕКТРОНДЫ ОҚУЛЫҚ ЖАСАУДЫҢ
ӘДІСТЕМЕЛІК ЕРЕКШЕЛІКТЕРІ
2.1 Оқу үрдісінде қолдануға арналған электронды оқу құралдары 38
2.2 Информатика сабағын электрондық оқытудың әдістемесі
43
2.3 Macromedia Flash анимациясы
48
2.4 Macromedia Flash көмегімен жасалған электрондық оқулық
59

ІІІ – ТАРАУ. ЕҢБЕКТІ ҚОРҒАУ
3.1 Еңбекті қорғау түсінігі
63
3.2 Жұмыс жасау кезіңдегі қауіпсіздік техникасы және еңбекті қорғау
68
3.3 Есептеуіш техникасымен жұмыс істеу кезіндегі
70
қауіпсіздік техникасы ережелері
3.4 Алғашқы медициналық көмек көрсету әдістері
72

ҚОРЫТЫНДЫ
73
ҚОЛДАНЫЛҒАН ӘДЕБИЕТТЕР ТІЗІМІ
74
ҚОСЫМША
75

КІРІСПЕ

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

Никлас Вирт

Мәлімет құрылымы және алгоритм ұғымдарынсыз программа құру мүмкін емес.
Эпиграф сөздері мұны растайды. Сондықтан менің дипломдық жұмысының негізгі
мақсаты мынандай:

Мәлімет құрылымын жадыда физикалық деңгейде, т.б., және логикалық
деңгейде, т.б., программалық тілдерінде құрылымның өңделуі;

физикалық және логикалық деңгейде оларға амалдарды қолдану;

алгоритмді өңдеуде құрылымның мағынасын көрсету.

Мәлімет құрылымы және алгоритм программаны құрайтын материалдарға жұмыс
істейді. Компьютердің өзі мәлімет құрылымынан және алгоритмнен тұрады.
Құрылған мәлімет құрылымдары екілік үлкейткіштер сақталатын орындағы жады
сөздерімен және регистрлармен көрсетілген. Конструкциялық аппаратураға
енгізілген алгоритм – бұл қатал ережелердің электрондық логикалық тізбекке
енуі, мұнда жадыға енгізілген мәлімет бұйрыққа айналады. Сондықтан кез
келген компьютер бір мәлімет түрімен ғана жұмыс істейді – жеке биттермен
немесе екілік цифрлармен. Компьютер бұл мәліметтермен орталық процессордың
бұйрық жүйелері анықтайтын өзгермейтін алгоритм тобымен жұмыс істейді.
Компьютер көмегімен шығарылатын есептер бит тілдерінде көрсетілуі сирек
кездеседі. Әдетте мәліметтер сан, литер, мәтін, символ формасында және
күрделі құрылым типтері кезектелген, тізбек, ағаш формалар түрінде болады.
Абстрактілі мәлімет құрылымдарын және программа алгоритмдерін сипатталуы
программалық тілдерімен жүзеге асырылады.
Барлық программалық тілдер мәліметтер элементтеріне атау немесе
идентификатор беріп сілтеме жасайды. Программада константалар ғана
өзгеріссіз, ал басқа айнымалыларға кез келген атаулар берілуі мүмкін.
Программа орындалмай олардың атаулары анықталмайды.
Константа және айнымалылардың атаулары программистке көмектеседі, бірақ
компьютерге ол әсер етпейді. Программа мәтінін екілік кодқа ауыстыратын
компилятор, әрбір идентификаторды жады мекен – жайымен байланыстырады.
Бірақ осыны компилятор орындау үшін, ол әрбір аталған үлкейткіштің типін
хабарлау керек.
Программалық тілдермен қабылданған мәлімет типтері натуралды және бүтін
сандар, нақты сандар, жолдар және т.б. түрінде болады.
Кейбір программалық тілдерде константа немесе айнымалы типтері
компилятормен анықталады. Басқа программалық тілдерде программист әрбір
айнымалының типін енгізуін талап етеді.
Программалық тілдерде типтерді қорғау компиляция этапында орындалады.
Мысалы, мәлімет құрылымын және алгоритмдермен жұмыс істейтін PASCAL тілі
типтері қатал түрде қорғауды сақтайды. Керісінше С программалық тілі
типтерді қорғауы әлсіз болып келеді. Мұндай жағдайда C-компиляторы тек
қана ескертеді.
Алғашқы алгоритмдер саналымды есептер типі үшін сандарды көбейту, ортақ
бөлгіштерді табу, тригонометриялы функцияларды және т.б. табу үшін ойлап
табылған. Қазіргі күнде алгоритмдер: мәтіннен берілген сөзді іздеу,
оқиғаларды жоспарлау, берілген жүйеде мәліметтерді сорттау. Сандық емес
алгоритмдер міндетті түрде сан болуы шарт емес; оларды түсіну үшін ешқандай
матеметикалық түсініктер керек емес. Бірақ осыған қарамастан математикада
мұндай алгоритмдер керек, олар сандық емес есептердің дұрыс шығарылуын
дәлелдеген кезде қолданылады.
Алгоритмдерде қолданылатын мәлімет құрылымдары күрделі болуы мүмкін.
Мәліметтің дұрыс көрсетілуі программаның сәтті құрылуына әкеледі. Бірақ
дұрыс мәлімет құрылымын таңдау теориясының пайда болуы шамалы. Ең тиімдісі
құрылымды құрайтын кірпештерді анықтап алу.

І - ТАРАУ. ҚҰРЫЛЫМДАНҒАН МӘЛІМЕТ ТИПТЕРІ ТУРАЛЫ ЖАЛПЫ ҰҒЫМ

1.1 Статикалық құрылым

Cтатикалық құрылым примитивті емес құрылымдар қатарына жатады.
Өйткені, статикалық құрылым, базалық, примитивті құрылымданған жиындармен
көрсетеді. Мысалы, вектор жинақталған жиын саны ретінде берілуі мүмкін.
Анықтама бойынша статикалық құрылым басқалардан ауыспалы еместігімен
ерекшеленеді. Оған жады автоматты түрде компиляция кезінде немесе олар
жазылған программалар бөлігін активизациялау кезінде автоматты түрде
бөлінеді. Программисттің нұсқауы бойынша программалау тілдер қатары ( Pl1,
ALGOL – 60 ) статикалық құрылымды жадыға енгізе алады, бірақ бұл кезде
бөлінген жады көлемі құрылым жойылмағанша өзгеріссіз болады. Компиляция
этапындағы жадыны бөлу статикалық құрылымның қолайлы қасиеті. Оны
программист ауысуға бейім объектілерді көрсету үшін қолданады. Мысалы,
массив өлшемі алдын ала белгісіз болған жағдайда оған максимальды өлшем
бөлінеді.
Әрбір мәлімет құрылымы логикалық және физикалық деп ажыратылады.
Әдетте ана немесе мына мәліметтер құрылымдары туралы айтқанда логикалық
жағы көрсетіледі. Ал, физикалық көрсетілім логикалыққа сәйкес келмейді және
әр түрлі программалық жүйелерден ажыратылады. Физикалық құрылым өзі туралы
мәліметі бар дескрипторға немесе тақырыпшаға сәйкес келеді. Компиляция
этапында массив элементтерінің шеткі индекстері белгісіз болған жағдайда
және программа орындалған этапында ( Pl1, ALGOL – 60 тілдерінде ) массив
үшін жады бөлінген кезде дескриптор қажет. Дескриптор физикалық құрылым
сияқты жадыда сақталады және өрістерден, сипаттамадан, сандардан, өңдеуге
қатысатын қабылдағыш әдістерден және оны бейнелейтін құрылымға тәуелді
өлшемнен тұрады. Дескрипторда сақталынған параметрлер соншалықты маңызды
емес, бірақ олар құрылымға қол жеткізудің дұрыстығын тексереді және уақытты
үнемдейді. Программа тілінде құрылған дескриптор мәлімет құрылымы
программистке көрінбейтін болып келеді: құрылымға қол жеткізуге
арналған дескрипторға қарайтын командалар кодын өңдейтін компиляторды
құрайды.
Программа тіліндегі статикалық құрылым құрылымданған типпен
байланысты. Құрылымданған тип - өте күрделі мәлімет құрылымын құруға
арналған интеграция құралы. Мұндай типке мыналар жатады: жиымдар, жазбалар
( кейбір құрылым тілдерінде ) және жиын ( бұл тип барлық тілдерде бар).

Вектор

Логикалық құрылым. Вектор ( бір өлшемді массив ) – бір типке жататын
элемент саны бар мәлімет құрылымы. Әрбір вектор элементінде берілген
вектордың номері болады. Вектордың шақырылуы оның атауымен және номері
арқылы орындалады.
Машиналық көрсетілім. Құрылым элементінің мекен – жайы. Вектор
элементтері жады ұяшықтарында тізбектеле орналасады. Вектор элементінің
базалық типіне байланысты жадыдан керекті байт бөлінеді. Вектордың бір
элементін сақтау үшін жадыдан бөлінетін байт саны слот деп аталады. Вектор
сақталуына керекті жады өлшемі элемент санына байланысты бөлінетін слот
ұзындығымен анықталады.
Вектор Pascal программасында бір өлшемді жиым болып беріледі және
былай сипатталады:
атау : array [n..k] of тип ;
N – алғашқы элемент номері, ал к – соңғы элемент номері. Вектордың
жадыда берілуі мына суреттегідей:

+0 +Sizeof(тип
)
Атау [n] Атау [n+1]
+0 +Sizeof(тип
)
Атау [n] Атау [n+1]

@ аты

@ аты – вектордың немесе сол сияқты вектордың бірінші элементінің
мекен – жайы. Sizeof(тип) – слот өлшемі ( вектордың бір элемент жазу үшін
жадыдан бөлінетін байт саны ). (k-n)*Sizeof(тип) – к номерлі элементке
сәйкес келетін мекен – жайы.
Мысалы: var m1: array[-2..2] of real;
Берілген вектордың жадыдағы көрінісі:

+0 +6 +12 +18 +24
m1[-2]m1[-1]m1[0] m1[1] m1[2]

m1 (байт) мекен-жайына сәйкес келетін
элемент
массив элементінің мағынасы

C, Pascal, Fortran программалық тілдерінде компиляция кезінде жады
программа орындалмас бұрын бөлінеді және вектор типін сипаттауда шеткі
индекс мәндері анықталуы тиіс.
Pl1, ALGOL программалық тілдерінде жады динамикалық түрде бөлінгенде
индекс мәндері программа орындалған кезде берілуі мүмкін.
Бір уақытта вектормен толы үздіксіз жады облысындағы байт саны мына
формуламен анықталады.
ByteSize=(k-n+1)*Sizeof(тип)

Вектордың k, i элементін табу үшін вектор мекен – жайы және берілген
элемент қосындысымен табылады. Вектордың i элементінің табу формуласы
мынандай:
ByteNumer = ( i- n ) * Sizeof (тип),
Мекен - жайы: @ ByteNumber = @ аты + ByteNumber.

@ атауының вектордың бірінші элементінің мекен – жайы:
var МAS: array [ 5..10 ] of word.
Word – вектор элементінің базалық типі 2 байтты талап етеді,
сондықтан вектордың әрбір элементіне 2 байттан бөлінеді.
@ Mas вектор элементтерінің кестесі мынандай түрде болады.

(байт) араласуы + 0 + 2 + 4 + 6 + 8 + 10
өріс MAS[5] MAS[6] MAS[7] MAS[8] MAS[9] MAS[10]
идентификаторы

Бұл вектор жадыда орындалады: (10-5+1)+2=12 байт
Вектор элементінің 8 номермен жиыны: (8-5)+2=6
8 номерлі элемент мекен-жайы: @ Mas+6
Векторға қол жеткізуде вектор атауы және элемент номері беріледі. Сол
арқылы i элементінің мекен – жайы былай анықталады:
@Аты[i] = @Аты + i*Sizeof(тип) - n*Sizeof(тип) (1)
Бұл анықталым компиляция кезінде орындалмайды, өйткені i ауысымы
белгісіз. Сондықтан әрбір вектор элементіне назар аударғанда ғана программа
орындау кезінде элемент мекен – жайы анықталады. Ол үшін біріншіден (1)
параметр формуласы белгілі болуы керек: @ атау Sizeof(тип), n, ал
екіншіден, әрбір назар аударуда көбейту және 2 қосылу 2 операциясы орындалу
керек. (1) формуланы (2) формулаға өңдеуміз.
@аты[i] = A0 + i*Sizeof(тип) -- (2)
A0 = @аты - n*Sizeof(тип) --
Сақталынған параметр санын екіге дейін қысқартып, ал операция санын –
бірге дейін көбейтіп және бірге дейін қосамыз, өйткені АО атауы компиляция
кезінде есептелінеді және дескриптор векторында Sizeof(тип) – пен бірге
сақталынады. Әдетте дескриптор векторында шекаралық индекс атаулары да
сақталынады. Егер берілген индекс белгілі бір шектеуден асып кетсе, онда
әрбір вектор элементіне назар аударуда берілгендер шекаралықтармен
салыстырылады және программа аппатты түрде тоқталады.
Сонымен дескриптор векторында сақталынған ақпарат біріншіден қол
жеткізудің уақытын қысқартады, екіншіден қол жеткізудің дұрыстығын
тексереді. Бұл қасиеттер үшін үшін біріншіден дескрипторда орындалатын
бұйрықтардың жылдамдығы, екіншіден дескриптор бұйрықтарына жады бөліну
тиіс.
Дескрипторда векторсыз жұмыс істеуге бола ма?
Мысалы, С программалау тілінде декриптор векторы жоқ, яғни программа
орындалу кезінде сақталынбайды. С программалау тілінде жиымдардың
индексациясы міндетті түрде нолден басталады. Компилятор әрбір жиым
элементіне назар аударуда командаларды ауыстырып отырады және (1)
формулалық n=0 жағдайын өңдейді.
@аты[i] = @аты + i*Sizeof(тип)
С программалау тілінде жұмыс істеуге әдеттенген программистер атау
[i] орнына - * (атау + i) қолданады.
Біріншіден, алғашқы индексті таңдауды шектеу программист үшін
қолайсыздық тудырады, екіншіден, шекаралық индекс мәнінің болмауы сыртқы
жиымға шығу бақылауын шектетеді. С программалау тілінде жұмыс істейтін
программисттер дәл осы қателер С программасының дұрыс жұмыс істеуге
кедергі жасайтынын жақсы біледі.

Жиымдар
Логикалық құрылым.
Жиым – мәлімет құрылымы, келесі түрде сипатталады:
➢ бір типке жататын фиксирленген элемент тобы
➢ әрбір элементте өзіне сәйкес ерекше индекс тобы болады
➢ индекс саны жиым тобын анықтайды, мысалы, екі индекс – екіөлшемді, үш
индекс – үшөлшемді жиым, бір индекс – бірөлшемді немесе вектор
➢ жиым элементін шақыру жиым атымен және берілген элементтің индексі
бойынша орындалады.
Басқа анықтама: жиым – бұл вектор, әрбір элементі – вектор.
Жиым сипаттамасы:
аты : Array [n1..k1] [n2..k2] .. [nn..kn] of Тип .
Екіөлшемді жиым:
Mas2D : Array [n1..k1] [n2..k2] of Тип , немесе
Mas2D : Array [n1..k1 , n2..k2] of Тип
Екіөлшемді массивті кесте түрде көрсетуге болады: (k1-n1+1) жол және
(k2-n2+1) баған.
Физикалық құрылым. Физикалық құрылым – бұл ЭЕМ жадысында жиым
элементтерін орналастыру. (k1-n1+1) жолдан және (k2 –n2+1) бағаннан тұратын
екіөлшемді жиымның физикалық құрылымы келесі суретте көрсетілген.

Көпөлшемді жиымдар жадының шексіз облысында сақталады. Слот өлшемі
жиым элементінің базалық типімен анықталады. Жиым элемент саны және слот
өлшемі жиымды сақтау жады өлшемін анықтайды. Жадыда жиым элементін бөлу
программалау тілімен анықталады. Fortran тілінде элементтер бағанмен
орналасып, сол жақта индекстер тез ауысады, ал Pascal тілінде жол
бойынша, онда индекс бағыты оңнан солға қарай ауысады.
Екіөлшемді жиымның жадыда байттар санын анықтайтын формула:
ByteSize = (k1-n1+1)*(k2-n2+1)*SizeOf(Тип)
Массив мекен – жайы жиымның алғашқы компонентінің бірінші байт мекен
– жайы. Mas [i1,i2] жиым элементі келесіформуламен анықталады:
@ByteNumber = @mas + ByteNumber.
Мысалы:
var Mas : Array [3..5] [7..8] of Word;
Word базалық тип элементі жадыдан 2 байт талап етеді, сонда 2 кесте @
Мas сәйкес келесідей өзгереді:

(байт) өріс (байт) өріс
араласуы идентификаторы араласуы идентификаторы
+ 0 Mas[3,7] + 2 Mas[3,8]
+ 4 Mas[4,7] +6 Mas[4,8]
+ 8 Mas[5,7] + 10 Mas[5,8]

Бұл жиым жадыда: (5-3+1)*(8-7+1)*2=12 байт, ал Mas [4,8] элемент
мекен – жайы
@Mas+((4-3)*(8-7+1)+(8-7)*2 = @Mas+6

Қолданылатын амалдар.
Жиымға қолданылатын физикалық құрылымның маңызды амалы – берілген
элементке қол жеткізу. Элементке қол жеткізгеннен кейін оған кез келген
амалды қолдануға болады, яғни элементтің мәлімет типіне сәйкес келсе.
Логикалық құрылымның физикалыққа ауысуы минеризациялау процессі деп
аталады, өйткені көпөлшемді логикалық құрылым жиымы бірөлшемді физикалық
құрылымға ауысады.
(3), (4) формуласы сәйкесі және (1), (2) вектор аналогы бойынша
екіөлшемді жиымның шекаралық индекстердің өзгеруі.
[B(1)..E(1)][B(2)..E(2)], жадыда жол бойынша орналасқандар,
индекстері бар элемент мекен – жайы [I(1),I(2)] былай анықталу керек:

Addr[I(1),I(2)] = Addr[B(1),B(2)] +
{ [I(1)-B(1)] * [E(2)-B(2)+1] + [I(2)-B(2)] }*SizeOf(Тип)
(5)
Mas[B(1)..E(2)][B(2)..E(2)]...[B(n) ..E(n)]
алынады:
Addr[I(1),I(2),...,I(n)] = Addr[B(1),B(2),...B(n)] -
n n
(6)
- Sizeof(Тип)*СУММА[B(m)*D(m)] + Sizeof(Тип)*СУММА[I(m)*D(m)]
m=1 m=1
мұнда Dm жиымға тәуелді жол бойынша орналасуы :
D(m)=[E(m+1)-B(m+1)+1]*D(m+1), мұнда m = n-1,...,1 және D(n)=1
Баған бойынша орналасуы:
D(m)=[E(m-1)-B(m-1)+1]*D(m-1), мұнда m = 2,...,n және D(1)=1

Элементтің мекен – жайын анықтауды ең қиыны үшінші (6) формуланы
құруда, ал алғашқы екеуі индекске тәуелсіз және алдын ала анықталуы мүмкін.
D(m) алдын ала есептелуі мүмкін және жиым дискрипторында сақталынады. Жиым
дескрипторы құрайды:
➢ бастапқы жиым мекен – жайы Addr[I(1),I(2),...,I(n)]
➢ жиым өлшем саны – n
➢ тұрақты минеризациялау формуласын құрайтындар. (6) формуланы құрайтын
алғашқы екеуі
➢ жиымдағы n – нің әрбіреуі
➢ шекаралық индекс мәні – B(i), E(i)
➢ жиым формуласын минеризациялау – D (i)
Жиымның бір анықтамасында айтылады: вектор, оның әрбір элементі -
вектор. Кейбір программалық тілдер көпөлшемді жиымнан біреуі алуға
мүмкіндік береді және оларды аз өлшемді жиым деп таниды.
Мысалы: егер PL1 программасындағы екіөлшемді жиым:
Declare A(10,10) BINARE FIXED;
онда: A(1,I), A(2,I), ..., A(10, I) элементтен тұратын A[*,1] – бірөлшемді
жиымға назар аударады.
Джокер символы * берілген джокер индексіне сәйкес келетін, өлшемге
байланысты жиымның барлық элементі таңдалынады дегенді білдіреді.
Джокерді қолдануда барлығына және элементке, жиымға немесе таңдалынған
шешімге топтық амалдарды қолдануға болады.
Мысалы: A(*,I) = A(*,I) + 1
Жиымға қолданатын логикалық деңгейдегі амалдарға жиымды сорттау, кілт
бойынша элемент іздеуді жатқызуға болады. Іздеу алгоритмі және сорттаудың
кең таралған түріне келесі тарауларда қарастырылады.
Айлифф векторы көмегімен табылатын элемент мекен – жайы.
Жоғары көрсетілген формулаларға қарағанда көпөлшемді жиымның элемент
мекен – жайын табу көп уақытты талап етеді, өйткені, мұнда қосу, көбейту
амалдары орындалуы қажет және сандар жиым өлшеміне сәйкес келуі шарт.
Көбейту амалын қолданбауға болады, егер келесі әдісті
пайдаланса.

Бірінші деңгейдегі
Айлифф векторы

Негізгі дескриптор

.
.
.

(В)
.
.
.

j1

Екінші деңгейдегі
Айлифф векторы

-1

0

1



-1

0

1

j2

B(
4,
-1
,0
)
1

2

3

4

5

6

7

8

9

10
3

5

1

4

5

7

1

3

4

7
6

9

2

7

8

4

10

12

3

5
3

5

1

4

5

7

1

3

4

7
6

9

2

7

8

4

10

12

3

5
1

2

3

4

5

6

7

8

9

10

row
i

1

3

7

8

9
1

2

3

4

5

Жолдар
номері

а) б)

1.1.2 сур. Қиылған матрицаның құрылым байланысы әдәсә бойынша
көрінісі.

Қиылған матрицаның көрінісі үшін MATRIX_ELEMENT ( матрица элементі )
атты (6) құрылым базасының шыңы керек. Әрбір V,R,C өрісі матрицаның жодық
немесе бағандық элементінің индексін құрайды. Left және UP өрісі ең қысқа
жол номерін нұсқайды.

1.1.3 сур. Қиылған матрица көрінісі үшін ең жоғарғы формат.

7 суретте жоғары пункте сипатталғандай А матрицасы үшін ең жоғарғы
шыңды қолданатын көпбайланысты құрылым бейнеленген. Циклдық тізімде барлық
жолдар және бағандар көрсетілген.
Баған тізімі жоғарғы шыңмен бірге жол тізімінде құрауы мүмкін.
Қос және өшіру алгоритмдерін қолдану үшін барлық жолдар және бағандар
басты жоғарғы шыңдары бар. Әрбір жолдық тізімнің басты шыңы С өрісінде ноль
құрайды. Ал, баған тізімінің басты жоғарғы шыңы R өрісінде ноль құрайды.
Нольдік элементті құрайтын жолдар және бағандар басты жоғарғы шыңмен
көрсетілген. Мұнда LEFT және UP өрістері өздерін нұсқайды.
Көпбайланысты құрылымның бағыты жоғарғы және солға нұсқауы қызық болып
көрінуі мүмкін. Сканерленген кезде матрица элементінің тізімінің жолдық
және бағандық номерлер реті кему реті бойынша орналасады. Мұндай әдіс
құрылымға жаңа шыңдарды қосуды реттеу үшін қолданылады. Матрицаға қосылған
жаңа шыңдар жолдық және бағандық индекстер кему реті бойынша орналасады.
Осындай ретпен орналасса, жаңа шыңдар басты жоғарғы шыңдардан кейін
орналасады және ешқандай тізімдерді қарастыруды талап етпейді.

1.1.4. сурет

Жиын
Логикалық құрылым. Жиын – бір типке жататын қайталанбайтын мәлімет
құрылымы. Жиын барлық базалық типті қабылдайды. Ал базалық тип 256
символдан аспауы керек. Сондықтан оларға : byte, char жатады.
Физикалық құрылым. Жиын жадыда жиым биті секілді сақталынады. Мұнда
әрбір бит элементтің жарияланған жиынға тиістілігін көрсетеді. Жиынның
максимальды элемент саны 256 , ал жиынның мәлімет типі 32 байттан аспауы
керек.
Жиынның мәлімет типі үшін бөлінгетін байт санын анықтайтын формула:
ByteSize = (max div 8)-(min div 8) + 1, мұнда max және min – берілген
жиынның базалық типінің жоғары және төменгі шекарасы.
Е элементі үшін байт номерін анықтайтын формула:
ByteNumber = (E div 8)-(min div 8),
Бит номерінің осы ішкі байт формуласы:

BitNumber = E mod 8
{===== Программалық мысал 3.3 =====}
const max=255; min=0; E=13;
var S : set of byte;
ByteSize, ByteNumb, BitNumb : byte;
begin
S:=[]; { жиыцнның нольденуі }
S:=S+[E]; { санды жиынға жазу }
ByteSize:=(max div 8)-(min div 8)+1;
Bytenumb:=(E div 8)-(min div 8);
BitNumb:=E mod 8;
writeln(bytesize); { 32 экранында }
writeln(bytenumb); { 1 экранында }
writeln(bitnumb); { 5 экранында }
end.

Сандық жиындар
Byte типі – стандарттық сандық тип, ол жиынның формальдануы үшін
базалық болады.
3 кестеде жиынның сақталуы көрсетілген.
(байт) араласуы Машина жадындағы байт көрінісі
( номер разряды)

@S+0 7
6
... ... ... ... ... ... ... ... 5
4
@S+0 3
2
1
0


... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

255
254
253
252
251
250
249
248

7
0

3 - кесте.

@S – жиынның мәлімет типінің мекен – жайы. Егер элемент жиынға кіретін
болса, онда бит өрісі 1-ге орналасады, ал кірмесе онда 0-ге орналасады.
Мысалы, S : set of byte; S:=[15,19];
Бұл жағдайдағы жады мазмұны:
@S+0 - 00000000 @S+2 - 00001000
@S+1 - 10000000 . . . . . .
@S+31 – 00000000

Символдық жиындар
Символдық жиындар жадыда сандық жиындар секілді сақталады. Бірақ
мұнда сандар емес ASCII код символдары сақталады.
Мысалы, S : set of char; S:=['A','C'];
Бұл жағдайда S жиынның жадыда сақталуы келесідей:

@S+0 - 00000000 . . . . . .
. . . . . . @S+31 - 00000000
@S+8 - 00001010

Саналатын типтер элементінен тұратын жиындар.
Саналатын типі бар базалық типті жиын. Byte типі болатын базалық
типті жиын секілді сақталынады. Бірақ, саналатын типтегі элемент санына
тәуелді жадыдан орын алады.
Мысалы:

Type
Video=(MDA,CGA,HGC,EGA,EGAm,VGA,VGA m,SVGA,PGA,XGA);
Var
S : set of Video;
Жадыда орын алады:
ByteSize = (9 div 8)-(0 div 8)+1=2 байт

8 суретте ауысымды S үшін жадының бөлінуі

1.1.5 сур. set of Video ауысым типі үшін жадыдан орын бөлінуі.

Егер S:=[CGA,SVGA] операторы орындалса, онда жады мазмұны былай
болады:

@S+0 - 10000010
@S+1 - 00000000

Интервалды типті жиын.
Интервалды типі бар базалық типті жиын секілді сақталады. Жарияланған
интервалдағы кірісті элементтер санына байланысты жадыдан орын бөлінеді.
Мысалы:
type S=10..17;
var I: set of S;
Алғаш қарағандағы секілді бірінші элемент оннан немесе нольді биттен
басталмайды. Мына формулаға қарағанда 10 mod 8=2; жиынның бірінші элементі
екінші биттен басталады. Дегенмен осы интервалдағы жиын бір байтқа еркін
орналасса да, ол (17 div 8)-(10 div 8)+1=8 байтта орналасады.
Бұл жиын 1.1.6 суреттегі көріністе.

1.1.6 сур. Set of S ауысымды типтің көрінісі.

Жиынды құрастыруда интервалды тип үнемді және берілген шекараға
байланысты жадыда орналасады.
Мысалы:
Type S = 510..520;
Var I : S;
begin I:=[512]; end.
Ауысымды І – дің жадыдағы көрінісі:
@i+0 - 00000000 @i+1 – 00000001

Жиындарға қолданатын амалдар
S1, S2, S3: set of byte болсын. Осы жиынға келесі амалдар орындалады.
➢ Жиындарды біріктіру: S1 + S2 екі жиын элементрерінің жиыны.
➢ Жиындарды қиылыстыру: S1*S2 екі жиынның ортақ элементтері.
➢ а in S1: жиын элементтерінің тиістілігінің тексерілуі: егер элемент
S1 жиынына кірсе, онда true, ал егер кірмесе – false.

Жазба
Жазбаның логикалық және машиналық бейнеленуі.
Жазба - әртүрлі мәлімет типін сипаттайтын реттелген жиын өрістері.
Жазба программалық модельдерді сипаттауға өте қолайлы.
Берілген мысал – студент мәлімет.
Объект студент келесі қасиеттерге ие:
➢ жеке номер - оңтайлы санмен сипатталған
➢ аты – жөні - жол символымен сипатталады.

мысалы: var
rec:record
num :byte; { студенттің жеке номері }
name :string[20]; { аты –жөні }
fac, group:string[7]; { факультет, топ }
math,comp,lang :byte; { математика бойынша баға }
end; {техникадан, ағылшыннан }

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

1.1.10 сур.Жадыдағы ауысымды record типінің кезектес
өріс түріндегі көрінісі.

ә) өріс жазбаларының атауларын нұсқайтын байланысқан тізім түрінде.
Мұндай ұйымдастыруда элементке тез назар аударуды талап етеді, бірақ сақтау
үшін жадыны үнемдемейді. 1.1.11 суретте жадыда элементте нұсқайтын
байланысқан тізімді сақтайтын құрылым көрсетілген.
Ескерту: Жадыны үнемдеу үшін дескриптордағы нұсқағыштардың орнына
сәйкесінше әрекеттер жазылу керек.
С программалау тілі дескриптордағы жазбаны программа орындалғанға
дейін сақталмайды. Өріс құрылымдары жады слоттарында орналасады, ал жеке
өрістердің назарын компиляция кезінде олардың мекен – жайына алмастырады.
Интегралданған мәлімет құрылымдары өріс жазбасы бола алады, яғни олар
вектор, жиым немесе басқа жазбалар. (COBOL, PL1) кейбір программалық
тілдері сипаттау кезінде енгізілген жазбаларды нұсқайды, ал (Pascal,C)
басқаларында енгізілген деңгей автоматты түрде анықталады.

Жазба дескрипторы


rec student 7

Byte 1 Num

Strin21 Name
g

Strin8 Fac
g

Strin8 Group
g

Byte 1 Math

Byte 1 Comp

byte 1 lang
өріс жазбаның нұсқауышы

1.1.11 сур. Жадыдағы ауысымды record типінің байланысқан тізбек түріндегі
көрініс.

Өріс жазбасы басқа жазба болуы мүмкін. Міндетті түрде өзі болмауы керек.
Бұл алдымен компилятор жадыға жазба үшін орын болуымен байланысты. Мысалы:
жазба түрі мынандай болсын:

type rec = record
f1 : integer;
f2 : char[2];
f3 : rec; end;

Компилятор мұндай жазба үшін қалай жадыны бөледі. f1 өрісі үшін 2
байт, f2 өрісі үшін 2 байт, f3 өрісі үшін үшін f1, f2, f3 тұратын жазбаны
бөледі. С компиляторы мұндай кезде жады жетіспейді деген хабарламаны жайдан
жай шығармайды.
Бірақ жазба өрісі болып осындай секілді басқа жазбаны нұсқайтын
нұсқауыш болуы мүмкін: нұсқауыштың жады көлемі белгілі , сондықтан жадыдан
орын бөлуден қиындықтар тумайды.
Бұл әдіс прогрммалауда бір типті жазбалар арасында байланыс орнатуды
қолданылады.
Жазбаға қолданылатын амалдар.
Квалификация амалы – жазба үшін таңдалынған өріс жазбасына қол
жеткізудің маңызды амалдардың бірі. Барлық программалық тілдерде бұл амал
былай сипатталады:
ауысымды жазбаның атауы. өріс атауы
Stud1.num және Stud1.math констркциялары сәйкесінше num және math
өрістеріне қол жеткізеді.
Таңдалынған өрістердің типіне қарай кез келген амалдар орындалады.
Көптеген программалық тілдер жеке өрістермен емес, жалпы жазбамен
жұмыс жасайтын амалдарды құрайды. Бұл бір жазбаның атауын басқа бір типті
жазба меншіктеу және екі бір типті жазбаларды теңтең еместілігін салыстыру
амалдары.

Нұсқаулары бар жазбалар.
Программамен қолданбалы есептер қатарында объект тобымен соқтығысуы
мүмкін. Егер нысананың жалпы қасиеті өнделсе онда ол қайта сол алгоритм
бойынша өндіріледі, ал егер спецификалық қасиет бойынша өндіріледі. Барлық
топты сипаттау үшін сол топтардың қасиет жиынын қосып сипаттау керек. Бірақ
жады үлестірімінің көзқарасына қарағанда үнемсіз және логикалық көзқарасқа
қарағанда ыңғайсыз. Егер әрбір топтың құрылымы бойынша сипаттаса, онда ол
ортақ алгоритм бойынша жалпы қасиеттерді өндір мүмкіншілігінен айырылады.
Мұндай программалық тілдердің дамуы программистке нұсқаулары бар
жазбаларды ұсынвды. Нұсқаулары бар жазба екі бөліктен тұрады. Бірінші
бөлікте жазбамен модельденетін барлық нысана топтарына ортақ өрістер
сипатталады. Өнделу кезінде екінші бөліктегі өрістің қайсы нұсқасы өнделу
керектігі және берілген нысанаға жататын топты идентификациялауға мүмкіндік
беретін өріс осы өрістердің арасында кездеседі. Жазбанаң екінші бөлігі
қиылыспайтын қасиеттерді құрайды. Мұндай қасиеттердің әрбәр жиынасыт үшін
жеке сипаттаулар бар. Программалау тілдері әртүрлі нұсқауларда қасиет -
өрістердің атауы қайталанбауды талап етеді. (Pascal) немесе (C) әрбір
нұсқаудың атауын талап етеді. Бірінші жағдайда өрістің идентификациясы
жазбаның нұсқаулар бөлігіне нұсқауы қарапайым жазбаның жағдайынан
айырмашылығы жоқ.
ауысымды жазбаның атауы. өріс атауы
Екінші жағдайда идентификация қиындайды.
ауысымды – жазба аты нұсқау аты өріс аты
Мысалдағы нұсқаулары бар жазбаны қарастырайық. Видеотерминал
экранында қарапайым геометриялық фигуралар – шеңбер, тіктөртбұрыш, үшбұрыш
орналассын. Экран қалпын сипаттайтынмәлімет қоры барлық бір типті жазбалы
фигураларды сипаттайды.
Кез келген фигураны сипаттау үшін ол сүйеніш нүктелері бар координаты
және түс коды болу керек. Басқа фигура үшін параметрлер басқа болады.
Шеңбер үшін радиус, тіктөртбұрыш үшін параллель емес жақтар ұзындығы,
үшбұрыш үшін – екі басқа төбенің координаталары.
Pascal тілінде нұсқаулары бар жазба үшін есеп былай сипатталады.
type figure = record
fig_type : char; { фигура түрі }
x0, y0 : word; { сүйеніш нүктенің координаталары }
color : byte; { түс }
case fig_t : char of
'C': ( radius : word); { шеңбер радиусы }
'R': (len1, len2 : word); { тіктөртбұрыш жақтарының ұзыңдығы }
'T': (x1,y1,x2,y2 : word); { екі төбе координаталары }
end;
С программалау тілінді:
typedef struct
{ char fig_type; * фигура түрі *
unsigned int x0, y0; * сүйеніш нүктенің координаталары *
unsigned char color; * түс *
union
{ struct
{ unsigned int radius; * шеңбер радиусы *
} cyrcle;
struct
{ unsigned int len1, len2; * тіктөртбұрыш жақтарының ұзыңдығы *
} rectangle;
struct
{ unsigned int x1,y1,x2,y2; * екі төбе координаталары *
} triangle;
} fig_t;
} figure;

Шеңбер сипатталуы сақталатын программада figure типінің fig1 ауысымы
анықталса, онда Pascal тілінде шеңбер радиуысы мына сипатта болады.
Fig1.radius, ал С тілінде fig1.circle.radius.
Fig_type атауы бар өріс фигураларды идентификациялауға арналған. Мыс:
С - шеңбер, R - тіктөртбұрыш және T - үшбұрыш символдарын кодтайды.
Нұсқаулары бар жазба үшін жадыдан орын бөліну 12 суретте көретілген.
Суретте көрсетілгендей нұсқаулары бар жазбаасты үшін ең үлкен
нұсқаудың өзіне кез келген жағдайда жады көлемінен орын бөлінеді. Егер жады
кіші нұсқау үшін бөлінсе, онда оның жартысы қолданылмайды.

Шеңбер тіктөртбұрыш үшбұрыш

1.1.12 сур. Нұсқаулары бар жазбалары үшін жадыдан орын бөлінуі.

Кестелер.
Жазба туралы сөз болғанда, яғни жазба өрісі интегралданған мәлімет
құрылымы – вектор, массив, басқа жазба болуы мүмкін. Вектор және жиым
элементтері де интегралданған құрылым бола алады. Физикалық көзқарастан
қарағанда кесте вектор секілді, ал элементі жазба. Кестенің логикалық
ерекшілігі оның элементіне қол жеткізу ( индекс ) номер бойынша емес, кілт
бойынша жүргізіледі. Кілт – бұл қасиет, берілген жазбаны біртипті жазбаға
идентифициялайды. Кілт жазбаның құрамындағы өріске қосылуы мүмкін, бірақ
жазбаға қосылмай, жазбаның жағдайына байланысты есептеледі. Кестеде бір
немесе бірнеше кілт болады. Мысалы, студент туралы мәліметі бар кесте
студенттің жеке номері немесе фамилия бойынша интегралдануы мүмкін.
Кестемен жұмыс істеу кезінде кілт бойынша жазбаға қол жеткізу амалы
негізгі амал болып табылады. Ол іздеу процедурасы бойынша іске асырылады.
Кестеде реттеу кілт бойынша орындалғандықтан үнемі кестеде сорттау амалын
жүргізген дұрыс.
Кейде кестені фиксирленген және ауысымды жазба ұзындығымен айырады.
Идентивті жазбаны біріктірген кесте фиксирленген ұзындықтағы жазба болады.
Нұсқаулары бар жазба есептері қарастырылса, онда ол ауысымды ұзындық.
Негізінде ауысымды ұзындықтағы жазбаны кесте аз кездеседі. Осындай кестенің
артықшылығы –жадыны үнемдейді. Ауысымды ұзындықтағы жазбалы кесте жазбаның
өспелі ретте өнделеді. Әдетте мұндай кестенің элементіне қол жеткізу оңай.
Ол 2 қадаммен орындалады. Бірінші қадамда жазбаның ұзындығы бар тұрақты
жазба бөлігі таңдалынады. Екінші қадамда ұзындығына сәйкес жазбаның
ауыспалы бөлігі таңдалынады. Жазбаның мекен – жайына оның ұзындығын тіркеу
арқылы келесі жазбаның мекен – жайы алынады.
Ауыспалы ұзындықтағы жазбалы кесте есепті программалауда,ғы машиналық
кодтауда қолданылады. Әрбір машиналық команда жазба, бір немесе бірнеше
байттан тұрады. Бірінші байт - әрқашанда амал коды, қалған байт форматы мен
саны команда типімен анықталады. Процессор берілген программалық счетчиктің
мекен – жайы бойынша байтты таңдайды. Программалық счеичиктің мазмұны
команда ұзындығына ұлғаяды.
2. Жартылай статикалық құрылым

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

Стектар
Стектің логикалық құрылымы.
Стек – ауыспалы ұзындығы бар кезектелген тізім. Стек шыңы деп аталатын
тізімнен элемент қосылып алынады. LIFO (Last – In – First – Out – ең ақыры
кеелді – бірінші алынады ) принципі бойынша функционалдануы – дүкен және
кезек стекі. Стек мысалы: винтовкалы оқ магазины, вагондарды реттеу үшін
жабық темір жолы разъезд.
Стек үшін негізгі амал – жаңа элемент қосу ( push - итеру ) және (pop
- алыну) элементті алу.
Қосымша амалдардың да көмегі болуы мүмкін:
➢ стекта ағымдағы элемент санын анықтау
➢ стекті тазалау
➢ негізгі амал комбинациясы секілді өнделетін стек шыңынан
элемент оқуы
х:=pop(stack); push(stack,x)

Түсінікті болу үшін кішігірім мысал қарастырайық: стектен элементтің
қосылу және алыну принципі.
➢ а) босты
➢ б – г) ‘A’ ‘B’ ‘C’ атты элементті кезектен кейінқосу
➢ д – е) ‘C’ ‘B’ элементтерін стектен кезектен кейін өшіру
➢ ж) ‘D’ элементін стекке қосу

1.1. суретте көрсетілгендей стекті үстелдегі кітап тобын
( элементтерді) айтуға болады. Әрбір кітапқа мысалы A, B,C, D
деген ат берейік. Сонда үстелде кітаптар болмаса, онда біз стек бос екнін
айта аламыз. Осы уақытта бос үстелге кезекпен кітап қоямыз. Сонда стек шыңы
n+1 болады. Стектен элемент жоғарыдан төмен қарай алынады.

Стек шыңы

1.2.1. сурет Стектан элементті қосу алу

Стектің машиналық көрсетілімі және амалдардың орындалуы
Стектің көрінісі үшін статикалық жадыдан вектор секілді жады
бөлінеді. Дескрипторда стек шыңы мекен – жайы атты стек нұсқауышы болады.
Нұсқауыштың стектің бірінші бос элементін немесе соңғы элементті нұсқайды.
Нұсқауыш стектің бірінші бос элементін нұсқайды және мекен – жайдың өсуіне
қарай өседі.
Стекке элементті қосарда нұсқауыш нұсқайтын орынға жазылады, содан
кейін нұсқауыш келесі бос элементті нұсқайтындай модифицияланады.
Стектен элемент алу амалы стек нұсқауышының модификациясынан құралады
және стек нұсқауы нұсқайтын атау таңдауынан тұрады. Таңдалынған элемент
орналасқан слот таңдалынғаннан кейін ол бос болып есептелінеді.
Стекті тазалау амалы – алғашқы атаудың стектегі нұсқауыш жазбасына
тепе – тең.
Стектің өлшемі нұсқауыштардың әр түрлігінің есептеліне келеді.
4.1 мысалды мекен – жайдың кішіреюінеи қарай орындалатын амал
көрсетілген. Стек нұсқауышы әрқашан бірінші бос элементін нұсқайды.
4.1 және 4.3 мысалдарында модульде құрылым элементі үшін мәлімет типі
және құрылым өлшемі анықталады.
const SIZE = ...;
type data = ...;
{==== Программалық мысал 4.1 ====}
{ Стек }
unit Stack;
Interface
const SIZE=...; { стек өлшемі }
type data = ...; { элемент кез келген типте болуы мүмкін }
Procedure StackInit;
Procedure StackClr;
Function StackPush(a : data) : boolean;
Function StackPop(Var a : data) : boolean;
Function StackSize : integer;
Implementation
Var StA : array[1..SIZE] of data; { Стек – мәліметі}
{ стек шыңынын нұсқауышы }
top : integer;
Procedure StackInit; {** басына қарай инициализациялау }
begin top:=SIZE; end; {** тазалау = инициализация }
Procedure StackClr;
begin top:=SIZE; end;
{ ** стекке элемент енгізу }
Function StackPush(a: data) : boolean;
begin
if top=0 then StackPush:=false
else begin { енгізу, содан кейін нұсқауышты ұлғайту }
StA[top]:=a; top:=top-1; StackPush:=true;
end; end; { StackPush }
{ ** стек элементін таңдау }
Function StackPop(var a: data) : boolean;
begin
if top=SIZE then StackPop:=false
else begin { нұсқауыш ұлғаяды содан кейін таңдау }
top:=top+1; a:=StA[top]; StackPop:=true;
end; end; { StackPop }
Function StackSize : integer; {** өлшемді анықтау }
begin StackSize:=SIZE-top; end;
END.
Есептеуіш жүйедегі стектер.
Есептеуіш техниканың көптеген есептері үшін стек мәлімет құрылымы
ыңғайлы болып келеді. Осындай есептерге әдетте процедураларды шақыру болып
табылады.
Мысалы, А процедурасы болсын, ол В процедурасын шақырады, ал ол С
процедурасын шақырады. А процедурасы В процедурасын шақырғанда А
процедурасы тоқталып, басқару процедураның кірісті нүктесіне беріледі. В С-
ны шақырғанда, В тоқталып, басқару С процедурасына беріледі. С процедурасы
тоқталғанда С процедурасын шақыратын нүктесіне В-ға оралады. В
орындалғаннан кейін В шақыру нүктесі бар А-ға оралады. Бұл жұмыста стектің
оралу мекен – жайлары жазылса, жұмыс жеңілденеді. Мұнда А В процедурасын
шақырғанда, стек А-ға оралуының мекен – жайына жазады, ал В С –ны
шақырғанда, стек В процедураның мекен – жайын жазады. Ал С біткенде, оралу
мекен – жайы стек шыңынан шығады.
Көптеген жаңартылған микропроцессорларда стек аппараты бар. Аппаратты стек
ОЗУ –да орналасады, стек нұсқауышы SS:SP арнайы регисторда. Аппаратты стек
мекен – жайдың кішіреюінің жағына ұлғаяды. Ал нұсқауыш бірінші бос
элементті нұсқайды. CALL және INT командалары орындалуы аппаратты стектегі
оралу мекен – жай жазбасын құрайды. RET және IRET командалары өзіне
аппаратты стектегі оралу мекен – жайын және осы мекен –жай бойынша
басқаруды берілуді құрайды. PUSH, POP екі команда басқа программалық есеп
үшін аппаратты стекті қолдануды қамтамасыз етеді.
Көптеген (Pascal, C т.б.) программмалық тілдер стекті оған локальды
ауысымды процедура үшін қолданады. Стектің ауысымды локалы үшін әрбір
процедура активизацияланады. Жады бөлінеді, процедура орындалып болғаннан
кейін жады босайды. Стек шыңында әрқашанда жады болады, ол ағымдағы
процедураға ауысымды локальды ағымды етеді.
Бұл әдіс ресурсты процедураны тез өңдейді. Процедура өзін - өзі
шақырғанда, онда оның барлық ауысымды локаль үшін стекте жаңа жады бөлінеді
және кірістірілген шақыру өзінің локальды ауысыммен жұмыс жасайды. Кірісті
шақыру біткеннен кейін стектегі ауысымды облыс жадысы босайды және келесі
деңгейдегі локальды ауысым ағымды болады. Осыған орай Pascal және C
тілдерінде процедура функциялар өз - өздерін шақыра алады.
Рекурсивті процедуралар стекта рекурсиясыз өңделе алады. 3.17 мысалда
рекурсивті процедурада Хоара сұрыпталуы көрсетілген. Ал 4.2 мысалында сол
алгоритмнің өңделуі көрсетілген.

{==== Программалық мысал 4.2 ====}
{ тездетілген Хоара сұрыпталуы (стек) }
Procedure Sort(a : Seq); { 3.8 бөлімін қара }
type board=record { өңделетін бөліктің шекарасы }
i0, j0 : integer; end;
Var i0, j0, i, j, x : integer;
flag_j : boolean;
stack : array[1..N] of board; { стек }
stp : integer; { стек нұсқауышы ұлғаю жаққа жұмыс жасайды }
begin { стекке ортақ шекаралар кіреді. }
stp:=1; stack[i].i0:=1; stack[i].j0:=N;
while stp0 do { стектен шекара таңдау }
begin i0:=stack[stp].i0; j0:=stack[stp].j0; stp:=stp-1;
i:=i0; j:=j0; flag_j:=false;{ i0 – дан j0-ға қарай орын ауыстыру}
... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Теміржол бөлігіндегі кабельдік желіні жобалау жұмыстары
Ақпаратты жинақтаумен байланыс
Информатика пәнінен лекциялық сабақтардың тезистері
Деректер базасына сұраныс құру
Оқушылардың бірін-бірі оқытуы
Паскаль программалау тілінің мүмкіншіліктері
Кұрылымдық бағдарламалау
Нанның ескіру процесінің мәні
ЖАСАНДЫ ИНТЕЛЛЕКТ НЕГІЗДЕРІ
Биліктің қалыптасуының тәсілдері мен көздері тақырыбына дәлелді эссе
Пәндер