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

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

Upload: riddick72

Post on 28-Jan-2016

17 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

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

Algoritmizálás,

adatmodellezés tanítása

1. előadás

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

ELTE

Az algoritmus fogalma

végrehajtható (van hozzá végre-hajtó)

lépésenként hajtható végre

a lépések maguk is algoritmusok

pontosan definiált, adott végre-hajtási

sorrenddel

egy folyamat véges hosszúságú, időben

esetleg végtelen leírása

2010.09.06. 2Zsakó László: Algoritmizálás, adatmodellezés tanítása

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

ELTE

Az algoritmus fogalma

Az algoritmusok összerakási módjai:

Szekvencia (egymás utáni végrehajtás)

Elágazás (választás 2 vagy több

tevékenységből)

Ciklus (ismétlés adott darabszámszor

vagy adott feltételtől függően)

2010.09.06. 3Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 4: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

A specifikáció

1. Bemenő adatok (értékhalmaz, mérték-

egység)

2. Ismeretek a bemenetről (előfeltétel)

3. Eredmények (értékhalmaz, …)

4. Az eredmény kiszámítási szabálya

(utófeltétel)

5. A megoldással szembeni követelmények

6. Korlátozó tényezők

7. A használt fogalmak definíciói

2010.09.06. 4Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 5: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

A specifikáció

Tulajdonságai

1. Egyértelmű, pontos, teljes

2. Rövid, tömör, formalizált

3. Szemléletes, érthető

Specifikációs eszközök

1. Szöveges leírás

2. Matematikai megadás

2010.09.06. 5Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 6: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

Tömb

Sorozat: azonos típusú elemek egymásután-

ja, az elemei sorszámozhatók.

Tömb: véges hosszúságú sorozat, a sorozat

i-edik tagjával végezhetünk műveleteket;

adott a legkisebb és a legnagyobb index.

Indexek: sokszor 1..N, máskor a..b.

Példa:

X: Tömb[1..N: Egész]

Szín: Tömb[0..4: Szöveg]=

(”zöld”,”piros”,”sárga”,”fehér”,”fekete”)

2010.09.06. 6Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 7: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

Programozási tételek

Mi van a ciklusokkal?

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. 7Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 8: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

1. 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én-

ti idejét. Adjuk meg az átlagkörének

idejét!

Adjuk meg az N számhoz az N

faktoriális étékét!

2010.09.06. 8Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 9: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

1. Sorozatszámítás

Feladatok:

Ismerjük egy iskola szakköreire járók

tanulóit szakkörönként. Adjuk meg a

szakkörre járó tanulókat!

Ismerünk N szót. Adjuk meg a belőlük

összeállított mondatot!

Mi bennük a közös?

N darab „valamiből” kell kiszámolni

egy darab „valamit”!

2010.09.06. 9Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 10: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

1. Sorozatszámítás

Bemenet: N: Egész,

X: Tömb[1..N: Valami]

Kimenet: S: Valami

Előfeltétel:

Utófeltétel: S=F(X[1],…,X[N])

Probléma: a programozásban nincs N

paraméteres művelet.

2010.09.06. 10Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 11: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

1. Sorozatszámítás

Probléma: a programozásban nincs N

paraméteres művelet.

Megoldás: visszavezetjük 2-paramé-

teres műveletre (pl. helyett +) és egy

null-elemre (+ esetén a 0).

F(X[1],…,X[N])=

f(F(X[1],…,X[N-1]),X[N]) ha N>0

F()=F0

2010.09.06. 11Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 12: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

1. Sorozatszámítás

Sorozatszámítás:

S:=F0

Ciklus i=1-től N-ig

S:=f(S,X[i])

Ciklus vége

Eljárás vége.

2010.09.06. 12Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 13: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

1. Sorozatszámítás:

vagyon

Bemenet: N: Egész,

Be,Ki: Tömb[1..N: Egész]

Kimenet: S: Egész

Előfeltétel:

Utófeltétel: Sorozatszámítás:

S:=0

Ciklus i=1-től N-ig

S:=S+Be[i]-Ki[i]

Ciklus vége

Eljárás vége.

N

i

