Айнымалы типтер стандартты типтерден өзге типтерді қабылдай алады. Әр түрлі типтер үшін әр түрлі амалдар қолданыла алады. Мысалы, нақты сандар үшін: +,-,*,/ амалдары пайдаланылады, бірақ оған DІV/бөлінді табу/, MOD /бүтін сандарды бүтін бөлгендегі қалдықты табу/ амалдарын пайдалануға болмайды. Жаңа тип құру берілгендерді мамандандырумен бірдей, ол бір жағынан амал орындау жолын жеңілдетсе, екінші жағынан қате жібермеуге мүмкіндік береді. Сонымен, айнымалы тип стандартты типтерге өзгеше жаңа тип құруға мүмкіндік береді. Бұл типке саналатын және шектелген типтер жатады.
Саналатын типтерді шешілетін есептің түріне байланысты, орындаушылар өздері анықтайды.
Саналатын типтер TYPE/тип/ қызмет сөзі арқылы былай жазылады:
TYPE тип аты = (тұрақтылар тізімі);
VAR айнымалы аты : тип аты;
Тұрақтылар үшін әр түрлі информация алынады, оны пайдаланушы өзі таңдайды, тұрақтылар бір-бірімен үтір арқылы ажыратылады. Мысалы:
TYPE жыл = (қыс, көктем, жаз, күз);
VAR А : жыл;
Мұнда айнымалы аты А, ол: қыс, көктем, жаз, күздің бірін қабылдай алады.
Жоғарыдағы жазылу түрінің орнына былай жазуға болады:
VAR А: (қыс, көктем, жаз, күз);
0 1 2 3
Мұнда әрбір тұрақты рет нөмірі /сәйкес 0,1,2,3/ бойынша анықталады, сондықтан оларға салыстыру: <,<=,<,<>,>,>=,= амалдарын және ORD(x), PRED(x), SUCC(x) стандартты функцияларын пайдалануға болады.
Мысал. Аңдардың аттарының тізімі берілген деп барыстан және еліктен кейінгі аңның рет нөмірін табуға программа құрайық.
Program AH(іnput, output);
Type AA=(түлкі, қасқыр, қоян, сиыр, барыс, қарсақ, аю, елік, қой, ешкі);
Var P1, P2 : AA
N1, N2 : іnteger;
Begіn
P1:=Pred(Барыс);
P2:=Succ(Eлік);
N1:=Ord(P1)+1;
N2:=Ord(P2)+1;
Wrіteln (‘барыстың алдындағы аңның рет нөмірі=’, N1 : 2);
Wrіteln (‘еліктен кейінгі аңның рет нөмірі=’, N2 : 2)
End.
Берілгендердің шектелген типі
Егер қандай да айнымалы өзінің типінде көрсетілген барлық мәндерді қабылдамай, оның белгілі бір аралықтағы ғана мәндерін қабылдайтын болса, онда оны шектелген типтегі айнымалы дейді. Мысалы, типтерді анықтау бөлігінде ай аттары тип ретінде көрсетілсе:
TYPE ай = (қаңтар, ақпан, наурыз, көкек, мамыр, маусым, шілде, тамыз, қыркүйек, қазан, қараша, желтоқсан);
ал пайдаланғанда олардың ішінен жаз айларын ғана пайдалану қажет болса, мысалы,
TYPE жаз = (маусым, шілде, тамыз);
онда ай жазға қарағанда негізгі типті береді де, Жаз оның шектелген типі болады.
Жалпы түрде шектелген тип былай бейнеленеді:
TYPE тип аты = тұрақты .. тұрақты;
‘..’ - І-ші тұрақтыдан соңғы тұрақтыға дейін дегенді білдіреді.
Бұл жағдайда төмендегі заңдылықтар орындалуы қажет:
1. Шеткі екі тұрақтының типі бірдей болуы қажет.
2. Негізгі тип үшін нақты (REAL) типтен өзге кез келген қарапайым типтерді пайдалануға болады. Мысалы:
бүтін тип – ІNDEX = 0..63;
символдық тип – LETTER = ‘A’ .. ’Z’;
санаулы тип – күз = .. қараша;
3. Шектелген типтің тұрақтысының алғашқы мәні соңғы мәнінен көп болмауы қажет.
4. Шектелген типтің айнымалылары, айнымалылар бөлігінде бейнеленуі қажет. Мысалы,
……….
Var char1, char2 : LETTER;
шахмат тақта алаңы : ІNDEX;
……….
Достарыңызбен бөлісу: |