Algoritmizálás, adatmodellezés tanítása 2. előadás

Hasonló dokumentumok
Algoritmizálás, adatmodellezés tanítása 2. előadás

Algoritmizálás és adatmodellezés tanítása 2. előadás

Algoritmizálás, adatmodellezés tanítása 1. előadás

Az összetett programozási tételek is egy tőről fakadnak

Algoritmizálás, adatmodellezés tanítása 1. előadás

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Összetett programozási tételek

Informatikai tehetséggondozás:

Programozási tételek. Dr. Iványi Péter

Informatikai tehetséggondozás:

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Algoritmizálás, adatmodellezés 1. előadás

Algoritmizálás és adatmodellezés 2. előadás

Objektum Orientált Programozás VII.

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Algoritmizálás és adatmodellezés tanítása 3. előadás

Rekurzió. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

Összetett programozási tételek 2.

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Egyszerű programozási tételek

ELEMI PROGRAMOZÁSI TÉTELEK

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Közismereti informatika I. 4. előadás

Programozási tételek. Jegyzet. Összeállította: Faludi Anita 2012.

PROGRAMOZÁSMÓDSZERTAN

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Informatikai tehetséggondozás:

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Algoritmizálás, adatmodellezés 1. előadás

Informatikai tehetséggondozás:

Programozási alapismeretek 10. előadás

Tartalom. Programozási alapismeretek. 11. előadás

Egyszerű programozási tételek

Egyszerű programozási tételek

Bevezetés a programozásba I.

PROGRAMOZÁSI TÉTELEK

Algoritmizálás, adatmodellezés tanítása 7. előadás

Informatikai tehetséggondozás:

Informatikai tehetséggondozás:

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

RENDEZÉSEK, TOVÁBBI PROGRAMOZÁSI TÉTELEK

Algoritmizálás, adatmodellezés tanítása 8. előadás

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

PROGRAMOZÁSI NYELVEK (GYAKORLAT)

Programozási tételek. PPT 2007/2008 tavasz.

Multihalmaz, intervallumhalmaz

Adatbázis rendszerek Gy: Algoritmusok C-ben

A 2012/2013 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. INFORMATIKÁBÓL II. (programozás) kategóriában

Informatikai tehetséggondozás:

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Programozási alapismeretek 3. előadás

Hatékonyság 2. előadás

Kép mátrix. Feladat: Pap Gáborné-Zsakó László: Algoritmizálás, adatmodellezés 2/35

Felvételi tematika INFORMATIKA

A 2015/2016 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Programozási alapismeretek 11. előadás

Dokumentáció az 1. feladatsorhoz (egyszerű, rövidített kivitelben)

Bevezetés a programozásba. 5. Előadás: Tömbök

Informatikai tehetséggondozás:

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

A 2011/2012 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. INFORMATIKÁBÓL II. (programozás) kategóriában

Algoritmusok és adatszerkezetek I. 7. előadás

Adatszerkezetek II. 6. előadás

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19.

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. INFORMATIKA II. (programozás) kategória

Informatikai tehetséggondozás:

Visszalépéses kiválogatás

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Informatikai tehetséggondozás:

A 2012/2013 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. II. (programozás) kategória

Gyakorló feladatok az 1. nagy zárthelyire

Haladó rendezések. PPT 2007/2008 tavasz.

Hatékonyság 1. előadás

Szerző Lővei Péter LOPSAAI.ELTE IP-08PAEG/25 Daiki Tennó

PROGRAMOZÁSMÓDSZERTAN

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

Programozási segédlet

Programozási tételek. Elemi programozási tételek. (Sorozathoz érték rendelése)

Webprogramozás szakkör

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto

Sorozat érték típusú programozási tételek

Visszalépéses maximumkiválasztás

ALGORITMUSOK ÉS PROBLÉMAOSZTÁLYOK (1. előadás)

Bevezetés az informatikába

Első sorozat (2000. május 22. du.) 1. Oldjamegavalós számok halmazán a. cos x + sin2 x cos x. +sinx +sin2x =

1.félév/1. Programozásmódszertan 1. ZH

Adatszerkezetek II. 10. előadás

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Levelez és Távoktatás. Bevezetés az algoritmustanba Programozási tételek

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

A 2007/2008 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. II. (programozás) kategória

Átírás:

