hogyan csináljam?

26
1 Algoritmusok Hogyan csináljam? Hogyan csináljam?

Upload: others

Post on 16-Oct-2021

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Hogyan csináljam?

1

Algoritmusok

Hogyan csináljam?Hogyan csináljam?

Page 2: 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.

Page 3: Hogyan csináljam?

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.

Page 4: Hogyan csináljam?

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.

Page 5: Hogyan csináljam?

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)

Page 6: Hogyan csináljam?

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.

Page 7: Hogyan csináljam?

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

Page 8: Hogyan csináljam?

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!

Page 9: Hogyan csináljam?

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

Page 10: Hogyan csináljam?

10

Struktogram

Be: x,yBe: x,y

yy≠≠00IgenIgen NemNem

z = xz = x//yy

Ki: zKi: z

Ki: Nincs Ki: Nincs megoldásmegoldás

Page 11: Hogyan csináljam?

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

Page 12: Hogyan csináljam?

12

Folyamatábra

y≠0

z=x/y

Start

End

i

n

Be: x,y

Be: HibaKi: z

Page 13: Hogyan csináljam?

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

Page 14: Hogyan csináljam?

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)

Page 15: Hogyan csináljam?

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)

Page 16: Hogyan csináljam?

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

Page 17: Hogyan csináljam?

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.

Page 18: Hogyan csináljam?

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.

Page 19: Hogyan csináljam?

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)

Page 20: Hogyan csináljam?

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

Page 21: Hogyan csináljam?

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

Page 22: Hogyan csináljam?

22

Ha ... akkor ...

Feltétel

Utasítás

Igaz

HamisNapsütés

Strand

Igaz

Hamis

Page 23: Hogyan csináljam?

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

Page 24: Hogyan csináljam?

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.

Page 25: Hogyan csináljam?

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

Page 26: Hogyan csináljam?

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