algoritmusok és készítésük
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 PresentationTRANSCRIPT
Algoritmusok és készítésükAlgoritmusok é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.
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
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ű
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)
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
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
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
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
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
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.
Adatok, adattípusok, változókAdatok, adattípusok, változó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
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)
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
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
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)
Ö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.
Ö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
Ö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
É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
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
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
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
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
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.
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.
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
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)
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""
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
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
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
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
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ó
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
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
Egyágú szelekció folyamatábrávalEgyágú szelekció folyamatábrával
feltétel
utasítás(ok)
ih
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
Kétágú szelekció folyamatábrávalKétágú szelekció folyamatábrával
feltétel
utasítás(ok)
ih
utasítás(ok)
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
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)
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)
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
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"
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
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"
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
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
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
Növekményes ciklus folyamatábrávalNövekményes ciklus folyamatábrával
cv:=ké
cv<=vé
cv:=cv+1
utasítás(ok)
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
A példa folyamatábrávalA példa folyamatábrával
START
i:=1
i<=10
i:=i+1
ki: i*iSTOP
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
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
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
Elöltesztelő ciklus folyamatábrávalElöltesztelő ciklus folyamatábrával
feltétel
utasítás(ok)
i
h
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
A példa folyamatábrávalA példa folyamatábrával
START
a>=0
be: a
ki: gyök(a)
be: a
STOP
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
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
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
Hátultesztelő ciklus Hátultesztelő ciklus folyamatábrávalfolyamatábrával
feltétel
utasítás(ok)
i
h
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
A példa folyamatábrávalA példa folyamatábrával
START
a<0
be: a
ki: gyök(a)
be: a
STOP
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!