Есеп шы?аруда жазба — ?ріс деп аталатын компоненттерден ??рал?ан м?ліметтерді? Turbo Pascal ж?йесіндегі ??рылымы
Есеп шығаруда жазба - өріс деп аталатын компоненттерден құралған мәліметтердің Turbo Pascal жүйесіндегі құрылымы
Жазба- өріс деп аталатын компоненттерден құралған мәліметтердің структурасы (компоненттер саны шектеулі). Өрістің мәліметтері бірдей типке жатады,ал әр түрлі өрістерде олар әртүрлі болуы мүмкін. Жазбалар ең жалпы және икемді тип деп саналады. Әртүрлі элементтерден мәліметтердің структурасын қалыптастыруға болады. Жазбаның массивтерден айырмашылығы:
Жазбаны құрастырушы элементтер(өрістер) бірыңғай типтерге жатуы мүмкін.
Жазба, құрастырушы элементтерінің (өрістерінің) атауларынан ғана (Өріс идентификаторы) тікелей анықталады .
Тұрақты өрісті жазбалар.
Record типті анықтағанда әр компоненттің типі және идентификаторы көрсетіледі. Record типінің баяндалуының жалпы түрі, типтер бөлімінде былай баяндалады.
TYPE< жаңа тип атауы >= RECORD
Id11, id12,...,id1n: Тип_1 <өрістердің типтері>;
---------------------------
id11.id12,...,idkn:Тип_k;
End;
Var <жазба атауы>:< тип_атауы >;
Мысалы: Паскаль тілінде комплексттік сандар үшін стандартты Type белгіленген. Программа құрылымында комплексттік стандартты қолдану үшін жазба типін (Record) пайдаланған ыңғайлы болады. (жазба типі екі нақты типті (real) өрістерден тұрады.)
Type student=record
Wo, Ma:real;
End;
Var x,y: stydent;
Student- жазба аты.
Wo, Ma- өрістердің айнымалылары.
X,Y-Student типтегі аинымалылар(жазба).
Мысалы: Уақыт жазбасы, шектелген типтен анықталған үш өрістен (күні,айы,жылы) құрылған болса:
Type Уақыт=Record
Күн:1..31;
Ай: 1..12;
Жыл: 1990..1999;
End;
Var
D:уақыт;
Жазба айнымалысының өрісін программа денесінде пайдаланғанда жазба айнымалысының идентификаторв мен нүктемен бөлектелген өрістің идентификаторы көрсетіледі, мысалы:
X.RE:=2.5; X.TM:=3.4; D.күн:=16; D.Ай:=6; D.жыл:= 1984;
Паскаль тілінде жазба типін басқадай күрделі типтерді ұйымдастыру үшін пайдалануға болады. Мысалы, жазба типіне сәйкес массивті былай анықтауға болады:
Type жанұя=(әке,шеше,бала_1, бала_2);
Var туысқан:array[жанұя] of уақыт;
Мұнда, уақыт жазбасы жоғарыда баяндалған жазба типі. Туасқан массиві, жанұя мүшелерінің туған уақытын белгілеуге ыңғайлы, жазбаларынан тұрады.
Жазба өрісінің типін Record типін баяндауға тікелей анықтауға немесе бұрынырақ баяндалған типтің атауымен көрсетуге болады.
Мысал келтіру.
With нұсқауы (Жалғастыру операторы)
Бұл нұсқау жазбаның элементтеріне оңай оралуға мүмкіндік береді. Бұл жағдайда жазба аты жалғастыру нұсқауының тақырыбында жазылады да, ал блокта тек элементтердің аты ғана пайдаланылады.
With<жазба аты> Do
Begin
<жазба элементтердің аттарын қамтитын нұсқау>
End;
Жазбалық типке мысал:
uses Crt;
Type Info=record
l:Word;
c:String[7];
m:String[13];
End;
const n=5;
Cube:Array [1..n] of Info=
((l: 3; c: 'көк'; m: 'ағаштан' ),
(l: 8; c: 'қызыл'; m: 'металлдан'),
(l: 3; c: 'жасыл'; m: 'ағаштан' ),
(l: 4; c: 'сары'; m: 'металлдан'),
(l: 5; c: 'көк'; m: 'картоннан' ));
var i,q1,q2,q3,q4,q5,q6: 0..n;
v:LongInt;
begin
q1:=0; q2:=0; q3:=0; q4:=0; v:=0;
q5:=0; q6:=0;
for i:=1 to n do
begin
with Cube[i] do
begin
{a} if c= 'қызыл'then Inc(q1);
if c= 'сары' then Inc(q2);
if c= 'жасыл'then Inc(q3);
if c= 'көк'then Inc(q4);
Inc(v,l*Sqr(l));
{б} if (m= 'ағаштан' ) and (l=3) then Inc(q5);
if (m= 'металлдан') and (l>5) then Inc(q6);
End
End;
{вывод}
Writeln('қызылдан:',q1,', сарыдан:',q2,', жасылдан:',q3,', көктен: ',q4);
Writeln('Қосынды өлшемі: ',v);
Writeln(' 3 см қабырғалы ағаш кубиктер: ', q5);
Writeln(' Қабырғасы 5 см-ден үлкен металл кубиктер: ',q6);
readln
End.