Programozási alapismeretek 10. előadás

Slides:



Advertisements
Hasonló előadás
Koordináták, függvények
Advertisements

Elemi algoritmusok Páll Boglárka.
„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
Eljaras linearis_kereses(adatok[],n)
Logaritmikus keresés Feladat: Adott egy 11 elemű, növekvően rendezett tömb számokkal feltöltve. Keressük meg a 17-es értéket! Ha van benne, hányadik eleme.
Sorozatszámítás Sorozatszámítás (N,A,s) s := kezdőérték
Programozási tételek, és „négyzetes” rendezések
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
Programozási alapismeretek
Programozási feladatok az érettségin
Programozási alapismeretek 5. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 5.2/  Programozási tételek.
Programozási alapismeretek 6. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 6.2/  Rekordok/struktúrák.
INFOÉRA Kombinatorikai algoritmusok (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
INFOÉRA 2006 Kombinatorika
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
Algoritmizálás, adatmodellezés tanítása 4. előadás
Copyright, 2009 © Szlávi Péter A kupac és a prioritási sor típuskonstrukciók Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Programozási ismeretek oktatása: kód vagy algoritmus
Programozási alapismeretek 4. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 4.2/  A szöveg A szöveg.
Programozási alapismeretek 7. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás2/  Sorozatszámítás.
Programozási alapismeretek 3. előadás
Programozási alapismeretek 13. előadás. ELTE Érdekességek - kombinatorika  Az iskola bejáratánál N lépcsőfok van. Egyszerre maximum K fokot tudunk lépni,
Programozási alapismeretek
Programozási alapismeretek 1. előadás
Programozási alapismeretek 5. előadás. ELTE 2/  Programozási tételek – a lényeglényeg  Sorozatszámítás Sorozatszámítás.
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Programozási alapismeretek 11. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom.
Programozási alapismeretek 9. előadás. ELTE Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 9. előadás2/
Programozási alapismeretek 12. előadás. ELTE  Tapasztalatok a rendezésről Tapasztalatok a rendezésről  Keresés rendezett sorozatban Keresés rendezett.
Gombkötő Attila Lineáris egyenlet.
Készítette: Pető László
ADATBÁZISOK
Fák, bináris fák INFOÉRA Ez így 60 perc.
ELTE Szlávi - Zsakó: Programozási alapismeretek 5.1/ Keresés Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
ELTE Szlávi-Zsakó: Programozási alapismeretek 8.1/ Kiválogatás Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]
ELTE Szlávi-Zsakó: Programozási alapismeretek 10.1/ Összegzés mátrixra Feladat: Egy mátrix elemeinek összege.
ELTE Szlávi - Zsakó: Programozási alapismeretek 5.1/ Sorozatszámítás Specifikáció (a végleges) :  Bemenet:
ELTE Szlávi-Zsakó: Programozási alapismeretek Szlávi-Zsakó: Programozási alapismeretek 3. 1/
Elemi alkalmazások fejlesztése I.
szakmérnök hallgatók számára
Félévi típus feladatok
Tömbök és programozási tételek
Specifikáció Specifikáció Követelményei: Tömör legyen, egyértelmű, precíz, jól formalizált, szemléletes, érthető Meg kell adni a program bemenő adatait.
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Nevezetes algoritmusok
Programozási tételek.
Programozási tételek.
Programozás I. Típus algoritmusok
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Algoritmizálás, adatmodellezés tanítása 2. előadás.
Feladatok (értékadás)
Programozási alapismeretek * A Zh-írás módszertana.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
előadások, konzultációk
Algoritmizálás, adatmodellezés
Programozási alapismeretek 10. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 10.2/  Kiválogatás + összegzés.
Programozási alapismeretek 11. előadás
Programozási alapismeretek 4. előadás. ELTE  Programozási tételek – a lényeglényeg  Sorozatszámítás – összegzés… Sorozatszámítás  Megszámolás.
Hatékony-e a rekurzió? FÉLEGYHÁZI TAMÁS GÁBOR 1 Kovács Magda-díj pályázat 2015/16.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
Nevezetes algoritmusok
Tömbök és programozási tételek
Programozási tételek Mik is ezek?
Eljaras linearis_kereses(adatok[],n)
Lineáris keresés Keresés (N,A,sorszam) i := 1
Informatikai gyakorlatok 11. évfolyam
Programozási tételek.
Programozási tételek.
Előadás másolata:

