hogyan csináljam?
TRANSCRIPT
1
Algoritmusok
Hogyan csináljam?Hogyan csináljam?
2
Az algoritmus fogalma
Algoritmusnak olyan pontos előírást Algoritmusnak olyan pontos előírást nevezünk, amely megmondja, hogy nevezünk, amely megmondja, hogy bizonyos feladat megoldásakor milyen bizonyos feladat megoldásakor milyen műveleteket milyen meghatározott műveleteket milyen meghatározott sorrendben kell elvégeznünk.sorrendben kell elvégeznünk.
Az elnevezés Mohamed ibn Musza Abu Az elnevezés Mohamed ibn Musza Abu Abdallah al-Hvárizmi al-Madzsúszi al-Abdallah al-Hvárizmi al-Madzsúszi al-Kutrubulli perzsa-arab tudós (800-850) Kutrubulli perzsa-arab tudós (800-850) nevének latinos formájából (Algorismus) nevének latinos formájából (Algorismus) alakult ki.alakult ki.
3
Az algoritmusok haszna
Egy összetett feladat megoldását általában Egy összetett feladat megoldását általában nagy tudású emberek tudják elvégezni.nagy tudású emberek tudják elvégezni.
Ha valaki elkészíti egy adott folyamat Ha valaki elkészíti egy adott folyamat algoritmusát, a megfelelő utasítások alapján algoritmusát, a megfelelő utasítások alapján kisebb képességű egyének is végre tudják kisebb képességű egyének is végre tudják hajtani a feladatokat.hajtani a feladatokat.
4
Az algoritmusok szerkezete
Az algoritmus Az algoritmus műveletekbőlműveletekből és és vezérlő vezérlő szerkezetekbőlszerkezetekből épül fel. épül fel.
A művelet egy olyan átalakítás A művelet egy olyan átalakítás (transzformáció) amely az adatok aktuális (transzformáció) amely az adatok aktuális értékeit felhasználva előállítja az adatok új értékeit felhasználva előállítja az adatok új értékeit.értékeit.
Például: egy változó értékének növelése Például: egy változó értékének növelése eggyel, az adatok sorbarendezése, stb.eggyel, az adatok sorbarendezése, stb.
5
Vezérlő szerkezetek
A vezérlő szerkezetek a feladat műveletekre A vezérlő szerkezetek a feladat műveletekre bontását, és ezek végrehajtási sorrendjét bontását, és ezek végrehajtási sorrendjét írják le.írják le.
Vezérlő szerkezetek:Vezérlő szerkezetek:
szekvencia (műveletsor),szekvencia (műveletsor),
szelekció (kiválasztás, döntés),szelekció (kiválasztás, döntés),
iteráció (ismétlés, ciklus)iteráció (ismétlés, ciklus)
6
Algoritmusok a programozásban
A program a számítógép „nyelvére” lefordított A program a számítógép „nyelvére” lefordított algoritmus.algoritmus.
A program fejlesztése során hasznos dolog az A program fejlesztése során hasznos dolog az ember számára érthető módon leírni a ember számára érthető módon leírni a megfelelő algoritmust.megfelelő algoritmust.
7
Az algoritmus leírásának módjai
Mondatszerű leírásMondatszerű leírás
Grafikus ábrázolásGrafikus ábrázolás
FolyamatábraFolyamatábra
StruktogramStruktogram
Jackson-ábraJackson-ábra
8
Példa
Írjunk algoritmust két szám hányadosának Írjunk algoritmust két szám hányadosának kiszámítására!kiszámítására!
9
Mondatszerű leírás
Be: x,y (osztandó, osztó)Be: x,y (osztandó, osztó)
Ha yHa y≠≠0 akkor0 akkor
z = xz = x//yy
Ki: zKi: z
KülönbenKülönben
Ki: Nincs megoldás!Ki: Nincs megoldás!
VégeVége
10
Struktogram
Be: x,yBe: x,y
yy≠≠00IgenIgen NemNem
z = xz = x//yy
Ki: zKi: z
Ki: Nincs Ki: Nincs megoldásmegoldás
11
Jackson-ábra
Osztás
Be: x,y y≠0
Jó eset o
z = x/y Ki: z
Rossz eset o
Ki: Hiba
Igen Nem
12
Folyamatábra
y≠0
z=x/y
Start
End
i
n
Be: x,y
Be: HibaKi: z
13
A folyamatábra elemei
Adatbevitel, kiírás (input, output)
Tevékenység (szekvencia)
Alprogram (eljárás, függvény)
Választás (szelekció)
Algoritmus eleje és vége
Kapcsolódási pont
14
A feladat megoldásának lépései
A feladat leírása, megértéseA feladat leírása, megértése
Az algoritmus felállításaAz algoritmus felállítása
Az algoritmus megvalósítása (programírás)Az algoritmus megvalósítása (programírás)
A program ellenőrzése (tesztelés)A program ellenőrzése (tesztelés)
15
A feladat elemzése
Részletes, pontos leírásRészletes, pontos leírás
Bemenő adatok (input)Bemenő adatok (input)
Kimenő eredmények (output)Kimenő eredmények (output)
A feladat modellezése (képletek)A feladat modellezése (képletek)
16
Az algoritmus tervezése
MegoldáskeresésMegoldáskeresés
Folyamatábra vagy más módszerFolyamatábra vagy más módszer
Helyességvizsgálat – az algoritmus elemzéseHelyességvizsgálat – az algoritmus elemzése
17
Az algoritmus megvalósítása
A programozási nyelv kiválasztása (C++)A programozási nyelv kiválasztása (C++)
A program megírása az adott nyelven.A program megírása az adott nyelven.
18
A program tesztelése
A logikai és programozói hibák kereséseA logikai és programozói hibák keresése
Egyes hibákat a fordító program jelez.Egyes hibákat a fordító program jelez.
Logikai hibák – a program tervezése közben Logikai hibák – a program tervezése közben jöttek létre – a fordító nem jelzi őket.jöttek létre – a fordító nem jelzi őket.
Hibakereső program – debugerHibakereső program – debuger
A program tesztelése fiktív és valós bemenő A program tesztelése fiktív és valós bemenő adatokkal.adatokkal.
19
Vezérlő szerkezetek
Az utasítások sorrendjét adják meg.Az utasítások sorrendjét adják meg.
Bármely feladat megoldásához elegendő a Bármely feladat megoldásához elegendő a következő három vezérlő szerkezet:következő három vezérlő szerkezet:
Lineáris szerkezet (szekvencia)Lineáris szerkezet (szekvencia)
Elágazás (szelekció)Elágazás (szelekció)
Ismétlés (iteráció, ciklus)Ismétlés (iteráció, ciklus)
20
Lineáris algoritmusok
MűveletsorMűveletsor
A vezérlés az előző A vezérlés az előző utasításról a utasításról a következőre következőre helyeződik.helyeződik.
Szaggatott vonal – a Szaggatott vonal – a lineáris struktúra lineáris struktúra elemei egységet elemei egységet képeznek.képeznek.
U1
U2
Un
21
Elágazásos algoritmus (szelekció)
Egyes utasítások elvégzése feltételhez kötött.Egyes utasítások elvégzése feltételhez kötött.
Két fajta elágazás:Két fajta elágazás:
Ha Ha feltételfeltétel akkor akkorutasításutasítás
Ha feltételHa feltétel akkor akkorutasítás_1utasítás_1
különbenkülönbenutasítás_2utasítás_2
A A feltételfeltétel logikai eredményt ad: logikai eredményt ad: igazigaz, , hamishamis
22
Ha ... akkor ...
Feltétel
Utasítás
Igaz
HamisNapsütés
Strand
Igaz
Hamis
23
Ha ... akkor ... különben ....
Feltétel
Utasítás_1
Igaz
Hamis
Utasítás_2
Napsütés
Strand
Igaz
Hamis
TV
24
Ciklus (iteráció)
Egy adott feladatot többször végzünk el.Egy adott feladatot többször végzünk el.
Az ismétlést egy feltétel vezérli.Az ismétlést egy feltétel vezérli.
A ciklus teste (magja): az ismétlődő utasítások.A ciklus teste (magja): az ismétlődő utasítások.
Két ciklusfajta:Két ciklusfajta:
elöltesztelőselöltesztelős
hátultesztelős ciklus.hátultesztelős ciklus.
25
Elöltesztelős ciklus
Ha a feltétel igaz, ismételd, különben hagyd Ha a feltétel igaz, ismételd, különben hagyd abba.abba.
Feltétel
Utasítás
Igaz
Hamis
26
Hátultesztelős ciklus
Ismételd, és vizsgáld meg a feltételt: ha hamis, Ismételd, és vizsgáld meg a feltételt: ha hamis, hagyd abba.hagyd abba.
Feltétel
Utasítás
Igaz Hamis