Programozsi alapismeretek 8 elads Programozsi alapismeretek 8 elads

  • Slides: 31
Download presentation
Programozási alapismeretek 8. előadás

Programozási alapismeretek 8. előadás

Programozási alapismeretek 8. előadás Ø További programozási tételek Ø Másolás – függvényszámítás Ø Kiválogatás

Programozási alapismeretek 8. előadás Ø További programozási tételek Ø Másolás – függvényszámítás Ø Kiválogatás ELTE Ø Szétválogatás Ø Metszet Ø Unió Ø Programozási tételek – visszatekintés 9/9/2021 Szlávi-Zsakó: Programozási alapismeretek 8. 2/31

További programozási tételek ELTE 9/9/2021 Mi az, hogy programozási tétel? Típusfeladat általános megoldása. Ø

További programozási tételek ELTE 9/9/2021 Mi az, hogy programozási tétel? Típusfeladat általános megoldása. Ø Sorozat érték Ø Sorozat sorozatok Ø Sorozatok sorozat Szlávi-Zsakó: Programozási alapismeretek 8. 3/31

7. Másolás – függvényszámítás Feladatok: Ø Egy ELTE 9/9/2021 számsorozat tagjainak adjuk meg az

7. Másolás – függvényszámítás Feladatok: Ø Egy ELTE 9/9/2021 számsorozat tagjainak adjuk meg az ab-szolút értékét! Ø Egy szöveget alakítsunk át csupa kisbetűssé! Ø Számoljuk ki két vektor összegét! Ø Készítsünk függvénytáblázatot a sin(x) függ-vényről! Ø Ismerjük N hónap sorszámát, adjuk meg a nevét! Szlávi-Zsakó: Programozási alapismeretek 8. 4/31

7. Másolás – függvényszámítás Mi bennük a közös? ELTE 9/9/2021 N darab „valamihez” kell

7. Másolás – függvényszámítás Mi bennük a közös? ELTE 9/9/2021 N darab „valamihez” kell hozzárendelni má-sik N darab „valamit”, ami akár az előbbitől különböző típusú is lehet. A darabszám ma-rad, a sorrend is marad. Az elemeken operá-ló függvény ugyanaz. Szlávi-Zsakó: Programozási alapismeretek 8. 5/31

