210 likes | 569 Views
Algoritmusok. Algoritmus : Folyamatok elemi részekre bontása. Utasítások véges számú és pontos leírása Utasítások meghatározott sorrendben legyenek. Algoritmus leíró eszközök:. Mondattal (szöveges) Mondatszerűen (vázlat jellegű) Pszeudokód Grafikus (rajzos, képek)
E N D
Algoritmus: • Folyamatok elemi részekre bontása. • Utasítások véges számú és pontos leírása • Utasítások meghatározott sorrendben legyenek
Algoritmus leíró eszközök: • Mondattal (szöveges) • Mondatszerűen (vázlat jellegű) Pszeudokód Grafikus (rajzos, képek) • Folyamatábrával (különböző geometriai idomok használata) • StruktogramAz egész algoritmus egy téglalapban helyezkedik el, ezen belül az utasítások és vezérlőszerkezetek szintén téglalapokat foglalnak el. Az ábrát felülről lefelé haladva kell olvasni
Pl. Szöveges feladat matematika órán • Adatok felírása, kigyűjtése • Képlet felírása • Behelyettesítés a képletbe • Elvégezni a műveleteket • Szöveges válasz írása, mértékegység jelölése
Folyamatábra (flowchart): Alapelemeit Neumann dolgozta ki. Az egyes szerkezeti elemek között nyilakkal jelöljük a végrehajtási sorrendet. Folyamatábra alakzatok: • Téglalap: Valamilyen értékadó utasítás, vagy eljárás. • Rombusz, vagy lapos hatszög:Egy, vagy többágú kiválasztás. • Paralelogramma: Adatáramlás. • Kör: Vezérlő utasítások.
Folyamatábra részei Program kezdete Program vége Műveletvégzés Eldöntés, elágazás Adat bemenet és kimenet Szekvencia (műveletek egymás után)
Struktogramm: Az egyes szerkezeti elemeket különböző téglalapba foglalható ábrákkal jelöljük. A szerkezetek egymásba ágyazhatók, de vonalaik nem keresztezhetik egymást.
Az algoritmus utasítások leíró eszközei • Szekvencia: sorban egymás után való végrehajtás. • Elágazás (szelekció): elágazik, de továbbra is előre megy. • Ciklus (iteráció): elágazik, és ismétli a ciklusmagban megadott tevékenységet.
Szekvencia: sorban egymás után való végrehajtás Cél Rajt Utasítás 2 Utasítás n Utasítás 1
Elágazás (szelekció): elágazik, de továbbra is előre megy. A feltételtől függően (igaz, hamis) folytatódik tovább az algoritmus: ha igaz a feltétel akkor végrehajtja az IGAZ-ágat, ha nem, akkor ha nincs KÜLÖNBEN-ág, akkor a következő utasításra lép, ha van KÜLÖNBEN ág, akkor a HAMIS-ágat hajtja végre. Az egyik ág végrehajtása után a program végrehajtása az elágazás utáni utasításon folytatódik. Elágazás ha nincs KÜLÖNBEN-ág: Feltétel HAMIS Utasítás 1 Utasítás 2 Utasítás (ha) IGAZ
Elágazás ha van KÜLÖNBEN-ág: HAMIS Utasítás (különben) Feltétel Utasítás 1 Utasítás 2 Utasítás (ha) IGAZ HA feltétel AKKORutasítás 1 …utasítás 1n[KÜLÖNBENutasítás 2… utasítás 2n]ELÁGAZÁS VÉGE
Kétágú döntés CLS INPUT „Írd be a korodat:", kor IF kor > 18 THEN PRINT "Már nagykorú vagy!" ELSE PRINT "Még fiatalkorú vagy!" END IF igaz hamis Feltétel A tevékenység B tevékenység C tevékenység
Több érték közüli választás CLS INPUT "add meg az osztályzatod:", osztalyzat CLS SELECT CASE osztalyzat CASE 1 PRINT „megbuktál!!" CASE 2 PRINT "elégséges" CASE 3 PRINT "közepes" CASE 4 PRINT "jó" CASE 5 PRINT "jeles" END SELECT Feltétel 1 A tevékenység Feltétel 2 B tevékenység Feltétel 3 C tevékenység D tevékenység
Ciklus (iteráció): elágazik, és ismétli a ciklusmagban megadott tevékenységet. Elöltesztelő: Feltétel HAMIS Utasítás 1 Utasítás 2 Ciklusmag IGAZ Ha a feltétel igaz akkor végrehajtódik a ciklusmag és visszalép a feltételhez az algoritmus, ha nem, akkor kilép a ciklusból és a következő utasításra lép. (A ciklusmagnak kell olyan tevékenységet tartalmaznia, mely hatással van a feltételre, különben „végtelen” ciklussá válhatna.) CIKLUS AMÍG feltétel ciklusmagCIKLUS VÉGE DO WHILE feltételciklusmagLOOP
Elöl tesztelős ciklus REM "addig kér számokat, míg a számok összege nem lesz nagyobb 1000-nél" CLS szam = 0 osszeg = 0 DO WHILE osszeg < 1000 CLS INPUT "Adj meg egy számot:", szam osszeg = osszeg + szam LOOP PRINT "A számok összege:", osszeg END
Ciklus (iteráció): elágazik, és ismétli a ciklusmagban megadott tevékenységet. Hátultesztelő: IGAZ Feltétel Utasítás 1 Ciklusmag Utasítás 2 HAMIS Végrehajtódik a ciklusmag és ha hamis a kilépési feltétel akkor visszalép a feltételhez az algoritmus, ha igaz, akkor kilép a ciklusból és a következő utasításra lép. Legalább egyszer végrehajtódik a ciklusmag. A ciklusmagnak kell olyan tevékenységet tartalmaznia, mely hatással van a feltételre, különben „végtelen” ciklussá válhat. CIKLUS ciklusmagAMÍG feltétel CIKLUS VÉGE DO ciklusmagLOOP UNTILfeltétel
Hátul tesztelős ciklus REM "addig kér számokat, míg 0-át nem írunk, kiszámítja a beírt szamok átlagát" CLS szam = 0 darabszam = 0 osszeg = 0 DO INPUT "Add meg a következő számot:", szam darabszam = darabszam + 1 osszeg = osszeg + szam LOOP UNTIL szam = 0 darabszam = darabszam - 1 atlag = osszeg / darabszam PRINT "A beírt számok átlaga:", atlag
Ciklus (iteráció): elágazik, és ismétli a ciklusmagban megadott tevékenységet. Számlálásos: CIKLUS cv:=ké-TŐL vé-IG [lk-ZEL] ciklusmagCIKLUS VÉGE FOR cv=ké TO vé [STEP lk]ciklusmagNEXT cv IGAZ Cv=vé? Cv:=ké, vé, lk Ciklusmag Utasítás HAMIS Az elöltesztelős ciklus egy speciális esete a számlálásos ciklus, ahol a belépési feltétel a végrehajtási darabszámtól függ. A változó felveszi a kezdeti értéket, majd ellenőrzi, hogy túllépte e a végértéket, ha nem akkor végrehajtja a ciklusmagot. A ciklus vége növeli lépésköznyivel a ciklusváltozó értékét. Ha nem érte el a végértéket, akkor újra végrehajtódik a ciklusmag, ha igen akkor kilép a ciklusból és a következő utasításra lép. A lépésköz lehet negatív is. rövidítések: cv=ciklus változó, ké=kezdeti érték, vé=végérték, lk=lépésköz.
Számlálós (növekményes) ciklus Kiíratjuk a számokat 1-100-ig 10-es lépésközzel (tízesével) CLS FOR i = 1 TO 100 STEP 10 PRINT i NEXT i Egymásba ágyazott ciklus Teleíratjuk a képernyő első 20 sorát # karakterekkel! CLS FOR i = 1 TO 20 LOCATE i, 1 FOR j = 1 TO 80 PRINT ’’# ”; NEXT j NEXT i 5-15 sorok, 20-60 oszlopok által határolt téglalapot kitöltjük # karakterrel CLS FOR i = 5 TO 15 FOR j = 20 TO 60 LOCATE i, j PRINT "#" NEXT j NEXT i