66
Algoritmusok és Algoritmusok és készítésük készítésük

Algoritmusok és készítésük

  • Upload
    harley

  • View
    29

  • Download
    0

Embed Size (px)

DESCRIPTION

Algoritmusok és készítésük. Algoritmus fogalma. Az algoritmus szó Muhammad Ibn Músza Al-Hvázimi (IX. század) csillagász és matematikus nevéből származik A hindu számokról írt jelentős munkájának pontatlan latinra fordításakor változott a szerző neve Algoritmusra - PowerPoint PPT Presentation

Citation preview

Page 1: Algoritmusok és készítésük

Algoritmusok és készítésükAlgoritmusok és készítésük

Page 2: Algoritmusok és készítésük

Algoritmus fogalmaAlgoritmus fogalma

Az algoritmus szó Muhammad Ibn Músza Az algoritmus szó Muhammad Ibn Músza Al-Hvázimi (IX. század) csillagász és Al-Hvázimi (IX. század) csillagász és matematikus nevéből származikmatematikus nevéből származikA hindu számokról írt jelentős munkájának A hindu számokról írt jelentős munkájának pontatlan latinra fordításakor változott a pontatlan latinra fordításakor változott a szerző neve Algoritmusraszerző neve AlgoritmusraAz algoritmus egy probléma véges Az algoritmus egy probléma véges számú elemi lépésben történő számú elemi lépésben történő egyértelmű és teljes megadása.egyértelmű és teljes megadása.

Page 3: Algoritmusok és készítésük

A problémamegoldás lépéseiA problémamegoldás lépései

1.1. A feladat megfogalmazásaA feladat megfogalmazása– A feladat leírása legyen mindig pontos és A feladat leírása legyen mindig pontos és

egyértelmű.egyértelmű.– Ezt elhanyagolva sok idő és pénz veszhet Ezt elhanyagolva sok idő és pénz veszhet

kárba.kárba.

2.2. Elemzés, tervezés, szervezésElemzés, tervezés, szervezés– Számos módszertant, szoftvert fejlesztettek Számos módszertant, szoftvert fejlesztettek

ki erre a célra.ki erre a célra.– Ezek tartalmazzák a probléma megoldását Ezek tartalmazzák a probléma megoldását

támogató és leíró matematikai modelleket, támogató és leíró matematikai modelleket, valamint a be- és kimenő adatokkal valamint a be- és kimenő adatokkal szembeni igényeketszembeni igényeket

Page 4: Algoritmusok és készítésük

A problémamegoldás lépései A problémamegoldás lépései (folyt.)(folyt.)

3.3. Programtervezés, algoritmuskészítésProgramtervezés, algoritmuskészítés– Ebben a szakaszban kell megtervezni és Ebben a szakaszban kell megtervezni és

dokumentálni a különböző modelleket dokumentálni a különböző modelleket megvalósító algoritmusokat.megvalósító algoritmusokat.

– Az algoritmus nem egyenlő a programmal, Az algoritmus nem egyenlő a programmal, ugyanis még általános, programnyelv-ugyanis még általános, programnyelv-függetlenfüggetlen

– A programterv kidolgozása többlépcsős, A programterv kidolgozása többlépcsős, egyre finomabb részletezettségűegyre finomabb részletezettségű

Page 5: Algoritmusok és készítésük

A problémamegoldás lépései A problémamegoldás lépései (folyt.)(folyt.)

4.4. Programozás, kódolásProgramozás, kódolás– Az algoritmusok kódolása konkrét Az algoritmusok kódolása konkrét

programozási nyelvreprogramozási nyelvre– Ebben az esetben a számítógép számára Ebben az esetben a számítógép számára

értelmezhető, futtatható programokról van értelmezhető, futtatható programokról van szószó

5.5. A program tesztelése, hangolásaA program tesztelése, hangolása– A tesztelés bonyolult, aprólékos munka, A tesztelés bonyolult, aprólékos munka,

megfelelő időt kell rá fordítani (hibák megfelelő időt kell rá fordítani (hibák kiküszöbölése, finomhangolás)kiküszöbölése, finomhangolás)

Page 6: Algoritmusok és készítésük

A problémamegoldás lépései A problémamegoldás lépései (folyt.)(folyt.)

6.6. DokumentálásDokumentálás– Az egész folyamatot végigkíséri, de ebben a Az egész folyamatot végigkíséri, de ebben a

fázisban kell a felhasználók és üzemeltetők fázisban kell a felhasználók és üzemeltetők számára leírni a rendszer használatátszámára leírni a rendszer használatát

– Ez a leírás tartalmazza a rendszer működési Ez a leírás tartalmazza a rendszer működési feltételeit, paramétereit, valamint az adminisztrátori feltételeit, paramétereit, valamint az adminisztrátori és felhasználói kézikönyveketés felhasználói kézikönyveket

7.7. A rendszer bevezetése, üzemszerű használata A rendszer bevezetése, üzemszerű használata – A megtervezett, elkészített, letesztelt és A megtervezett, elkészített, letesztelt és

dokumentált rendszer használatának megkezdése, dokumentált rendszer használatának megkezdése, folyamatos ellenőrzés mellettfolyamatos ellenőrzés mellett

– A bevezetés után megfogalmazódó igények alapján A bevezetés után megfogalmazódó igények alapján további verziók készíthetőktovábbi verziók készíthetők

Page 7: Algoritmusok és készítésük

Algoritmus-leíró eszközökAlgoritmus-leíró eszközök

Ezekkel az eszközökkel jeleníthetőek meg Ezekkel az eszközökkel jeleníthetőek meg az algoritmusok:az algoritmusok:– Folyamatábra (blokkdiagram)Folyamatábra (blokkdiagram)– Mondatszerű leírás (leírónyelv)Mondatszerű leírás (leírónyelv)– StruktogramStruktogram– Jackson módszerJackson módszer

