Ќазаќ мемлекеттік ќыздар педагогика институты



бет32/53
Дата06.06.2022
өлшемі1,32 Mb.
#36433
түріСабақ
1   ...   28   29   30   31   32   33   34   35   ...   53
Байланысты:
аза стан Республикасыны Білім ж не ылым министрлігі аза мем

Әдебиеттер
Негізгі әдебиеттер: 8 [189-214] , 3 [60-75]
Қосымша әдебиеттер: 3[26-29] – б, 8[19-23] – б.
Бақылау сұрақтары

  1. Жиым элементтері компьютер жадында қалай орналасады? Көп өлшемді жиым элементтері ше?

  2. Жиым элементтерін қалай сұрыптайды? Оның ең үлкен және ең кіші элементтері қалай анықталады?

  3. 1959 ж Д.Шелл қандай сұрыптауды ұсынды?

  4. Төрттік, екілік, бірлік сұрыптау деген не?

  5. HeapSort программасы қалай сұрыпталады?

  6. Ч.Хоар қандай сұрыптау әдісін ұсынды?



Дәріс №14. Көрсеткіштер мен базалық айнымалылар

  • Динамикалық жады. Статикалық жады

  • Базалық айнымалылар

  • Көрсеткіш типті мәліметтерді өңдеу

  • Көрсеткіш типті мәліметтерді өңдеу процедуралары мен функциялары

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

  • Машиналық кодтағы программа;

  • Сипаттау бөліміндегі программа мәліметтері;

  • Программаның тұрақтылары мен айнымалылары және пайдаланылған модульдер орналасады.

Жадының бұл бөлінуі программаның орындалуы барысында тұрақты, статикалық болып табылады. Олардың адресі мен бөлінген жады ұяшығының тұрақты.
Жадыны басқарудың негізі ұяшық байт адрестері болып табылады. Сол үшін паскальда мәліметтердің арнайы типі енгізілген – осы жады байтының адресі мән болып табылатын жады ұяшығының көрсеткіші. Көрсеткішті көбінесе жадыға сілтеме деп те атайды.
Көрсеткіштер екі түрлі болады: типтік және типтік емес. Типтік емес көрсеткішті жадыда осы айнымалының типін паскальда сипаттауда pointerқызметші сөзі пайдаланылады. Ал, типтік айнымалыда: ^<тип> құрылымы пайдаланылады. Мұндағы ^ - белгісі типтік көрсеткіштің белгісі, ал <тип> - пайдаланушы type бөлігінде енгізген айнымалы типтің немесе кез келген қарапайым, стандартты типтің атауы. Көрсеткішті файлдық тип үшін пайдалануға болмайды.
Кез келген түрдегі көрсеткіштің мәні жады байтының адресі болып табылады. Типтік көрсеткіштің типтік емес көрсеткіштен айырмашылығы - сол тип бойынша жады бөлігінің ұзындығы анықталатын мәліметтер типінің белгісімен сүйемелденеді және оған жадыдағы оның екілік кодпен берілуі де кіреді. Бұл типтік көрсеткіштер бойынша жадыдағы байттың қажетті мөлшерін автоматты түрде бөлуді және оның жады бөлігінде дұрыс жазылуын қамтамасыз етеді. Егер жады ^real типті типтік көрсеткішпен ерекшеленген болса, онда оған 6 байт бөлінеді.
Паскаль тілінде көрсеткіш типті арнайы тұрақты бар, ол Nil қызметші сөзімен белгіленеді. Оның мәні бос адрес болып табылады (сегмент номірі – 0, ығысу – 0). Ноль сандық мәліметтер үшін қандай роль атқарса, бұл тұрақты көрсеткіштер үшін дәл сондай роль атқарады. Көрсеткіш типті айнымалылар алдын-ала енгізілген пайдаланушының көрсеткіш типі бойынша сипатталады. Бұл айнымалыларға екі сөз үшін төрт байт орын бөлінеді, сөз бойынша сегмент мәніне және ұяшықтың ығысу адресіне. Көрсеткіш типті айнымалының тікелей сипатталуы:
Var ATAY,..,ATAY:^тип;
ATAY,..,ATAY:Pointer;
Құрылымдық типтің сиапатталуы бойынша типтік көрсеткішті сипаттауға болмайды.
Базалық айнымалылар

Типтік көрсеткіш бойынша жадыда анықталатын айнымалылар базалық айнымалылар деп аталады. Базалық айнымалылыар төмендегідей сипатталады:


