Programozási alapismeretek 5. előadás. ELTE Szlávi - Zsakó: Programozási alapismeretek 5.2/482014. 07. 12.2014. 07. 12.2014. 07. 12.  Programozási tételek.

Slides:



Advertisements
Hasonló előadás
„Esélyteremtés és értékalakulás” Konferencia Megyeháza Kaposvár, 2009
Advertisements

Sorozatszámítás Sorozatszámítás (N,A,s) s := kezdőérték
Programozási tételek, és „négyzetes” rendezések
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
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
Euklidészi gyűrűk Definíció.
4. VÉGES HALMAZOK 4.1 Alaptulajdonságok
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 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.
Elektronikai Áramkörök Tervezése és Megvalósítása
Gombkötő Attila Lineáris egyenlet.
Készítette: Pető László
A digitális számítás elmélete
Év eleji információk Előadó: Hosszú Ferenc II. em Konzultáció: Szerda 9:50 – 10:35 II. em
Valós számok Def. Egy algebrai struktúra rendezett test, ha test és rendezett integritási tartomány. Def. Egy (T; +,  ;  ) rendezett test felső határ.
6. SZÁMELMÉLET 6.1. Oszthatóság
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/
6. Előadás Merevítő rendszerek típusok, szerepük a tervezésben
Halmazelmélet és matematikai logika
szakmérnök hallgatók számára
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
Határozatlan integrál
Programozási tételek.
Programozás I. Típus algoritmusok
Mérés és adatgyűjtés laboratóriumi gyakorlat - levelező Sub-VI és grafikonok 1 Mingesz Róbert V
Algoritmizálás, adatmodellezés tanítása 8. előadás.
Algoritmizálás, adatmodellezés tanítása 2. előadás.
Táblázatkezelés KÉPLETEK.
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 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.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
Nevezetes algoritmusok
Programozási tételek Mik is ezek?
Halmazműveletek.
Informatikai gyakorlatok 11. évfolyam
Programozási tételek.
Programozási tételek.
Előadás másolata:

Programozási alapismeretek 5. előadás

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.2/  Programozási tételek – a lényeglényeg  Sorozatszámítás Sorozatszámítás  Eldöntés Eldöntés  Kiválasztás Kiválasztás  Keresés Keresés  Megszámolás Megszámolás  Maximumkiválasztás Maximumkiválasztás  Programozás tételek – visszatekintésvisszatekintés  Programozási tételek felhasználásafelhasználása Tartalom

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.3/ Programozási tételek (PrT) lényege Célja: Bizonyíthatóan helyes sablon, amelyre magasabb szinten lehet építeni a megol- dást. (A fejlesztés gyorsabb és biztonsá- gosabb.) Szerkezete: 1. absztrakt feladat specifikáció [+program- specifikáció] 2. absztrakt algoritmus Egy fontos előzetes megjegyzés: A bemenet legalább egy sorozat…

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.4/ Programozási tételek (PrT) lényege Felhasználásának menete: 1. a konkrét feladat specifikálása 2. a specifikációban a PrT-ek megsejtése 3. a konkrét feladat és az absztrakt feladat paramétereinek egymáshoz rendelése 4. a konkrét algoritmus „generálása” a megsejtett PrT-ek absztrakt algoritmu- sok alapján, 3. szerint átparaméterezve 5. hatékonyítás programtranszformációk- kal

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.5/ Programozási tételek Mi az, hogy programozási tétel? Típusfeladat általános megoldása.  Sorozat  érték  Sorozat  sorozat  Sorozat  sorozatok  Sorozatok  sorozat Sorozat  érték

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.6/ Sorozatszámítás Feladatok:  Ismerjük egy ember havi bevételeit és kiadá- sait. Adjuk meg, hogy év végére mennyivel nőtt a vagyona!  Ismerjük egy autóversenyző körönkénti ide- jét. Adjuk meg az átlagkörének idejét!  Adjuk meg az N számhoz az N faktoriális ér- tékét!  Ismerjük egy iskola szakköreire járó tanulóit, szakkörönként. Adjuk meg, kik járnak szak- körre!  Ismerünk N szót. Adjuk meg a belőlük össze - állított mondatot!

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.7/ Sorozatszámítás Mi bennük a közös? N „valamiből” kell kiszámolni „kumuláltan” egy „valamit”! Pl.  – bevétel/köridő;  – faktoriális;  – szakkörös; & – szó

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.8/ Sorozatszámítás Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]  Kimenet: S:Valami  Előfeltétel: N  0  Utófeltétel: S=F(X[1..N]) F:  – N tagú összeg;  – N tényezős szorzat;  – N halmaz uniója; & – N szöveg konkatenációja …

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.9/ Sorozatszámítás  Probléma: F: N paraméteres művelet, ahol az N válto- zó.  Megoldás: Visszavezetjük 2-paraméteres műveletre (pl.  helyett +) és egy null-elemre (+ esetén a 0). F(X[1..N])= f(F(X[1..N–1]),X[N]), ha N>0 F(–)=F 0 … és a többi esetén mi az f/F 0 ?  – ?/?  – ?/? & – ?/?

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.10/ Sorozatszámítás Specifikáció (a végleges) :  Bemenet: N:Egész, X:Tömb[1..N:Valami]  Kimenet: S:Valami  Előfeltétel: N  0  Utófeltétel: S=F(X[1..N])  Definíció:

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.11/ Sorozatszámítás Algoritmus:  esetén: S:=F 0 i=1..N S:=f(S,X[i]) S:=0 i=1..N S:=S+X[i] Szum(X[1..N]):=

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.12/ Sorozatszámítás Specifikáció:  Bemenet: N:Egész, Be,Ki:Tömb[1..N:Egész]  Kimenet: S:Egész  Előfeltétel: N  0 és  i (1  i  N): Be[i],Ki[i]  0  Utófeltétel: S= Be[i]–Ki[i] Algoritmus: S:=0 i=1..N S:=S+Be[i] – Ki[i]

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.13/ Eldöntés Feladatok: 1. Egy természetes számról döntsük el, hogy prímszám-e! 2. Egy szóról mondjuk meg, hogy egy hónap- nak a neve-e! 3. Egy tanuló év végi osztályzatai alapján álla- pítsuk meg, hogy bukott-e! 4. Egy szóról adjuk meg, hogy van-e benne ma- gánhangzó! 5. Egy számsorozatról döntsük el, hogy mono- ton növekvő-e! 6. Egy tanuló év végi jegyei alapján adjuk meg, hogy kitűnő-e!

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.14/ Eldöntés Mi bennük a közös? Döntsük el, hogy N „valami” között van-e adott tulajdonsággal rendelkező elem!

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.15/ Eldöntés Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]  Kimenet: Van:Logikai  Előfeltétel: N  0  Utófeltétel: Van=  i(1  i  N): T(X[i]) Megjegyzés: A T tulajdonság egy logikai függvényként adható meg. Minden elemről megvizsgálható, hogy ren- delkezik-e az adott tulajdonsággal.

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.16/ Eldöntés Algoritmus 1 : Algoritmus 2 : i:=1 i  N és nem T(X[i]) i:=i+1 Van:=i  N i:=0 Van:=Hamis i<N és nem Van i:=i+1 Van:=T(X[i])

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.17/ Eldöntés Feladatvariáns: … az összes elem olyan-e … Specifikáció (csak a különbség) :  Kimenet: Mind:Logikai  Utófeltétel : Mind=  i(1  i  N): T(X[i]) Algoritmus: i:=1 i  N és nem T(X[i]) i:=i+1 Mind:=i>N

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.18/ Eldöntés Specifikáció:  Bemenet: N:Egész, Jegy:Tömb[1..N:Egész]  Kimenet: Bukott:Logikai  Előfeltétel: N  0 és  i (1  i  N): Jegy[i]  [1..5]  Utófeltétel: Bukott=  i (1  i  N): Jegy[i]=1 Algoritmus: i:=1 i  N és Jegy[i]  1 i:=i+1 Bukott:=i  N

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.19/ Kiválasztás Feladatok: 1. Ismerjük egy ember havi bevételeit és kiadá- sait. Év végére nőtt a vagyona. Adjunk meg egy hónapot, amikor nőtt a vagyona! 2. Adjuk meg egy természetes szám egytől kü- lönböző legkisebb osztóját! 3. Adjuk meg egy magyar szó egy magánhang- zóját! 4. Adjuk meg egy hónapnévről a sorszámát!

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.20/ Kiválasztás Mi bennük a közös? N „valami” közül kell megadni egy adott tulajdonságút, ha tudjuk, hogy ilyen elem biztosan van.

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.21/ Kiválasztás Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]  Kimenet: S:Egész  Előfeltétel: N>0 és  i (1  i  N): T(X[i])  Utófeltétel: 1  S  N és T(X[S]) Megjegyzés: A T tulajdonság egy logikai függvényként adható meg, minden elemről megtudható, hogy rendelke- zik-e az adott tulajdonsággal.

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.22/ Kiválasztás Algoritmus: Megjegyzés: Többlet tudás: a megoldás az első adott tulajdon- ságú elemet adja meg – a program tudhat többet annál, mint amit várunk tőle. Hogy kellene az utolsót megadni? i:=1 nem T(X[i]) i:=i+1 S:=i

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.23/ Kiválasztás Specifikáció:  Bemenet: Szó:Szöveg  Kimenet: MH:Egész  Előfeltétel: hossz(Szó)>0 és  i (1  i  hossz(Szó)): magánhangzóE(Szó[i])  Utófeltétel: 1  MH  hossz(Szó) és magánhangzóE(Szó[MH])  Definíció: magánhangzóE: Karakter  Logikai magánhangzóE(c):= nagybetű(c)  {'A'..'Ű'}

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.24/ Kiválasztás Algoritmus: Megjegyzés: a kódoláskor a nagybetűsítő toupper függvénynél ügyelni kell az ékezetes betűkre! (L. 4. előadásban.)4. előadás i:=1 nem magánhangzóE(Szó[i]) i:=i+1 MH:=i

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.25/ Keresés Feladatok: 1. Ismerjük egy ember havi bevételeit és kiadá- sait. Év végére nőtt a vagyona. Adjunk meg egy hónapot, amikor nem nőtt a vagyona! 2. Adjuk meg egy természetes szám egy 1-től és önmagától különböző osztóját! 3. Adjuk meg egy ember nevében egy „ a ” be - tű helyét! 4. Adjunk meg egy tanulóra egy tárgyat, ami- ből megbukott! 5. Adjuk meg egy számsorozat olyan elemét, amely nagyobb az előzőnél!

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.26/ Keresés Mi bennük a közös? N darab „valami” közül kell megadni egy adott tulajdonságút, ha nem tudjuk, hogy ilyen elem van-e.

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.27/ Keresés Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]  Kimenet: Van:Logikai, S:Egész  Előfeltétel: N  0  Utófeltétel: Van=  i (1  i  N): T(X[i]) és Van  1  S  N és T(X[S]) Tehát a feladat „egyik fele” az eldöntésből, a „másik fele” a kiválasztásból jön.

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.28/ Keresés Algoritmus 1 : Megjegyzés: Többlet tudás: a megoldás az első adott tulajdonsá- gú elemet adja meg. i:=1 i  N és nem T(X[i]) i:=i+1 Van:=i  N Van S:=i  I N

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.29/ Keresés Algoritmus 2 : Megjegyzés: Többlet tudás: a megoldás az első adott tulajdonsá- gú elemet adja meg. i:=0 Van:=Hamis i<N és nem Van i:=i+1 Van:=T(X[i]) Van S:=i  I N

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.30/ Keresés Specifikáció:  Bemenet: N:Egész, Jegy:Tömb[1..N:Egész]  Kimenet: Bukott:Logikai, T:Egész  Előfeltétel: N  0 és  i (1  i  N): Jegy[i]  [1..5]  Utófeltétel: Bukott=  i (1  i  N): Jegy[i]=1 és Bukott  1  T  N és Jegy[T]=1

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.31/ Keresés Algoritmus: i:=1 i  N és Jegy[i]  1 i:=i+1 Bukott:=i  N Bukott T:=i  I N

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.32/ Megszámolás Feladatok: 1. Ismerjük egy ember havi bevételeit és kiadá- sait. Adjunk meg, hogy hány hónapban nőtt a vagyona! 2. Adjuk meg egy természetes szám osztói szá- mát! 3. Adjuk meg egy ember nevében levő „a” be- tűk számát! 4. Adjunk meg az éves statisztika alapján, hogy hány napon fagyott! 5. Adjuk meg N születési hónap alapján, hogy közöttük hányan születtek télen!

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.33/ Megszámolás Mi bennük a közös? N darab „valamire” kell megadni, hogy hány adott tulajdonságú van közöttük.

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.34/ Megszámolás Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]  Kimenet: Db:Egész  Előfeltétel: N  0  Utófeltétel: Db=

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.35/ Megszámolás Algoritmus: Db:=0 i=1..N T(X[i]) Db:=Db+1  I N

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.36/ Megszámolás Specifikáció:  Bemenet: N:Egész, Hó:Tömb[1..N:Egész]  Kimenet: Db:Egész (télen születettek)  Előfeltétel: N  0 és  i (1  i  N): Hó[i]  [1..12]  Utófeltétel: Db=

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.37/ Megszámolás Algoritmus: Db:=0 i=1..N Hó[i]<3 vagy Hó[i]=12 Db:=Db+1  I N

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.38/ Maximumkiválasztás Feladatok: 1. Ismerjük egy ember havi bevételeit és kiadá- sait. Adjunk meg, hogy melyik hónapban nőtt legjobban a vagyona! 2. Adjuk meg N ember közül az ábécében utol- sót! 3. Adjuk meg N ember közül azt, aki a legtöbb ételt szereti! 4. Adjunk meg az éves statisztika alapján a leg- melegebb napot! 5. Adjuk meg N születésnap alapján azt, akinek idén először van születésnapja!

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.39/ Maximumkiválasztás Mi bennük a közös? N darab „valami” közül kell megadni a legnagyobbat (vagy a legkisebbet). Fontos: Ha legalább 1 elemünk van, akkor legna- gyobb (legkisebb) is biztosan van közöttük!

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.40/ Maximumkiválasztás Specifikáció:  Bemenet: N:Egész, X:Tömb[1..N:Valami]  Kimenet: Max:Egész  Előfeltétel: N>0  Utófeltétel: 1  Max  N és  i (1  i  N): X[Max]  X[i] Megjegyzések:  Léteznie kell a  :Valami  Valami  Logikai rende- zési relációnak;  a sorszám általánosabb, mint az érték, ezért legtöbb- ször a sorszámot adjuk meg.

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.41/ Maximumkiválasztás Algoritmus: Megjegyzés: Többlet tudás: ha több maximális érték is van, akkor közülük az elsőt kapjuk meg. Kérdések: Hogyan lesz belőle utolsó maximális? Hogyan lesz belőle (első) minimális? Max:=1 i=2..N X[i]>X[Max] Max:=i  I N

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.42/ Maximumkiválasztás (maximális értékkel) MaxÉrt:=X[1] i=2..N X[i]>MaxÉrt MaxÉrt:=X[i]  Specifikáció:  Kimenet: MaxÉrt:Valami  Utófeltétel:  i (1  i  N): MaxÉrt=X[i] és  i (1  i  N): MaxÉrt  X[i] Algoritmus: I N

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.43/ Maximumkiválasztás Specifikáció:  Bemenet: N:Egész, Hó,Nap:Tömb[1..N:Egész], Kimenet: Első:Egész  Előfeltétel: N>0 és  i(1  i  N): (Hó[i]  [1..12] és Nap[i]  [1..31])  Utófeltétel: 1  Első  N és  i(1  i  N): (Hó[Első]<Hó[i] vagy Hó[Első]=Hó[i] és Nap[Első]  Nap[i])

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.44/ Maximumkiválasztás Algoritmus: Első:=1 i=2..N Hó[i]<Hó[Első] vagy Hó[i]=Hó[Első] és Nap[i]<Nap[Első] Első:=i  I N