Mindegyik leíró eszköznek megvannak a Mindegyik leíró eszköznek megvannak a maga külön jelölési módszereimaga külön jelölési módszerei

Page 8: Algoritmusok és készítésük

Folyamatábra (blokkdiagram)Folyamatábra (blokkdiagram)

A folyamatábra az algoritmus képi A folyamatábra az algoritmus képi reprezentációjareprezentációja

A mindennapi életben is találkozhatunk A mindennapi életben is találkozhatunk algoritmusokkal (bank- vagy italautomata)algoritmusokkal (bank- vagy italautomata)

A szimbólumok különbözőek, de A szimbólumok különbözőek, de mindegyikre igaz, hogy elemi vagy mindegyikre igaz, hogy elemi vagy összetett lépések végrehajtási sorrendjét összetett lépések végrehajtási sorrendjét adják megadják meg

Page 9: Algoritmusok és készítésük

Folyamatábra jelöléseiFolyamatábra jelölései

STARTKezdőpontKezdőpont jele: minden algoritmusban jele: minden algoritmusban csak 1 van belőle, pontosan 1 él indul ki csak 1 van belőle, pontosan 1 él indul ki belőle és egy sem csatlakozik belebelőle és egy sem csatlakozik bele

VégpontVégpont jele: minden algoritmusban csak 1 jele: minden algoritmusban csak 1 van belőle, pontosan 1 él csatlakozik bele van belőle, pontosan 1 él csatlakozik bele és egy sem indul ki belőleés egy sem indul ki belőle

BBeolvasás és kiíratáseolvasás és kiíratás szimbóluma: szimbóluma: legalább 1 él csatlakozik bele és pontosan 1 legalább 1 él csatlakozik bele és pontosan 1 él indul ki belőleél indul ki belőle

ÉrtékadásÉrtékadás szimbóluma: a kifejezés értéke a szimbóluma: a kifejezés értéke a változóban lesz tárolva. Legalább 1 él csat-változóban lesz tárolva. Legalább 1 él csat-lakozik bele és pontosan 1 indul ki belőlelakozik bele és pontosan 1 indul ki belőle

STOP

be: vált1, vált2

ki: kif1, kif2

változó:=kifejezés

Page 10: Algoritmusok és készítésük

Folyamatábra jelölései (folyt.)Folyamatábra jelölései (folyt.)

feltétel

Döntés (elágazás) Döntés (elágazás) szimbóluma: ha a szimbóluma: ha a feltétel igaz, akkor az igaz ágon, ellenkező feltétel igaz, akkor az igaz ágon, ellenkező esetben a hamis ágon folytatódik az esetben a hamis ágon folytatódik az algoritmus. Legalább 1 él csatlakozik bele, algoritmus. Legalább 1 él csatlakozik bele, és legalább 1 indul ki belőleés legalább 1 indul ki belőle

Beágyazás Beágyazás szimbóluma: egy máshol leírt szimbóluma: egy máshol leírt (rész)algoritmust helyettesít. Legalább 1 él (rész)algoritmust helyettesít. Legalább 1 él csatlakozik bele és pontosan 1 indul ki csatlakozik bele és pontosan 1 indul ki belőlebelőle

Ciklikus végrehajtásCiklikus végrehajtás szimbóluma: három szimbóluma: három műveletet tartalmaz (számláló beállítása, műveletet tartalmaz (számláló beállítása, vizsgálata és léptetése). Pontosan 2 él indul vizsgálata és léptetése). Pontosan 2 él indul ki belőle és pontosan 2 él érkezik beleki belőle és pontosan 2 él érkezik bele

részalgoritmusrészalgoritmus

beállít, vizsgál, léptet

Page 11: Algoritmusok és készítésük

Folyamatábra jelölései (folyt.)Folyamatábra jelölései (folyt.)

FolyamatvonalFolyamatvonal: a végrehajtás irányát, : a végrehajtás irányát, a lépések egymásutániságát mutatja. a lépések egymásutániságát mutatja. Csak a döntési és a ciklikus végrehaj-Csak a döntési és a ciklikus végrehaj-tás szimbólumában ágazhat el.tás szimbólumában ágazhat el.

Page 12: Algoritmusok és készítésük

Adatok, adattípusok, változókAdatok, adattípusok, változók

Page 13: Algoritmusok és készítésük

VáltozóVáltozó

A változó egy névvel ellátott tárolóhely a A változó egy névvel ellátott tárolóhely a számítógép memóriájábanszámítógép memóriájában– értéke mindig a tárolóhely aktuális tartalmaértéke mindig a tárolóhely aktuális tartalma

A változókat jellemezhetjük aA változókat jellemezhetjük a– nevévelnevével– típusávaltípusával– memóriabeli kezdőcímévelmemóriabeli kezdőcímével– értékévelértékével

Page 14: Algoritmusok és készítésük

NévNév

A változó neve az azonosításra szolgálA változó neve az azonosításra szolgál– ezzel tudunk a változóra hivatkozni, pl.: ezzel tudunk a változóra hivatkozni, pl.:

valamilyen képletbenvalamilyen képletben– célszerű a változónak beszédes nevet adni (a célszerű a változónak beszédes nevet adni (a

nevéből rá lehessen jönni, mi a tartalma)nevéből rá lehessen jönni, mi a tartalma)– mivel általában többször használjuk egy mivel általában többször használjuk egy

programban, így a hossza is fontosprogramban, így a hossza is fontos– programnyelvfüggőek a névre vonatkozó programnyelvfüggőek a névre vonatkozó

szabályok (hány karakter, milyen karakterek, szabályok (hány karakter, milyen karakterek, kis- és nagybetű számít-e)kis- és nagybetű számít-e)

Page 15: Algoritmusok és készítésük

TípusTípus

Nagyon fontos tulajdonsága egy Nagyon fontos tulajdonsága egy változónak a típus, hiszen meghatározza:változónak a típus, hiszen meghatározza:– a a változó értékkészletétváltozó értékkészletét– a változóval a változóval elvégezhető műveletek körételvégezhető műveletek körét – a a helyfoglalás nagyságáthelyfoglalás nagyságát a memóriában a memóriában

