Bevezetés a programozásba I. Vezérlési szerkezetek Elágazás
Bevezetés a programozásba I. 2. gyakorlat Vezérlési szerkezetek, tömbök
Surányi Márton PPKE-ITK
2010.09.14.
Bevezetés a programozásba I. Vezérlési szerkezetek Elágazás
Elágazás
Eddigi programjaink egyszer¶ek voltak, egy beolvasás (BE:
a),
esetleg valami m¶velet (a
(KI:
a).
:= a + 1),
és egy kiíratás
Általában szükség van összetettebb programokra.
Ehhez az egyik eszköz az elágazás.
LOGIKAI feltétel szerint vagy végrehajt egy IGAZ, akkor végrehajtja; ha HAMIS, akkor átugorja (vagy egy másik részt
Az elágazás egy
utasítássorozatot, vagy nem. Tehát, ha a feltétel
hajt végre).
Bevezetés a programozásba I. Vezérlési szerkezetek 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!
Bevezetés a programozásba I. Vezérlési szerkezetek 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
Bevezetés a programozásba I. Vezérlési szerkezetek 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
Bevezetés a programozásba I. Vezérlési szerkezetek 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ó))
Bevezetés a programozásba I. Vezérlési szerkezetek 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 ...
Bevezetés a programozásba I. Vezérlési szerkezetek 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
Bevezetés a programozásba I. Vezérlési szerkezetek Ciklusok
Ciklus, példa (folyt.)
PROGRAM ciklus_pelda VÁLTOZÓK: e: EGÉSZ e := -1 ** kezd˝ oérték adása CIKLUS AMÍG e /= 0 BE: e KI: e ^ 0.5, SV CIKLUS_VÉGE PROGRAM_VÉGE
Bevezetés a programozásba I. Vezérlési szerkezetek 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.
Bevezetés a programozásba I. Vezérlési szerkezetek Számláló ciklus
Számláló ciklus (folyt.)
... VÁLTOZÓK: i:EGÉSZ ... i := 0 ** kezd˝ oérték CIKLUS AMÍG i < n ** ciklusmag (utasítások) ... i := i + 1 ** ciklusváltozó növelése CIKLUS VÉGE ...
Bevezetés a programozásba I. Vezérlési szerkezetek Számláló ciklus
Számláló ciklus, példa
Feladat: Írjuk ki az egész számokat 0-tól N-ig! Specikáció: BE: pozitív egész szám (n) KI: egész számok 0-tól n-ig
(N-et olvassuk be!)
Bevezetés a programozásba I. Vezérlési szerkezetek 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
Bevezetés a programozásba I. Vezérlési szerkezetek 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!
Bevezetés a programozásba I. Tömbök
Tömbök
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 Eddig egy-egy adattal dolgoztunk (pl. egy
dolgozni, de most az alaptípus bármilyen típus lehet lehet. Az indexelés (a
|tomb|:
SZÖVEGhez hasonlóan) nullával indul.
így kérdezhetjük le a tömb hosszát.
Bevezetés a programozásba I. 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
Bevezetés a programozásba I. 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
Bevezetés a programozásba I. 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!
Bevezetés a programozásba I. 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!
Bevezetés a programozásba I. 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)!