dimenziós tömbök
Egy tömb rendezett halmaza típusú változók (tétel). Mindegyik elemnek van egy egész sorszámot, az úgynevezett index. Az elemek száma a tömbben hívják a dimenziója. A tömböket használnak ahol feldolgozásához szükséges több változó azonos típusú - például 20 diák értékeli az összes koordinátái, vagy a csoport 10 pont a síkon. Sor szöveget lehet tekinteni, mint egy sor karaktert, és a szöveg az oldalon - mint egy tömböt.
A tömb részben leírt var nyilatkozat hasonló a következő:
var ArrayName: array [NO. VI] típusú;
NO (alsó index) - egész számú, az 1. tömbelem;
.. -- Pascal tartományban operátor (lásd 7.8 ..);
VI (felső index) - egész számú utolsó eleme;
Type - bármilyen ismert típusú Pascal adatokat. Minden eleme a tömb kell tekinteni, mint változó, a megfelelő típusú.
Bemutatjuk több készlet különböző célokra.
var egy: array [1..20] az egész;
Itt leírjuk tömb nevű A, amely 20 elemeinek integer;
var x, y. array [1..10] valós;
Leírja 2 tömb x és y neveket tartalmazó 10 anyagi elemeket;
var t. array [0..9] string;
T tömb tartalmaz 10 sorok, amelyek számozása az nulla.
Ez könnyen belátható, hogy a dimenziója (elemek száma) a tömb számítjuk WI - NO + 1.
Eléréséhez egyedi eleme a tömböt használjuk ArrayName üzemeltetője formájában [Index].
Itt index - egy egész szám az elem számát (egész szám lehet expresszió vagy állandó). Az index nem lehet kisebb, mint az alacsonyabb vagy magasabb, mint a felső tömb indexet, vagy hiba „Constant tartományon kívül”. lehet használni egy külön elem, a tömb, valamint a megfelelő típusú változó, például:
Ebben a fejezetben tanulmányozzuk az egydimenziós tömb, amelyben minden egyes elemnek egyetlen számot (az index), az jellemzi, hogy pozícióját a tömbben. A matematika, a fogalom a egydimenziós tömb n elem megfelelő fogalmát vektor az N komponensek: A = i>, i = 1, 2 n.
Jellemzően, a bemeneti, feldolgozási és kimeneti tömb végezzük elemenkénti, felhasználva a ciklus.
A legegyszerűbb módja annak, hogy adja meg - adja meg a tömböt a billentyűzet:
var egy: array [1..n] valós;
writeln ( 'Enter a tömb elemeinek');
i: = 1-től n do olvasni (A [i]);
A méret a tömb által meghatározott konstans n elemet egy-egy hurok számára - ha fut a program a felhasználó meg kell adnia a 10 számértékek. Megoldásában a nevelési problémákat, hogy belépjen tömbök „manuálisan”, különösen, ha azok mérete is nagy, ez nem mindig kényelmes. Van legalább két alternatív megoldást.
Leírás tömb konstans kényelmes, ha a tömb elemeinek nem kell megváltoztatni futás közben. Csakúgy, mint más állandók, állandók tömbök fejezetben leírt const. Itt látható egy példa egy ilyen leírása:
Const egy: array [1..5] valódi = (
Amint látható a példa, tömbelemek zárójelben a vessző után, számuk kell felelnie annak méreteit.
Forming a tömb a véletlenszerű értékek a megfelelő, amennyiben, a probléma megoldására tömb csak arra szolgál, hogy bemutassa egy adott algoritmus, és specifikus értékeit jelentéktelen elemek. Annak érdekében, hogy megkapja a következő véletlen értéket a standard függvény random (N), ahol N átvitt paraméterérték szekvencia típusa. Ez visszaad egy véletlenszámot ugyanolyan típusú, mint a típusa az érvelés és fekszik a tartomány 0 N-1 közötti értékű. Például, az üzemeltető a forma egy [1]: = Random (100); rekord a [1] egy véletlen számot az a [0,99].
Annak érdekében, hogy indítsa el a programot mindegyik lánc új volt véletlen számot, mielőtt az első hívást a nézőtér véletlen szokásos eljárás randomize, kiváltja a véletlenszám-generátor. Itt egy példa a töltés a tömb 20 elemek véletlen számok fekvő -10 és 10:
var egy: array [1..20] az egész;
i: = 1-től 20 do kezdeni
Még kényelmesebb - olvassa a tömb elemeit egy szöveges vagy bináris fájlt. Ezzel a témával fejezetben. 21. és 22..
Ahhoz, hogy alkalmazza az összes tipikus elrendezése algoritmusok, tanulmányozta a témát „ciklus”. Hogy csak egy példát, amelyben a számított összege s pozitív elemet a tömbben.
var b: array [1..5] valós;
writeln ( 'Enter tömbelemek 5');
i: = 1-től 5 olvassák (b [i]);
i: = 1-től 5 tenni, ha b [i]> 0, akkor s: = s + b [i];
A következtetés a tömb a képernyőn is elvégezhető a segítségével a for ciklus.
i: = 1-től 5 do write (b [i]: 6: 2);
Ott b 5 tömbelemek nyomtatott egy sorban. Ahhoz, hogy megjelenjen egy elemet ugyanazon a vonalon lehet használni writeln üzemeltetője helyett írni.
Jelentősen, ha a tömb feldolgozást végeznek egymás után az egyik elemmel bemeneti és feldolgozási ciklusok gyakran kombinálni lehet, mint az alábbi példa.
Keresse meg a számtani átlagát valós tömb elemeinek dimenzió t 6 és a minimum érték eleme.
var b: array [1..6] valós;
writeln ( 'B bemenet [6]');
i: = 1-től 6 do kezdeni
ha B [i] writeln ( 'min =', min, 's =', s / 6); Elméletileg ez a program lehetett tenni anélkül, hogy a tömb - sőt az elemek b [i] felhasználása csak tárolása és visszakeresése a maximális összeget, hogy a leírás a tömb könnyen helyettesíti a leírást egy valós változó b. Ugyanakkor a valós alkalmazások az adatokat rendszerint kezelik, és sokszor anélkül, hogy a tömbök kezeléséhez nehéz. Itt egy példa a tanulási feladatokat, amelyek esetében a tömb biztosít nyereséget mennyiségének csökkentésével elvégzett számítások szerint a programot. Adott egy szekvencia Ti = max, i = -5, -4. 5. Keresse meg az elemet a szekvenciát, amely a minimális eltérés a számtani átlaga pozitív elemeket. Itt az első ciklusban lehet kialakítani egy sor előre meghatározott szabály, és segítenek megtalálni a számtani átlaga pozitív elemeket. A második ciklusban, amikor az átlagos ismert, akkor keressük meg az eltérést. Használata nélkül a tömb, mi lett volna, hogy fontolja meg az elemek a sorozatot kétszer. var t. array [-5..5] valós; i: = - 5-5 do kezdődik ha t [i] ha t [i]> 0, akkor kezdődik i: = - 5-5 do kezdődik ha abs (t [i] -s) writeln ( 'Ot =', OT: 8: 2); Az elosztott feldolgozás egy probléma több tömbök. Itt egy példa. Pontok koordinátáinak 10 meghatározott síkban tömbök X = i>, y = i>, i = 1, 2. 10. Find a hossza egy sokszögű vonal ponton áthaladó (x1. Y1), (X2. Y2). (X10. Y10), valamint a pontok számát fekvő legtávolabb eredetét. A probléma megoldásának a következő képlet segítségével megtalálja a két pont közötti távolság a gépen, mivel a koordinátákat (x1, y1) és (x2, y2) :. R jelöli a távolságot az aktuális pont és a következő, Len kívánt hosszúságú sokszögű, Dist - távolság az aktuális pont a származási, max - a maximális E távolságok, Num - a kívánt pontok száma. var x, y. array [1..10] valós; R, Len, Dist, max. igazi; writeln ( „Add meg a koordinátákat a pont 10”); i: = 1-től 10 do kezdődik Dist: = sqrt (sqr (x [i]) + sqr (y [i])); ha dist> max akkor kezdődik writeln ( 'Point szám =' num, i: = 1-től 9 do kezdődik r: = sqrt (sqr (x [i] -x [i + 1]) + writeln ( 'hossza lejtős =', len: 8: 2); Itt egy példa a probléma kialakulásának a szabály tömb. Mivel x 8 tömbelemek. Alkossák y a szabály alapján és keresse meg a számát a pozitív elemeket. var x, y: array [1..8] valós; writeln ( 'Enter egy sor 8 x e.'); i: = 1-től 8 nem kezdődik ha i mod 2 = 0, akkor Y [i]: = 4 * x [i]Kapcsolódó cikkek