Navigation


RSS: tutorialok Jelenleg 5 vendég és 0 tag van az oldalon.

Tömbök-1

szerző: elodani
dátum: 2009-06-02
Kategóriák:
  Pascal/Alapok

Nos nézzük az alapproblémánkat:

Ha sok azonos típusú adattal kell dolgoznunk, akkor minden egyes változót külön kéne deklarálni (Ez rettentő fáradtságos, és időigényes nem beszélve arról, hogy az olvasásuk írásuk is bonyolult lenne).

Viszont itt a segítség: Azonos típusú adatokat tömbben is tárolhatunk

Előnyei:
+Egyetlen deklarációval létrehozható
+Az adatok könnyen elérhetők
+A kódunk sokkal áttekinthetőbb lesz
+ciklussal könnyedén feldolgozhatók

Hátránya:
-futás közben nem változtathatjuk a méretét

Deklarációja:
VAR tomb: array[1..10] of integer;

Azt hiszem a fenti kis sorocska egy kis magyarázatra szorul
A tömb-deklarálás kulcsszava az array mögötte [] jelek között adjuk meg, hány elemű tömböt szeretnénk.

Általában a számozást 0-tól vagy 1 től kezdjük (szerintem kezdjük inkább 1-től a jobb érthetőség kedvéért, de persze akár 213 tól is kezdhetnénk, de annak semmi értelme ;)

A fenti példában egy 10 elemű tömböt hoztunk létre. a végén pedig of után adjuk meg az alaptípust, amiből a tömbünk majd állni fog (a példában integer).

A tömb adatainak elérése:
Az n-edik elem: tömb[n]

Ebből is rendkívül jól leszűrhető, hogy egy for ciklussal könnyedén bejárható egy tömb.

nézzünk egy példát:
  1. program pelda1;
  2. var tomb:array[1..5] of byte;
  3.     i:integer;
  4. begin
  5.   tomb[1]:=10;
  6.   tomb[2]:=33;
  7.   tomb[3]:=21;
  8.   tomb[4]:=120;
  9.   tomb[5]:=51;  
  10.  
  11.   for i:= 1 to 5 do writeln(tomb[i]);
  12.  
  13.   readln;
  14. end.


Ez a kis progi feltölt adatokkal egy tömböt aztán végigmegy egy for-ciklussal a tömbön és mindig annyiadik elemét írja ki ahányadiknál a ciklus tart.

Nézzünk pár igen gyakori feladatot tömbökkel:

1) beolvasás-kiiratás
  1.  
  2. program beolvas-kiir;
  3. var i:integer;
  4.     tomb:array[1..20] of char;
  5. begin
  6.   for i:= 1 to 20 do readln(tomb[i]);
  7.   for i:= 1 to 20 do writeln(tomb[i]);
  8.  
  9.   readln;
  10. end.


2) átlag
  1.  
  2. program atlag;
  3. var i,osszeg,atlag:integer;
  4.     tomb:array[1..20] of integer;
  5. begin
  6.   for i:= 1 to 20 do readln(tomb[i]);
  7.   for i:= 1 to 20 do osszeg:=osszeg+tomb[i];
  8.  
  9.   atlag:=osszeg/20;
  10.   writeln('A beolvasott tömb átlaga: ',atlag);
  11.  
  12.   readln;
  13. end.


3) minimum és maximum
  1.  
  2. program min-max;
  3. var i,min,max:integer;
  4.     tomb:array[1..20] of integer;
  5. begin
  6.   for i:= 1 to 20 do readln(tomb[i]);
  7.  
  8.   for i:= 1 to 20 do begin
  9.     if tomb[i]>max then max:=tomb[i];
  10.     if tomb[i]<min then min:=tomb[i];
  11.   end;
  12.  
  13.   writeln('A beolvasott tömb minimuma: ',min);
  14.   writeln('A beolvasott tömb maximuma: ',max);
  15.  
  16.   readln;
  17. end.


Folytatása következik....