A típusok konkrét megvalósítása az adott A típusok konkrét megvalósítása az adott programnyelvtől függ, de általánosan programnyelvtől függ, de általánosan elmondható, hogy 2 nagy csoportra elmondható, hogy 2 nagy csoportra oszthatóak:oszthatóak:– elemi típusokelemi típusok– összetett típusokösszetett típusok

Page 16: Algoritmusok és készítésük

Elemi típusokElemi típusok

Az elemi típusoknak nincs szerkezetük, Az elemi típusoknak nincs szerkezetük, nem lehet egyes részeiket külön kezelninem lehet egyes részeiket külön kezelni– Egész szám: egész számok tárolására, Egész szám: egész számok tárolására,

melyek lehetnek előjelesek vagy előjel melyek lehetnek előjelesek vagy előjel nélküliek; többféle létezik belőlenélküliek; többféle létezik belőle

– Valós számok: véges tizedes törtek Valós számok: véges tizedes törtek ábrázolására, a számokat normál alakban ábrázolására, a számokat normál alakban tárolják; többféle létezik belőletárolják; többféle létezik belőle

– Karakter: egyetlen karakter tárolásáraKarakter: egyetlen karakter tárolására

Page 17: Algoritmusok és készítésük

Elemi típusok (folyt.)Elemi típusok (folyt.)

– Logikai: kétféle értéket vehet fel (igaz, hamis)Logikai: kétféle értéket vehet fel (igaz, hamis)– Mutató: a változó értéke egy memóriacím, Mutató: a változó értéke egy memóriacím,

amivel gyakorlatilag „rámutatunk” az adott amivel gyakorlatilag „rámutatunk” az adott memóriabeli helyre (dinamikus memóriabeli helyre (dinamikus memóriakezelés megvalósításához memóriakezelés megvalósításához szükséges)szükséges)

Page 18: Algoritmusok és készítésük

Összetett típusokÖsszetett típusok

Elemi vagy összetett típusokat tartalmaznak Elemi vagy összetett típusokat tartalmaznak valamilyen szerkezeti összefüggés szerint valamilyen szerkezeti összefüggés szerint (adatszerkezeteknek is nevezzük őket)(adatszerkezeteknek is nevezzük őket)– tömb: homogén adatszerkezet, azaz több azonos tömb: homogén adatszerkezet, azaz több azonos

típusú elemet tartalmaztípusú elemet tartalmazJellemzői: név, típus, indexhatár Jellemzői: név, típus, indexhatár

A típus azt adja meg, hogy a tömbben szereplő elemek A típus azt adja meg, hogy a tömbben szereplő elemek milyen típusúakmilyen típusúak

Az indexhatár a tömb elemszámát határozza meg, azaz a Az indexhatár a tömb elemszámát határozza meg, azaz a tömb méretét (a memóriabeli mérete függ a típustól is)tömb méretét (a memóriabeli mérete függ a típustól is)

A tömb elemeire a tömb nevével, és mögötte szögletes A tömb elemeire a tömb nevével, és mögötte szögletes zárójelben az indexszámmal hivatkozunk.zárójelben az indexszámmal hivatkozunk.

Lehet egydimenziós (vektor) és többdimenziós is. A Lehet egydimenziós (vektor) és többdimenziós is. A kétdimenziós tömböt mártixnak hívjuk.kétdimenziós tömböt mártixnak hívjuk.

Page 19: Algoritmusok és készítésük

Összetett típusok (folyt.)Összetett típusok (folyt.)

– Karakterlánc (string, szöveg): egy karakter típusú Karakterlánc (string, szöveg): egy karakter típusú egydimenziós tömbnek fogható fel kezelés egydimenziós tömbnek fogható fel kezelés szempontjábólszempontjából

meghatározhatjuk a nevét és a méretétmeghatározhatjuk a nevét és a méretét

a string egyes elemeire a nevével és az adott karakter a string egyes elemeire a nevével és az adott karakter indexszámával (szögletes zárójelben) hivatkozhatunkindexszámával (szögletes zárójelben) hivatkozhatunk

– Rekord: heterogén adatszerkezet, melynek Rekord: heterogén adatszerkezet, melynek valamennyi komponensére és magára a rekordra is valamennyi komponensére és magára a rekordra is külön névvel hivatkozunkkülön névvel hivatkozunk

különböző típusú adatokat lehet benne tárolnikülönböző típusú adatokat lehet benne tárolni

a komponenseket mezőknek hívjuka komponenseket mezőknek hívjuk

állománykezelésnél, ill. adatbázis-kezelésnél használjákállománykezelésnél, ill. adatbázis-kezelésnél használják

Page 20: Algoritmusok és készítésük

Összetett típusok (folyt.)Összetett típusok (folyt.)

– Állomány (fájl): típusai:Állomány (fájl): típusai:szöveges állományszöveges állomány

típusos állománytípusos állomány

nem típusos állománynem típusos állomány

Page 21: Algoritmusok és készítésük

ÉrtékÉrték

A legtöbb programozási nyelvben a változót A legtöbb programozási nyelvben a változót deklarálnideklarálni kell kell– azaz, mielőtt használnánk, meg kell adni a nevét és a azaz, mielőtt használnánk, meg kell adni a nevét és a

típusát (ezt általában a program vagy algoritmus típusát (ezt általában a program vagy algoritmus elején található deklarációs részben lehet megtenni)elején található deklarációs részben lehet megtenni)

A változó deklarálásakor a változó típusának A változó deklarálásakor a változó típusának megfelelő hely lefoglalódik a memóriábanmegfelelő hely lefoglalódik a memóriábanA deklarálás pillanatában a változó értékét A deklarálás pillanatában a változó értékét definiálatlannak nevezzükdefiniálatlannak nevezzükEkkor is lehet értéke, a memóriában lefoglalt Ekkor is lehet értéke, a memóriában lefoglalt hely korábbi tartalmától függőenhely korábbi tartalmától függően– mivel ezt a korábbi értéket biztosan nem akarjuk mivel ezt a korábbi értéket biztosan nem akarjuk

