Оқулық Қазақстан Республикасы Білім жəне ғылым министрлігі бекіткен Алматы, 2011 1



бет83/210
Дата06.01.2022
өлшемі4,42 Mb.
#16437
түріОқулық
1   ...   79   80   81   82   83   84   85   86   ...   210
Нұсқалы жазбалар. Кейде əртүрлі типті мəліметтерді, кейбір өрістерінің мəніне қарай, бір жазбаның түрлі нұсқалары ретінде қарауға тура келеді. Осындай жағдайларды іске асыру үшін жаз-ба бекітілген өрістер тізімінен басқа, өзермелі бөлімдерден тұруы мүмкін.
Диаграммадан көріп отырғандай өзгермелі бөлім бірнеше нұсқадан тұруы мүмкін. Оның əр-қайсысында бір нұсқаға тиісті


156

өрістер тізімі беріледі. Алдын ала əр нұсқаның сəйкестігін тек-серетін тұрақтысы беріледі
Нұсқалы жазбаларды анықтайтын бірнеше мысалдар қарасты-райық:


  1. типті алдын ала сипатталмаған нұсқа:

Type M:record case {} byte of {}




    1. (by: array[0..3] of byte); {}




    1. (wo: array[0..1] of word); {}




    1. (lo: longint); {}

end; ...


  1. типті алдын ала сипаттау арқылы:

Type Figure=(Square,Triangle,Circle); {саналушы тип}
Paramf=record {тип –нұсқалы жазба} X,Y:real; {бекітілген өріс}

case {өзгермелі бөлім}


Fig:Figure of {тұрақтының сəйкестігін анықтайтын тип жəне айнымалы} Square: (Side:real);
Triangle: (Side1,Side2,Side3:real);
Circle: (Radius:real);
end;

Var Param:Paramf; {айнымалыны сипаттау}

«Нұсқалы жазба» типі айнымалысының мəні қарапайым жаз-бадағыдай пернетақтадан енгізу, литерлік тұрақты жəне типтік тұрақты көмегімен меншіктеледі. Алайда инициалданған ай-нымалыны жариялаған кезде өзгермелі бөлім үшін тек бір нұсқа беріледі.
Мысалы, жазбада адам немесе кеме жайлы мəліметтер бар делік (Абылай хан – адам жəне кеме аты). Бұл үшін келесі нұсқалы жазбаны сипаттаймыз.
Type
Forma=record {адамның жəне кеменің тұрақты орнын анықтайтын жазба}



157

case {өзгермелі бөлім}
boolean of {нұсқаның сəйкестігін тексеретін
тұрақты типі}
{адам үшін нұсқа}
True: (BirthPlace:string[40]; {мекен-жайы} {кеме үшін нұсқа}
False: (Country:string[20]; {елі}
EntryPort: string[20]; {порт} EntryDate: array[1..3] of word; {дата} Count:word) {сиымдылығы} end; ...
Екі жазбаның бастапқы мəндерін меншіктейтін типтік тұ-рақты: Object2 – адам жайлы жазба, Object 1 – кеме жайлы төмендегідей анықталады:
Const
Object1: Forma = (Country: ‘Қазақстан’;
EntryPort: ‘Ақтау’;
EntryDate: (16,3,89);
Count:12);
Object2: Forma = (BirthPlace: ‘Астана’); ...
Барлық нұсқаларда өріс идентификаторлары əр түрлі болуы керек жəне бекітілген өріс бөлімі атымен сəйкес келмеуі керек. Нұсқаның сəйкестігін анықтайтын кейбір тұрақты мəндері үшін, жазбаның өзгермелі бөлімінде өріс болмауы мүмкін. Мұндай жағдайда қос нүктеден кейін бос тізім «( )» қоюға болады.
Сонымен бірге, нұсқалы жазбаларды пайдаланғанда кейбір ерекшеліктерді есте сақтау керек:
- Жазба типті айнымалыны орналастыруға жадыдан, əр уа-қытта нұсқаның ең үлкен көлеміне сəйкес бекітілген көлемді орны бөлінеді. Демек, əр түрлі нұсқалар жадының бір бөлігінде, “бірінің орнына бірі” жазылады.


  1. Турбо Паскаль тілі трансляторының нұсқалы жазбалардың дұрыс өңделгендігін қадағалайтын ешқандай құралы жоқ. Демек, кез келген уақытта барлық нұсқалардың кез келген өрісіне қол жеткізуге болады.


158

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

Мысал:
Type


Perem=record {нұсқалы жазба} case byte of

  1. Wo:word; {word типті айнымалы}




  1. Lo:longint; {longint типті айнымалы}




  1. Re:real; {real типті айнымалы}

end;
Var C:Perem;


Begin ...
C.Lo:=0; {ауданды тазалаймыз}
C.Wo:=10; {нұсқалы өріске шаблон бойынша таңбасыз бүтін 10 санын жазамыз} WriteLn(C.Lo:10); ... {нұсқалы өріс мəні ша-блон бойынша басылып шығады}
Бұл мысалда өріске жадыдан 6 байт орын бөлінеді. Тұтынушы осы өріспен, жазба өрістерінің сəйкес идентификаторын қолданып, кез келген үлгі (шаблон) бойынша жұмыс істей алады.




Достарыңызбен бөлісу:
1   ...   79   80   81   82   83   84   85   86   ...   210




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

    Басты бет