Programozás 2 (Pascal)
2
Felsorolt
típus, record, set típusok
-
felsorolt
típus
-
record
típus
-
set
(halmaz) típus
2.1 Felsorolt
típus
A
programozásban az eddig felsorolt típusokon kívül (integer, string, byte,
boolean, char, array...) használhatunk saját adattípusokat is. Ezeket először
a type utasítással meg kell adnunk. Az egyik ilyen típus a felsorolt típus,
amely csak a felsorolt értékek valamelyikét veheti fel. Pl.
program
Pelda05;
type nagybetu = 'A'..'Z';
szamjegy = 0..9;
nap = (hetfo, kedd, szerda, csutortok, pentek,
szombat,
vasarnap);
var a:nagybetu;
b:szamjegy;
n:nap;
begin
{
program }
end.
Ezeket a típusokat
nem olvashatjuk be közvetlenül a readln paranccsal billentyűzetről és
nem is írhatjuk ki az értéküket a write paranccsal a képernyőre.
Beolvasásuk és kiírásuk a következőképpen történhet:
program Pelda06;
type nap = (hetfo, kedd, szerda, csutortok, pentek,
szombat,
vasarnap);
var n:nap;
i:integer;
begin
{beolvasas}
writeln('1 - hetfo');
writeln('2 - kedd');
writeln('3 - szerda');
writeln('4 - csutortok');
writeln('5 - pentek');
writeln('6 - szombat');
writeln('7 - vasarnap');
write('Addj meg egy szamot (1-7): ');
readln(i);
case i of
1: n:=hetfo;
2: n:=kedd;
3: n:=szerda;
4: n:=csutortok;
5: n:=pentek;
6: n:=szombat;
7: n:=vasarnap;
end;
{kiiras}
write('Az altalad megadott nap a ');
case n of
hetfo: writeln('hetfo.');
kedd: writeln('kedd.');
szerda: writeln('szerda.');
csutortok: writeln('csutortok.');
pentek: writeln('pentek.');
szombat: writeln('szombat.');
vasarnap: writeln('vasarnap.');
end;
end.
2.2 Record típus
A record
típus mezõkbõl áll, melyek egyedi változóként kezelhetõk.
Használatát példán szemléltetjük:
program
Pelda07;
type szemely = record
nev: string;
szul_ev:integer;
end;
var a:array [1..5] of szemely;
i,jelen:integer;
function beolvas:szemely;
var x:szemely;
begin
write('Nev: ');
readln(x.nev);
write('Szuletesi ev: ');
readln(x.szul_ev);
beolvas:=x;
end;
begin
for i:=1 to 5 do
begin
writeln('Kerem az ',i,'. szemely adatait...');
a[i]:=beolvas;
end;
write('Milyen evet irunk most? (pl.2004) :');
readln(jelen);
for i:=1 to 5 do
writeln(a[i].nev,' ',jelen-a[i].szul_ev,' eves.');
end.
2.3 Set (halmaz) típus
A halmaz típus
(set of ...) használatát is egy példa segítségével mutatjuk be.
A feladatunk
az volt, hogy egy beolvasott szövegben felasznált betűket írjuk ki ABC
sorrendben, minden betűt csak egyszer és minden betűnek a nagybetűs formája
legyen kiírva.
A feladathoz definiáltunk egy halmazt, amelyet először beállítottunk üresre,
majd a betűket sorban beleraktuk ebbe a halmazba. Végül egy for ciklus
segítségével végignéztük, hogy az ABC melyik betűje van ebben a halmazban
(in). Ha az adott betű benne volt a halmazban, kiírtuk a képernyőre.
program
Pelda08;
const betu = ['A'..'Z','a'..'z'];
type nagybetu = 'A'..'Z';
var h:set of nagybetu;
s:string;
i:integer;
ch:char;
begin
write('Irj be egy modnatot: ');
readln(s);
h:=[];
for i:=1 to length(s) do
if s[i] in betu then h:=h+[upcase(s[i])];
write('Felhasznalt betuk:');
for ch:='A' to 'Z' do
if ch in h then write(ch:2);
writeln;
end.
|