Programozási alapismeretek 4. előadás. ELTE 2013.09.22.  Programozási tételek – a lényeglényeg  Sorozatszámítás – összegzés… Sorozatszámítás  Megszámolás.

Slides:



Advertisements
Hasonló előadás
Események formális leírása, műveletek
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
Algoritmus és programozás
Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások.
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.
Algoritmizálás, adatmodellezés tanítása 4. előadás
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 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.
Sztringek.
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.
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/
*** HALMAZOK *** A HALMAZ ÉS MEGADÁSA A HALMAZ FOGALMA
Tömbök és programozási tételek
Összetett adattípusok
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.
Koncepció: Specifikáció: e par exp i = eb imp bod ib Specifikáció elemzése: tulajdonságok felírása a koncepció alapján + tulajdonságok bizonyítása.
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.
Táblázatkezelés KÉPLETEK.
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.
1. feladat  Készíts olyan függvényt, mely paraméterül kapja két egész típusú változó címét, s hívása után a két változó értéke helyet cserél.
előadások, konzultációk
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
HÁLÓZAT Maximális folyam, minimális vágá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
Tömbök és programozási tételek
Programozási tételek Mik is ezek?
Halmazműveletek.
Eljaras linearis_kereses(adatok[],n)
Informatikai gyakorlatok 11. évfolyam
Programozási tételek.
Programozási tételek.
Absztrakt problémák Q  I  S, az absztrakt probléma kétváltozós reláció az esetek (I) és a megoldások (S) halmazán Példa: legrövidebb út Eset: gráf és.
Előadás másolata:

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 Megszámolás  Maximum-kiválasztás Maximum-kiválasztás  Eldöntés Eldöntés  Kiválasztás Kiválasztás  Keresés Keresés  Programozás tételek – visszatekintésvisszatekintés Tartalom 2/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE 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ó 2. absztrakt algoritmus Egy fontos előzetes megjegyzés: A bemenet legalább egy sorozat… 3/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE 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 4/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE 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 5/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

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

ELTE Sorozatszámítás Csoportosítsunk:  Számok összege: „vagyon”, „köridők”  Számok szorzata: „faktoriális”  Halmazok uniója: „szakkörök”  Szavak egymásutánja: „szavak” Mi bennük a közös? N „valamiből” kell kiszámolni „kumuláltan” egy „valamit”! Pl.  – vagyon/köridők;  – faktoriális;  – szakkörök; & – szavak 7/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Sorozatszámítás Specifikáció:  Bemenet: N  N, X  H N  Kimenet: S  H  Előfeltétel: –  Utófeltétel: S=F(X 1..N ) F: H N → H,  – N tagú összeg;  – N tényezős szorzat;  – N halmaz uniója; & – N szöveg konkatenációja … 8/52 H: tetszőleges halmaz; H N ={(h 1,…,h N )|h i  H } (X 1,…,X N ) sorozat Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE H * ={(h 1,h 2,…)|h i  H } Sorozatszámítás változó  Probléma: F: N paraméteres művelet, ahol az N változó. 2-paraméteres művelet null-elem  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, egyébként Tehát: F: H * → H, F 0  H, Gondolja meg a többi esetén mi az f/F 0 ?  – ?/?  – ?/? & – ?/? 9/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Sorozatszámítás Specifikáció (a végleges) :  Bemenet: N  N, X  H N  Kimenet: S  H  Előfeltétel: –  Utófeltétel: S=F(X 1..N )  Definíció: F: H *  H 10/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás H * ={(h 1,h 2,…)|h i  H }

ELTE Sorozatszámítás – összegzés Specifikáció (összegzés) :  Bemenet: N  N, X  H N  Kimenet: S  H  Előfeltétel: –  Utófeltétel: S=   A definíció nyilvánvalóan teljesül, azaz: H : Z vagy R 11/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Sorozatszámítás Algoritmus: Változó N:Egész Konstans maxN:Egész(???) Változó X:Tömb[1..maxN:TH] S:TH statikusan Tehát megállapodunk abban, h. a tételek algoritmusához statikusan deklaráljuk a sorozathoz tartozó tömböt. 12/52 Programparaméterek deklarálása TH: a H halmaznak megfelelő típus – maxN: a tömb maximális mérete Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Sorozatszámítás Algoritmus ( általánosan ):  (összegzés) esetén: S:=F 0 i=1..N S:=f(S,X[i]) S:=0 i=1..N S:=S+X[i] Változó i:Egész 13/52 – Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Sorozatszámítás példa Változó i:Egész 14/52 Specifikáció:  Bemenet: N  N, Be,Ki  Z N  Kimenet: S  Z  Előfeltétel:  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] Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE 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! 15/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE 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. 16/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Megszámolás Specifikáció:  Bemenet: N  N, X  H N, T: H  L  Kimenet: Db  N  Előfeltétel: –  Utófeltétel: Db= T tulajdonság logikai függvény Megjegyzés: A T tulajdonság egy logikai függvényként adható meg. X minden elemről megvizsgálható, hogy ren- delkezik-e az adott tulajdonsággal vagy sem. 17/52 H: tetszőleges halmaz T: tetszőleges tulajdonság-függvény Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Megszámolás Algoritmus: Db:=0 i=1..N T(X[i]) Db:=Db+1  I N Változó i:Egész 18/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Megszámolás példa Specifikáció:  Bemenet: N  N, Hó  N N, Téli?: N  L, Téli?(x):=x=1 vagy x=2 vagy x=12  Kimenet: Db  N  Előfeltétel:  i (1  i  N): Hó i  [1..12]  Utófeltétel: Db= 19/52 T: tulajdonság-függvény (Téli?) törzsének behelyettesítése Téli?(Hó i ) Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás x<3 vagy x=12 ↕

ELTE Megszámolás példa Algoritmus: Kérdés: Mi lenne, ha az előfeltétel (  i (1  i  N): Hó i  [1..12]) nem teljesülne? Db:=0 i=1..N Hó[i]<3 vagy Hó[i]=12 Db:=Db+1  I N Változó i:Egész 20/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Maximum-kivá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! 21/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Maximum-kivá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! 22/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Specifikáció:  Bemenet: N  N, X  H N  Kimenet: Max  N  Előfeltétel: N>0  Utófeltétel: 1  Max  N és  i (1  i  N): X Max  X i másképp: Max= N MaxInd X i i= Maximum-kiválasztás 23/52 A cél egy szummával azonos „tömörségű” operátorral kifejezni. Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Maximum-kiválasztás Megjegyzések:  Léteznie kell  Léteznie kell a  : H  H  L rendezési relációnak. sorszámáltalánosabb  A sorszám sorozatok esetén általánosabb, mint az érték, ezért legtöbbször a sorszámot adjuk meg. 24/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Maximum-kiválasztás Algoritmus: Megjegyzés: első Többlet tudás: ha több maximális érték is van, akkor közülük az elsőt kapjuk meg. utolsó minimális 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 Változó i:Egész 25/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás 26/

ELTE Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás 27/

ELTE Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás 28/

ELTE Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás 29/

ELTE Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás 30/

ELTE Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás 31/

ELTE Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás 32/

ELTE Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás 33/

ELTE Maximum-kiválasztás (maximális értékkel) Specifikáció:  Kimenet: MaxÉrt  H  Utófeltétel:  i (1  i  N): MaxÉrt=X i és  i (1  i  N): MaxÉrt  X i másképp:MaxÉrt= A két változatot össze is vonhatjuk: N MaxÉrt X i i=1 34/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás  MaxÉrt  X és

ELTE Maximum-kiválasztás (maximális értékkel) MaxÉrt:=X[1] i=2..N X[i]>MaxÉrt MaxÉrt:=X[i]  Algoritmus: IN Változó i:Egész 35/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Maximum-kiválasztás példa Specifikáció:  Bemenet: N  N, Hó,Nap  N N Kimenet: Első  N  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 ) 36/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Maximum-kiválasztás példa Specifikáció (másképp) :  Bemenet: N  N, Hó,Nap  N N Kimenet: Első  N  Előfeltétel: N>0 és  i(1  i  N): (Hó i  [1..12] és Nap i  [1..31])  Utófeltétel: Első=  Definíció: (Hó i,Nap i )  (Hó j,Nap j )  Hó i <Hó j vagy Hó i =Hó j és Nap i  Nap j 37/52 N MaxInd (Hó i,Nap i ) i=1 Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Maximum-kiválasztás példa Algoritmus: Első:=1 i=2..N Hó[i]<Hó[Első] vagy Hó[i]=Hó[Első] és Nap[i]<Nap[Első] Első:=i  I N Változó i:Egész 38/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE 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! 39/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE 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! 40/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Eldöntés Specifikáció:  Bemenet: N  N, X  H N, T: H  L  Kimenet: Van  L  Előfeltétel: –  Utófeltétel: Van=  i(1  i  N): T(X i ) másképp: N Van=  T(X i ) i=1 41/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Eldöntés Algoritmus: i:=1 i  N és nem T(X[i]) i:=i+1 Van:=i  N Változó i:Egész 42/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Eldöntés Feladatvariáns: … az összes elem olyan-e … Specifikáció (csak a különbség) :  Kimenet: Mind  L  Utófeltétel : Mind=  i(1  i  N): T(X i ) másképp: N Mind=  T(X i ) i=1 43/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Eldöntés Feladatvariáns: … az összes elem olyan-e … Algoritmus: i:=1 i  N és nem T(X[i]) i:=i+1 Mind:=i>N Változó i:Egész 44/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Eldöntés példa Specifikáció:  Bemenet: N  N, Jegy  N N  Kimenet: Bukott  L  Előfeltétel:  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 Változó i:Egész 45/52 T: tulajdonság- függvény Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE 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! 46/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE 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. 47/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Kiválasztás Specifikáció:  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 ) másképp: N Ind=Kiválaszt i i=1 T(X i ) 48/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

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

ELTE Kiválasztás példa Specifikáció:  Bemenet: Szó  S  Kimenet: MH  N  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: K  L magánhangzóE(c):= nagybetű(c)  {'A',…,'Ű'} 50/52 T: tulajdonság- függvény Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

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

ELTE 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! 52/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE 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. 53/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Keresés Specifikáció:  Bemenet: N  N, X  H N  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 ) másképp: eldöntés kiválasztás Tehát a feladat „egyik fele” az eldöntésből, a „másik fele” a kiválasztásból jön. N (Van,Ind)= Keres i i=1 T(X i ) 54/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Keresés Algoritmus 1 : Megjegyzés: első 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 Ind:=i  I N Változó i:Egész 55/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Keresés példa Specifikáció:  Bemenet: N  N, Jegy  N N  Kimenet: Bukott  L, TI  N  Előfeltétel:  i (1  i  N): Jegy i  [1..5]  Utófeltétel: Bukott=  i (1  i  N): Jegy i =1 és Bukott  1  TI  N és Jegy TI =1 azaz N (Bukott,TI)=Keres i i=1 Jegy i =1 56/52 T: tulajdonság- függvény Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Keresés példa Algoritmus: i:=1 i  N és Jegy[i]  1 i:=i+1 Bukott:=i  N Bukott TI:=i  I N Változó i:Egész 57/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Programozási tételek – visszatekintés 1. Sorozatszámítás (összegzés) Sorozatszámítás 2. Megszámolás Megszámolás 3. Maximum-kiválasztás Maximum-kiválasztás 4. Eldöntés Eldöntés 5. Kiválasztás Kiválasztás 6. Keresés Keresés szummás feladat  számlálós ciklus kvantoros feladat  feltételes ciklus 58/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

ELTE Programozási tételek – visszatekintés 1. Sorozatszámítás (összegzés) Sorozatszámítás 2. Megszámolás Megszámolás 3. Maximum-kiválasztás Maximum-kiválasztás 4. Eldöntés Eldöntés 5. Kiválasztás Kiválasztás 6. Keresés Keresés +1. Madártávlatból újra… Madártávlatból N0N0 N>0N>0 N0N0 N>0N>0 N0N0 59/52Horváth - Papné - Szlávi - Zsakó: Programozási alapismeretek 4. előadás

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