Programozás 1 (Pascal)
10 Tömbök
(array of ...)
10.1 Tömbök (array of ...)
Eddigi
programjainkban
egyedi változókkal dolgoztunk, mindegyik változónak külön neve volt. Pl
var
a,b,c,i,n:integer;

Sok
feladatot lehetetlen egyedi változókkal megoldanunk. Gondoljunk például egy
névsor tárolására, melyben akár 100-200 név is lehet.
Ehhez szükségünk
van olyan adattípusra, melyben több adatot tárolhatunk. Az eddig megismert típusok
elemi típusok voltak. Ezekből az elemi típusokból adatszerkezeteket, összetett
típusokat építhetünk. Ilyen összetett típus a tömb is.
A tömb típusát
a következő képpen kell megadnunk:
var
tömb_neve : array [ indexhatárok
] of alaptípus ;
Az indexhatárok
megadják a tömb méretét (hogy hány elemet tárolhatunk benne), az alaptípus
pedig az elemek típusát (ez lehet pl. integer, string, char,
boolean, byte, stb).
Például:
var a:array
[1..7] of string;

Ez létrehoz egy
7-elemű, stringekből álló tömböt. Ebben tárolhatunk például egy
7 elemből álló névsort. A tömb egyes elemeit az elemek indexén keresztül
érhetjük el úgy, hogy a tömb neve után szögletes zárójelben megadjuk az
elem indexét. A tömbünk tehát a következő elemekből áll: a[1],
a[2], ..., a[7].
A tömb beolvasása
történhet például egy egyszerű ciklussal:
for i:=1 to 7
do begin
write('Add meg a(z) ',i,'. nevet: ');
readln(a[i]);
end;
Hasonlóan történhet
a tömb kiírása, feldolgozása is ciklusok segítségével.
Feladat:
Készítsünk programot, amely beolvas 10 egész számot egy tömbbe, majd kiírja
őket fordított sorrendben.
Megoldás:
A programunk a következő képen néz ki:
program
Pelda25a; var a:array[1..10] of integer;
i:integer; begin for i:=1 to 10 do begin
write(i,'. szam: ');
readln(a[i]);
end; writeln('A szamok forditott sorrendben:'); for i:=10 downto 1 do write(a[i]:6); writeln; end.
10.2 Konstansok használata
Programunkban
használhatunk konstansokat is. Ezeket a var előtt a const utasítással
adhatjuk meg:
const konstansneve
= értéke ;
Például ha az
előző programban 10 elem helyett 20-at szeretnénk beolvasni majd kiírni, több
helyen meg kéne változtatnunk a programunkat - a 10-et átírni 20-ra. Ha
program elején bevezetünk egy konstanst (állandót) a tömb elemeinek számára
és a programban mindenhol ezt használjuk, akkor később ha meg akarjuk változtatni
a programban a beolvasandó elemek számát elég ennek a konstansnak az értékét
megváltoztatni a programunk elején. Az előző programunk például így is nézhetett
volna ki:
program
Pelda25b;
const tombmerete=10;
var a:array[1..tombmerete] of integer;
i:integer;
begin
for i:=1 to tombmerete do begin
write(i,'. szam: ');
readln(a[i]);
end;
writeln('A szamok forditott sorrendben:');
for i:=tombmerete downto 1 do write(a[i]:6);
writeln;
end.
10.3 Tömb elemeinek generálása
Készítsünk
programot, melyben egy tömb elemeit véletlenszerűen kigenerálja majd kiírja a
képernyőre. A tömb elemeinek értéke 1 és 100 közötti
szám legyen.
Ehhez
a már régebben megismert random függvényt fogjuk használni. Mivel egy
tömbről van szó, a generálást ciklus segítségével fogjuk elvégezni, hasonlóan
ahogy az elemek kiírását is a képernyőre. Programunk így néz ki:
program Pelda26;
const n=20;
{a tömb
elemeinek a száma}
var
a: array[1..n] of integer;
i: integer;
begin
randomize;
for i:=1 to n do a[i]:=random(100)+1;
for i:=1 to n do write(a[i],', ');
writeln;
end.
|