használni, a változónak érdemes kezdőértéket adnihasználni, a változónak érdemes kezdőértéket adni

Page 22: Algoritmusok és készítésük

KifejezésKifejezés

Kifejezés lehet:Kifejezés lehet:– egy konkrét érték (pl.: 10, hamis, „A”)egy konkrét érték (pl.: 10, hamis, „A”)– egy változó (pl.: a, x, min, nev)egy változó (pl.: a, x, min, nev)– változók vagy konkrét értékek és műveleti jelek változók vagy konkrét értékek és műveleti jelek

kombinációja (pl.: 2*x, 3+2, N<=5)kombinációja (pl.: 2*x, 3+2, N<=5)

A műveleti jeleket operátoroknak, a változókat A műveleti jeleket operátoroknak, a változókat és konkrét értékeket operandusoknak hívjukés konkrét értékeket operandusoknak hívjuk

A kifejezéseket kiértékelve konkrét értéket A kifejezéseket kiértékelve konkrét értéket kapunk (aminek lesz valamilyen típusa)kapunk (aminek lesz valamilyen típusa)– a kifejezés típusa a kifejezésben szereplő a kifejezés típusa a kifejezésben szereplő

operandusok és operátorok típusától függoperandusok és operátorok típusától függ

Page 23: Algoritmusok és készítésük

KonstansKonstans

Lényege: egy konkrét értéket valamilyen Lényege: egy konkrét értéket valamilyen beszédes névvel látunk el, hogy a beszédes névvel látunk el, hogy a későbbiekben a névvel tudjunk rá későbbiekben a névvel tudjunk rá hivatkozni (pl.: pi)hivatkozni (pl.: pi)Előnye: az algoritmust átláthatóbbá tesziElőnye: az algoritmust átláthatóbbá tesziA konstansokat a program vagy algoritmus A konstansokat a program vagy algoritmus elején kell megadni, és csak itt kap értéketelején kell megadni, és csak itt kap értéketHa az alapértékét meg szeretnénk Ha az alapértékét meg szeretnénk változtatni, azt elég egyszer megtenni az változtatni, azt elég egyszer megtenni az algoritmus folyamánalgoritmus folyamán

Page 24: Algoritmusok és készítésük

Vezérlési szerkezetekVezérlési szerkezetek

A folyamatábrák segítségével csak A folyamatábrák segítségével csak egyszerűbb algoritmusok írhatóak leegyszerűbb algoritmusok írhatóak leKomolyabb algoritmusok készítéséhez Komolyabb algoritmusok készítéséhez vezették be a vezérlési szerkezeteketvezették be a vezérlési szerkezeteketAz 1960-as években bebizonyították, hogy Az 1960-as években bebizonyították, hogy minden algoritmus leírható 3 vezérlési minden algoritmus leírható 3 vezérlési szerkezettel:szerkezettel:– szekvenciávalszekvenciával– szelekcióvalszelekcióval– iterációvaliterációval

Page 25: Algoritmusok és készítésük

Vezérlési szerkezetek (folyt.)Vezérlési szerkezetek (folyt.)

Szekvencia:Szekvencia:– utasítások egymás utáni végrehajtásautasítások egymás utáni végrehajtása– külön nem jelöljükkülön nem jelöljük

Szelekció (elágazás):Szelekció (elágazás):– egy feltétel kiértékelésének eredményétől egy feltétel kiértékelésének eredményétől

függ, hogy milyen utasítások kerülnek függ, hogy milyen utasítások kerülnek végrehajtásravégrehajtásra

Iteráció (ciklus, ismétlés):Iteráció (ciklus, ismétlés):– egy utasítás egymás után többszöri egy utasítás egymás után többszöri

végrehajtása esetén használjukvégrehajtása esetén használjuk

Page 26: Algoritmusok és készítésük

Vezérlési szerkezetek (folyt.)Vezérlési szerkezetek (folyt.)

Ezek a vezérlési szerkezetek leírhatóak Ezek a vezérlési szerkezetek leírhatóak folyamatábrával, de mivel egymásba folyamatábrával, de mivel egymásba ágyazhatóak, egy bizonyos szint után a ágyazhatóak, egy bizonyos szint után a folyamatábra áttekinthetetlenné és túl folyamatábra áttekinthetetlenné és túl bonyolulttá válik.bonyolulttá válik.

Page 27: Algoritmusok és készítésük

Mondatszerű leírás (leírónyelv)Mondatszerű leírás (leírónyelv)

Ez az algoritmusleíró eszköz a magyar Ez az algoritmusleíró eszköz a magyar nyelvre épül, így könnyebben tanulható és nyelvre épül, így könnyebben tanulható és átlátható.átlátható.A sok különböző programozási nyelv A sok különböző programozási nyelv eszköztáraiból csak a legfontosabbakat eszköztáraiból csak a legfontosabbakat tartalmazzatartalmazzaA mondatszerű leírással megírt algoritmus A mondatszerű leírással megírt algoritmus nem más, mint utasítások sorozatanem más, mint utasítások sorozataLétezik hozzá szabálygyűjtemény, ezt Létezik hozzá szabálygyűjtemény, ezt szintaxisnak nevezzük.szintaxisnak nevezzük.

Page 28: Algoritmusok és készítésük

Leírónyelv - változódeklarálásLeírónyelv - változódeklarálás

Az algoritmus kezdésének jelölése után Az algoritmus kezdésének jelölése után következikkövetkezik– az algoritmus kezdése leírónyelvben: az algoritmus kezdése leírónyelvben:

algoritmus névalgoritmus név – változódeklarálás:változódeklarálás:

