Algoritmizálás, adatmodellezés tanítása 2. előadás
Másolás függvényszámítás Bemenet: N N, X H N, g:h G, F: G N G, f: G * xg G Kimenet: Y G N Előfeltétel: Utófeltétel: i(1 i N) Y=F(g(X 1 ),, g(x N )) f végére Másolás(N,X,Y): Y:=üres Y:=végére(Y,g(X(i))) 2
Másolás függvényszámítás Bemenet: N N, X H N, f:h G Kimenet: Y G N Előfeltétel: Utófeltétel: i(1 i N) Y i =f(x i ) Másolás(N,X,Y): Y(i):=f(X(i)) 3
Másolás függvényszámítás Bemenet: N N, X H N, f:h G, T:H L Kimenet: Y G N Előfeltétel: Utófeltétel: i(1 i N) T(X i ) Y i =f(x i ) és nem T(X i ) Y i =X i Másolás(N,X,Y): Ha T(X(i)) akkor Y(i):=f(X(i)) különben Y(i):=X(i) 4
Kiválogatás Bemenet: N N, X H N, T:H L Kimenet: Y H N Előfeltétel: Utófeltétel: i(1 i N) T(X i ) X i kell Y-ba és nem T(X i ) X i nem kell Y-ba 5
Kiválogatás Programozási tételek Kiválogatás(N,X,Y): Y:=üres Ha T(X(i)) akkor Y:=végére(Y,X(i)) különben {nincs teendő} Megszámolás(N,X,Db): Db:=0 Ha T(X(i)) akkor Db:=Db+1 6
Kiválogatás A két algoritmus összekötése: Kiválogatás(N,X,Db,Y): Db:=0 Ha T(X(i)) akkor Db:=Db+1; Y(Db):=X(i) 7
Kiválogatás (érték helyett sorszámmal) Bemenet: N N, X H N, T:H L Kimenet: Db N,Y N N Előfeltétel: Db Utófeltétel: és i(1 i Db): 1 Y i N és T( ) T i 1 N X i 1 és Y (1,...N) X Yi 8
Kiválogatás Kiválogatás(N,X,Db,Y): Db:=0 Ha T(X(i)) akkor Db:=Db+1; Y(Db):=i 9
Szétválogatás (kettő kiválogatás) Bemenet: N N, X H N, T:H L Kimenet: Db N, Y,Z N N Előfeltétel: Utófeltétel: Db T i 1 ( X [ i]) és i(1 i Db): T( X Yi ) és és i(1 i N-Db): nem T( X Zi ) és Y (1,2,,N) és Z (1,2,,N) N 1 10
Szétválogatás (kettő kiválogatás) Szétválogatás(N,X,Db,Y,Z): Db:=0 Ha T(X(i)) akkor Db:=Db+1; Y(Db):=i DbZ:=0 Ha nem T(X(i)) akkor DbZ:=DbZ+1; Z(DbZ):=i 11
Szétválogatás (kettő kiválogatás) azonos lépésszámú, független ciklusok összevonhatók; azonos feltételű elágazások összevonhatók. Szétválogatás(N,X,Db,Y,Z): Db:=0; Dbz:=0 Ha T(X(i)) akkor Db:=Db+1; Y(Db):=i különben DbZ:=DbZ+1; Z(DbZ):=i 12
Metszet (kiválogatásban eldöntés) Bemenet: N,M N, X H N, Y H M Kimenet: Db N, Z H min(n,m) Előfeltétel: halmazf(x,n) és halmazf(y,m) Utófeltétel: Db N i 1 1 X [ i] Y és i(1 i Db): Z(i) X és Z(i) Y és halmazf(z,db) halmazf(a,b)= i,j(1 i j B): i j X(i) X(j) 13
Metszet (kiválogatásban eldöntés) Metszet(N,X,M,Y,Db,Z): Db:=0 Ha eleme?(x(i),y) akkor Db:=Db+1; Z(Db):=X(i) eleme?(x,y): j:=1 Ciklus amíg j M és x Y(j) j:=j+1 eleme?:=(j M) Függvény vége. 14
Metszet (kiválogatásban eldöntés) függvény beillesztésével Metszet(N,X,M,Y,Db,Z): Db:=0 j:=1 Ciklus amíg j M és X(i) Y(j) j:=j+1 Ha j M akkor Db:=Db+1; Z(Db):=X(i) 15
Unió (másolás + kiválogatásban eldöntés) Bemenet: N,M N, X H N, Y H M Kimenet: Db N, Z H N+M Előfeltétel: halmazf(x,n) és halmazf(y,m) Utófeltétel: Db N M j 1 1 y[ j] X és i(1 i Db): Z(i) X vagy Z(i) Y és halmazf(z,db) 16
Unió (másolás + kiválogatásban eldöntés) Unió(N,X,M,Y,Db,Z): Z(i):=X(i) Db:=N Ciklus j=1-től M-ig Ha nem eleme?(y(j),x) akkor Db:=Db+1 Z(Db):=Y(j) 17
Unió (másolás + kiválogatásban eldöntés) függvény beillesztésével, tömbök értékadásával Unió(N,X,M,Y,Db,Z): Z:=X; Db:=N Ciklus j=1-től M-ig i:=1 Ciklus amíg i N és X(i) Y(j) i:=i+1 Ha i>n akkor Db:=Db+1; Z(Db):=Y(j) 18
Algoritmizálás, adatmodellezés tanítása 2. előadás vége