algoritmizálás adatmodellezés tanítása 1. előadás
DESCRIPTION
Algoritmizálás, adatmodellezés tanítása 1. előadásTRANSCRIPT
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Algoritmizálás,
adatmodellezés tanítása
1. előadás vége