váltózó váltnév1, váltnév2, … : típusváltózó váltnév1, váltnév2, … : típus– akkor írhatjuk a változóneveket egy sorba, ha akkor írhatjuk a változóneveket egy sorba, ha

azok azonos típusúakazok azonos típusúak– különböző típusú változóknál annyi sor lesz, különböző típusú változóknál annyi sor lesz,

ahány különböző típust akarunk használniahány különböző típust akarunk használni

Page 29: Algoritmusok és készítésük

Leírónyelv – változódeklarálás Leírónyelv – változódeklarálás (folyt.)(folyt.)

Példák változódeklarálásra:Példák változódeklarálásra:változó darab:egészváltozó darab:egészváltozó átlag:valósváltozó átlag:valósváltozó l:logikaiváltozó l:logikaiváltozó vezetéknév, keresztnév: szövegváltozó vezetéknév, keresztnév: szöveg

Konkrét programozási nyelvek esetén Konkrét programozási nyelvek esetén figyelni kell a névadásra, mert léteznek figyelni kell a névadásra, mert léteznek olyan nyelvek, ahol a kis- és nagybetű olyan nyelvek, ahol a kis- és nagybetű különbözőnek számít (pl.: Java)különbözőnek számít (pl.: Java)

Page 30: Algoritmusok és készítésük

Leírónyelv - értékadásLeírónyelv - értékadás

Értékadás: Értékadás: változónév:=kifejezésváltozónév:=kifejezés– A := jel jobb oldalán lévő kifejezést kiszámítja, és az A := jel jobb oldalán lévő kifejezést kiszámítja, és az

eredményt eltárolja a bal oldalon található változóbaneredményt eltárolja a bal oldalon található változóban– Ez csak akkor lehetséges, ha a kifejezés Ez csak akkor lehetséges, ha a kifejezés

eredményének és a változónak a típusa megegyezikeredményének és a változónak a típusa megegyezik– Pl.: Pl.:

átlag:=összeg/dbátlag:=összeg/db

l:=(darab<=10)l:=(darab<=10)

vezetéknév:=vezetéknév:=""HorváthHorváth""

Page 31: Algoritmusok és készítésük

Leírónyelv – értékadás (folyt.)Leírónyelv – értékadás (folyt.)

Az első példánál látható, hogy az osztásra Az első példánál látható, hogy az osztásra a / jel szolgál.a / jel szolgál.

Ha elosztjuk az összeget a Ha elosztjuk az összeget a darabszámmal, akkor megkapjuk az darabszámmal, akkor megkapjuk az átlagotátlagot

Fontos, hogy az átlag nevű változó valós Fontos, hogy az átlag nevű változó valós típusú legyen, mivel egy osztás típusú legyen, mivel egy osztás eredménye általában nem egész számeredménye általában nem egész szám

Page 32: Algoritmusok és készítésük

Leírónyelv – értékadás (folyt.)Leírónyelv – értékadás (folyt.)

A második példát úgy kell értelmezni, hogy A második példát úgy kell értelmezni, hogy ha a darab nevű változó aktuális értéke ha a darab nevű változó aktuális értéke kisebb, mint 10, akkor az l nevű logikai kisebb, mint 10, akkor az l nevű logikai típusú változó értéke igaz lesz, ellenkező típusú változó értéke igaz lesz, ellenkező esetben hamisesetben hamisA harmadik sorban szöveges értéket A harmadik sorban szöveges értéket adtunk egy változónak.adtunk egy változónak.– fontos, hogy ekkor a szöveget fontos, hogy ekkor a szöveget "" "" jelek közé jelek közé

kell tenni, különben a szöveget kell tenni, különben a szöveget változónévként próbálja értelmezni a változónévként próbálja értelmezni a program, és ez hibához vezethetprogram, és ez hibához vezethet

Page 33: Algoritmusok és készítésük

Leírónyelv – Beolvasás, kiíratásLeírónyelv – Beolvasás, kiíratás

BeolvasásBeolvasásbe: vált1, vált2…be: vált1, vált2…

KiíratásKiíratáski: kif1, kif2…ki: kif1, kif2…

A be utasítás a felhasználótól kapott A be utasítás a felhasználótól kapott értékeket eltárolja az adott nevű értékeket eltárolja az adott nevű változókbaváltozókbaA ki utasítás pedig kiírja a képernyőre a A ki utasítás pedig kiírja a képernyőre a megadott kifejezést, vagy a változók megadott kifejezést, vagy a változók értékétértékét

Page 34: Algoritmusok és készítésük

Leírónyelv – Beolvasás, kiíratás Leírónyelv – Beolvasás, kiíratás (folyt.)(folyt.)

Példa (név beolvasása, majd üdvözlés Példa (név beolvasása, majd üdvözlés kiíratása):kiíratása):

algoritmus üdvalgoritmus üdvváltozó név:szövegváltozó név:szövegki: ki: ""Írj be egy nevet!Írj be egy nevet!""be: névbe: névki: ki: ""ÜdvözöllekÜdvözöllek"", név, névalgoritmus végealgoritmus vége

Page 35: Algoritmusok és készítésük

Leírónyelv – Beolvasás, kiíratás Leírónyelv – Beolvasás, kiíratás (folyt.)(folyt.)

Példa (név beolvasása, majd üdvözlés Példa (név beolvasása, majd üdvözlés kiíratása) magyarázata:kiíratása) magyarázata:– Először változót deklarálunk: létrehozzuk a Először változót deklarálunk: létrehozzuk a

név nevű változót, ami szöveg típusú lesznév nevű változót, ami szöveg típusú lesz– Majd kiíratjuk a képernyőre, hogy mit Majd kiíratjuk a képernyőre, hogy mit

csináljon a felhasználó (írja be a nevet)csináljon a felhasználó (írja be a nevet)– Bekérésnél a felhasználó által beírt nevet Bekérésnél a felhasználó által beírt nevet

eltároljuk a név nevű változóbaneltároljuk a név nevű változóban– Végül kiírjuk az üdvözlő szöveget, majd mellé Végül kiírjuk az üdvözlő szöveget, majd mellé

