Ugrás a tartalomhoz Lépj a menübe

2.2 Programozás elemei

Az értékadás művelete egyszerű és összetett típusú változók esetén.

 

Értékadás

Egy változónak értékadási utasítással (művelettel, tevékenységgel) adhatunk értéket. Az értékadási utasítás (=) baloldalán egy változó szerepel, jobboldalán pedig egy érték, amely lehet akár egyetlen változó aktuális értéke, akár egy változókat is tartalmazó kifejezés, például:

legTanuló = aktTanuló

aktTanuló.név = "Egri Kata"

aktTanuló.szülDátum = (1976,02,01)

aktTanuló.szülDátum.év = aktEv-25

A változó olyan memóriaterület, melynek változhat az értéke. Minden változónak van egy jól meghatározott típusa. A változó csak típusának megfelelően kezelhető, és abba csak olyan értékek tehetők, melyek beletartoznak az adott típus értékkészletébe. Az algoritmus változóit deklarálni kell: meg kell adni azok neveit és típusait. Egy változónak értékadási utasítással adhatunk értéket.

 

A vezérlési szerkezetek fogalma, csoportosítása, szerepük és működésük.

 

Vezérlési szerkezet

Vezérlési szerkezetnek nevezünk egy olyan programnyelvi konstrukciót, ami az összetevői végrehajtási sorrendjét adja meg. A vezérlési szerkezetek elemei elemi utasítások, vagy további szerkezetek lehetnek, kialakítva a programrész vezérlési felépítését.

Alapvető vezérlési szerkezeteink a szekvencia, az elágazás és a ciklus.

Szekvencia

Szekvenciának nevezzük egyes utasítások (vagy blokkkok) egymás után történő végrehajtását.

Szelekciós utasítások: if, else, switch

  • If utasítás :Segítségével valamely utasítások végrehajtását valamely feltétel teljesülése esetén végezzük el. Az if utasítás segítségével valamely tevékenység (utasítás) végrehajtását egy kifejezés (feltétel) értékétől tehetjük függővé. Az if alábbi formájában az utasítás csak akkor hajtódik végre, ha a kifejezés értéke nem nulla (igaz).
  • Az if-else szerkezet használatával arra az esetre is megadhatunk egy tevékenységet, amikor a kifejezés (feltétel) értéke zérus (hamis).
  • else if: Ez az szerkezet egymásba ágyazott if utasítások egy gyakran használt formája, amikor az else ágakban szerepel az újabb if utasítás.

Esetkiválasztásos szelekciós vezérlés

A switch utasítás többirányú programelágaztatást tesz lehetővé olyan esetekben, amikor egy egész kifejezés értékét több konstans értékkel kell összehasonlítanuk. Az utasítás álatlános alakja:

switch ( kifejezés ) {

 case címke : muveletek; break;

 case címke : muveletek; break;

 ...

 case címke : muveletek; break;

 default : muveletek; break;

}

A switch utasítás először kiértékeli a kifejezést, majd átadja a vezértlést arra a case címkére (esetre), amelyben a címke értéke megegyezik a kiértékelt kifejezés értékével - a futás ettől a ponttól folytatódik. Amennyiben egyik case sem egyezik meg a kifejezés értékével, a program futása a default címkével megjelölt utasítással folytatódik. Ha nem használunk default címkét, akkor a vezérlés a switch utasítás blokkját záró } utáni utasításra adódik. A break utasítás kiugrasztja a switchből a vezérlést, ha kihagyjuk, az a következő címkére kerül. Ez használható pl. olyankor, ha több címkéhez ugyanazokat a műveleteket kell végrehajtani.

Előltesztelős ciklus

A while ciklus mindaddig ismétli a hozzá tartozó utasítást (a ciklus törzsét), amíg a vizsgált kifejezés (vezérlőfeltétel) értéke igaz (nem nulla). A vizsgálat mindig megelőzi az utasítás végrehajtását. Általános alakja:

while (kifejezés){

 utasítás

}

A switch-nél látott break utasítás ciklusokból való "kitörésre" is alkalmazható. Így írhatunk olyan (esetleg egyébként végtelen) ciklust, amelyben egy, vagy több helyen egy if segítségével megvizsgálunk egy feltételt, majd az alapján (esetleg néhány művelet végrehajtása után) kilépünk a ciklusból. Ezt hívjuk hurok ismétléses vezérlésnek.

Hátultesztelős ciklus

A do-while utasításban a ciklus törzsét képező utasítás végrehajtása után kerül sor a tesztelésre. Így a ciklus törzse legalább egyszer mindig végrehajtódik.

Általános alakja:

do {

 utasítás

} while (kifejezés);

