Elágazás Bevezetés a programozásba I. 2. gyakorlat, tömbök Surányi Márton PPKE-ITK 2010.09.14.
Elágazás Elágazás Eddigi programjaink egyszer ek voltak, egy beolvasás (BE: a), esetleg valami m velet (a := a + 1), és egy kiíratás (KI: a). Általában szükség van összetettebb programokra. Ehhez az egyik eszköz az elágazás. Az elágazás egy LOGIKAI feltétel szerint vagy végrehajt egy utasítássorozatot, vagy nem. Tehát, ha a feltétel IGAZ, akkor végrehajtja; ha HAMIS, akkor átugorja (vagy egy másik részt hajt végre).
Elágazás Elágazás, alapeset... HA feltétel AKKOR utasítások KÜLÖNBEN utasítások HA_VÉGE... Tehát fontos, hogy a feltétel egy LOGIKAI kifejezés, tehát más típusú kifejezéssel nem fog m ködni!
Elágazás Elágazás, példa Feladat: Döntsd el egy egész számról, hogy nagyobb-e, mint 10! Ha nagyobb, írd ki, hogy "Nagyobb 10-nél", ha kisebb, vagy egyenl, akkor "Kisebb, vagy egyenl, mint 10." Specikáció: BE: egész szám KI: szöveg, hogy nagyobb/kisebb-egyenl mint 10
Elágazás Elágazás, példa (folyt.) PROGRAM elagazas1 VÁLTOZÓK: e: EGÉSZ BE: e HA e > 10 AKKOR KI: "Nagyobb, mint 10." KÜLÖNBEN KI: "Kisebb, vagy egyenlö, mint 10." HA_VÉGE PROGRAM_VÉGE
Elágazás Elágazás, feladatok Döntsd el egy (x,y) koordinátákkal adott pontról, hogy a koordinátarendszer melyik negyedébe esik! I.6) Döntsd el három számról, hogy lehetnek-e egy háromszög oldalhosszai! *) Döntsd el egy szövegr l, hogy van-e benne a,b,c bet! Ha van, akkor ezt írd ki szövegesen! Pl: "Van benne a,b bet." (tipp: szövegek összef zése (konkatenáció))
Ciklusok Ciklus Néha szükség van arra, hogy egy-egy programrészt többször lefuttassunk, erre egy eszköz a ciklus. A ciklus egy LOGIKAI feltétel szerint akár többször lefuttat egy kódot (de az is lehet, hogy egyszer sem).... CIKLUS AMÍG (ciklusfeltétel) utasítások (ciklusmag) CIKLUS_VÉGE...
Ciklusok Ciklus, példa Feladat: Olvassunk be a bemenetr l nulláig, közben írjuk ki a beolvasott számok négyzetét egyenként! Specikáció: BE: egész számok, a végén nulla KI: a számok négyzetgyökei
Ciklusok Ciklus, példa (folyt.) PROGRAM ciklus_pelda VÁLTOZÓK: e: EGÉSZ e := -1 ** kezdőérték adása CIKLUS AMÍG e /= 0 BE: e KI: e ^ 0.5, SV CIKLUS_VÉGE PROGRAM_VÉGE
Számláló ciklus Számláló ciklus A számláló ciklus egy megadott (szám) intervallumon halad végig, miközben a ciklusváltozó felveszi az azon belüli értékeket (nem biztos, hogy az összeset). Az intervallum lehet valós is, de nagyrészt egész intervallumot használnak.
Számláló ciklus Számláló ciklus (folyt.)... VÁLTOZÓK: i:egész... i := 0 ** kezdőérték CIKLUS AMÍG i < n ** ciklusmag (utasítások)... i := i + 1 ** ciklusváltozó növelése CIKLUS VÉGE...
Számláló ciklus Számláló ciklus, példa Feladat: Írjuk ki az egész számokat 0-tól N-ig! (N-et olvassuk be!) Specikáció: BE: pozitív egész szám (n) KI: egész számok 0-tól n-ig
Számláló ciklus PROGRAM szaml2 VÁLTOZÓK: i, n: EGÉSZ BE: n i := 0 CIKLUS AMÍG i < n KI: i, SV i := i + 1 CIKLUS_VÉGE PROGRAM_VÉGE
Számláló ciklus Feladatok II-6. Állíts el N darab véletlenszámot! II-4.) Sorold fel az els N négyzetszámot! II-1.a) Írj ki N darab *-ot! II-1.b) "Rajzolj" ki egy NxN-es négyzetet *-okból! II-1.c) "Rajzolj" ki egy N hosszú befogójú, egyenl szárú derékszög háromszöget *-okból!
Tömbök Tömbök Eddig egy-egy adattal dolgoztunk (pl. egy EGÉSZ, VALÓS, SZÖVEG (bár ez már karakterek sorozata volt), stb.) A SZÖVEGhez hasonlóan most is adatok sorozatával fogunk dolgozni, de most az alaptípus bármilyen típus lehet lehet. Az indexelés (a SZÖVEGhez hasonlóan) nullával indul. tomb : így kérdezhetjük le a tömb hosszát.
Tömbök Tömbök, példa Feladat: Készíts egy három elem EGÉSZ alaptípus feletti tömböt, és töltsd föl 0-100 közötti véletlen számokkal, majd írd ki a tömb tartalmát! PROGRAM tomb1 VÁLTOZÓK: tomb: EGÉSZ[3] tomb[0] := RND 100 tomb[1] := RND 100 tomb[2] := RND 100 KI: tomb PROGRAM_VÉGE
Tömbök Tömbök, második példa Módosítjuk a feladatot: Készíts egy harminc elem EGÉSZ alaptípus feletti tömböt, és töltsd föl 0-100 közötti véletlen számokkal, majd írd ki a tömb tartalmát! PROGRAM tomb1b VÁLTOZÓK: tomb: EGÉSZ[30], i: EGÉSZ i := 0 CIKLUS AMÍG i < tomb tomb[i] := RND 100 i := i + 1 CIKLUS_VÉGE KI: tomb PROGRAM_VÉGE
Tömbök Feladatok Feladat: Bemenetként adott bármilyen szöveg, a feladat pedig az lenne, hogy alakítsuk át ezt "mmm" nyelvre, ami annyit tesz, hogy a szóközök maradnak, de minden bet helyett írjunk m-et. (pl.: hello world -> mmmmm mmmmm) A következ feladatok véletlen (vagy a bemenetr l beolvasott) számokkal feltöltött tömbökkel foglalkoznak! V-2.) Számold ki egy tömb átlagát! *) Írd ki minden egyes elem eltérését az átlagtól!
Tömbök Házi feladatok (kötelez ) I-12.) Add meg egy másodfokú egyenlet megoldásait, oly módon, hogy szövegesen írd ki, hogy hány megoldás van (pl. "Egy megoldása van: x = 4." vagy "Két megoldása van: x1 = 1, x2 = 4") II-4.) Sorold fel az els N négyzetszámot! II-5.) Sorold fel a K-nál kisebb négyzetszámokat! ALMA-1.) Olvass be a bemenetr l szavakat a "VÉGE" szóig, és írd ki azokat, amik hosszabbak, mint 10 karakter!
Tömbök Házi feladatok (szorgalmi) III-1.) Számítsd ki egy szám faktoriálisát! II-1d.) Rajzolj ki egy N oldalhosszúságú, csúcsára állított rombuszt *-okból! II-7.) Add meg az N. Fibonacci-számot! V-3.) Számold ki egy tömb szórását (átlagtól való eltérések átlaga)!