Algoritmizálás és adatmodellezés tanítása 2. előadás
Tartalom Összegzés vektorra, mátrixra Megszámolás vektorra, mátrixra Maximum-kiválasztás vektorra, mátrixra Eldöntés vektorra, mátrixra Kiválasztás vektorra, mátrixra Keresés vektorra, mátrixra Kiválogatás vektorra, mátrixra Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 2/36
Specifikáció: S H, N,M N X H N Y H N M N a sorok, M az oszlopok száma Specifikáció- és algoritmusbeli jelölések H: Z vagy R vagy N a tömbök TH: a H Algoritmus: Konstans maximális méretei maxn,maxm:egész(???) Típus Ttomb=Tömb(1..maxN:TH) Tmatrix= Tömb(1..maxN,1..maxM:TH) Változó N,M:Egész; S:TH X:Ttomb; Y:Tmatrix Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. halmaznak megfelelő típus 3/36
1. Összegzés Specifikáció (összegzés): Bemenet: N N, X H N Kimenet: S H Előfeltétel: N Utófeltétel: S= Definíció: N Σ i 1 i 1 X i X i : 0 N i 1 Σ 1 X i X N,, H: Z vagy R vagy N N 0 N 0 Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 4/36
1. Összegzés Algoritmus: Konstans maxn:egész(???) Típus Ttomb=Tömb(1..maxN:TH) Változó N:Egész X:Ttomb S:TH Programparaméterek deklarálása maxn: a tömb maximális mérete TH: a H halmaznak megfelelő típus Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 5/36
1. Összegzés Eljárás Összegzés(Konstans N:Egész, X:Ttomb, Változó S:TH): Változó i:egész S:=0 Ciklus i=1-től N-ig S:=S+X(i) Ciklus vége Eljárás vége. Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 6/36
1. Összegzés mátrixra Specifikáció: Bemenet: N,M N, X H N M Kimenet: S H Előfeltétel: N Utófeltétel: S= i 1 M j 1 X i,j H: Z vagy R vagy N Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 7/36
1. Összegzés mátrixra Algoritmus: A megoldás lényegében csak abban különbözik az alapváltozattól, hogy a mátrix miatt két egymásba ágyazott ciklusra van szükség. Konstans maxn,maxm:egész(???) Típus Tmatrix=Tömb(1..maxN,1..maxM:TH) Változó N,M:Egész X:Tmatrix S:TH Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 8/36
1. Összegzés mátrixra Eljárás Összegzés(Konstans N,M:Egész, X:Tmatrix, Változó S:TH): Változó i,j:egész S:=0 Ciklus i=1-től N-ig Ciklus j=1-től M-ig S:=S+X(i,j) Ciklus vége Ciklus vége Eljárás vége. Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 9/36
2. Megszámolás Specifikáció: Bemenet: N N, X H N, T:H L Kimenet: Db N Előfeltétel: N Utófeltétel:Db= T(X i 1 ) i 1 H: tetszőleges halmaz T: tetszőleges tulajdonság-függvény Megjegyzés: A T tulajdonság egy logikai függvényként adható meg. X minden eleméről megvizsgálható, hogy rendelkezik-e az adott tulajdonsággal vagy sem. Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 10/36
2. Megszámolás Eljárás Megszámolás(Konstans N:Egész, X:Ttomb, Változó Db:Egész): Változó i:egész Db:=0 Ciklus i=1-től N-ig Ha T(X(i)) akkor Db:+1 Ciklus vége Eljárás vége. Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 11/36
2. Megszámolás mátrixra Specifikáció: Bemenet: N,M N, X H N M, T:H L Kimenet: Db N Előfeltétel: N M Utófeltétel: Db= 1 i 1 j 1 T(X i,j ) H: tetszőleges halmaz T: tetszőleges tulajdonság-függvény Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 12/36
2. Megszámolás mátrixra Eljárás Megszámolás(Konstans N,M:Egész,X:Tmatrix, Változó Db:Egész): Változó i,j:egész Db:=0 Ciklus i=1-től N-ig Ciklus j=1-től M-ig Ha T(X(i,j)) akkor Db:+1 Ciklus vége Ciklus vége Eljárás vége. Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 13/36
3. Maximum-kiválasztás Specifikáció: Bemenet: N N, X H N Kimenet: Max N, Maxert H Előfeltétel: N>0 Utófeltétel: 1 Max N és i (1 i N): X Max X i és Maxert=X Max Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 14/36
3. Maximum-kiválasztás Eljárás Maximumkiválasztás(Konstans N:Egész X:Ttomb, Változó Max:Egész,Maxert:TH): Változó i:egész Max:=1; Maxert:=X(1) Ciklus i=2-től N-ig Ha X(i)>Maxert akkor Max:=i; Maxert:=X(i) Ciklus vége Eljárás vége. Kérdések: Több maximális esetén hányadik? Hogyan lesz belőle utolsó maximális? Hogyan lesz belőle (első) minimális? Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 15/36
3. Maximum-kiválasztás Specifikáció: mátrixra Bemenet: N,M N, X H N M Kimenet: Maxi,Maxj N, Maxert H Előfeltétel: N>0 és M>0 Utófeltétel: 1 Maxi N és 1 Maxj M és i,j (1 i N) (1 j M):X Maxi,Maxj X i,j és Maxert=X Maxi,Maxj Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 16/36
3. Maximum-kiválasztás mátrixra Eljárás Maximumkiválasztás(Konstans N,M:Egész, X:Tmatrix, Változó Maxi,Maxj:Egész,Maxert:TH): Változó i,j:egész Maxi:=1; Maxj:=1; Maxert:=X(1,1) Ciklus i=1-től N-ig Ciklus j=1-től M-ig Ha X(i,j)>Maxert akkor Maxi:=i; Maxj:=j; Maxert:=X(i,j) Ciklus vége Ciklus vége Eljárás vége. Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 17/36
Specifikáció: 4. Eldöntés Bemenet: N N, X H N, T:H L Kimenet: Vane L Előfeltétel: Utófeltétel: Vane= i(1 i N): T(X i ) Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 18/36
4. Eldöntés Eljárás Eldöntés(Konstans N:Egész, X:Ttomb, Változó Vane:Logikai): Változó i:egész i:=1 Ciklus amíg i N és nem T(X(i)) i:+1 Ciklus vége Vane:=i N Eljárás vége. Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 19/36
4. Eldöntés mátrixra Feladat: Van-e egy mátrixban adott tulajdonságú elem? Specifikáció: Bemenet: N,M N, X H N M, T:H L Kimenet: Vane L Előfeltétel: Utófeltétel: Vane= i,j(1 i N)(1 j M):T(X i,j ) 2015.02.17. Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 20/36
4. Eldöntés mátrixra Eljárás Eldöntés(Konstans N,M:Egész, X:Tmatrix, Változó Vane:Logikai): Változó i,j:egész i:=1; j:=1 Ciklus amíg i N és nem T(X(i,j)) Ha j<m akkor j:+1 különben i:+1; j:=1 Ciklus vége Vane:=i N Eljárás vége. Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 21/36
Specifikáció: 5. Kiválasztás Bemenet: N N, X H N, T:H L Kimenet: Ind N Előfeltétel: N>0 és i (1 i N): T(X i ) Utófeltétel: 1 Ind N és T(X Ind ) Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 22/36
5. Kiválasztás Eljárás Kiválasztás(Konstans N:Egész, X:Ttomb, Változó Ind:Egész): Változó i:egész i:=1 Ciklus amíg nem T(X(i)) i:+1 Ciklus vége Ind:=i Eljárás vége. Többlet tudás: a megoldás az első adott tulajdonságú elemet adja meg. Hogy kellene az utolsót megadni? Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 23/36
Specifikáció: 5. Kiválasztás mátrixra Bemenet: N,M N, X H N M, T:H L Kimenet: Indi,Indj N Előfeltétel: N>0 és M>0 és i,j (1 i N) (1 j M): T(X i,j ) Utófeltétel: 1 Indi N és 1 Indj M és T(X Indi,Indj ) Megjegyzés: a kimeneti indexpárt egy rekordban is tárolhattuk volna! Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 24/36
5. Kiválasztás mátrixra Eljárás Kiválasztás(Konstans N,M:Egész, X:Tmatrix, Változó Indi,Indj:Egész): Változó i,j:egész i:=1; j:=1 Ciklus amíg nem T(X(i,j)) Ha j<m akkor j:+1 különben i:+1; j:=1 Ciklus vége Indi:=i; Indj:=j Eljárás vége. Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 25/36
Specifikáció: 6. Keresés Bemenet: N N, X H N, T:H L Kimenet: Van L, Ind N Előfeltétel: Utófeltétel: Van= i (1 i N): T(X i ) és Van 1 Ind N és T(X Ind ) Tehát a feladat egyik fele az eldöntésből, a másik fele a kiválasztásból jön. Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 26/36
6. Keresés Eljárás Keresés(Konstans N:Egész, X:Ttomb, Változó Vane:Logikai, Ind:Egész): Változó i:egész i:=1 Ciklus amíg i N és nem T(X(i)) i:+1 Ciklus vége Vane:=i N Ha Vane akkor Ind:=i Eljárás vége. Többlet tudás: a megoldás az első adott tulajdonságú elemet adja meg. Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 27/36
6. Keresés mátrixra Feladat: Van-e egy mátrixban adott tulajdonságú elem és ha van, akkor hol? Specifikáció: Bemenet: N,M N, X H N M, T:H L Kimenet: Vane L, Indi,Indj N Előfeltétel: Utófeltétel: Vane= i,j(1 i N)(1 j M): T(X i,j ) és Vane 1 Indi N és 1 Indj M és T(X Indi,Indj ) 2015.02.17. Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 28/36
Algoritmus: 6. Keresés mátrixra Eljárás Keresés(Konstans N,M:Egész, X:Tmatrix, Változó Vane:Logikai, Indi,Indj:Egész): Változó i,j:egész... Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 29/36
Algoritmus (folyt): 6. Keresés mátrixra. i:=1; j:=1 Ciklus amíg i N és nem T(X(i,j)) Ha j<m akkor j:+1 különben i:+1; j:=1 Ciklus vége Vane:=i N Ha Vane akkor Indi:=i; Indj:=j Eljárás vége. Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 30/36
7. Kiválogatás Specifikáció: Bemenet: N N, X H N, T:H L Kimenet: Db N, Y N N Előfeltétel: Utófeltétel: Db= N T(X i 1 ) i 1 és i(1 i Db): T(X Y ) és Y (1,2,,N) i Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 31/36
7. Kiválogatás Típus Ttomb2=Tömb(1..maxN:Egész) Eljárás Kiválogatás(Konstans N:Egész, X:Ttomb, Változó Db:Egész, Y:Ttomb2): Változó i:egész Db:=0 Ciklus i=1-től N-ig Ha T(X(i)) akkor Db:+1; Y(Db):=i Ciklus vége Eljárás vége. A sorszám általánosabb mint az érték, ha mégis érték kellene, akkor Y(Db):=X(i) szerepelne. (Ekkor a specifikációt is módosítani kell!) Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 32/36
7. Kiválogatás mátrixra Specifikáció: Bemenet: N,M N, X H N M, T:H L Kimenet: Db N, Y Hely N*M, Hely=S O, S,O=N Előfeltétel: Utófeltétel: Db= N i 1 M j 1 T(X i,j 1 ) és i(1 i Db):T(X Y i.s,yi.o) és Y ((1,1), (1,2), (1,M), (2,1),. (N,M)) Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 33/36
7. Kiválogatás mátrixra Algoritmus: Típus THely=Rekord(s,o:Egész) Ttomb2=Tömb(1..maxN*maxM:THely) Eljárás Kiválogatás(Konstans N,M:Egész, X:Tmatrix, Változó Db:Egész, Y:Ttomb2): Változó i,j:egész Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 34/36
7. Kiválogatás mátrixra Algoritmus (folyt): Db:=0 Ciklus i=1-től N-ig Ciklus j=1-től M-ig Ha T(X(i,j)) akkor Db:+1; Y(Db).s:=i; Y(Db).o:=j Elágazás vége Ciklus vége Ciklus vége Eljárás vége. A sorszám itt is általánosabb mint az érték, ha mégis érték kellene, akkor Y(Db):=X(i,j) szerepelne. (Ekkor persze a specifikációt is módosítani kell!) Pap Gáborné Zsakó László: Algoritmizálás, adatmodellezés 2015.02.17. 35/36
Algoritmizálás és adatmodellezés tanítása 2. előadás vége