A do-while ciklus futása során mindig először végrehajtódik az utasítás és ezt követően értékelődik ki a kifejezés. Amennyiben a kifejezés értéke igaz (nem nulla), akkor új iteráció kezdődik (azaz újra lefut a ciklus), míg hamis (0) érték esetén a ciklus befejezi működését.

Számlálásos ismétléses vezérlés

Más nevén for ciklus. A for utasítást általában akkor használjuk, ha a ciklusmagban megadott utasítást adott számszor kívánjuk végrehajtani. Általános alakja:

for (kezdoérték_kifejezés ; feltétel_kifejezés ; lépteto_kifejezés){

utasítás

}

A ciklusban van egy változó (a ciklusváltozó, vagy számláló), amit egy kezdőértékből kiindulva, folyamatosan növelünk vagy csökkentünk egy végértékig, és minden ilyen körben végrehajtunk néhány műveletet. A műveletekben a ciklusváltozó aktuális értéke is felhasználható. A kezdőérték_kifejezés-sel állítjuk be a ciklusváltozó kezdőértékét. A léptető_kifejezés-sel növeljük vagy csökkentjük a ciklusváltozó értékét tetszés szerint. A feltétel_kifejezés-t pedig minden egyes iterációban ellenőrizzük. A ciklus addig fut amíg ez a feltétel teljesül. Mivel a feltételünk akkor nem fog már teljesülni, amikor a ciklusváltozó elér egy bizonyos értéket, ezért jól befolyásolható, hogy a ciklus hányszor fusson le.

 

Az alprogramok szerepe és megvalósítási lehetőségei.

A paraméterek fajtái, jellemzői és a paraméterátadás folyamata.

 

Alprogramok

Alprogram: olyan nyelvi szerkezet, amelynek segítségével új nevet rendelhetünk egy kódrészlethez, hogy azt később, amikor csak akarjuk, egyszerűen végrehajthassuk.

A kódrészlet végrehajtásának kezdeményezése, azaz az alprogram meghívása a kódrészlethez rendelt név (és esetleg paraméterek) megadásával történik.

Előnyei:

  • Karbantarthatóság, újrafelhasználhatóság
  • Olvashatóság: Azonosító - kifejezi a funkcionalitást
  • Felhasznált változók láthatóságának csökkenése
  • Könyvtárak

Függvények, éljárások

  • A függvények: a paraméterekből kiszámolnak valamilyen információt (pl. sin)
  • Az eljárások: a paramétereket átalakítják, nem visszaadják a megváltoztatott információt; (pl. rendezés)
  • A C/C++ nem különbözteti meg a függvényeket és az eljárásokat, minden alprogram ,,függvény”.
  • Ha nem akarunk semmilyen információt visszaadni: void visszatérési típust adhatunk meg.
  • A visszatérési értéket nem kötelező eltárolni a hívó oldalon. I Mellékhatás, eredmény

Paraméterátadás

double sin( double x )

{

// x: formális paraméter

// ...

}

double d = 1.43;

double sd = sin( d ); // d: aktuális paraméter

  • érték-szerint
    • A függvény meghívásakor létrejön egy új változó i névvel, amely az alprogram lokális változója.
    • Létrejöttekor az i-be másolódik az aktuális paraméter értéke (copy konstruktor)
    • A függvény végrehajtása közben az aktuális paraméterre nincs hatással, annak egy másolatával dolgozunk.
    • Költségek: létrehozás, másolás, felszabadítás

void f( int i )

{

// ...

}

int x = 10;

f( x );     // OK

f( x + 2 ); // OK

f( 5 );     // OK

  • referencia-szerint
    • Az alprogram lokális változója (i) egy álneve (alias-a) a meghíváskor átadott paraméternek (x).
    • Nincs másolás: az eredeti változóval dolgozik az alprogram
    • A függvényhívás során, amikor a függvényben i megváltozik, akkor a külső x is megváltozik (hiszen a kettő ugyanaz)
    • A függvényhívás után x értéke megváltozhat a függvényhívás előtti állapothoz képest.
    • Információ közvetítése a hívó irányába
    • Nincs létrehozási, másolási, felszabadítási költség

void f( int& i )

{

// ...

}

int x = 10;

f( x );     // OK

f( x + 2 ); // ford.hiba

f( 5 );     // ford.hiba

  • konstans referencia-szerint
    • Az alprogram lokális változója (i) egy olyan álneve (alias-a) a meghíváskor átadott paraméternek (x), amelyen keresztül név változik meg az értéke.
    • Nincs másolás: az eredeti változóval dolgozik az alprogram
    • A függvényhívás után x értéke ugyanaz, mint a függvényhívás előtti.
    • Nincs létrehozási, másolási, felszabadítási költség

void f( const int& i )

{

// ...

}

int x = 10;

f( x );     // OK

f( x + 2 ); // OK

f( 5 );     // OK