algoritmikus gondolkodásvargai/download/algorithmic/algorithm.pdf · algoritmikus gondolkodás...
TRANSCRIPT
![Page 1: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/1.jpg)
Algoritmikus gondolkodás
Varga ImreDebreceni Egyetem, Informatikai Kar
Kizárólag belső használatra!
2015.12.02
![Page 2: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/2.jpg)
Témák
• Hogyan írjunk le és oldjunk meg problémákat?
• Hogyan osszunk fel egy problémát kisebbekre?
• Mi is az az algoritmus?
• Milyen tulajdonságai vannak?
• Hogyan írhatunk le algoritmusokat?
• Mit jelent a ‘program írás’?
• És még sok minden más…
2
![Page 3: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/3.jpg)
Számítógépes probléma megoldás
Szorosan kapcsolódva a szoftver életciklushoz
![Page 4: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/4.jpg)
Számítógépes probléma megoldás
4
Probléma definíció
Megoldási vázlat
Részletes megoldási terv
Tesztelési stratégia fejlesztés
Program kódolás és tesztelés
Dokumentáció befejezés
Program karbantartás
![Page 5: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/5.jpg)
1: Probléma definíció
• Mi az ismeretlen (az elvárt eredmény)? Mi az összefüggésa rendelkezésre álló információk és az ismeretlen között?
• A megadott információk elegendőek egyáltalán aprobléma megoldásához?
• A probléma leírásnak precíznek, pontosnak kell lennie
• A felhasználónak és a programozónak együtt kellműködnie
• A probléma teljes specifikációjára szükség van, az inputotés a kívánt outputot is beleértve
5
![Page 6: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/6.jpg)
2: Megoldási vázlat
• A probléma körvonalának definiálása
• Az eredeti probléma több részproblémára osztása
• A részproblémák legyenek kisebbek és könnyebbenmegoldhatóak
• Ezek megoldásai a végső megoldás komponenseilesznek
• „Oszd meg és uralkodj!”
6
![Page 7: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/7.jpg)
3: Részletes megoldási terv
• Az előző lépésben nincs megmondva hogyan kell arészfeladatokat végrehajtani
• Finomítás szükséges a részletek megadásával
• Kerülni a félreérthetőséget
• A pontos módszer tartalmazza a jól meghatározottlépések sorozatát, amit algoritmusnak hívunk
• Különböző formalizmusokkal írható le
7
![Page 8: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/8.jpg)
4: Tesztelési stratégia fejlesztés
• Ki kell próbálni az algoritmust több különböző inputkombinációval hogy biztosak legyünk, hogy jóeredményt ad minden esetben
• Ezeket a különböző bemeneti adat kombinációkatteszt eseteknek nevezzük
• Ez nemcsak normál adatokat foglal magába, hanemextrém bemeneteket is, hogy teszteljük a határokat
• Komplett teszt esetekkel ellenőrizhetjük magát azalgoritmust
8
![Page 9: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/9.jpg)
5: Program kódolás és tesztelés
• Az előző szinteken leírt algoritmus nem hajthatóvégre közvetlenül a számítógép által
• Át kell alakítani egy konkrét programnyelvre
• A kódolás közben/után tesztelni kell a programot akidolgozott tesztelési stratégia szerint
• Ha hibára derül fény, akkor megfelelő átdolgozásra ésújratesztelésre van szükség, amíg a program mindenkörülmények között jó eredményt nem ad
• A kódolás és tesztelés folyamatát implementációnakhívjuk
9
![Page 10: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/10.jpg)
6: Dokumentáció befejezése
• A dokumentáció már az első lépésnél elkezdődik és aprogram egész élettartamán át tart
• Tartalmazza:
– Az összes lépés magyarázatát
– A meghozott strukturális döntéseket
– A felmerült problémákat
– A program szövegét és annak magyarázatát
– Felhasználói utasításokat
– stb.
10
![Page 11: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/11.jpg)
7: Program karbantartás
• A program nem megy tönkre
• Néha viszont hibázhat, összeomolhat, elbukhat
• A programhibák oka, hogy sosem volt tesztelve az adottkörülmények között
• Az újonnan felfedezett hibákat ki kell küszöbölni (átadásután is)
• Néha a felhasználóknak új igényei, elvárásai vannak aprogrammal szemben
• Ennek megfelelően át átalakítás, bővítés lehet szükséges
• Ezek után frissíteni kell a dokumentációt is
11
![Page 12: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/12.jpg)
Részletes megoldási terv
Algoritmus
![Page 13: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/13.jpg)
Algoritmus
Terv jól ismert tevékenységek sorozatánakvégrehajtására, amivel elérhetjük a kívánt célt.
Precíz definíciója tevékenységeknek, amelyeknek avégrehajtása megadja a megoldási vázlat mindenegyes részfeladatának a megoldását.
Néhány tulajdonsága:
• Pontos, félreérthetetlen
• Minden eshetőségre felkészített
• Tevékenységek véges sorozata
• Elérhető vele a cél, megadja a megoldást
• Hatékony, elegáns, egyszerű, …
13
![Page 14: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/14.jpg)
Algoritmusok leírása
• Verbális
• Folyamatábra
• Pszeudokód
• Struktogram
• Grafikus
• Algebra-szerű
• Adat-folyam diagram
• Hierarchikus
• Táblázatos
14
![Page 15: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/15.jpg)
Példa
y=sign(x) függvény
• Mi az?
• Mit jelent?
• Mi az eredmény?
• Hogyan működik?
• Hogyan tudjuk meghatározni az értékét?
• Ha x egyenlő -4, mi az y értéke?
• …
15
![Page 16: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/16.jpg)
y=sign(x)
Verbális reprezentáció:
1. Ha x egyenlő 0, y értéke legyen 0!
2. Különben ha x nagyobb, mint 0, y értéke legyen +1!
3. Egyébként ha x kisebb, mint 0, akkor a függvény adjon -1 értéket!
16
![Page 17: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/17.jpg)
+1
y=sign(x)
Grafikus reprezentáció:
17
x
y
-1
0
![Page 18: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/18.jpg)
y=sign(x)
‘Algebra-szerű’ reprezentáció:
x∈ℜy∈{-1, 0, +1}
∀x, x>0 ⇒ y=+1
∀x, x<0 ⇒ y=-1
x=0 ⇒y=0
18
![Page 19: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/19.jpg)
y=sign(x)
Struktogramos reprezentáció:
19
y=0
y=-1y=+1
x=0igen nem
igen nemx>0
![Page 20: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/20.jpg)
y=sign(x)
Folyamatábrás reprezentáció:
20
x=0
y=0
y=+1 y=-1
x>0
igaz
igaz
hamis
hamis
Start
Vége
![Page 21: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/21.jpg)
y=sign(x)
Pszeudokódos reprezentáció:
if x=0 theny=0
elseif y>0 then
y=+1else
y=-1endif
endif
21
![Page 22: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/22.jpg)
Folyamatábra
• Kiindulópont
• Elemi utasítás
• Input/output
• Feltétel
• Végállapot
• Csak a nyilak mentén haladhatunk.
22
x<yigen nem
X=1
Start
Vége
Be: y
![Page 23: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/23.jpg)
Az algoritmus alap struktúrái
Szekvencia Elágazás Ismétlés
23
Start
Feladat 1
Feladat 2
Feladat 3
Vége
Start
feltételigaz hamis
Feladat A Feladat B
Vége
Start
feltétel
igaz
hamis
Feladat Vége
folyamatábrával
![Page 24: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/24.jpg)
Algoritmusok módosítása
Az algoritmusokat gyakran módosítani kell, hogy jobbak legyenek.
• Általánosítás:több esetre is alkalmazható legyen
• Kiterjesztés:esetek újfajta körére is alkalmazható legyen
• Beágyazás:egy algoritmus újrahasznosítása egy másikon belül
• ‘Bolondbiztossá’ tétel:megbízhatóvá, robosztussá, hibaelkerülővé tétel
24
![Page 25: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/25.jpg)
Algoritmus általánosítása
25
Eredeti: Általánosított:
bruttó=nettó*(100%+25%)
Start
Vége
Be: nettó
Ki: bruttó
bruttó=nettó*(100%+ÁFA)
Start
Vége
Be: nettó, ÁFA
Ki: bruttó
![Page 26: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/26.jpg)
Algoritmus kiterjesztése
26
Eredeti: Kiterjesztett:
fizetés=óraszám*óradíj
Start
Vége
Be: óraszám, óradíj
Ki: fizetés
Főnök?igen nem
fizetés=óraszám*óradíjfizetés=profit/2
Start
Vége
Ki: fizetés
Be: profit Be: óraszám, óradíj
![Page 27: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/27.jpg)
Algoritmus beágyazása
27
Eredeti:y=abs(x)
Beágyazott:y=sign(x)
x<0
y=-x
igaz hamis
y=+x
Start
Vége
x<0
y=-x
igaz hamis
y=+x
Start
Vége
Be: x
Ki: x/y
x=0 hiba!
![Page 28: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/28.jpg)
Algoritmus ‘bolondbiztossá’ tétele
28
Eredeti: Bolondbiztos:
kor<18igen nem
Start
Vége
Be: kor
Ki: gyerek Ki: felnőttkor<18
igen nem
kor<0igen nem
Start
Vége
Ki: felnőttKi: gyerek
Ki: hiba
Be: kor
![Page 29: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/29.jpg)
Alternatív algoritmus
Gyakran többféleképpen is elérhetjük ugyanazt a célt.
Az algoritmusoknak különböző lehet a szerkezete, deazonos lehet a viselkedése.
Ez azt jelenti, hogy azonos bemeneti adatokra azonoseredményeket adnak, de ezt máshogy érik el.
Néha hasznos az egyik algoritmust előnyben részesíteni,néha viszont mindegy melyiket használjuk.
Olykor az egyik algoritmus határozottan egyszerűbb,kisebb, gyorsabb, megbízhatóbb lehet mint a többi.
29
![Page 30: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/30.jpg)
Alternatív algoritmus
30
y=sign(x)
x=0
y=0
y=+1 y=-1
x>0
igaz
igaz
hamis
hamis
Start
Vége
Be: x
Ki: y
x<0
y=-x
igaz hamis
Start
Vége
Ki: x/y
Be: x
x≠0hamis igaz
Ki: x
y=x
![Page 31: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/31.jpg)
Az algoritmusok tulajdonságai
• Teljes:Minden lehetséges esetre/részletre tekintettel pontosan megadott
• Félreérthetetlen:csak egyféleképpen értelmezhető tevékenységek
• Determinisztikus:az utasításokat követve mindig biztosan elérhető a cél, a megoldás
• Véges:korlátozott számú lépés után véget ér az utasítássorozat
31
![Page 32: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/32.jpg)
Rossz algoritmus
Hogyan jussunk el a 2.-ról az 5. emeletre lifttel?
1. Nyomd meg a lift hívógombját!
2. Szállj be!
3. Nyomd meg az ‘5’ gombot!
4. Várj!
5. Ha az ajtó kinyílik, szállj ki!
Probléma (nem teljes):
• Mi van, ha az érkező lift lefelé megy?
• Mi van, ha valaki miatt megáll a lift a 3. emeleten is?
32
![Page 33: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/33.jpg)
Rossz algoritmus
Hogyan készítsünk sült csirkét?
1. Tedd be a csirkét a süt őbe!
2. Állítsd be a h őmérsékletet!
3. Várj amíg kész lesz!
4. Szolgáld fel!
Problémák (félreérthetőség):
• Mi a megfelelő hőmérséklet (50°C vagy 200°C)?
• Fagyasztott vagy élő csirke?
• Honnan tudjuk, hogy „kész” van?
33
![Page 34: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/34.jpg)
Rossz algoritmus
Hogyan legyünk milliomosok?
1. Vegyél egy lottót!
2. Húzd le a kívánt számokat!
3. Várj a nyereményre (vagy szomorkodj)!
Problémák (véletlenszerű, not determinisztikus):
• Az esetek többségében nem leszünk milliomosok.
• Csak néha működik, pedig mindig ugyanazt csináljuk.
34
![Page 35: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/35.jpg)
Rossz algoritmus
Hogyan buszozzunk?
1. Várj a buszra!
2. Szállj fel!
3. Vegyél jegyet!
4. Ülj le!
5. Ha megérkeztél, szállj le!
Problémák (végtelen):
• Ha nem megállóban vársz a busz sosem áll meg.
• Ha rossz buszra szálltunk sosem szállhatunk le róla.
35
![Page 36: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/36.jpg)
Nyilvános érmés telefon használata
36
Kagyló fel
Érme bedob
Tárcsáz
Start
Vége
Beszél
Kagyló le
Problémák:
• Nem teljes
• Félreérthető
• …
Módosítás:
• Általánosítás
• Kiterjesztés
• ‘Bolondbiztosá’ tétel
• Teljessé tétel
• Félreértések elkerülése
![Page 37: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/37.jpg)
Nyilvános érmés telefon használata
37
Vonal van?
Kagyló fel
igen nem
Start
Vége
Érme bedob
körzetszám
Foglalt?igen nem
Várj
Van válasz?
nemigen
Kagyló le
Kagyló le
Újra?igen nem
Várj
Beszélj
Folytatod?igaznem
A pénz elég?
igennem
Van még pénz?
igennem
Pénz bedob
Helyi hívás?
igen nem
Lokális szám
Érme vissza
![Page 38: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/38.jpg)
Feladatok és példák
• E-mail írás
• Cipővásárlás
• TV nézés
• Tárgyteljesítés
• Mikrohullámú sütő használat
• Fizetés a kasszánál
• Telefonálás mobillal
• Gyalogosként átkelni az úttesten
• Járművel áthajtani a kereszteződésen
• …
38
![Page 39: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/39.jpg)
Feladatok és példák
39
• Hogyan változik az x, y és s értéke a folyamat során, ha kezdetben x=5 ésy=4?
• Mi a kimenet ebben az esetben?
• Hányszor lett kiértékelve a feltétel?
• Mit csinál az algoritmus?
• Hogyan változtatnád meg az algoritmust, hogy x és yszorzatát határozza meg?
Start
Vége
be: x, y
ki: s
y>0hamis igaz
s=s+1
y=y-1
s=x
![Page 40: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/40.jpg)
Feladatok és példák• Hogyan változik az x, y és s értéke a
folyamat során, ha a bemenet 10?
• Mi a kimenet, ha a bemenet 60?
• Mit ír le az algoritmus?
• Működik, ha x=1?
• Ha az input 24, hányszor ismétlődik a ciklus?
• Hogy lehetne gyorsabbá tenni?
40
Start
Vége
be: x
y=2
y<=xigaz hamis
x%y=0igaz hamis
ki: y
x=x/y
y=y+1
![Page 41: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/41.jpg)
Feladatok és példák
41
Ez a folyamatábra a maradékos osztás műveletét írja le. Helyettesítsd be a kifejezéseket.
• Start• a<=b• a<0• b<=0• a=a-b• be: a, b• ki: error• ki: a • Vége
hamis igaz
hamis igaz
hamis igaz
![Page 42: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/42.jpg)
Feladatok és példák
• Szökőév meghatározása
• Hatványozás
• Faktoriális kiszámítása
• Elsőfokú egyenlet megoldása
• Az év hányadik napja
• Decimális szám konvertálása binárissá
• Bináris számok inkrementálása
• Bináris számok összeadása
• Keresés rendezett bináris fában
• Fibonacchi sorozat
• …42
![Page 43: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/43.jpg)
Pszeudokód
Szekvencia:
utasítás1
utasítás2
utasítás3
…
43
Elágazás:
if feltétel then
utasítás1
else
utasítás2
endif
…
Ismétlés:
while feltétel do
utasítás
enddo
…
![Page 44: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/44.jpg)
Feladatok és példák
• Mi a kimenet, ha a=10?
• Mi a kimenet, ha a=-4?
• Mit csinál az algoritmus?
• Mit csinál ez az algoritmus?
44
input a
if a<0 then
b=-1*a
else
b=a
endif
output binput a
if a<0 then
a=-1*a
endif
output a
![Page 45: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/45.jpg)
Feladatok és példák
• A folyamatábra és a pszeudokódugyanazt az algoritmust írják le?
45
input ainput bc=aif b>0 then
b=b-1c=c -1
elseoutput c
endif
Start
Vége
be: a, b
ki: c
b>0hamis igaz
b=b-1
c=c-1
c=a
![Page 46: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/46.jpg)
Feladatok és példák
• Hogyan változik a, b és cértéke a folyamat során, ha a=7és b=3?
• Mi a kimenet ebben azesetben?
• Hányszor kell kiértékelni afeltételt?
• Mit csinál az algoritmus?
46
input ainput bc=awhile b>0 do
b=b-1c=c -1
enddooutput c
![Page 47: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/47.jpg)
Feladatok és példák
47
• Írd le azt a folyamatábrát pszeudokóddal!
x=0
y=0y=+1 y=-1
x>0
igaz
igaz
hamis
hamis
Start
Vége
be: x
ki: y
![Page 48: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/48.jpg)
Feladatok és példák
48
• Írd le azt a folyamatábrát pszeudokóddal! Start
Vége
be: x
ki: s
x>0hamis igaz
s=s+x
x=x-1
s=0
![Page 49: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/49.jpg)
Feladatok és példák
49
• Írd le azt a folyamatábrát pszeudokóddal!
x=0
x=x-1 x=x+1
x>0
igaz
igaz
hamis
hamis
Start
Vége
be: x
ki: x
![Page 50: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/50.jpg)
Feladatok és példák
Algoritmus verbális leírása:
1. Mondj egy számot!
2. Ellenőrizd, hogy nagyobb mint egy vagy nem!
3. Ha nagyobb, vonj ki belőle kettőt és menj a 2. lépéshez!
4. Különben ellenőrizd, hogy 0-e az érték!
5. Ha 0, akkor írd ki, hogy ‚páros’!
6. Különben írd ki, hogy ‚páratlan’!
Írd le az algoritmust pszeudokóddal!
50
![Page 51: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/51.jpg)
Feladatok és példák
Írd le az alábbi algoritmusokat pszeudokóddal!
• Abszolút érték meghatározás
• Számok összege 10-től 20-ig
• Hatványozás
• Elsőfokú egyenlet megoldása
• Faktoriális kiszámítása
• Eldönteni egy számról, hogy prím-e
• Prím tényezőkre bontás
• Fibonacchi sorozat
51
![Page 52: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/52.jpg)
Feladatok és példák
• Tömb elemeinek átlaga
• Megkeresni egy elemet egy (rendezett) tömbben
• Minimum/maximum keresése
• Szélsőérték helyének megkeresése
• Két változó értékének felcserélése
• Közvetlen kiválasztásos rendezés
• Közvetlen beszúrásos rendezés
• Buborék rendezés
• Keresés rendezett bináris fában
52
![Page 53: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/53.jpg)
Tesztelési stratégia fejlesztés
![Page 54: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/54.jpg)
Tesztelési stratégia példa
• Másodfokú egyenlet megoldása
• Általános alak: ax2 + bx + c = 0
• Bemeneti paraméterek: a, b, c
• Megoldás:
Minden esetre működik?
• Mi a kimenetha a=1, b=2 és c=1?
• Mi a kimenetha a=1, b=2 és c=2?
54
d = b2-4ac
x1 = (-b+d1/2)/2a
Start
Vége
x2 = (-b-d1/2)/2a
be: a, b, c
ki: x1, x2
![Page 55: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/55.jpg)
Tesztelési stratégia példa
55
d = b2-4ac
x1 = (-b+d1/2)/2a
Start
Vége
x1 = (-b-d1/2)/2a
be: a, b, c
ki: x1, x2
d>0igaz hamis
d=0igaz hamis
x = -b/2a
ki: x ki: nincs megoldás
Minden esetre működik?
• Mi a kimenet,ha a=0, b=2 és c=6?
![Page 56: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/56.jpg)
Tesztelési stratégia példa
56
d = b2-4ac
x1 = (-b+d1/2)/2a
Start
Vége
x1 = (-b-d1/2)/2a
be: a, b, c
ki: x1, x2
d>0igaz hamis
d=0igaz hamis
x = -b/2a
ki: x ki: nincs megoldás
a=0hamis igaz
x = -c/b
ki: x
Minden esetre működik?
• Mi a kimenet,ha a=0, b=0 és c=1?
![Page 57: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/57.jpg)
Tesztelési stratégia példa
57
d = b2-4ac
x1 = (-b+d1/2)/2a
Start
Vége
x1 = (-b-d1/2)/2a
be: a, b, c
ki: x1, x2
d>0igaz hamis
d=0igaz hamis
x = -b/2a
ki: x ki: nincs megoldás
a=0hamis igaz
x = -c/b
ki: x
Minden esetre működik.
b=0igaz hamis
![Page 58: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/58.jpg)
Tesztelési stratégia példainput a, b, cif a=0 then
if b=0 thenoutput error
elsex=-c/boutput x
endifelse
d=b*b-4*a*cif d>0 then
x1=(-b+sqrt(d))/(2*a)x2=(-b-sqrt(d))/(2*a)output x1, x2
elseif d=0 then
x=-b/(2*a)output x
elseoutput error
endifendif
endif
58
A jó megoldás pszeudokóddal:
Minden esetre működik.
Hogy elérjük ezt az állapotottesztelnünk kellett az algoritmustkülönböző input kombinációkraés folyamatosan módosítanunkkellett azt.
Tesztelési stratégiát alakítottunk ki.
![Page 59: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/59.jpg)
A használt tesztelési stratégia
59
a b c Magyarázat OK
3 7 2 Általános eset (nem 0, d>0) �
0 2 6 a nulla (első fokú) �
2 0 5 b nulla ( x2=-c/a ) �
1 2 0 c nulla ( x[ax+b]=0 ) �
0 0 1 Több nulla (nem egyenlet) �
1 2 2 d<0 (nincs megoldás) �
1 2 1 d=0 (csak egy megoldás) �
-2 -3 -9 negatív bemenetek �
2.3 4.2 0.83 nem egész bemenetek �
0.00001 1000000 1 extrém kicsi/nagy értékek �
![Page 60: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/60.jpg)
Program kódolás és tesztelés
Forráskód létrehozásaegy valós programnyelven
![Page 61: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/61.jpg)
Szintaxis és szemantika
Szintaxis: A program szövegének formai szabályai.
Szemantika: A kívánt algoritmust írja le?
Példa (abszolút érték):
input a
if a>0 then
a=-1*a
enidf
output a
61
Szintaktikai hiba
Szemantikai hiba
![Page 62: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/62.jpg)
Programozási nyelvek szintaxisa
REAL FUNCTION FAKT(I)FAKT=1IF (I .EQ. 0 .OR. I .EQ. 1) RETURNDO 20 K=2,I
20 FAKT=FAKT*KRETURNEND
62
FUNCTION FAKT(I:INTEGER):REAL;BEGIN
IF I=0 THEN FAKT:=1ELSE FAKT:=FAKT(I-1)*I;
END;
long fakt(long n){if (n<=1) return 1;else return n*fakt(n-1);}
Fortran:
Pascal:
C:
![Page 63: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/63.jpg)
A forráskód egységei és elemei
• Karakter készlet
• Lexikai egység
• Szintaktikai egység
• Utasítás
• Program egység
• Fordítási egység
• Program
63
Kom
plexitás n
ő
Minden nyelvben különböző karaktereket,
szimbólumokat, speciális kulcsszavakat,
kifejezéseket és szabályokat használunk.
![Page 64: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/64.jpg)
C programozási nyelv
A nyelv néhány főbb eleme („erősen lebutítva”):
• Adattípusok: int, float, char, …
• Konstansok: 21, 34.5, ’A’, ”alma”, …
• Operátorok: +, -, *, /, %, =, ==, >=, <=, !=, &&, ||, …
• Elágaztatás: if-else, switch-case
• Ciklusszervezés: while, for, do-while
• Input/output: printf(), scanf() (beépített alprogramok)
• Megjegyzés: /* komment */, //komment
• Stb. …
64
![Page 65: Algoritmikus gondolkodásvargai/download/algorithmic/Algorithm.pdf · Algoritmikus gondolkodás Varga Imre Debreceni Egyetem, Informatikai Kar Kizárólag belső használatra! 2015.12.02](https://reader030.vdocuments.net/reader030/viewer/2022040617/5f1ff812573c0d158a31ece8/html5/thumbnails/65.jpg)
C programozási nyelv
65