a nevet, amit a felhasználó megadott, és a a nevet, amit a felhasználó megadott, és a név nevű változóban találhatónév nevű változóban található

Page 36: Algoritmusok és készítésük

Leírónyelv – SzelekcióLeírónyelv – Szelekció

Szelekciónál egy feltételtől függően Szelekciónál egy feltételtől függően hajtunk végre bizonyos utasításokathajtunk végre bizonyos utasításokat

3 fajtája van:3 fajtája van:– egyágú elágazásegyágú elágazás– kétágú elágazáskétágú elágazás– többágú elágazástöbbágú elágazás

Page 37: Algoritmusok és készítésük

Leírónyelv – Szelekció (folyt)Leírónyelv – Szelekció (folyt)

Egyágú elágazás:Egyágú elágazás:

ha feltétel akkorha feltétel akkor

utasítás(ok)utasítás(ok)

hvégehvége– Ha az adott feltétel igaz, akkor az utasítás(ok) Ha az adott feltétel igaz, akkor az utasítás(ok)

végrehajtódnakvégrehajtódnak

Page 38: Algoritmusok és készítésük

Egyágú szelekció folyamatábrávalEgyágú szelekció folyamatábrával

feltétel

utasítás(ok)

ih

Page 39: Algoritmusok és készítésük

Leírónyelv – Szelekció (folyt)Leírónyelv – Szelekció (folyt)

Kétágú elágazás:Kétágú elágazás:

ha feltétel akkorha feltétel akkor

utasítás(ok)utasítás(ok)

különbenkülönben

utasítás(ok)utasítás(ok)

hvégehvége– Ha az adott feltétel igaz, akkor az adott utasítás(ok) Ha az adott feltétel igaz, akkor az adott utasítás(ok)

hajtódnak végre, ha hamis, akkor a különben részbe hajtódnak végre, ha hamis, akkor a különben részbe írt utasítás(ok) hajtódnak végreírt utasítás(ok) hajtódnak végre

Page 40: Algoritmusok és készítésük

Kétágú szelekció folyamatábrávalKétágú szelekció folyamatábrával

feltétel

utasítás(ok)

ih

utasítás(ok)

Page 41: Algoritmusok és készítésük

Leírónyelv – Szelekció (folyt)Leírónyelv – Szelekció (folyt)

Többágú elágazás:Többágú elágazás:elágazáselágazás

amikor feltétel1:amikor feltétel1:utasítás(ok)utasítás(ok)

amikor feltétel2:amikor feltétel2:utasítás(ok)utasítás(ok)

……különbenkülönben

utasítás(ok)utasítás(ok)evégeevége

Page 42: Algoritmusok és készítésük

Leírónyelv – Szelekció (folyt)Leírónyelv – Szelekció (folyt)

Többágú elágazás:Többágú elágazás:– A többágú elágazásnak legalább egy A többágú elágazásnak legalább egy

amikor ágat kell tartalmaznia, a különben ág amikor ágat kell tartalmaznia, a különben ág elhagyhatóelhagyható

– Ha valamelyik feltétel teljesül, akkor a hozzá Ha valamelyik feltétel teljesül, akkor a hozzá tartozó utasítások hajtódnak végretartozó utasítások hajtódnak végre

– Ha egyik feltétel sem teljesül, akkor a Ha egyik feltétel sem teljesül, akkor a különben ágba írt utasítások hajtódnak végre különben ágba írt utasítások hajtódnak végre (ha van különben ág)(ha van különben ág)

Page 43: Algoritmusok és készítésük

Többágú szelekció Többágú szelekció folyamatábrávalfolyamatábrával

feltétel

utasítás(ok)

ih

utasítás(ok)

feltételih

utasítás(ok)

Page 44: Algoritmusok és készítésük

Leírónyelv – Szelekció (folyt)Leírónyelv – Szelekció (folyt)

Példa kétágú elágazásra (két szám Példa kétágú elágazásra (két szám összehasonlítása):összehasonlítása):

algoritmus nagyobbalgoritmus nagyobbváltozó a,b:egészváltozó a,b:egészbe: a,bbe: a,bha a>b akkorha a>b akkor

ki: ki: ""A nagyobb mint BA nagyobb mint B""különbenkülönben

ki: ki: ""A nem nagyobb mint BA nem nagyobb mint B""algoritmus végealgoritmus vége

Page 45: Algoritmusok és készítésük

A példa folyamatábrávalA példa folyamatábrával

START

be: a, b

a>bih

ki: "A nem nagyobb mint B"

STOP

ki: "A nagyobb mint B"

Page 46: Algoritmusok és készítésük

Leírónyelv – Szelekció (folyt)Leírónyelv – Szelekció (folyt)

Példa többágú elágazásra (két szám összehasonlítása):Példa többágú elágazásra (két szám összehasonlítása):algoritmus nagyobbalgoritmus nagyobbváltozó a,b:egészváltozó a,b:egészbe: a,bbe: a,belágazáselágazás

amikor a>b:amikor a>b:ki: ki: ""A nagyobb mint BA nagyobb mint B""

amikor a<b:amikor a<b: ki: ki: ""B nagyobb mint AB nagyobb mint A""

különbenkülönbenki: ki: ""A két szám egyenlőA két szám egyenlő""

evégeevégealgoritmus végealgoritmus vége

Page 47: Algoritmusok és készítésük

A példa folyamatábrávalA példa folyamatábrávalSTART

be: a, b

a>bih

STOP

ki: "A nagyobb mint B"a<b

ih

ki: "A két szám egyenlő"

ki: "A kisebb mint B"

Page 48: Algoritmusok és készítésük

Leírónyelv – iterációLeírónyelv – iteráció

Az iteráció esetében olyan utasításokról Az iteráció esetében olyan utasításokról van szó, amiket többször ismételünk meg van szó, amiket többször ismételünk meg egymás utánegymás után