ELTE Szlávi - Zsakó: Programozási alapismeretek 5.45/ Programozási tételek – visszatekintés 1. Sorozatszámítás (összegzés) Sorozatszámítás 2. Eldöntés Eldöntés 3. Kiválasztás Kiválasztás 4. Keresés Keresés 5. Megszámolás Megszámolás 6. Maximumkiválasztás Maximumkiválasztás +1. Madártávlatból újra… Madártávlatból

ELTE Szlávi - Zsakó: Programozási alapismeretek 5. 46/ PrTek felhasználása Árulkodó jelek (tételek madártávlatból) :  a PrT-felismeréshez – a specifikáció kimenete:  egy logikai érték  eldöntéseldöntés  egy sorozat, amelynek azonos a hossza a bementi sorozatéval  másolás… ... az utófeltételben szerepel:  egy sorozatművelet (Σ, Π …)  sorozatszámítás sorozatszámítás  …

ELTE Szlávi - Zsakó: Programozási alapismeretek 5. 47/ Programozási tételek felhasználása Árulkodó jelek (tételek madártávlatból) :  PrT-kombináláshoz:  a kimenet egy logikai érték  eldöntés tétel egy másik tétel tulajdonságának meg- valósítójaeldöntés  a kimenet egy sorozat  kombinálható, mint előfeldolgozó, bármely másik PrT-lel  …

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