Programozási alapismeretek 10. előadás 2012/2013 Programozási alapismeretek 10. előadás Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Programozási alapismeretek 2012/2013 Tartalom Kiválogatás + összegzés Kiválogatás + maximumkiválasztás Maximumkiválasztás + kiválogatás Eldöntés + megszámolás Eldöntés + eldöntés Sorozatszámítás mátrixra Eldöntés mátrixra Tesztek előállítása Bevezetés: alapkérdések: hogyan kombinálhatjuk az egyes tételeket? hogyan befolyásolja az adatszerkezet a tételeket? … A válasz persze nem kimerítő, inkább csak példázza a megoldási lehetőségeket… 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Kiválogatás + összegzés Programozási alapismeretek 2012/2013 Kiválogatás + összegzés Feladat: Adott tulajdonságú elemek összege – felté-teles összegzés. Specifikáció: Bemenet: N:Egész, X:Tömb[1..N:Egész] Kimenet: S:Egész Előfeltétel: N0 Utófeltétel: S= 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Kiválogatás + összegzés Programozási alapismeretek 2012/2013 Kiválogatás + összegzés 1. megoldási ötlet: Válogassuk ki az adott tulajdonságúakat, majd utána adjuk össze őket! Db:=0 i=1..N T(X[i]) Db:=Db+1  Y[Db]:=i S:=0 i=1..Db S:=S+X[Y[i]] I N 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Kiválogatás + összegzés Programozási alapismeretek 2012/2013 Kiválogatás + összegzés 1. megoldási ötlet: Válogassuk ki az adott tulajdonságúakat, majd utána adjuk össze őket! Db:=0 i=1..N T(X[i]) Db:=Db+1  Y[Db]:=X[i] S:=0 i=1..Db S:=S+Y[i] I N 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Kiválogatás + összegzés Programozási alapismeretek 2012/2013 Kiválogatás + összegzés 2. megoldási ötlet: Kiválogatás helyett azonnal adjuk össze a megfelelő elemeket!  nincs elem-/index-feljegyzés (Y-ban) + nincs számlálás (Db-ben) S:=0 i=1..N T(X[i]) S:=S+X[i]  I N 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Kiválogatás + maximumkiválasztás Programozási alapismeretek 2012/2013 Kiválogatás + maximumkiválasztás Feladat: Adott tulajdonságú elemek maximuma – fel-tételes maximumkeresés. Specifikáció: Bemenet: N:Egész, X:Tömb[1..N:Valami] Kimenet: Max:Egész, Van:Logikai Előfeltétel: N0 Utófeltétel: Van=i (1≤i≤N): T(X[i]) és Van( 1≤Max≤N és T(X[Max]) és i(1≤i≤N): T(X[i])X[Max]≥X[i] ) A pirossal jelölt, keretezett a keresésre, a zölddel jelölt a maximumkiválasztásra „hajazó” részek. 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Kiválogatás + maximumkiválasztás Programozási alapismeretek 2012/2013 Kiválogatás + maximumkiválasztás 1. megoldási ötlet: Válogassuk ki az adott tulajdonságúakat, majd keressünk maximumot, ha van értelme! Db:=0 i=1..N T(X[i]) Db:=Db+1  Y[Db]:=i Van:=Db>0 … I N 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Kiválogatás + maximumkiválasztás Programozási alapismeretek 2012/2013 Kiválogatás + maximumkiválasztás 1. megoldási ötlet: Válogassuk ki az adott tulajdonságúakat, majd keressünk maximumot, ha van értelme! … Van Max:=Y[1]  i=2..Db X[Y[i]]>X[Max] Max:=Y[i] I N I N 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Kiválogatás + maximumkiválasztás Programozási alapismeretek 2012/2013 Kiválogatás + maximumkiválasztás 2. megoldási ötlet: Induljunk ki a specifikációban észrevett téte-lekből: a kiválogatás helyett keressük meg az első T-tulajdonságút, … i:=1 iN és nem T(X[i]) i:=i+1 Van:=iN … 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Kiválogatás + maximumkiválasztás Programozási alapismeretek 2012/2013 Kiválogatás + maximumkiválasztás 2. megoldási ötlet: … majd válasszuk ki az ilyenek maximu-mát! … Van Max:=i i=i+1..N T(X[i]) és X[i]>X[Max]  I N I N 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Kiválogatás + maximumkiválasztás Programozási alapismeretek 2012/2013 Kiválogatás + maximumkiválasztás 3. megoldási ötlet: Kiválogatás, ill. keresés helyett azonnal vá-lasszuk ki a maximumot! Kell egy fiktív 0. elem a maximumkiválasztáshoz, ami kisebb minden normál elemnél. X[0]:=- Max:=0 i=1..N T(X[i]) és X[i]>X[Max] Max:=i  Van:=Max>0 Ef bővítendő: i(1iN): X[i]>- A 0. elem felvételére nem lenne szükség, ha nem indexet, hanem a maximális értéket keressnénk. I N 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Maximumkiválasztás + kiválogatás Programozási alapismeretek 2012/2013 Maximumkiválasztás + kiválogatás Feladat: Összes maximális elem kiválogatása. Specifikáció: Bemenet: N:Egész, X:Tömb[1..N:Valami] Kimenet: Db:Egész, Max:Tömb[1..Db:Egész] Előfeltétel: N>0 Utófeltétel: Db = és i(1≤i≤Db): j(1≤j≤N): X[Max[i]]≥X[j] és Max(1,2,…,N) 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Maximumkiválasztás + kiválogatás Programozási alapismeretek 2012/2013 Maximumkiválasztás + kiválogatás Feladat: Összes maximális elem kiválogatása. Specifikáció: Bemenet: N:Egész, X:Tömb[1..N:Valami] Kimenet: Db:Egész, Max:Tömb[1..Db:Egész] Előfeltétel: N>0 Utófeltétel: Db = és MaxÉrt=X[Max[1]] és i(1≤i≤Db): j(1≤j≤N): X[Max[i]]≥X[j] és Max(1,2,…,N) 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Maximumkiválasztás + kiválogatás Programozási alapismeretek 2012/2013 Maximumkiválasztás + kiválogatás 1. megoldási ötlet: Határozzuk meg a maximumot, majd válo-gassuk ki a vele egyenlőeket! MaxÉrt:=X[1] i=2..N X[i]>MaxÉrt MaxÉrt:=X[i]  … I N 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Maximumkiválasztás + kiválogatás Programozási alapismeretek 2012/2013 Maximumkiválasztás + kiválogatás 1. megoldási ötlet: Határozzuk meg a maximumot, majd válo-gassuk ki a vele egyenlőeket! … Db:=0 i=1..N X[i]=MaxÉrt Db:=Db+1  Max[Db]:=i I N 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Maximumkiválasztás + kiválogatás Programozási alapismeretek 2012/2013 Maximumkiválasztás + kiválogatás 2. megoldási ötlet: A pillanatnyi maximálissal egyenlőeket azon-nal válogassuk ki! Db:=1 Max[1]:=1 MaxÉrt:=X[1] i=2..N X[i]>MaxÉrt X[i]=MaxÉrt Db:=Db+1 Max[1]:=i Max[Db]:=i MaxÉrt:=X[i]  I I 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Eldöntés + megszámolás Programozási alapismeretek 2012/2013 Eldöntés + megszámolás Feladat: Van-e egy sorozatban legalább K darab adott tulajdonságú elem? Specifikáció: Bemenet: N,K:Egész, X:Tömb[1..N:Valami] Kimenet: Van:Logikai Előfeltétel: N0 [és K>0] Utófeltétel: db= és Van=db≥K A K>0 feltétel mennyire fontos? Vizsgáljuk meg az Uf-t! A db az Uf-ben csak lokális adat. Figyelem: ebben a specifikációban nem tűnik föl az eldöntés tétel! 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Eldöntés + megszámolás Programozási alapismeretek 2012/2013 Eldöntés + megszámolás 1. megoldási ötlet: Számoljuk meg, hogy hány adott tulajdonsá-gú van, majd nézzük meg, hogy ez legalább K-e! (Azaz valójában nincs: eldöntés tétel!) db:=0 i=1..N T(X[i]) db:=db+1  Van:=db≥K I N 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Eldöntés + megszámolás Programozási alapismeretek 2012/2013 Eldöntés + megszámolás 2. megoldási ötlet: Ha már találtunk K darab adott tulajdonsá-gút, akkor ne nézzük tovább! db:=0 i:=1 i≤N és db<K T(X[i]) db:=db+1  i:=i+1 Van:=db=K I N Vegyük észre, hogy ez az algoritmus az alábbi utófeltételhez illik: Van = i(1iN): ∑(𝑗=1..i,𝑇(𝑋[𝑗]) 1 = K 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Programozási alapismeretek 2012/2013 Keresés + megszámolás Feladat: Melyik egy sorozatban a K. adott tulajdon-ságú elem (ha van egyáltalán)? Specifikáció: Bemenet: N,K:Egész, X:Tömb[1..N:Valami] Kimenet: Van:Logikai, KI:Egész Előfeltétel: N0 és K>0 Utófeltétel: Van=i(1iN): =K és Van→1KIN és =K és T(X[KI]) 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Programozási alapismeretek 2012/2013 Keresés + megszámolás 1. megoldási ötlet: Az előbbi ötlet: „számoljuk meg, hogy hány adott tulajdonságú van, majd nézzük meg, hogy ez legalább K-e…” kevés, mivel még hátra van a K. újbóli megkeresése… A működőnek látszó ötletben a megszámo-lás helyett ismét a kiválogatás kell… és a keresésre nincs szükség… 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Programozási alapismeretek 2012/2013 Keresés + megszámolás 2. megoldási ötlet: Ha már találtunk K darab adott tulajdonsá-gút, akkor ne nézzük tovább: keresés a K.-ig. db:=0 i:=1 i≤N és db<K T(X[i]) db:=db+1  i:=i+1 Van:=db=K … I N 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Programozási alapismeretek 2012/2013 Keresés + megszámolás 2. megoldási ötlet: Ha megtaláltunk a K.-kat, akkor jegyezzük föl az indexét! … Van KI:=i–1 I N 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Programozási alapismeretek 2012/2013 Eldöntés + eldöntés Feladat: Van-e két sorozatnak közös eleme? Specifikáció: Bemenet: N,M:Egész, X:Tömb[1..N:Valami], Y:Tömb[1..M:Valami] Kimenet: Van:Logikai Előfeltétel: N0 és M0 Utófeltétel: Van=i(1≤i≤N), j(1≤j≤M): X[i]=Y[j] 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Programozási alapismeretek 2012/2013 Eldöntés + eldöntés 1. megoldási ötlet: Határozzuk meg a két sorozat közös elemeit (metszet), s ha ennek elemszáma legalább 1, akkor van közös elem! Specifikáció: Az utófeltétel „igazítása”: a metszet részeredménye volt: Db:Egész a módosított utófeltétel: metszet utófeltétele és Van=Db>0. Megjegyzés: A metszet = kiválogatás + eldöntés 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Programozási alapismeretek 2012/2013 Eldöntés + eldöntés 2. megoldási ötlet: Ha már találtunk 1 darab közös elemet, ak-kor ne nézzük tovább! i:=1 Van:=Hamis i≤N és nem Van j:=1 j≤M és X[i]≠Y[j] j:=j+1 j≤M Van:=Igaz i:=i+1 A pirossal elfedettek, villogók eltérnek az eldöntés hivatkozott alakjától. Vajon miért? I N 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Programozási alapismeretek 2012/2013 Összegzés mátrixra Feladat: Egy mátrix elemeinek összege. Specifikáció: Bemenet: N,M:Egész, X:Tömb[1..N,1..M:Egész] Kimenet: S:Egész Előfeltétel: N,M0 Utófeltétel: S= 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Programozási alapismeretek 2012/2013 Összegzés mátrixra Algoritmus: A megoldás lényegében csak abban külön-bözik az alapváltozattól, hogy a mátrix miatt két –egymásba ágyazott– ciklusra van szükség. S:=0 i=1..N j=1..M S:=S+X[i,j] 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Programozási alapismeretek 2012/2013 Eldöntés mátrixra Feladat: Van-e egy mátrixban adott tulajdonságú elem? Specifikáció: Bemenet: N,M:Egész, X:Tömb[1..N,1..M:Valami] Kimenet: Van:Logikai Előfeltétel: N,M0 Utófeltétel: Van=i(1≤i≤N), j(1≤j≤M): T(X[i,j]) 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Programozási alapismeretek 2012/2013 Eldöntés mátrixra Algoritmus: Az alapváltozathoz képest itt meg kell fogalmazni a mátrix elemein való –nem feltétlenül– végighaladást, soronként, balról jobbra! i:=1 j:=1 iN és nem T(X[i,j]) j<M j:=j+1 i:=i+1 Van:= iN I N 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Programozási alapismeretek 2012/2013 Eldöntés mátrixra Algoritmus: Az alapváltozathoz képest itt meg kell fogalmazni a mátrix elemein való –nem feltétlenül– végighaladást, soronként, balról jobbra! i:=1 j:=1 iN és nem T(X[i,j]) j<M j:=j+1 i:=i+1 Van:= iN I N 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Programozási alapismeretek 2012/2013 Eldöntés mátrixra Algoritmus: Az alapváltozathoz képest itt meg kell fogalmazni a mátrix elemein való –nem feltétlenül– végighaladást, soronként, balról jobbra! i:=1 j:=1 iN és nem T(X[i,j]) j<M j:=j+1 i:=i+1 Van:= iN I N 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Programozási alapismeretek 2012/2013 Eldöntés mátrixra Algoritmus: Az alapváltozathoz képest itt meg kell fogalmazni a mátrix elemein való –nem feltétlenül– végighaladást, soronként, balról jobbra! i:=1 j:=1 iN és nem T(X[i,j]) j<M j:=j+1 i:=i+1 Van:= iN I N 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Programozási alapismeretek 2012/2013 Tesztek előállítása Feladat (teszteléshez): Egy repülőgéppel Európából Amerikába repültünk. Az út során X kilométerenként mértük a felszín tengerszint feletti magas-ságát (0). 0 magasságot ott mértünk, ahol tenger van, >0-t pedig ott, ahol szárazföld. Adjuk meg a szigeteket! 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Programozási alapismeretek 2012/2013 Tesztek előállítása Specifikáció Bemenet: N:Egész, Mag:Tömb[1..N:Egész] Kimenet: Db:Egész, K,V:Tömb[1..Db:Egész] Kis teszteket készíthetünk a tesztelési elveknek megfelelően, például: N=3, Mag=(1,0,1)  nincs sziget N=5, Mag=(1,0,1,0,1)  egy sziget N=7, Mag=(1,0,1,0,1,0,1)  több sziget N=7, Mag=(1,0,1,1,1,0,1)  hosszabb sziget Hogyan készítünk nagy teszteket? 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Programozási alapismeretek 2012/2013 Szabályos tesztek Készíthetünk szabályos teszteket egyszerű cik-lusokkal. Például így: N:=1000 i=1..10 Mag[i]:=11–i i=11..900 Mag[i]:=0 i=901..N Mag[i]:=i–900  Európa  tenger  Amerika Ezt a „filozófiát” követve, hogy tegyünk bele szigeteket? 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Véletlen tesztek (alapok – véletlenszámok) Programozási alapismeretek 2012/2013 Véletlen tesztek (alapok – véletlenszámok) A véletlenszámokat a számítógép egy algorit-mussal állítja elő egy kezdőszámból kiindul-va. x0  f(x0)=x1  f(x1)=x2  … A „véletlenszerűséghez” megfelelő függvény és jó kezdőszám szükséges. Kezdőszám: (pl.) a belső órából vett érték. Függvény (az ún. lineáris kongruencia módszernél): f(x) = (A*x+B) Mod M, ahol A, B és M a függvény belső konstansai. 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Véletlen tesztek (alapok – C++) Programozási alapismeretek 2012/2013 Véletlen tesztek (alapok – C++) C++: rand() véletlen egész számot ad 0 és egy maximális érték (RAND_MAX) között. srand(szám) kezdőértéket állít be. Véletlen(a..b){a,…,b} Véletlen(N){1,…,N} véletlenszám[0,1)Valós A generátor használa- ta kockadobásra: v=rand() % (b-a+1)+a v=rand() % N+1 v=rand()/(RAND_MAX+1.0) #include <time.h> … srand(time(NULL)); i=rand() % 6 +1; 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Programozási alapismeretek 2012/2013 Véletlen tesztek Véletlen tesztekhez használjunk véletlenszá-mokat! Például így: N:=1000 M:=Véletlen(10) i=1..M Mag[i]:=Véletlen(5..10) i=M+1..900 véletlenszám<0.5 Mag[i]:=0 Mag[i]:=1 i=901..N Mag[i]:=Véletlen(3..8)  Európa  tenger és szigetek I N  Amerika 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Véletlen tesztek (Példa – C++) Programozási alapismeretek 2012/2013 Véletlen tesztek (Példa – C++) Specifikációs komment: Az előbbi algorit-mus általánosítása! Kód: Fájlkezeléshez 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Véletlen tesztek (Példa – C++) Programozási alapismeretek 2012/2013 Véletlen tesztek (Példa – C++) Kód: Függvény-prototípusok Főprogram 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Véletlen tesztek (Példa – C++) Programozási alapismeretek 2012/2013 Véletlen tesztek (Példa – C++) Kód: A lényegi eljárás 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Véletlen tesztek (Példa – C++) Programozási alapismeretek 2012/2013 Véletlen tesztek (Példa – C++) Kód: Alprogramok implementációja //név: Gipsz Jakab //ETR-azonosító: GIJAAFT.ELTE //drótposta-cím: Gibs@elte.hu //Feladat: // Véletlen tesztadatok generálása fájlba, a "tengeres" feladatokhoz. //Specifikáció: // Be: N ELEME EGÉSZ [tesztadatok száma] // NEu,NAm ELEME EGÉSZ [Európára, Amerikára eső mérési adatok "várható" száma] // PSzig ELEME VALÓS [szigetre esés valószínűsége] // MaxMag ELEME EGÉSZ [a generálható legnagyobb magasság] // Ki: Mag ELEME TÖMB[1..N:EGÉSZ] // Ef: NEu,NAm>=1 ÉS N>=NEu+NAm ÉS // PSzig ELEME [0..1) ÉS // MaxMag>0 // Uf: Mag[1],Mag[N] ELEME [1..MaxMag] ÉS // LÉTEZIK eu ELEME [1..NEu]: LÉTEZIK am ELEME [1..NAm]: // BÁRMELY i ELEME [1..eu]: Mag[i] ELEME [1..MaxMag] ÉS Mag[eu+1]=0 ÉS // BÁRMELY i ELEME [N-am+1..N]: Mag[i] ELEME [1..MaxMag] ÉS Mag[am-1]=0 ÉS // BÁRMELY i ELEME [eu+1..N-am]: Mag[i] ELEME [0..MaxMag] // Megjegyzés: nem foglalkoztunk valószínűségi elvárásokkal! #include <iostream> #include <fstream> //#include <time.h>//csak a 'srand(time(NULL))' rand()-inicializáláshoz kell! #include <stdlib.h> //Code::Blocks 10.05-höz már kell a system kedvéért using namespace std; //Paraméterbeolvasás: //beolvassa a _mnN.._mxN közötti egész számot (_mxN<_mnN => végtelen) void be_int(string _kerd, int &_n, int _mnN, int _mxN, string _uz); //beolvassa a _mnN.._mxN közötti valós számot (_mxN<_mnN => végtelen) void be_float(string _kerd, float &_x, float _mnN, int _mxN, string _uz); //Fájlba generálás: void fajlbaGeneralas(string _fN, int _n, int _nEu, int _nAm, float _pT, int _mxM); void billentyureVar(); int main() { //Bemenet: int N,NEu,NAm,MaxMag; float PSzig; //Kimenet: const string fN="tenger.csv";//kimeneti fájl neve //srand(time(NULL));//rand()-inicializáláshoz kell! //adatok beolvasása: be_int("Europai pontok (varhato) szama",NEu,1,0,"Hibas termeszetes szam!"); be_int("Amerikai pontok (varhato) szama",NAm,1,0,"Hibas termeszetes szam!"); be_int("Meresi pontok szama",N,NEu+NAm,0,"Hibas termeszetes szam!"); be_float("Tengeri pontok valoszinusege",PSzig,0,1,"Hibas valos szam!"); be_int("Legnagyobb magassag",MaxMag,1,0,"Hibas termeszetes szam!"); //a lényeg: fajlbaGeneralas(fN,N,NEu,NAm,PSzig,MaxMag); billentyureVar(); return 0; } void fajlbaGeneralas(string _fN, int _n, int _nEu, int _nAm, float _pT, int _mxM) //Uf: N sorban, soronként egyetlen 0..mxM közötti egész szám ... // l. még a fenti Uf-t ofstream oF(_fN.c_str()); int eu=rand()%_nEu+1;//Európa hossza int am=rand()%_nAm+1;//Amerika hossza for(int i=1;i<=eu;++i) oF << rand()%_mxM+1 << endl; //TODO: lehet, h. Európának még nincs vége! for(int i=eu+1;i<=_n-am;++i) if (rand()/(RAND_MAX+1.0)<_pT) else oF << 0 << endl; //TODO: lehet, h. Amerika már elkezdődött! for(int i=_n-am+1;i<=_n;++i) oF.close(); void be_int(string _kerd, int &_n, int _mnN, int _mxN, string _uz) bool hiba; string tmp; do{ if (_mxN>=_mnN) cout << _kerd << " (" << _mnN << ".." << _mxN << "):"; cin >> _n; hiba=cin.fail() || _n<_mnN || _n>_mxN; cout << _kerd << " (" << _mnN << "..):"; cin >> _n; hiba=cin.fail() || _n<_mnN; if (hiba) cout << _uz << endl; cin.clear(); getline(cin,tmp,'\n'); }while(hiba); void be_float(string _kerd, float &_x, float _mnN, int _mxN, string _uz) cout << _kerd << " (" << _mnN << ".." << _mxN << "):"; cin >> _x; hiba=cin.fail() || _x<_mnN || _x>_mxN; cout << _kerd << " (" << _mnN << "..):"; cin >> _x; hiba=cin.fail() || _x<_mnN; void billentyureVar() system("pause"); Kód jegyzet- ként 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Véletlen tesztek (Példa – C++) Programozási alapismeretek 2012/2013 Véletlen tesztek (Példa – C++) Az eredményfájl … és elemzése: Tenger.csv tartalma srand() nélkül: 8 5 9 2 4 1 3 6 7 Adatfájl jegyzet- ként 2017.04.04. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10. Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.

Programozási alapismeretek 2012/2013 Programozási alapismeretek 10. előadás vége Horváth-Papné-Szlávi-Zsakó: Programozási alapismeretek 10.