7. Másolás – függvényszámítás Specifikáció: Ø Bemenet: ELTE N: Egész, X: Tömb[1. . N:

7. Másolás – függvényszámítás Specifikáció: Ø Bemenet: ELTE N: Egész, X: Tömb[1. . N: Valami 1] Ø Kimenet: Y: Tömb[1. . N: Valami 2] f: Valami 1→Valami 2 Ø Előfeltétel: N 0 Ø Utófeltétel: i (1≤i≤N): Y[i]=f(X[i]) Algoritmus: i=1. . N Y[i]: =f(X[i]) 9/9/2021 Szlávi-Zsakó: Programozási alapismeretek 8. 6/31

7. Másolás – függvényszámítás Specifikáció (egy gyakori speciális eset): Ø Bemenet: ELTE N: Egész,

7. Másolás – függvényszámítás Specifikáció (egy gyakori speciális eset): Ø Bemenet: ELTE N: Egész, X: Tömb[1. . N: Valami] Ø Kimenet: Y: Tömb[1. . N: Valami] Ø Előfeltétel: N 0 Ø Utófeltétel: i (1≤i≤N): Algoritmus: 9/9/2021 i=1. . N T(X[i]) I N Y[i]: =f(X[i Y[i]: =X[i] ]) Szlávi-Zsakó: Programozási alapismeretek 8. 7/31

7. Másolás – függvényszámítás Specifikáció: Ø Bemenet: ELTE (X[i], Z[i]) Valós N: Egész, X,

7. Másolás – függvényszámítás Specifikáció: Ø Bemenet: ELTE (X[i], Z[i]) Valós N: Egész, X, Z: Tömb[1. . N: Valós] Ø Kimenet: Y: Tömb[1. . N: Valós] Ø Előfeltétel: N 0 Ø Utófeltétel: i(1≤i≤N): Y[i]=X[i]+Z[i] Algoritmus: f((X[i], Z[i])): =X[i]+Z[i] i=1. . N Y[i]: =X[i]+Z[i] 9/9/2021 Szlávi-Zsakó: Programozási alapismeretek 8. 8/31

8. Kiválogatás Feladatok: Ø Adjuk ELTE 9/9/2021 meg egy osztály kitűnő tanulóit! Ø Adjuk

8. Kiválogatás Feladatok: Ø Adjuk ELTE 9/9/2021 meg egy osztály kitűnő tanulóit! Ø Adjuk meg egy természetes szám összes osztóját! Ø Adjuk meg egy mondat magas hangrendű szavait! Ø Adjuk meg emberek egy halmazából a 180 cm felettieket! Ø Adjuk meg egy év azon napjait, amikor délben nem fagyott! Ø Adjuk meg egy szó magánhangzóit! Szlávi-Zsakó: Programozási alapismeretek 8. 9/31

8. Kiválogatás ELTE Mi bennük a közös? N darab „valami” közül kell megadni az

8. Kiválogatás ELTE Mi bennük a közös? N darab „valami” közül kell megadni az összes, adott T tulajdonsággal rendelkezőt! 9/9/2021 Szlávi-Zsakó: Programozási alapismeretek 8. 10/31

8. Kiválogatás Specifikáció: Ø Bemenet: ELTE Statikus tömb-deklaráció esetében: N N: Egész, X: Tömb[1.

8. Kiválogatás Specifikáció: Ø Bemenet: ELTE Statikus tömb-deklaráció esetében: N N: Egész, X: Tömb[1. . N: Valami] Ø Kimenet: Db: Egész, Y: Tömb[1. . Db: Egész] Ø Előfeltétel: N 0 L. Megszámolás tételt! Ø Utófeltétel: Db= és i(1≤i≤Db): T(X[Y[i]]) és Y (1, 2, …, N) 9/9/2021 Szlávi-Zsakó: : Programozási alapismeretek 8. 11/31

8. Kiválogatás L. Megszámolás tételt! Algoritmus: Db: =0 ELTE I i=1. . N T(X[i])

8. Kiválogatás L. Megszámolás tételt! Algoritmus: Db: =0 ELTE I i=1. . N T(X[i]) Db: =Db+1 Y[Db]: =i N Megjegyzés: A sorszám általánosabb, mint az érték. Ha még-is érték kellene, akkor Y[Db]: =X[i] szerepelne. (Ekkor a specifikációt is módosítani kell!) 9/9/2021 Szlávi-Zsakó: Programozási alapismeretek 8. 12/31

8. Kiválogatás Specifikáció: Ø Bemenet: ELTE N: Egész, H: Tömb[1. . N: Valós] Ø

8. Kiválogatás Specifikáció: Ø Bemenet: ELTE N: Egész, H: Tömb[1. . N: Valós] Ø Kimenet: Db: Egész, NF: Tömb[1. . N: Egész] Ø Előfeltétel: N 0 Ø Utófeltétel: Db= és i(1≤i≤Db): H[NF[i]]>0 és NF (1, 2, …, N) 9/9/2021 Szlávi-Zsakó: Programozási alapismeretek 8. 13/31

8. Kiválogatás Algoritmus: Db: =0 ELTE I i=1. . N H[i]>0 Db: =Db+1 NF[Db]:

8. Kiválogatás Algoritmus: Db: =0 ELTE I i=1. . N H[i]>0 Db: =Db+1 NF[Db]: =i 9/9/2021 Szlávi-Zsakó: Programozási alapismeretek 8. N 14/31

10. Szétválogatás Feladatok: Ø Adjuk ELTE 9/9/2021 meg egy osztály kitűnő és nem kitűnő

10. Szétválogatás Feladatok: Ø Adjuk ELTE 9/9/2021 meg egy osztály kitűnő és nem kitűnő tanulóit! Ø Adjuk meg emberek egy halmazából a 180 cm felettieket és a nem 180 cm felettieket! Ø Adjuk meg egy számsorozatból a páros és a páratlan számokat is! Ø Adjuk meg egy év azon napjait, amikor dél-ben fagyott és amikor nem fagyott! Ø Adjuk meg egy angol szó magán- és mással-hangzóit! Szlávi-Zsakó: Programozási alapismeretek 8. 15/31

10. Szétválogatás ELTE Mi bennük a közös? N darab „valami” közül kell megadni az

10. Szétválogatás ELTE Mi bennük a közös? N darab „valami” közül kell megadni az összes, adott T tulajdonsággal rendelkezőt, illetve nem rendelkezőt! Azaz az összes be-meneti elemet „besoroljuk” a kimenet vala-mely sorozatába. 9/9/2021 Szlávi-Zsakó: Programozási alapismeretek 8. 16/31

10. Szétválogatás Specifikáció: Ø Bemenet: ELTE N: Egész, X: Tömb[1. . N: Valami] Ø

10. Szétválogatás Specifikáció: Ø Bemenet: ELTE N: Egész, X: Tömb[1. . N: Valami] Ø Kimenet: Db: Egész, Y, Z: Tömb[1. . N: Egész] Ø Előfeltétel: N 0 Ø Utófeltétel: Db= és i(1≤i≤Db): T(X[Y[i]]) és i(1≤i≤N–Db): nem T(X[Z[i]]) és Y (1, 2, …, N) és Z (1, 2, …, N) 9/9/2021 Szlávi-Zsakó: Programozási alapismeretek 8. 17/31

10. Szétválogatás Algoritmus: Db: =0 Db. Z: =0 ELTE i=1. . N T(X[i]) I

10. Szétválogatás Algoritmus: Db: =0 Db. Z: =0 ELTE i=1. . N T(X[i]) I Db: =Db+1 Db. Z: =Db. Z+1 Y[Db]: =i Z[Db. Z]: =i N Megjegyzés: Itt is szerepelhetne : =i helyett : =X[i], ha csak az értékekre lenne szükségünk. (A specifikáció is módosítandó!) 9/9/2021 Szlávi-Zsakó: Programozási alapismeretek 8. 18/31

10. Szétválogatás Probléma: Y-ban és Z-ben együtt csak N darab elem van, azaz elég

10. Szétválogatás Probléma: Y-ban és Z-ben együtt csak N darab elem van, azaz elég lenne egyetlen Nelemű tömb. Megoldás: ELTE Ø Bemenet: N: Egész, X: Tömb[1. . N: Valami] Ø Kimenet: Db: Egész, Y: Tömb[1. . N: Egész] Ø Előfeltétel: N 0 Permutáció(1, 2, . . . , N): =az 1. . N számok összes permutációjának Ø Utófeltétel: Db= és halmaza 9/9/2021 i(1≤i≤Db): T(X[Y[i]]) és Szlávi-Zsakó: Programozási alapismeretek 8. 19/31

10. Szétválogatás Algoritmus: Db: =0 Db. Z: =N+1 i=1. . N ELTE T(X[i]) Db:

10. Szétválogatás Algoritmus: Db: =0 Db. Z: =N+1 i=1. . N ELTE T(X[i]) Db: =Db+1 Db. Z: =Db. Z– 1 Y[Db]: =i Y[Db. Z]: =i I 9/9/2021 Szlávi-Zsakó: Programozási alapismeretek 8. N 20/31

11. Metszet Feladatok: Ø Adjuk ELTE 9/9/2021 meg két természetes szám közös osz-tóit! Ø

11. Metszet Feladatok: Ø Adjuk ELTE 9/9/2021 meg két természetes szám közös osz-tóit! Ø A télen és a nyáron megfigyelhető madarak alapján adjuk meg a nem költöző madarakat! Ø Két ember szabad órái alapján mondjuk meg, hogy mikor beszélgethetnek egymással! Ø Adjuk meg azokat az állatfajokat, amelyeket a budapesti és a veszprémi állatkertben is megnézhetünk! Szlávi-Zsakó: Programozási alapismeretek 8. 21/31

11. Metszet ELTE Mi bennük a közös? Ismerünk két halmazt (tetszőleges, de azo-nos típusú

11. Metszet ELTE Mi bennük a közös? Ismerünk két halmazt (tetszőleges, de azo-nos típusú elemekkel), meg kell adnunk azo-kat az elemeket, amelyek mindkét halmazban szerepelnek! 9/9/2021 Szlávi-Zsakó: Programozási alapismeretek 8. 22/31

11. Metszet Specifikáció: Ø Bemenet: ELTE Az elemtartalmazás egyértelmű-e. Deklarációs méret lehet még: min(N,

11. Metszet Specifikáció: Ø Bemenet: ELTE Az elemtartalmazás egyértelmű-e. Deklarációs méret lehet még: min(N, M) N, M: Egész, X: Tömb[1. . N: Valami] Y: Tömb[1. . M: Valami] Ø Kimenet: Db: Egész, Z: Tömb[1. . Db: Valami] Ø Előfeltétel: N 0 és M 0 és Halmaz. E(X) és Halmaz. E(Y) Ø Utófeltétel: Db= és i(1≤i≤Db): (Z[i] X és Z[i] Y) és 9/9/2021 Halmaz. E(Z) Szlávi-Zsakó: Programozási alapismeretek 8. 23/31

11. Metszet Algoritmus: Db: =0 i=1. . N j: =1 ELTE j≤M és X[i]≠Y[j]

11. Metszet Algoritmus: Db: =0 i=1. . N j: =1 ELTE j≤M és X[i]≠Y[j] j: =j+1 j≤M I Db: =Db+1 Z[Db]: =X[i] N Megjegyzés: A megoldás egy kiválogatás és egy eldöntés. 9/9/2021 Szlávi-Zsakó: Programozási alapismeretek 8. 24/31

11. Metszet Feladatvariációk: Ø Ismerünk ELTE 9/9/2021 két halmazt, meg kell adnunk a közös

11. Metszet Feladatvariációk: Ø Ismerünk ELTE 9/9/2021 két halmazt, meg kell adnunk a közös elemek számát! Ø Ismerünk két halmazt, meg kell adnunk, hogy van-e közös elemük! Ø Ismerünk két halmazt, meg kell adnunk egyet közös elemük közül! Szlávi-Zsakó: Programozási alapismeretek 8. 25/31

12. Unió Feladatok: Ø Két ELTE 9/9/2021 szakkör tanulói alapján soroljuk fel a szakkörre

12. Unió Feladatok: Ø Két ELTE 9/9/2021 szakkör tanulói alapján soroljuk fel a szakkörre járókat! Ø A télen és a nyáron megfigyelhető madarak alapján adjuk meg a megfigyelhető madara-kat! Ø Két ember szabad órái alapján mondjuk meg, hogy mikor tudjuk elérni valamelyiket! Ø Adjuk meg azokat az állatfajokat, amelyeket a budapesti vagy a veszprémi állatkertben megnézhetünk! Szlávi-Zsakó: Programozási alapismeretek 8. 26/31

12. Unió ELTE Mi bennük a közös? Ismerünk két halmazt (tetszőleges, de azo-nos típusú

12. Unió ELTE Mi bennük a közös? Ismerünk két halmazt (tetszőleges, de azo-nos típusú elemekkel), meg kell adnunk azo-kat az elemeket, amelyek legalább az egyik halmazban szerepelnek! 9/9/2021 Szlávi-Zsakó: Programozási alapismeretek 8. 27/31

12. Unió Specifikáció: Ø Bemenet: ELTE Deklarációs méret lehet még: N+M N, M: Egész,

12. Unió Specifikáció: Ø Bemenet: ELTE Deklarációs méret lehet még: N+M N, M: Egész, X: Tömb[1. . N: Valami] Y: Tömb[1. . M: Valami] Ø Kimenet: Db: Egész, Z: Tömb[1. . Db: Valami] Ø Előfeltétel: N 0 és M 0 és Halmaz. E(X) és Halmaz. E(Y) Ø Utófeltétel: Db=N+ és i(1≤i≤Db): (Z[i] X vagy Z[i] Y) és Halmaz. E(Z) 9/9/2021 Szlávi-Zsakó: Programozási alapismeretek 8. 28/31

12. Unió Algoritmus: Másolás tétel! Z: =X Db: =N j=1. . M ELTE i:

12. Unió Algoritmus: Másolás tétel! Z: =X Db: =N j=1. . M ELTE i: =1 Kiválogatás tétel! Eldöntés tétel! 9/9/2021 i≤N és X[i]≠Y[j] i: =i+1 i>N I Db: =Db+1 Z[Db]: =Y[j] Szlávi-Zsakó: Programozási alapismeretek 8. N 29/31

Programozási tételek Sorozat sorozat 7. Másolás – függvényszámítás 8. Kiválogatás 9. Rendezés (később lesz)

Programozási tételek Sorozat sorozat 7. Másolás – függvényszámítás 8. Kiválogatás 9. Rendezés (később lesz) Ø Sorozat sorozatok 10. Szétválogatás Ø Sorozatok sorozat 11. Metszet 12. Unió Ø ELTE 9/9/2021 Szlávi-Zsakó: Programozási alapismeretek 8. 30/31

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

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