Alapvetően 3 fajta iterációt (ciklust) Alapvetően 3 fajta iterációt (ciklust) különböztetünk meg:különböztetünk meg:– növekményes (léptetős) ciklusnövekményes (léptetős) ciklus– elöltesztelő cikluselöltesztelő ciklus– hátultesztelő ciklushátultesztelő ciklus

Page 49: Algoritmusok és készítésük

Leírónyelv – iteráció (folyt.)Leírónyelv – iteráció (folyt.)

Növekményes (léptetős) ciklusNövekményes (léptetős) ciklus– Akkor használjuk, ha pontosan tudjuk, hogy Akkor használjuk, ha pontosan tudjuk, hogy

hányszor kell ismételni az adott utasításokathányszor kell ismételni az adott utasításokat– Szükség van a ciklusban egy ún. Szükség van a ciklusban egy ún.

ciklusváltozóra, amivel számon tarthatjuk, ciklusváltozóra, amivel számon tarthatjuk, hogy hányadik ismétlésnél tartunkhogy hányadik ismétlésnél tartunk

ciklus cv:=ké..vé lépésköz=lk ismételciklus cv:=ké..vé lépésköz=lk ismételutasítás(ok)utasítás(ok)

cvégecvégeciklusmagciklusmag

Page 50: Algoritmusok és készítésük

Leírónyelv – iteráció (folyt.)Leírónyelv – iteráció (folyt.)

cv: ciklusváltozócv: ciklusváltozó

ké: kezdőértékké: kezdőérték

vé: végértékvé: végérték

lk: lépésköz (a ciklusváltozót mekkora lk: lépésköz (a ciklusváltozót mekkora lépésekkel változtassuk – egyesével, lépésekkel változtassuk – egyesével, kettesével,… stb.)kettesével,… stb.)

ciklusmag: az ciklus azon része, amely az ciklusmag: az ciklus azon része, amely az ismétlendő utasításokat tartalmazzaismétlendő utasításokat tartalmazza

Page 51: Algoritmusok és készítésük

Növekményes ciklus folyamatábrávalNövekményes ciklus folyamatábrával

cv:=ké

cv<=vé

cv:=cv+1

utasítás(ok)

Page 52: Algoritmusok és készítésük

Leírónyelv – iteráció (folyt.)Leírónyelv – iteráció (folyt.)

Példa (első 10 négyzetszám kiíratása):Példa (első 10 négyzetszám kiíratása):

algoritmus négyzetszámalgoritmus négyzetszám

változó i:egészváltozó i:egész

ciklus i:=1..10 lépésköz=1 ismételciklus i:=1..10 lépésköz=1 ismétel

ki: i*iki: i*i

cvégecvége

algoritmus végealgoritmus vége

Page 53: Algoritmusok és készítésük

A példa folyamatábrávalA példa folyamatábrával

START

i:=1

i<=10

i:=i+1

ki: i*iSTOP

Page 54: Algoritmusok és készítésük

Leírónyelv – iteráció (folyt.)Leírónyelv – iteráció (folyt.)

Példa (első 10 négyzetszám kiíratása) Példa (első 10 négyzetszám kiíratása) magyarázata:magyarázata:– A ciklus 10-szer fog lefutni (a ciklusváltozó 1-től megy A ciklus 10-szer fog lefutni (a ciklusváltozó 1-től megy

10-ig)10-ig)– Először a ciklusváltozó 1, ekkor a ciklusba lépve Először a ciklusváltozó 1, ekkor a ciklusba lépve

kiíródik az 1*1, azaz az 1kiíródik az 1*1, azaz az 1– Második lépésben a ciklusváltozó 2-re változik (ha a Második lépésben a ciklusváltozó 2-re változik (ha a

lépésköz 1), ekkor a 2*2, azaz a 4 kerül kiírásralépésköz 1), ekkor a 2*2, azaz a 4 kerül kiírásra– Ez egészen addig megy így, amíg el nem értük az Ez egészen addig megy így, amíg el nem értük az

utolsó ismétlést (10.), amikor is a 10*10, azaz a 100 utolsó ismétlést (10.), amikor is a 10*10, azaz a 100 kiíratása után kilépünk a ciklusbólkiíratása után kilépünk a ciklusból

Page 55: Algoritmusok és készítésük

Leírónyelv – iteráció (folyt.)Leírónyelv – iteráció (folyt.)

Elöltesztelő ciklusElöltesztelő ciklus– A ciklus végrehajtása egy feltételhez van A ciklus végrehajtása egy feltételhez van

kötvekötve– Ha a feltétel igaz, akkor BELÉPÜNK a Ha a feltétel igaz, akkor BELÉPÜNK a

ciklusba, és végrehajtódnak a ciklusmagban ciklusba, és végrehajtódnak a ciklusmagban található utasításoktalálható utasítások

– Előfordulhat, hogy a ciklusmag egyszer sem Előfordulhat, hogy a ciklusmag egyszer sem hajtódik végre, amennyiben a feltétel már hajtódik végre, amennyiben a feltétel már kezdéskor hamiskezdéskor hamis

Page 56: Algoritmusok és készítésük

Leírónyelv – iteráció (folyt.)Leírónyelv – iteráció (folyt.)

– Gondoskodni kell arról, hogy olyan feltételünk Gondoskodni kell arról, hogy olyan feltételünk legyen, ami egyszer mindenképpen hamissá legyen, ami egyszer mindenképpen hamissá válik, ellenkező esetben soha nem ér véget a válik, ellenkező esetben soha nem ér véget a ciklus (végtelen ciklus)ciklus (végtelen ciklus)

amíg feltétel ismételamíg feltétel ismétel

utasítás(ok)utasítás(ok)

avégeavégeciklusmagciklusmag

Page 57: Algoritmusok és készítésük

Elöltesztelő ciklus folyamatábrávalElöltesztelő ciklus folyamatábrával

feltétel

utasítás(ok)

i

h

