Objektum orientált programozás 1. A programok felépítése Nagy Szilvia
Változók definiálása, deklarálás A parancsok megkezdése előtt definiálni kell a használni kívánt változók és konstansok típusát:
Változók definiálása, deklarálás Változótípusok: bool – boolean, logikai változó: igaz, hamis char – karakter, 1 bájt, int – integer, egész short int int long int long long int flood – lebegőpontos szám
Változók definiálása, deklarálás Változótípusok: flood – lebegőpontos szám flood double long double signed, unsigned
Változók definiálása, deklarálás
Változók definiálása, deklarálás Tömb: változókból álló összetett adattípus
Változók definiálása, deklarálás Tömb: változókból álló összetett adattípus Értékadás lehetséges már a deklaráció során is: int tomb[6]={12, 3, 8, -1, 7, 8};
Kiíratás: printf függvény
Kiíratás: printf függvény A printf-nek több paramétere lehet: egy kötelező karakterlánc a % utáni kifejezések helyére változók értékei kerülnek: %c: karakter %s: karaktertömb, a 0 karakterig %d: tízes számrendszerbeli szám %u: előjel nélküli (unsigned) tízes számrendszerbeli szám %o: előjel nélküli egész, oktális alakú szám, pl: 0573
Kiíratás: printf függvény %x: előjel nélküli egész, hexadecimális alakú szám, kisbetűkkel, pl: 0xd4, ff35eac %X: előjel nélküli egész, hexadecimális alakú szám, nagybetűkkel, pl: 0X2F %f: lebegőpontos tizedesponttal, pl. 4.22 %e: lebegőpontos szám normálalakban, kis e elválasztóval, pl. 1.3425e13 %e: lebegőpontos szám normálalakban, kis e elválasztóval, pl. -2.45E4 %g: %e és %f közül a rövidebb %G: %E és %f közül a rövidebb
Kiíratás: printf függvény %p: pointer hexadecimális alakban, pl. FF23AA44 %m: a legutóbbi hiba típusa (errno) A %-jel után közvetlenül paraméterek is kerülhetnek, egy szám, vagy tizedesponttal elválasztott két szám: %4d: 4 számjegyű egész %.4f: 4 tizedesjegyű float %3.4f: max. 3 számjegy után 4 tizedesjegy – jel, ha balra igazítjuk az oszlopot
Kiíratás: printf függvény + jel, ha pozitív szám esetén +-szal kezdi a számot szóköz, ha sem +, sem – jel nincs a szám előtt, szóközt tesz # a szám tartalmazza a számrendszer-jelző karaktereit: oktális 0-t, hexadecimális 0x-et, vagy 0X-et, floatnál és normálaknál mindenképpen lesz tizedespont ‘ a számjegyeket csoportba rendezi 0 a számot nem szóközökkel, hanem 0-kkal tölti fel az üres helyein rendezéskor
Kiíratás: printf függvény Speciális karakterek is megjelenhetnek: \a: csengő \b: visszalépés (backspace) \f: lapdobás \n: új sor \r: kocsi vissza (return) \t: tabulátor, vízszintes \v: függőleges tabulátor \\: \-jel \’: aposztróf \”: idézőjel \?: kérdőjel
Kiíratás: printf függvény A printf használata:
Alapstruktúrák: elágazás if–else Ha egy logikai kifejezés igaz volta esetén szeretnénk egy parancsot végrehajtani, akkor használatos: if (feltétel){ parancsok1 } else{ parancsok2 Az else ág opcionális
Alapstruktúrák: elágazás if–else Ha egy logikai kifejezés igaz volta esetén szeretnénk egy parancsot végrehajtani, akkor használatos: Pl: ha korán kelünk, aranyat lelünk, egyébként sokat alszunk és elkésünk: if (korán kelünk) aranyat lelünk; else{ sokat alszunk; elkésünk; }
Alapstruktúrák: elágazás if–else szám1=x; szám2=y; nem igen szám1−szám2>0? kiír: a második szám a nagyobb (szám2−szám1) értékével. kiír: az első szám a nagyobb (szám1−szám2) értékével.
Alapstruktúrák: elágazás if–else szám1=x; szám2=y; szám1−szám2>0? nem igen kiír: a második szám a nagyobb (szám2−szám1) értékével. kiír: az első szám a nagyobb (szám1−szám2) értékével.
Alapstruktúrák: elágazás if–else
Alapstruktúrák: elágazás if–else Többszörösen elágaztathatunk else if ágakkal: if (feltétel1){ parancsok1;} else if (feltétel2){ parancsok2;} else if (feltétel3){ parancsok3;} … else {parancsok;}
Alapstruktúrák: elágazás if–else szám1=x; szám2=y; nem igen szám1−szám2>0? kiír: az első szám a nagyobb (szám1−szám2) értékével. nem igen szám1−szám2=0? kiír: a második szám a nagyobb (szám2−szám1) értékével. kiír: a két szám egyforma
Alapstruktúrák: elágazás if–else szám1=x; szám2=y; szám1−szám2>0? nem igen szám1−szám2=0? kiír: az első szám a nagyobb (szám1−szám2) értékével. nem igen kiír: a máso-dik szám a nagyobb (szám2− szám1) értékével. kiír: a két szám egy-forma
Alapstruktúrák: elágazás if–else Többszörösen elágaztathatunk else if ágakkal:
Alapstruktúrák: elágazás switch Eseteket választhatunk szét a switch - case parancsrendszerrel: switch(vizsgálandó változó){ case érték1: parancsok1; esetleg break/return; case érték2: parancsok2; esetleg break/return; … default: parancsok; }
Alapstruktúrák: elágazás switch
Alapstruktúrák: elágazás switch
Alapstruktúrák: elágazás switch Ha a break/return; parancs nem szerepel egy esetben, a következő ágra ugrik: switch(vizsgálandó változó){ case érték1: case érték2: parancsok12; break; … default: parancsok; } mind az 1-es, mind a 2-es értéknél a parancsok12-t fogja végrehajtani.
Alapstruktúrák: elágazás switch
Alapstruktúrák: elágazás switch
Alapstruktúrák: while ciklus Több lépésen keresztül hajtunk végre hasonló műveleteket: ciklusváltozó értékadása; while (feltétel){ parancsok; ciklusváltozó változtatása; }
Alapstruktúrák: while ciklus
Alapstruktúrák: while ciklus
Alapstruktúrák: for ciklus Több lépésen keresztül hajtunk végre hasonló műveleteket: for (ciklusváltozó értékadása; feltétel; ciklusváltozó változtatása){ parancsok; }
Alapstruktúrák: for ciklus
Alapstruktúrák: for ciklus
Példák egymásba ágyazott ciklusokra Egyszerű cserés rendezés: számok páronkénti rendezése: az első elemtől elindulva a külső ciklus biztosítja, hogy az aktuális helyre a jó elem kerüljön. Az i-edik lépésben az első i-1 elem rendezett lesz. a belső ciklus a tömb nem rendezett felén lépeget sorba, a belső ciklus és a külső ciklus eleme rossz sorrendben van (pl növekvő sorrendbe való rendezés esetén belső ciklus eleme < külső ciklus eleme) , cserél.
Példák egymásba ágyazott ciklusokra Eleje+main fv definiálás a programban Egyszerű cserés rendezés: eredeti tömb kiírása az indexek és az új tömb kiírása minden csere után
Példák egymásba ágyazott ciklusokra Egyszerű cserés rendezés:
Példák egymásba ágyazott ciklusokra Buborékos rendezés: számok páronkénti rendezése: az első elemtől elindulva a külső ciklus biztosítja, hogy az aktuális helyre a jó elem kerüljön. Az i-edik lépésben az első i-1 elem rendezett lesz. a belső ciklus a tömb nem rendezett felén lépeget hátulról előre a külső cikluselemig. Ha a belső cikluselem és a fölötte levő elem rossz sorrendben van, cserél.
Példák egymásba ágyazott ciklusokra Buborékos rendezés: Eleje+main fv definiálás a programban eredeti tömb kiírása az indexek és az új tömb kiírása minden csere után
Példák egymásba ágyazott ciklusokra Buborékos rendezés:
Példák egymásba ágyazott ciklusokra Minimum/maximumkiválasztásos rendezés: számok páronkénti rendezése: az első elemtől elindulva a külső ciklus biztosítja, hogy az aktuális helyre a jó elem kerüljön. Az i-edik lépésben az első i-1 elem rendezett lesz. a belső ciklus a tömb nem rendezett felében megkeresi a legnagyobb, ill. legkisebb elemet, és azt cseréli ki a külső ciklus aktuális elemével, ha szükséges. →sokkal kevesebb csere
Példák egymásba ágyazott ciklusokra Eleje+main fv definiálás a programban Extrémumkereséses rendezés: eredeti tömb kiírása csere a külső ciklusban az indexek és az új tömb kiírása minden csere után
Példák egymásba ágyazott ciklusokra Extrémumkereséses rendezés:
Példák egymásba ágyazott ciklusokra Beillesztéses rendezés: a már rendezett sorozatban keresi meg a következő elem helyét, kezdetben egy elemű a sorozat. a külső ciklus a 2.-tól végigmegy az elemeken a belső ciklus a külső cikluselem előtti szakaszon keresi meg a külső cikluselem pozícióját, odahelyezi az elemet, a többit lejjebb csúsztatja.
Példák egymásba ágyazott ciklusokra Eleje+main fv definiálás a programban Beillesztéses rendezés: eredeti tömb kiírása az indexek és az új tömb kiírása minden csere után
Példák egymásba ágyazott ciklusokra Beillesztéses rendezés:
Példák egymásba ágyazott ciklusokra Beillesztéses rendezés: