Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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.

Hasonló előadás


Az előadások a következő témára: "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."— Előadás másolata:

1 Programozási alapismeretek 4. előadás

2 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

3 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

4 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

5 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

6 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

7 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

8 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

9 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

10 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 }

11 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

12 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

13 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

14 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

15 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

16 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

17 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

18 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

19 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 ↕

20 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

21 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

22 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

23 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

24 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

25 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

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

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

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

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

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

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

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

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

34 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

35 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

36 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ő

37 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

38 ELTE Maximum-kiválasztás példa Algoritmus: Első:=1 i=2..N Hó[i]

39 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

40 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

41 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

42 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

43 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

44 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

45 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

46 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

47 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

48 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

49 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

50 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

51 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

52 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

53 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

54 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

55 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

56 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

57 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

58 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

59 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

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


Letölteni ppt "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."

Hasonló előadás


Google Hirdetések