Programozási alapismeretek 10. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 10.2/422015. 03. 31.2015. 03. 31.2015. 03. 31.  Kiválogatás + összegzés.

Slides:



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

„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
Eljaras linearis_kereses(adatok[],n)
Megszámlálás Elemi algoritmusok.
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.
Kiválasztás (N,A,sorszam) i := 1 Ciklus amíg (A(i) nem T) i := i+1 Ciklus vége sorszam := i Eljárás vége Kiválasztás.
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.
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
Programozás alapjai A programozás azt a folyamatot jelenti, melynek során a feladatot a számítógép számára érthető formában írjuk le. C++, Delphi, Java,
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
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 10. 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ó
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
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
Egydimenziós tömbökön végezhető műveletek
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)
INFOÉRA 2006 Nagypontosságú aritmetika I.
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 11. előadás
INFOÉRA 2006 Nagypontosságú aritmetika II.
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)
Informatikai gyakorlatok 11. évfolyam
Programozási tételek.
Programozási tételek.
Előadás másolata:

Programozási alapismeretek 10. előadás

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.2/  Kiválogatás + összegzés Kiválogatás + összegzés  Kiválogatás + maximumkiválasztás Kiválogatás + maximumkiválasztás  Maximumkiválasztás + kiválogatás Maximumkiválasztás + kiválogatás  Eldöntés + megszámolás Eldöntés + megszámolás  Eldöntés + eldöntés Eldöntés + eldöntés  Sorozatszámítás mátrixra Sorozatszámítás mátrixra  Eldöntés mátrixra Eldöntés mátrixra  Tesztek előállítása Tesztek előállítása Tartalom

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.3/ 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=

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.4/ 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

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.5/ 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

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.6/ 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

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.7/ 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] )

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.8/ 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

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

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.10/ 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 T(X[i]) i:=i+1 Van:=i  N …

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

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.12/ Kiválogatás + maximumkiválasztás 3. megoldási ötlet: Kiválogatá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 I N

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.13/ 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) 

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.14/ 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) 

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.15/ 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

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

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.17/ 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ÉrtX[i]=MaxÉrt Db:=1Db:=Db+1 Max[1]:=iMax[Db]:=i MaxÉrt:=X[i]  I I

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.18/ 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

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.19/ 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

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.20/ 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

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.21/ 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]

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.22/ 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!metszet 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. metszet utófeltétele Megjegyzés: A metszet = kiválogatás + eldöntés

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.23/ 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 I N

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.24/ Ö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=

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.25/ Ö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.alapváltozat S:=0 i=1..N j=1..M S:=S+X[i,j]

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.26/ 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])

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.27/ Eldöntés mátrixra i:=1 j:=1 i  N és nem T(X[i,j]) j<Mj<M j:=j+1 j:=1 i:=i+1 Van:= i  N 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 N

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.28/ Eldöntés mátrixra i:=1 j:=1 i  N és nem T(X[i,j]) j<Mj<M j:=j+1 j:=1 i:=i+1 Van:= i  N 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 N

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.29/ Eldöntés mátrixra i:=1 j:=1 i  N és nem T(X[i,j]) j<Mj<M j:=j+1 j:=1 i:=i+1 Van:= i  N 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 N

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.30/ i:=1 j:=1 i  N és nem T(X[i,j]) j<Mj<M j:=j+1 j:=1 i:=i+1 Van:= i  N 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 N

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.31/ 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!

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.32/ 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 szigettesztelési elvek  Hogyan készítünk nagy teszteket?

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.33/ 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= Mag[i]:=0 i=901..N Mag[i]:=i–900  Európa  tenger  Amerika

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.34/ 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. x 0  f(x 0 )=x 1  f(x 1 )=x 2  …  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.

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.35/ 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 … srand(time(NULL)); i=rand() % 6 +1;

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.36/ 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 véletlenszám<0.5 Mag[i]:=0Mag[i]:=1 i=901..N Mag[i]:=Véletlen(3..8)  Európa  tenger és szigetek  Amerika I N

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

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.38/ Véletlen tesztek (Példa – C++) Kód: Függvény- prototípusok Főprogram

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.39/ Véletlen tesztek (Példa – C++) Kód: A lényegi eljárás

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.40/ Véletlen tesztek (Példa – C++) Kód: Alprogramok implementációja Kód jegyzet- ként

ELTE Szlávi-Zsakó: Programozási alapismeretek 10.41/ Véletlen tesztek (Példa – C++) Az eredményfájl … és elemzése: Adatfájl jegyzet- ként

Programozási alapismeretek 10. előadás vége