Algoritmizálás, adatmodellezés tanítása 2. előadás

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 2010.09.06. 2

7. Másolás - függvényszámítás Feladatok: Egy számsorozat tagjainak adjuk meg az abszolú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üggvényről! 2010.09.06. 3

7. Másolás - függvényszámítás Feladatok: Ismerjük N hónap sorszámát, adjuk meg a nevét! Mi bennük a közös? 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 marad, a sorrend is marad. 2010.09.06. 4

7. Másolás - függvényszámítás Bemenet: N: Egész, X: Tömb[1..N: Valami1] Kimenet: Y: Tömb[1..N: Valami2] Előfeltétel: Utófeltétel: i (1 i N): Y[i]=f(X[i]) Másolás: Ciklus i=1-től N-ig Y[i]:=f(X[i]) Ciklus vége Eljárás vége. 2010.09.06. 5

7. Másolás - függvényszámítás Vektorok összege: Bemenet: N: Egész, X,Z: Tömb[1..N: Valós] Kimenet: Y: Tömb[1..N: Valós] Előfeltétel: Utófeltétel: i(1 i N): Y[i]=X[i]+Z[i] Másolás: Ciklus i=1-től N-ig Y[i]:=X[i]+Z[i] Ciklus vége Eljárás vége. 2010.09.06. 6

7. Másolás - függvényszámítás Számok abszolút értéke: Bemenet: N: Egész, X: Tömb[1..N: Valós] Kimenet: Y: Tömb[1..N: Valós] Előfeltétel: Utófeltétel: i(1 i N): Y[i]=abs(X[i]) Másolás: Ciklus i=1-től N-ig Ha X[i] 0 akkor Y[i]:=X[i] különben Y[i]:=-X[i] Ciklus vége Eljárás vége. 2010.09.06. 7

8. Kiválogatás Feladatok: Adjuk 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! 2010.09.06. 8

8. Kiválogatás Feladatok: Adjuk meg egy év azon napjait, amikor délben nem fagyott! Adjuk meg egy szó magánhangzóit! Mi bennük a közös? N darab valami közül kell megadni az összes, adott T tulajdonsággal rendelkezőt! 2010.09.06. 9

8. Kiválogatás Bemenet: N: Egész, X: Tömb[1..N: Valami] Kimenet: Db: Egész, Y: Tömb[1..N: Egész] Előfeltétel: Utófeltétel: Db T i 1 ( X [ i]) és i(1 i Db): T(X[Y[i]]) és Y (1,2,,N) N 1 2010.09.06. 10

8. Kiválogatás Kiválogatás: Db:=0 Ciklus i=1-től N-ig Ha T(X[i]) akkor Db:=Db+1 Y[Db]:=i Ciklus vége Eljárás vége. A sorszám általánosabb, mint az érték. Ha mégis érték kellene, akkor: Y[Db]:=X[i] szerepelne. 2010.09.06. 11

8. Kiválogatás Adjuk meg egy év azon napjait, amikor délben nem fagyott! Bemenet: N: Egész, X: Tömb[1..N: Valós] Kimenet: Db: Egész, Y: Tömb[1..N: Egész] Előfeltétel: Utófeltétel: Db N i 1 1 X [ i] 0 és i(1 i Db): X[Y[i]] 0 és Y (1,2,,N) 2010.09.06. 12

8. Kiválogatás Kiválogatás: Db:=0 Ciklus i=1-től N-ig Ha X[i] 0 akkor Db:=Db+1 Y[Db]:=i Ciklus vége Eljárás vége. 2010.09.06. 13

10. Szétválogatás Feladatok: Adjuk 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! 2010.09.06. 14

10. Szétválogatás Feladatok: Adjuk meg egy év azon napjait, amikor délben fagyott, illetve nem fagyott! Adjuk meg egy angol szó magán- és mássalhangzóit! 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! 2010.09.06. 15

10. Szétválogatás Bemenet: N: Egész, X: Tömb[1..N: Valami] Kimenet: Db: Egész, Y,Z: Tömb[1..N: Egész] Előfeltétel: Utófeltétel: Db T i 1 ( X [ i]) és i(1 i Db): T(X[Y[i]]) és és i(1 i N-Db): nem T(X[Z[i]]) és Y (1,2,,N) és Z (1,2,,N) N 1 2010.09.06. 16

