100 likes | 215 Views
Prezentácia. POLE. Štruktúrovaný údajový typ POLE. Jednorozmerné pole. Ukážka programu. Výsledok programu Pole1 Viacrozmerné pole. Ukážka programu. Výsledok programu Pole2. Jednorozmerné pole.
E N D
Prezentácia POLE
Štruktúrovaný údajový typ POLE • Jednorozmerné pole. • Ukážka programu. • Výsledok programu Pole1 • Viacrozmerné pole. • Ukážka programu. • Výsledok programu Pole2
Jednorozmerné pole • Pri programovaní nevystačíme s jednoduchými údajovými typmi ako napr: var i,j,k :integer a podobne. Najviac aplikácií je takých, kde je výhodné jednotlivé údaje zorganizovať do väčších údajových jednotiek, napr: pri spracovaní štatistických údajov, údajov o výrobnom programe a podobne. V jazyku Pascal sú takéto údajové typy. Teraz sa naučíme údajový typ POLE, konkrétne jednorozmerné. • Definíciu typu jednorozmerného pola umiestňujeme v programe do časti definícií a deklarácií a má tvar : type m : array[ti]of tz Vyhradené sú slová type -znamená typ array- označuje, že ide o pole of- znamená z čoho budú zložky pola m-je identifikátor (meno) daného pole, ti-index, tz-typ zložiek. Napríklad definícia: var a : array [ 1..100]of real znamená, vyhradenie miesta pre 100 reálnych čísiel, ktoré v programe píšeme ako a[1],a[2],... ,a[100]. Inak by sme museli definovať 100 premenných var a1,a2,...,a100 : real, čo by bolo pracné.
Z Príklad č.1- Pole1 : Vypočítaj 16 hodnôt funkcií y=sin(x), y=cos(x), x je z intervalu <0,2Pí>, zapamätaj ich do polí a vypíš na obrazovku tabuľku s hodnotami x, y Definície: i : integer; krok,x : real; Si[1..16], Co[1..16], x[1..16] : array Krok:=2*Pí /15; x:=0 i:=1 Si[i]:=Sin(x); Co[i]:=Cos(x); x1[i]:=x; x:=x+krok; i=16? - i:=i+1 + i:=1 Výpis na obrazovku: x1[i], Si[i], Co[i] i=16? - i:=i+1 + K
Ukážka programu Pole1 program pole1; Uses fdelay,Crt; var i : integer; x,p,krok,x1 : real; si : array [1..16] of real; co : array [1..16] of real; x1 : array [1..16] of real; begin ClrScr;krok:=2*Pi/15; x:=0; for i:=1 to 16 do begin si[i]:=Sin(x); co[i]:=Cos(x); x1[i]:=x; x:=x+krok; end; writeln(' Por.c. x:<0;2*Pi> y=Sin(x) y=Cos(x)'); for i:=1 to 16 do writeln(i:6,x1[i]:12:2,si[i]:12:2,co[i]:12:2); readln; end.
Výsledok programu Pole1 Por.c. x: <0;2*Pi> y=Sin(x) y=Cos(x) 1 0.00 0.00 1.00 2 0.42 0.41 0.91 3 0.84 0.74 0.67 4 1.26 0.95 0.31 5 1.68 0.99 - 0.10 6 2.09 0.87 - 0.50 7 2.51 0.59 - 0.81 8 2.93 0.21 - 0.98 9 3.35 - 0.21 - 0.98 10 3.77 - 0.59 - 0.81 11 4.19 - 0.87 - 0.50 12 4.61 - 0.99 - 0.10 13 5.03 - 0.95 0.31 14 5.45 - 0.74 0.67 15 5.86 - 0.41 0.91 16 6.28 0.00 1.00
Viacrozmerné POLE Jazyk Pascal dovoľuje, aby vznikala hierarchická štruktúra, ktorej hĺbka takmer nie je obmedzená. Z hľadiska premennej typu pole to znamená, že aj zložky budú typu pole a ich zložky zase môžu byť typu pole, atď. Dostávame tak pole polí – viacrozmerné pole. Definícia typu pole, ktoré je dvojrozmerné môžeme napísať takto : Type m: array[ti1] of array [ti2] of tz Skrátený zápis : type m : array[t1,t2]of tz Príklad definície : var matica : array [1..20] of array [1..30] of real, alebo var matica : array [1..20,1..30] of real ; takto si vyhradíme v programe 20*30 miest pre reálne čísla (20 riadkov a 30 stĺpcov). Napr. Matica[i,j] označuje reálne číslo, ktoré je v i-tom riadku a v j-tom stĺpci
1 Z Príklad č.2 – Pole2 : Zadaj 9 reálnych čísiel 3 riadky a 3 stĺpce a11,a12,a13, a21,a22,a23, a31,a32,a33 tak, aby sa zapamätali do dvojrozmerného poľa a potom vypočítaj súčty stĺpcov a riadkov a vypíš na obrazovku prehľadne: načítané čísla a k tomu vpravo súčty riadkov a dole súčty stĺpcov. a11 a12 a13 súčet 1. riadku a21 a22 a23 súčet 2. riadku a31 a32 a33 súčet 3. riadku Stl.1 Stl.2 Stl.3 Definuj array a[1..3,1..3], SumR[1..3], SumR[1..3] real, i,j integer i:=1 Sumr[i]:=0 SumS[i]:=0, pre i=1,2,3 j:=1 i:=1 SumR[i]:=SumR[i]+a[i,j] SumS[j]:=SumS[j]+a[i,j] (suma stlpce a riadky) Výpis a[ i,j] j:=1 Načítaj a[i,j] - j=3 j:=j+1 - j=3 + j:=j+1 + Výpis suma i-teho riadku SumR[ i] - i:=i+1 i=3 + 1 i=3 + - Výpis sumy stĺpcov SumS[ j] pre j=1,2,3 i:=i+1 Koniec
Program Pole2 program pole2; Uses fdelay,Crt; var i,j : integer; a : array [1..3,1..3] of real; sumr : array [1..3] of real; sums : array [1..3] of real; begin ClrScr; writeln('Zadaj 3x3 cisiel'); for i:=1 to 3do sums[i]:=0; for i:=1 to3do begin writeln; for j:=1 to 3do begin write(' a[',i:1,’,’,j:1,‘]='); read(a[i,j]); end; end; writeln; write('Zadane cisla a vypocet suctu riadkov a stlpcov : '); for i:=1 to3do begin sumr[i]:=0; writeln; for j:=1 to3do begin sumr[i]:=sumr[i]+a[i,j]; sums[j]:=sums[j]+a[i,j]; write(a[i,j]:8:1); end; write(' Sucet riadku ',i:1,'. ',sumr[i]:8:1) end; writeln; write('Sucty po stlpcoch'); writeln; for j:=1 to3do write(sums[j]:8:1); readln; readln; end.
Výsledok programu POLE2 Zadaj 3x3 cisiel a[1,1]= 1 a[1,2]= 1 a[1,3]= 1 a[2,1]= 2 a[2,2]= 2 a[2,3]= 2 a[3,1]= 3 a[3,2]= 3 a[3,3]= 3 Zadane cisla a sucty riadkov a stlpcov: 1.0 1.0 1.0 Sucet riadku 1. 3.0 2.0 2.0 2.0 Sucet riadku 2. 6.0 3.0 3.0 3.0 Sucet riadku 3. 9.0 Sucty stlpcov : 6.0 6.0 6.0