ТКА^
Мұндағы ТКА – типтік көрсеткішті айнымалы аты, ал ^ белгісі – көрсеткіш бойынша базалық айнымалы екенін білдіреді. Мысалы,
Ub^ - байт типті типтік көрсеткішке ub айнымалысы бойынша byte типті базалық айнымалы атауы;
Umr^ - umr айнымалы көрсеткіші бойынша masreal типті базалық айнымалы атауы (нақты типті массив);
Urats^ - urats айнымалы көрсеткіші бойынша rats типті базалық айнымалы атауы (рационал сан типті);
Umr^[3] - Umr^ базалық айнымалы массивінің үшінші элементінің атауы;
Urats^.chis1 – рационал сан типті Urats^ айнымалысының сандық өріс атауы.
Типтерді жадының кез келген байтына типтік көрсеткіш бойынша негіздендіру принципі биттерді байттық негіздендіру мазмұны бойынша қарастыруға мүмкіндік береді. Негізделген айнымалылардың семантикасы осылайша тұжырымдалады. Негізделген айнымалыларды оперативті жадының кез келген ұяшығына пайдалануға болады. Негізінен айнымалыларды негіздеу динамикалық жадының байттары үшін жүргізіледі. Бұл айнымалылар динамикалық айнымалылыар деп аталады. Басқаша айтқанда, динамикалық айнымалылар – бұл динамикалық жадының ұяшықтарындағы базалық айнымалылар.


Көрсеткіш типті мәліметтерді өңдеу
Көрсеткіш типті мәліметтерді өңдеу үшін Паскаль тілінде операциялар, өрнектер, функциялар және процедуралар енгізілген.
Мұндай мәліметтер үшін олардың адрес-мәндерін салыстыруға теңдік немесе теңсіздік салыстыру операциялары қарастырылған. Сонымен қатар, кез келген типті айнымалы адресін есептеу операциясы бар, ол @ белгісімен белгіленеді. Бұл бір орынды (унарлық) жоғары приоритетті операция. Оның операндасы: файлдан басқа кез келген типті айнымалы аты, функция немесе процедура аты болуы мүмкін. Операция былай жазылады: @<аты>оның нәтижесі операндаған бөлінген жады бөлігінің бірінші байтының адресі болады және бұл мән Pointer типті болады. Мысалы , программада қосымша мынадай жазулар келтірілсін:
Var b: byte; x:real; c: char; s: str5;
W: masreal; prost: setbyte; alf:setchar; rc:rats;
Сипатталған айнымалылардың адрестерін алу үшін оларды төмендегідей жазуға болады:
B,x,c,s,w,prost,alf,rats
Көрсеткіш типті өрнек
Көрсеткіш типті өрнекте бір ғана операнда болады: <көрсеткіш типті операнд>. Көрсеткіш типті операнд:

  • Мәні бос болып келген типі көрсеткіш nil тұрақтысы;

  • Көрсеткіш типті айнымалы;

  • @<айнымалы аты, функциялар процедуралар>;

  • Мәні көрсеткіш типті көрсткіш функция.

Өрнекке мысалдар : nil, @w, addr(w).
Көрсеткіш типті мәліметтерге қолданылатын меншіктеу операторы. Мәні айнымалы көрсеткіш болатын көрсеткіш типті өрнекте меншіктеу операторы әдеттегідей жазылады:
<айнымалы аты>: = <өрнек>;
Айнымалылар мен өрнектер төмендегідей талапты қанағаттандыруы тиіс:

  1. Айнымалы типтік көрсеткішке басқа типті айнымалы көрсеткіш мәнін меншіктеуге болмайды

  2. Айнымалы типтік көрсеткішке типтік емес көрсеткіш мәнін меншіктеуге болады және керісінше айнымалы типтік емес көрсеткішке типтік көрсеткіш мәнін көрсетуге болады.

Мысалы, жоғарыда келтірілген айнымалылардың сипатталуы бойынша төмендегі операторлар дұрыс:
А) ub:= @ PROST;
Ә) uchar:=ADDR(b);
Б) ub:=@b; p1:=ub; uchar:=p1;
Төмендегі жазылу дұрыс емес:
в) uchar:=ub;


Көрсеткіш типті мәліметтерді өңдеу процедуралары мен функциялары
Көрсеткіштермен жұмыс істеуді және динамикалық жадыны басқару үшін Turbo Pascal жүйесінде стандартты функциялар мен процедуралар пайдаланылады. Оларды екі топқа бөлуге болады.
1. Көрсеткіштерді өңдеу тобы
2. Динамикалық жадыны басқару тобы.
Бірінші топқа жеті функция кіреді: мәні типтік емес көрсеткіш болып келген екі функция (ADDR,PTR), байт адресінің құрама бөлігін есептеуге арналған төрт функция (CSEG, DSEG, SEG,OFS), осы типті айнымалы функцияларға бөлінетін байтпен берілген жады бөлігінің ұзындығын есептеуге арналған SIZEOF функциясы. Бұл келтірілген функциялар оперативті жадының кез келген байтының адресін есептеуге мүмкіндік береді.


Достарыңызбен бөлісу:
1   ...   28   29   30   31   32   33   34   35   ...   53




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

    Басты бет