Page 58: Algoritmusok és készítésük

Leírónyelv – iteráció (folyt.)Leírónyelv – iteráció (folyt.)

Példa (bekért számok négyzetgyökének Példa (bekért számok négyzetgyökének kiíratása, amíg nem negatív szám kerül kiíratása, amíg nem negatív szám kerül beírásra):beírásra):

algoritmus négyzetszámalgoritmus négyzetszámváltozó a:egészváltozó a:egészbe: abe: aamíg a>=0 ismételamíg a>=0 ismétel

ki: gyök(a)ki: gyök(a)be: abe: a

avégeavégealgoritmus végealgoritmus vége

Page 59: Algoritmusok és készítésük

A példa folyamatábrávalA példa folyamatábrával

START

a>=0

be: a

ki: gyök(a)

be: a

STOP

Page 60: Algoritmusok és készítésük

Leírónyelv – iteráció (folyt.)Leírónyelv – iteráció (folyt.)

Példa magyarázata:Példa magyarázata:– Először bekérünk egy számot a Először bekérünk egy számot a

felhasználótól, amit az felhasználótól, amit az aa nevű változóban nevű változóban eltárolunkeltárolunk

– Ha ez a szám nem negatív, akkor belépünk a Ha ez a szám nem negatív, akkor belépünk a ciklusba, és kiíratjuk a négyzetgyökétciklusba, és kiíratjuk a négyzetgyökét

– Bekérünk egy újabb számot, és az Bekérünk egy újabb számot, és az a a nevű nevű változó értékét felülírjuk veleváltozó értékét felülírjuk vele

– Ha ez az új szám nem negatív, akkor újra Ha ez az új szám nem negatív, akkor újra végrehajtjuk a ciklusmagot (gyök kiíratása, végrehajtjuk a ciklusmagot (gyök kiíratása, újabb bekérés), ha negatív, akkor kilépünk a újabb bekérés), ha negatív, akkor kilépünk a ciklusbólciklusból

Page 61: Algoritmusok és készítésük

Leírónyelv – iteráció (folyt.)Leírónyelv – iteráció (folyt.)

Hátultesztelő ciklusHátultesztelő ciklus– A ciklus egyszer mindenképpen A ciklus egyszer mindenképpen

végrehajtódik, a ciklusból történő KILÉPÉS végrehajtódik, a ciklusból történő KILÉPÉS van feltételhez kötvevan feltételhez kötve

– Miután végrehajtódnak a ciklusmag Miután végrehajtódnak a ciklusmag utasításai, a ciklus végén ellenőrizzük, utasításai, a ciklus végén ellenőrizzük, teljesül-e a feltétel. Ha igen, kilépünk a teljesül-e a feltétel. Ha igen, kilépünk a ciklusból, ha nem, visszaugrunk az elejéreciklusból, ha nem, visszaugrunk az elejére

Page 62: Algoritmusok és készítésük

Leírónyelv – iteráció (folyt.)Leírónyelv – iteráció (folyt.)

– Gondoskodni kell arról, hogy olyan feltételünk Gondoskodni kell arról, hogy olyan feltételünk legyen, ami egyszer mindenképpen igazzá legyen, ami egyszer mindenképpen igazzá válik, ellenkező esetben soha nem ér véget a válik, ellenkező esetben soha nem ér véget a ciklus (végtelen ciklus)ciklus (végtelen ciklus)

ismételismétel

utasítás(ok)utasítás(ok)

ivége feltétel eseténivége feltétel esetén

ciklusmagciklusmag

Page 63: Algoritmusok és készítésük

Hátultesztelő ciklus Hátultesztelő ciklus folyamatábrávalfolyamatábrával

feltétel

utasítás(ok)

i

h

Page 64: Algoritmusok és készítésük

Leírónyelv – iteráció (folyt.)Leírónyelv – iteráció (folyt.)

Példa (bekért számok négyzetgyökének Példa (bekért számok négyzetgyökének kiíratása, amíg nem negatív szám kerül kiíratása, amíg nem negatív szám kerül beírásra):beírásra):

algoritmus négyzetszámalgoritmus négyzetszámváltozó a:egészváltozó a:egészbe: abe: aismételismétel

ki: gyök(a)ki: gyök(a)be: abe: a

ivége a<0 eseténivége a<0 eseténalgoritmus végealgoritmus vége

Page 65: Algoritmusok és készítésük

A példa folyamatábrávalA példa folyamatábrával

START

a<0

be: a

ki: gyök(a)

be: a

STOP

Page 66: Algoritmusok és készítésük

Leírónyelv – iteráció (folyt.)Leírónyelv – iteráció (folyt.)

Példa magyarázata:Példa magyarázata:– Először bekérünk egy számot a felhasználótól, amit Először bekérünk egy számot a felhasználótól, amit

az az aa nevű változóban eltárolunk nevű változóban eltárolunk– Kiíratjuk a szám négyzetgyökét, majd bekérünk egy Kiíratjuk a szám négyzetgyökét, majd bekérünk egy

újabb számot, és az újabb számot, és az a a nevű változó értékét felülírjuk nevű változó értékét felülírjuk velevele

– Ha ez az újonnan bekért szám negatív, akkor Ha ez az újonnan bekért szám negatív, akkor kilépünk a ciklusból, ha nem negatív, akkor kilépünk a ciklusból, ha nem negatív, akkor visszaugrunk a ciklus elejére (kiíratjuk a visszaugrunk a ciklus elejére (kiíratjuk a négyzetgyököt, bekérünk egy új számot)négyzetgyököt, bekérünk egy új számot)

– VIGYÁZAT!VIGYÁZAT! Ebben az esetben, ha először negatív Ebben az esetben, ha először negatív számot írunk be, akkor hibát kapunk (gyökvonásnál), számot írunk be, akkor hibát kapunk (gyökvonásnál), mert egyszer mindenképpen lefut a ciklus!mert egyszer mindenképpen lefut a ciklus!