Algoritmusok és készítésük
description
Transcript of Algoritmusok és készítésük
![Page 1: Algoritmusok és készítésük](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/1.jpg)
Algoritmusok és készítésükAlgoritmusok és készítésük
![Page 2: Algoritmusok és készítésük](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/2.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/3.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/4.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/5.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/6.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/7.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/8.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/9.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/10.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/11.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/12.jpg)
Adatok, adattípusok, változókAdatok, adattípusok, változók
![Page 13: Algoritmusok és készítésük](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/13.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/14.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/15.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/16.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/17.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/18.jpg)
Ö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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/19.jpg)
Ö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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/20.jpg)
Ö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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/21.jpg)
É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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/22.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/23.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/24.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/25.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/26.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/27.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/28.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/29.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/30.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/31.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/32.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/33.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/34.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/35.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/36.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/37.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/38.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/39.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/40.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/41.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/42.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/43.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/44.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/45.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/46.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/47.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/48.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/49.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/50.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/51.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/52.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/53.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/54.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/55.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/56.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/57.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/58.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/59.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/60.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/61.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/62.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/63.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/64.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/65.jpg)
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](https://reader030.fdocument.pub/reader030/viewer/2022033105/568148f5550346895db613ec/html5/thumbnails/66.jpg)
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!