Jedním ze standardních typů Pascalu je typ definovaný výčtem. Pro tento typ však nejsou
zavedeny žádné vstupní a výstupní operace, a tak si je vždy musíme naprogramovat sami. Ač to může
znít složitě, jde o velmi jednoduchou věc.
Užití tohoto typu si ukážeme na měsících v roce, protože v případě měsíců je vhodné užít
jejich pojmenování, než jen číslování.
Zadání:
{Program demonstruje osetreni vstupu a vystupu vyctoveho typu.
Uzivatel zadava cislo mesice. To je prevedeno na vyctovy typ mesic.
Pote je vypsano hlaseni o tom, ktery mesic byl zadan.
Pro pripad zadani jineho cisla mesice nez je 1-12, je zaveden
"mesic" Error.
Testovani mesice na stav Error umozni vypsat chybove hlaseni.}
uses crt;
type tMonth=(Leden,Unor,Brezen,Duben,Kveten,Cerven,
Cervenec,Srpen,Zari,Rijen,Listopad,Prosinec, Error);
{Vyctovy typ mesic, doplnen o "mesic" Error, znacici chybovy stav}
var Mesic:tMonth;
Procedure CtiMesic(var Mesic:tMonth);
{Procedura nacte cislo mesice a prevede jej na vyctovy typ tMonth.
Zada-li uzivatel cislo mimo interval <1;12>, nastavi se hodnota mesice
na Error.}
var Mes:byte;
begin {CtiMesic}
write('Zadejte cislo mesice: ');
readln(Mes);
case Mes of
1: Mesic:=Leden;
2: Mesic:=Unor;
3: Mesic:=Brezen;
4: Mesic:=Duben;
5: Mesic:=Kveten;
6: Mesic:=Cerven;
7: Mesic:=Cervenec;
8: Mesic:=Srpen;
9: Mesic:=Zari;
10: Mesic:=Rijen;
11: Mesic:=Listopad;
12: Mesic:=Prosinec;
else Mesic:=Error;
end; {case}
end; {CtiMesic}
Procedure PisMesic(Mesic:tMonth);
{Procedura vypise hodnotu mesice. Vypisuji se jen skutecne mesice, osetreni
chyboveho stavu probiha vne teto procedury.}
begin {PisMesic}
case Mesic of
Leden: write('Leden');
Unor: write('Unor');
Brezen: write('Brezen');
Duben: write('Duben');
Kveten: write('Kveten');
Cerven: write('Cerven');
Cervenec: write('Cervenec');
Srpen: write('Srpen');
Zari: write('Zari');
Rijen: write('Rijen');
Listopad: write('Listopad');
Prosinec: write('Prosinec');
end; {case}
end; {PisMesic}
begin
clrscr; {Smaz obrazovku}
CtiMesic(Mesic); {Nacti mesic}
writeln; {Prejdi na novy radek}
if Mesic<>Error then begin {Byl-li zadan spravny mesic}
write('Zadali jste mesic '); { Vypsani }
PisMesic(Mesic); { }
writeln('.'); { zpravy.}
end else writeln('Zadali jste peknou blbost.'); {Vypis chyboveho hlaseni}
writeln; {Prejdi na novy radek}
writeln('Stisknete ENTER k ukonceni programu.'); {Vypis informacni udaj}
readln; {Cekej na stisk ENTER}
end.
|
|
12. 2. 2000 |
|
|
||
|
|