Динамикалық облыс


Жұмыс түрі: Материал
Тегін: Антиплагиат
Көлемі: 5 бет
Таңдаулыға:
1. Динамикалық облыс.
Программамен жұмыс істеу кезінде әдетте айнымалылар мен тұрақтылардың жадтың қай орнына жазылатыны ескерілмейді де, олардың атаулары бойынша жұмыс істей беріледі. Бұл әдіс жалпы талапты қанағаттандырмайтын жағдайлар да бар. Мысалы, массивтермен жұмыс істеу үшіп оларды алдын ала сипаттап (жадтан орындар бөліп) қою керек. Кіші көлемді массивпен жұмыс істеу кезінде үлкен орын болу жадты үнемді пайдалану төсіліне жатпайды. Кейде 64 Кбайттан артық орын алатын үлкен келемді деректермен жұмыс істеуге тура келеді. Турбо Паскальда бір типті деректер үшін 64 Кбайттық, орын бөлінеді де, біраз орын бөлінген соң орын жетіспегені жөнінде хабар беріп, компьютер тоқтап қалады. Мұндай жағдайда не әшейінде де, жадты ұтымды пайдалану әдісі - көрсеткішті және динамикалық облысты пайдалану.
Көрсеткіш (Роinter) - басқа айнымалыға сілтемені (басқа сөзбен айтқанда, деректер сақталатын жад облысының кездейсоқ адресін) сақтайтын айнымалы (4-сурет)
Керсеткіш Әдеттегі айнымалы
4-сурет. Айнымалы көрсеткіш
Көрсеткіштің сипатталу түрі:
<атау> : ^тип; не <атау>: Pointer
<атау> - көрсеткіш атауы; тип - көрсеткіш сілтейтін әдеттегі ай-нымалылар типі (яғни көрсеткіш (сілтеме) күрделі деректер типтерінің бірі) ; ^ - сипатталған айнымалының көрсеткіш екенін білдіру белгісі. Мысалы, Interger типті айнымалы облысын Р көрсеткіші арқылы сипаттау арқылы var Р:^interger; арқылы жазылады.
Көрсеткішке деректерді меншіктеу жөне оқу үшін көрсеткіш атауының соңына ^ белгісін қойып жазу керек. Мысалы, р^:=25; write(p^) ; (Меншіктеу операторының орнына әдеттегідей енгізу операторын пайдадану да мүмкін: геаd(p^) ) .
Роinter көрсеткіші - айнымалыны жалпы түрде (типке байланыссыз) сипаттау.
Динамикалық облыс - программа мен деректер үшін әдетте бөлінетін сегменттен басқа, Р көрсеткіші пайдаланатын (көрсететін) жад облысы. Оны "Үйінді (Куча) " деп те атайды. Динамикалық облыстан Р адресін таңдау операторлары:
NEW (P) не Getmen(P, ‹Облыс көлемі›)
Динамикалық облыстан NEW операторы таңдайтын облыс ете үлкен болуы да мүмкін. Getmem арқылы таңдалатын облыс бүтін санмен (байтпен) беріледі, оны < Облыс көлемі> орнына қолдан енгізу керек, ол 65521-тен аспайтын кез келген сан болуы мүмкін.
NEW не Getmem операторын енгізу алдында көрсеткіш бос болып, ешнәрсеге сілтеме жасамайды. Ал, көрсеткіш пайдаланған соң оның ішіндегісін өшіріп, адресті бос етіп қойған дұрыс. Ол орындалмаса, программа бір мезетте кезекті динамикалық айнымалыны жасай алмай қалуы мүмкін.
Көрсеткішті адреске көрсетуден босату операторлары:
Dispose (P)
не Freemem (P, ‹Облыс көлемі›)
(Программада Dispose - ды New операторын пайдаланған соң, ал, Freemem-ді Getmem-нен соң енгізген жөн) .
Турбо Паскальда көрсеткіштің осы мезетте ешнәрсеге сілтемейтінін білдіретін қызметші сөз де бар - NіІ . Оның жазылуы: Р:=Nil ;
Мысал. 3. 7, 18. 4 сандарын динамикалық жадқа жазу және олардың қосындысын экранға шығару керек.
Var p1, p2, p3: ^real;
Begin pl: p2:=nil; p3:nil;
{ Бұл алғашқы кезеңде pl, p2, p3 ешнәрсеге }
{ сілтемейтінін білдіреді, сондықтан мұндай}
{операторларды енгізбеу де мүмкін}
New (pl), New (p2), New (p3)
{Берілген сандарды енгізу}
Write (сандар-?) readln (pl^, p2^)
р3^:=р1+р2^; writeln (p3^=p3^) ;
dispose (p1) ; dispose (p2) ; dispose (p3) ;
end.
Егер v1, v2 бір типті айнымалыға көрсеткіш болса, онда оларды бір-біріне меншіктеуге болады:
v1:= v2: не v2:=v1;
Бұл кезде олар бір ғана айнымалыға (адреске) нұсқалады. (Көрсеткіштер үшін меншіктеу және шарт таңбалары бойынша салыстыру операцияларын ғана орындау мүмкін) .
2. Жазба. Байланысты тізімдер
Көрсеткіштерді пайдаланып, жазбалар (тораптар) мен байланысты тізімдер сияқты күрделі динамикалық құрылымдар жасау да мүмкін (динамикалық облыста жазба байланысты тізімдердің элементтері түрінде қарастырылады. Төменгі мысал көрсеткішті пайдалану тәсілін көрсету үшін ғана берілді) .
1-мысал. {Шифр, Тегі-Аты} құрылымды 1011 Ахметов Қ жазбасын көрсеткіш арқылы жадқа жазу және оны экранға шығару керек.
Program jazu
Type kst=^student
Student = record cipher: integer
Tegi: string [25] ;
End;
Var v: kst;
Begin new (v) ; v^. cipher: =1011; v^. tegi:=Ахметов Қ;
Writeln (v^. cipher:5, v^. tegi:25) ;
Dispose (v) end.
Мұндағы белгіленген: v- kst типті жадуға көрсеткіш; v^. cipher, v^tegi -жазба элементтері.
Байланысты тізім - жазбалардан тұратын бірнеше тораптан құралған тізбек. Оны байланысты түрде құру, экранға шығару және тізімге торап қосу мен қажетсіз бір торабын алып тастап әдістерінің жай деректер файлымен жұмыс әдістерін ерекшеліктері жеткілікті. Мұнда тізімнің әр элементі екі бөлімнен тұратын торап (узел) етіп қарастырылады. Бірінші бөлім - негізгі (информациялық жазба), екіншісі - келесі элементпен байланысты орнату бөлімі (11. 4-суретте оларға көрсеткіш (→) нұсқап тұр) .
→ → . . . →
Байланысты тізімнің схемалық графигі
Пайдаланған әдебиеттер:
... жалғасыО. Камардинов Информатика - «Турбо Паскаль тілінде программалау»бөлімі,
Алматы «Ғылым» ғылыми баспа орталығы 2004ж.
О. Сейітқұлов «Программалау тілі» - Алматы 2002ж.
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.

Ақпарат
Қосымша
Email: info@stud.kz