10. Szétválogatás Szétválogatás: Db:=0; DbZ:=0 Ciklus i=1-től N-ig Ha T(X[i]) akkor Db:=Db+1 Y[Db]:=i különben DbZ:=DbZ+1 Z[DbZ]:=i Ciklus vége Eljárás vége. Itt is szerepelhetne :=i helyett :=X[i], ha csak az értékekre lenne szükségünk. 2010.09.06. 17

10. Szétválogatás Probléma: Y-ban és Z-ben együtt csak N darab elem van, azaz elég lenne az egyik. Bemenet: N: Egész, X: Tömb[1..N: Valami] Kimenet: Db: Egész, Y: Tömb[1..N: Egész] Előfeltétel: Utófeltétel: Db T i 1 ( X [ i]) és i(1 i Db): T(X[Y[i]]) és és i(db+1 i N): nem T(X[Y[i]]) és Y=permutáció(1,2,,N) N 1 2010.09.06. 18

10. Szétválogatás Szétválogatás: Db:=0; DbZ:=N+1 Ciklus i=1-től N-ig Ha T(X[i]) akkor Db:=Db+1 Y[Db]:=i különben DbZ:=DbZ-1 Y[DbZ]:=i Ciklus vége Eljárás vége. A DbZ helyett jobb lenne pl. az IndZ elnevezés. 2010.09.06. 19

11. Metszet Feladatok: Adjuk meg két természetes szám közös osztó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! 2010.09.06. 20

11. Metszet Feladatok: Adjuk meg azokat az állatokat, amelyeket a budapesti és a veszprémi állatkertben is megnézhetünk! Mi bennük a közös? Ismerünk két halmazt (tetszőleges típusú elemekkel), meg kell adnunk azokat az elemeket, amelyek mindkét halmazban szerepelnek! 2010.09.06. 21

11. Metszet Mit tehetünk a halmazokkal? Eddig a specifikációban használtunk, az algoritmusban és a kódban nem. A halmaz elemeit egy tömbben felsorolhatjuk, de ekkor ügyelni kell arra, hogy minden elem csak egyszer szerepeljen! Fogalom: halmazf(x,n) = i,j (1 i,j N): i j X[i] X[j] 2010.09.06. 22

11. Metszet Bemenet: N,M: Egész, X: Tömb[1..N: Valami] Y: Tömb[1..M: Valami] Kimenet: Db: Egész, Z: Tömb[1..min(N,M): Valami] Előfeltétel: halmazf(x,n) és halmazf(y,m) Utófeltétel: Db i 1 X [ i] Y és i(1 i Db): Z[i] X és Z[i] Y és halmazf(z,db) N 1 2010.09.06. 23

11. Metszet Metszet: Db:=0 Ciklus i=1-től N-ig j:=1 Ciklus amíg j M és X[i] Y[j] j:=j+1 Ciklus vége Ha j M akkor Db:=Db+1 Z[Db]:=X[i] Ciklus vége Eljárás vége. 2010.09.06. 24

11. Metszet A megoldás egy kiválogatás és egy eldöntés. Feladatvariációk: Ismerünk 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 egy közös elemüket! 2010.09.06. 25

12. Unió Feladatok: Két szakkör tanulói alapján adjuk meg a szakkörre járókat! A télen és a nyáron megfigyelhető madarak alapján adjuk meg a megfigyelhető madarakat! Két ember szabad órái alapján mondjuk meg, hogy mikor tudjuk elérni valamelyiket! 2010.09.06. 26

12. Unió Feladatok: Adjuk meg azokat az állatokat, amelyeket a budapesti vagy a veszprémi állatkertben megnézhetünk! Mi bennük a közös? Ismerünk két halmazt (tetszőleges típusú elemekkel), meg kell adnunk azokat az elemeket, amelyek legalább az egyik halmazban szerepelnek! 2010.09.06. 27

12. Unió Bemenet: N,M: Egész, X: Tömb[1..N: Valami] Y: Tömb[1..M: Valami] Kimenet: Db: Egész, Z: Tömb[1..N+M: Valami] Előfeltétel: halmazf(x,n) és halmazf(y,m) Utófeltétel: Db N j 1 y[ j] X és i(1 i Db): Z[i] X vagy Z[i] Y és halmazf(z,db) M 1 2010.09.06. 28