iKiiBeS1

][][

2010.09.06. 13Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 14: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

2. Eldöntés

Feladatok:

Egy természetes számról döntsük el,

hogy prímszám-e!

Egy szóról mondjuk meg, hogy egy

hónapnak a neve-e!

Egy tanuló év végi osztályzatai alapján

állapítsuk meg, hogy bukott-e!

Egy szóról adjuk meg, hogy van-e

benne magánhangzó!

2010.09.06. 14Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 15: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

2. Eldöntés

Feladatok:

Egy számsorozatról döntsük el, hogy

monoton növekvő-e!

Egy tanuló év végi jegyei alapján adjuk

meg, hogy kitűnő-e!

Mi bennük a közös?

Döntsük el, hogy N darab „valami”

között van-e adott tulajdonsággal

rendelkező elem!

2010.09.06. 15Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 16: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

2. Eldöntés

Bemenet: N: Egész,

X: Tömb[1..N: Valami]

Kimenet: Van: Logikai

Előfeltétel:

Utófeltétel: Van=i (1iN): T(X[i])

A T tulajdonság egy logikai függvény-

ként adható meg, minden elemről

megvizsgálható, hogy rendelkezik-e az

adott tulajdonsággal.

2010.09.06. 16Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 17: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

2. Eldöntés

2010.09.06.

Eldöntés:

i:=1

Ciklus amíg iN és nem T(X[i])

i:=i+1

Ciklus vége

Van:=iN

Eljárás vége.

17Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 18: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

2. Eldöntés

Bemenet: N: Egész,

X: Tömb[1..N: Valami]

Kimenet: Mind: Logikai

Előfeltétel:

Utófeltétel: Mind=i (1iN): T(X[i])

Másképp: mind olyan nincs nem

olyan!

2010.09.06. 18Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 19: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

2. Eldöntés

Eldöntés:

i:=1

Ciklus amíg iN és T(X[i])

i:=i+1

Ciklus vége

Mind:=i>N

Eljárás vége.

Az eredetihez képest két helyen kell tagadni!

2010.09.06. 19Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 20: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

2. Eldöntés: bukott

Bemenet: N: Egész, Jegy: Tömb[1..N:Egész]

Kimenet: Bukott: Logikai

Előfeltétel:i(1iN): Jegy[i]{1,2,3,4,5}

Utófeltétel: Bukott=i (1iN): Jegy[i]=1Eldöntés:

i:=1

Ciklus amíg iN és Jegy[i]1

i:=i+1

Ciklus vége

Bukott:=iN

Eljárás vége.

2010.09.06. 20Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 21: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

3. Kiválasztás

Feladatok:

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!

Adjuk meg egy természetes szám 1-től

különböző legkisebb osztóját!

2010.09.06. 21Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 22: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

3. Kiválasztás

Feladatok:

Adjuk meg egy magyar szó egy

magánhangzóját!

Adjuk meg egy hónapnévről a

sorszámát!

Mi bennük a közös?

N darab „valami” közül kell megadni

egy adott tulajdonságút, ha tudjuk,

hogy ilyen elem biztosan van.

2010.09.06. 22Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 23: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

3. Kiválasztás

Bemenet: N: Egész,

X: Tömb[1..N: Valami]

Kimenet: S: Egész

Előfeltétel: i (1iN): T(X[i])

Utófeltétel: 1SN és T(X[S])

A T tulajdonság egy logikai függvény-

ként adható meg, minden elemről

megvizsgálható, hogy rendelkezik-e az

adott tulajdonsággal.

2010.09.06. 23Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 24: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

3. Kiválasztás

Kiválasztás:

i:=1

Ciklus amíg nem T(X[i])

i:=i+1

Ciklus vége

S:=i

Eljárás vége.

Többlet tudás: a megoldás az első adott

tulajdonságú elemet adja meg.

2010.09.06. 24Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 25: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

3. Kiválasztás:

magánhangzó

Bemenet: N: Egész,

Szó: Tömb[1..N: Karakter]

Kimenet: S: Egész

Előfeltétel: i (1iN): magánhangzó(Szó[i])

Utófeltétel: 1SN és magánhangzó(Szó[S])Kiválasztás:

i:=1

Ciklus amíg nem magánhangzó(Szó[i])

i:=i+1

Ciklus vége

S:=i

Eljárás vége.

2010.09.06. 25Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 26: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

4. Keresés

Feladatok:

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!

Adjuk meg egy természetes szám egy

1-től és önmagától különböző osztóját!

Adjuk meg egy ember nevében egy a-

betű helyét!

2010.09.06. 26Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 27: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

4. Keresés

Feladatok:

Adjunk meg egy tanulóra egy tárgyat,

amiből megbukott!

Adjuk meg egy számsorozat olyan

elemét, amely nagyobb az előzőnél!

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.

2010.09.06. 27Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 28: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

4. Keresés

Bemenet: N: Egész,

X: Tömb[1..N: Valami]

Kimenet: Van: Logikai, S: Egész

Előfeltétel:

Utófeltétel: Van=i (1iN): T(X[i])

és Van 1SN és T(X[S])

Azaz eldöntés és kiválasztás együtt!

2010.09.06. 28Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 29: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

4. Keresés

Keresés:

i:=1

Ciklus amíg iN és nem T(X[i])

i:=i+1

Ciklus vége

Van:=iN

Ha Van akkor S:=i

Eljárás vége.

Többlet tudás: a megoldás az első adott

tulajdonságú elemet adja meg.

2010.09.06. 29Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 30: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

4. Keresés: 1-es jegy

Bemenet: N: Egész, Jegy: Tömb[1..N:Egész]

Kimenet: Van: Logikai, S: Egész

Előfeltétel: i(1iN): Jegy[i]{1,2,3,4,5}

Utófeltétel: Van=i (1iN): Jegy[i]=1 és

Van 1SN és Jegy[S]=1

30

2010.09.06. 30Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 31: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

4. Keresés: 1-es jegy

Keresés:

i:=1

Ciklus amíg iN és Jegy[i]1

i:=i+1

Ciklus vége

Van:=iN

Ha Van akkor S:=i

Eljárás vége.

31

2010.09.06. 31Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 32: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

5. Megszámolás

Feladatok:

Ismerjük egy ember havi bevételeit és

kiadásait. Adjunk meg, hogy hány

hónapban nőtt a vagyona!

Adjuk meg egy természetes szám

osztói számát!

Adjuk meg egy ember nevében levő a-

betűk számát!

2010.09.06. 32Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 33: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

5. Megszámolás

Feladatok:

Adjuk meg az éves statisztika alapján,

hogy hány napon fagyott!

Adjuk meg N születéshónap alapján,

hogy közöttük hányan születtek télen!

Mi bennük a közös?

N darab „valamire” kell megadni, hogy

hány adott tulajdonságú van közöttük.

2010.09.06. 33Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 34: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

5. Megszámolás

Bemenet: N: Egész,

X: Tömb[1..N: Valami]

Kimenet: Db: Egész

Előfeltétel:

Utófeltétel:

N

iXTi

Db

])[(1

1

2010.09.06. 34Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 35: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

5. Megszámolás

Megszámolás:

Db:=0

Ciklus i=1-től N-ig

Ha T(X[i]) akkor Db:=Db+1

Ciklus vége

Eljárás vége.

2010.09.06. 35Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 36: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

5. Megszámolás: télen

születettek

Bemenet: N: Egész, Szül: Tömb[1..N:Egész]

Kimenet: Db: Egész

Előfeltétel: i (1iN): Szül[i]{1,…,12}

Utófeltétel:

Megszámolás:

Db:=0

Ciklus i=1-től N-ig

Ha Szül[i]<3 vagy Szül[i]=12

akkor Db:=Db+1

Ciklus vége

Eljárás vége.

N

ivagyi

i

Db

12][Szül3][Szül

1

1

2010.09.06. 36Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 37: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

6. Maximumkiválasztás

Feladatok:

Ismerjük egy ember havi bevételeit és

kiadásait. Adjuk meg, hogy melyik

hónapban nőtt legjobban a vagyona!

Adjuk meg N ember közül az

ábécében utolsót!

Adjuk meg N ember közül azt, aki a

legtöbb ételt szereti!

2010.09.06. 37Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 38: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

6. Maximumkiválasztás

Feladatok:

Adjuk meg az éves statisztika alapján a

legmelegebb napot!

Adjuk meg N születésnap alapján azt,

akinek idén először van születésnapja!

Mi bennük a közös?

N darab „valamire” kell megadni

közülük a legnagyobbat (vagy a

legkisebbet).

2010.09.06. 38Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 39: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

6. Maximumkiválasztás

Bemenet: N: Egész,

X: Tömb[1..N: Valami]

Kimenet: Max: Egész

Előfeltétel: N>0

Utófeltétel: 1MaxN és

i (1iN): X[Max]X[i]

Megjegyzés: a sorszám általánosabb,

mint az érték, a sorszámot adjuk meg.

Kell lenni a Valamire < relációnak!2010.09.06.

2010.09.06. 39Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 40: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

6. Maximumkiválasztás

Maximumkiválasztás:

Max:=1

Ciklus i=2-től N-ig

Ha X[i]>X[Max] akkor Max:=i

Ciklus vége

Eljárás vége.

Többlet tudás: ha több maximális érték is

van, akkor közülük az elsőt kapjuk meg.

Variációk: >, <, ≥, ≤.

2010.09.06. 40Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 41: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

6. Maximumkiválasztás

Maximális érték megadása:

Kimenet: MaxÉrt: Valami

Utófeltétel: i (1iN): MaxÉrt=X[i] és

i (1iN): MaxÉrtX[i]Maximumkiválasztá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

Eljárás vége.

2010.09.06. 41Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 42: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

6. Maximumkiválasztás:

legkorábbi születésnap

Bemenet: N: Egész,

Hó,Nap: Tömb[1..N: Egész]

Kimenet: Min: Egész

Előfeltétel: N>0

Utófeltétel: 1MinN és

i (1iN): Hó[Min]<Hó[i] vagy

Hó[Min]=Hó[i] és Nap[Min]Nap[i]

2010.09.06. 42Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 43: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

6. Maximumkiválasztás:

legkorábbi születésnap

Minimumkiválasztás:

Min:=1

Ciklus i=2-től N-ig

Ha Hó[Min]>Hó[i] vagy

Hó[Min]=Hó[i] és

Nap[Min]>Nap[i]

akkor Min:=i

Ciklus vége

Eljárás vége.

2010.09.06. 43Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 44: Algoritmizálás adatmodellezés tanítása 1. előadás

ELTE

Programozási tételek

1. Sorozatszámítás (összegzés)

2. Eldöntés

3. Kiválasztás

4. Keresés

5. Megszámolás

6. Maximumkiválasztás

2010.09.06. 44Zsakó László: Algoritmizálás, adatmodellezés tanítása

Page 45: Algoritmizálás adatmodellezés tanítása 1. előadás

Algoritmizálás,

adatmodellezés tanítása

1. előadás vége