Tömbök és programozási tételek Pascal nyelven
Tömb feltöltése felhasználói bevitellel algoritmus feltölt_1 változó x : tömb[1..n] egész i : egész … ciklus i:= 1..n lépésköz=1 ismétel be: x[i] cvége algoritmus vége program feltolt_1; var x:array[1..n] of integer; i:integer; begin … for i:=1 to n do write(' Kérem a tömbelemet: '); readln(x[i]); end; end.
Tömb feltöltése értékadással algoritmus feltölt_2 változó x : tömb[1..n] egész i : egész … ciklus i:= 1..n lépésköz=1 ismétel x[i]:=érték cvége algoritmus vége program feltolt_2; var x:array[1..n] of integer; i:integer; begin … for i:=1 to n do x[i]:=érték; end.
Tömbfeltöltés értékadással Értékadás esetében általában véletlen számokat használunk. Véletlen számok készítéséhez a program elején a randomize; utasítást kell kiadni Az értékadás a következőképpen történik: x[i]:=random(max-min)+min; A max és a min értékek az adott intervallum legkisebb és legnagyobb elemei
Tömb kiíratása algoritmus kiír változó x : tömb[1..n] egész i : egész … ciklus i:= 1..n lépésköz=1 ismétel ki: x[i] cvége algoritmus vége program kiir; var x:array[1..n] of integer; i:integer; begin … for i:=1 to n do write(x[i],' '); end. szóközzel elválasztva
Összegzés tétele algoritmus összegzés var i, össz: egész x: tömb [1..n] egész … össz:=0 ciklus i:=1..n lépésköz=1 ismétel össz:=össz + x[i] cvége ki: össz algoritmus vége program osszegzes; var x:array[1..n] of integer; i,ossz:integer; begin … ossz:=0; for i:=1 to n do ossz:=ossz+x[i]; writeln('Az összeg: ‘,ossz); end.
Összegzés tétele Amennyiben az összegzés tételét átlag számításához használjuk, akkor további két dolgot kell beírni: a változók közé (var) fel kell venni az átlag nevű változót, ami valós típusú (var atlag:real;) a kiíratás előtt ki kell számolni az átlagot: atlag:=ossz/n;
Megszámlálás tétele algoritmus megszámlálás változó i, db : egész x : tömb [1..n] egész … db := 0 ciklus i:=1..n lépésköz=1 ismétel ha (x[i] T tulajdonságú) akkor db:= db+1 hvége cvége ki:db …. algoritmus vége program megszamlal; var x:array[1..n] of integer; i,db:integer; begin … db:=0; for i:=1 to n do if (x[i] T tul.) then db:=db+1; writeln('A T tulajdonságú elemek száma: ‘,db); end.
Kiválogatás tétele program kivalogat; algoritmus kiválogat var x,x2:array[1..n] of integer; i,db:integer; begin … db:=0; for i:=1 to n do if (x[i] T tul.) then db:=db+1; x2[db]:=x[i]; end; end. algoritmus kiválogat változó i, db :egész X, X2 : tömb [1..n] egész … db:=0 ciklus i=1-től n-ig lépésköz 1 ismétel Ha (X[i] T tulajdonságú) akkor db:=db+1 X2[db]:=X[i] hvége cvége algoritmus vége
Kiválasztás tétele Az elöltesztelő ciklus feltételébe a feladatban megadott T tulajdonság ellenkezőjét kell beírni Pl.: ha a tömbben az 1-eseket keressük, akkor a feltétel ennek ellenkezője (nem egyenlő) lesz: x[i]<>1 A kisebb ellenkezője: nagyobb és egyenlő A nagyobb ellenkezője: kisebb és egyenlő
Kiválasztás tétele algoritmus kiválasztás változó i: egész változó x:tömb[1..n] egész … i:=1 amíg (x[i] nem T tulajdonságú) ismétel i:=i+1 avége ki: i algoritmus vége program kivalaszt; var x:array[1..n] of integer; i:integer; begin … i:=1; while (x[i] NEM T tul.) do i:=i+1; writeln(' Az első T tulajdonságú elem helye: ',i); end. A tétel használatának előfeltétele, hogy biztosan tudjuk, hogy van olyan elem a tömbben, amilyet keresünk (T tulajdonságú)
Eldöntés tétele algoritmus eldöntés változó i: egész VAN: logikai x: tömb [1..n] : egész … i:=1 amíg (i<=n) ÉS (x[i] nem T tulajdonságú) ismétel i:=i+1 avége VAN:=(i <= n) ha VAN akkor ki: "Létezik a keresett elem " különben ki: "Nincs a keresett elem a tömbben" hvége algoritmus vége program eldont; var x:array[1..n] of integer; i:integer; van:boolean; begin … i:=1; while (i<=n) and (x[i] NEM T tul.) do i:=i+1; van:=(i<=n); if van then writeln('Létezik a keresett elem') else writeln('Nincs a keresett elem a tömbben') end.
Lineáris keresés tétele algoritmus linker változó i: egész VAN: logikai x: tömb [1..n] : egész … i:=1 amíg (i<=n) ÉS (x[i] nem T tulajdonságú) ismétel i:=i+1 avége VAN:=(i <= n) ha VAN akkor ki: i különben ki: "Nincs a keresett elem a tömbben" hvége algoritmus vége program linker; var x:array[1..n] of integer; i:integer; van:boolean; begin … i:=1; while (i<=n) and (x[i] NEM T tul.) do i:=i+1; van:=(i<=n); if van then writeln('Létezik az elem, helye: ',i) else writeln('Nincs a keresett elem a tömbben') end.
Lineáris keresés tétele Amennyiben nem az adott, T tulajdonságú elem helyét, hanem az értékét akarjuk kiíratni, akkor az i nevű változó helyett az x[i] tömbelem értékét kell kiíratni.
Minimumkiválasztás tétele algoritmus minimum változó i, min:egész x: tömb [1..n] : egész … min := 1 ciklus i:=2..n lépésköz 1 ismétel ha x[min] > x[i] akkor min := i hvége cvége ki: min, x[min] algoritmus vége program minimum; var x:array[1..n] of integer; i,min:integer; begin … min:=1; for i:=2 to n do if x[min] > x[i] then min:=i; writeln('A legkisebb elem helye: ',min, ' értéke: ‘,x[min]); end.
Maximumkiválasztás tétele algoritmus maximum változó i, max:egész x: tömb [1..n] : egész … max := 1 ciklus i:=2..n lépésköz 1 ismétel ha x[max] < x[i] akkor max := i hvége cvége ki: max, x[max] algoritmus vége program maximum; var x:array[1..n] of integer; i,max:integer; begin … max:=1; for i:=2 to n do if x[max] < x[i] then max:=i; writeln('A legnagyobb elem helye: ',max, ' értéke: ‘,x[max]); end.