12. Unió Unió: Z:=X; Db:=N Ciklus j=1-től M-ig i:=1 Ciklus amíg i N és X[i] Y[j] i:=i+1 Ciklus vége Ha i>n akkor Db:=Db+1 Z[Db]:=Y[j] Ciklus vége Eljárás vége. 2010.09.06. 29

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ó 2010.09.06. 30

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 N Utófeltétel: S= i 1 T(X[i]) X[i] 2010.09.06. 31

Kiválogatás + összegzés 1. megoldási ötlet: Válogassuk ki az adott tulajdonságúakat, majd utána adjuk össze őket! Válogatás: Db:=0; S:=0 Ciklus i=1-től N-ig Ha T(X(i)) akkor Db:=Db+1 Y(Db):=i Ciklus vége Ciklus i=1-től Db-ig S:=S+X(Y(i)) Ciklus vége Eljárás vége. 2010.09.06. 32

Kiválogatás + összegzés 2. megoldási ötlet: Kiválogatás helyett azonnal adjuk össze a megfelelő elemeket! nincs elem-/indexfeljegyzés (Y-ban) + nincs számlálás (Dbben) Válogatás: S:=0 Ciklus i=1-től N-ig Ha T(X(i)) akkor S:=S+X(i) Ciklus vége Eljárás vége. 2010.09.06. 33

Kiválogatás + maximumkiválasztás Feladat: Adott tulajdonságú elemek maximuma (felté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] ) 2010.09.06. 34

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! Feltételes maximum: Db:=0 Ciklus i=1-től N-ig Ha T(X(i)) akkor Db:=Db+1 Y(Db):=i Ciklus vége Van:=(Db>0) 2010.09.06. 35

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! Ha Van akkor Max:=Y(1) Ciklus i=2-től Db-ig Ha X(Y(i))>X(Max) akkor Max:=i Ciklus vége Eljárás vége. 2010.09.06. 36

Kiválogatás + maximumkiválasztás 2. 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. Feltételes maximum: X(0):=- ; Max:=0 Ciklus i=1-től N-ig Ha T(X(i)) és X(i)>X(Max) akkor Max:=i Ciklus vége Van:=(Max>0) Eljárás vége. 2010.09.06. 37

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 = N 1 i X[i] X[Max[1]] 1 és i(1 i Db): j(1 j N): X[Max[i]] X[j] és Max (1,2,,N) 2010.09.06. 38

Maximumkiválasztás + kiválogatás 1. megoldási ötlet: Határozzuk meg a maximumot, majd válogassuk ki a vele egyenlőket! Maximumkiválogatás: Maxért:=X(1) Ciklus i=2-től N-ig Ha X(i)>Maxért akkor Maxért:=X(i) Ciklus vége 2010.09.06. 39

Maximumkiválasztás + kiválogatás 1. megoldási ötlet: Határozzuk meg a maximumot, majd válogassuk ki a vele egyenlőket! Db:=0 Ciklus i=1-től N-ig Ha X(i)=Maxért akkor Db:=Db+1; Max(Db):=i Ciklus vége Eljárás vége. 2010.09.06. 40

Maximumkiválasztás + kiválogatás 2. megoldási ötlet: A pillanatnyi maximálissal egyenlőket azonnal válogassuk ki! Maximumkiválogatás: Db:=1; Max(1):=1; Maxért:=X(1) Ciklus i=2-től N-ig Ha X(i)>Maxért akkor Db:=1; Max(1):=i; Maxért:=X(i) különben ha X(i)=Maxért akkor Db:=Db+1; Max(Db):=i Ciklus vége Eljárás vége. 2010.09.06. 41

Eldöntés + megszámolás Feladat: Van-e egy sorozatban 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= N 1 i 1 T(X[i]) és Van=db K 2010.09.06. 42

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!) Eldönt és megszámol: Db:=0 Ciklus i=1-től N-ig Ha T(X(i)) akkor Db:=Db+1 Ciklus vége Van:=(Db K) Eljárás vége. 2010.09.06. 43

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! Eldönt és megszámol: Db:=0; i:=1 Ciklus amíg i N és Db<K Ha T(X(i)) akkor Db:=Db+1 i:=i+1 Ciklus vége Van:=(Db=K) Eljárás vége. 2010.09.06. 44

Algoritmizálás, adatmodellezés tanítása 2. előadás vége