2012. március 7. Paulik Áron Prog szakkör
C++ bevezető Általános célú Magas szintű Tehát lényegében bármire használható Magas szintű Könnyebben használható Platformfüggetlen: pl. Mac gépeken ugyanúgy használható, mint PC-n 1983 óta fejlesztik, megalkotója Bjarne Stroustrup Jelenleg a 4. legtöbbet használt nyelv
C++ bevezető Kódolás folyamata A leforduláshoz szükséges Szintaxis és Szemantika helyessége Megfelelő könyvtárak linkelése Fordításkor létrejön egy .exe fájl
Hello World! #include <iostream> Belinkeljük az iostream könyvtárat a fejlécének megnevezésével, amiben a bemenet-kimenet vezérlő utasítások találhatók, pl. a „cout” # szimbólum: az előfordítást jelzi i: input o: output stream: adatfolyam
Hello World! using namespace std; namespace: névtér, egy olyan halmaz, amiben egyedi nevek találhatóak std: a standard névtér Ha a fájl elején nem emeljük be (using), használhatjuk egyenként is: std::cout <<
Hello World! int main() { return 0; } Main: főfüggvény, a projekt fordításakor a vezérlés ezt értelmezi először, ez a belépési pont. Minden C++ programban kötelező! Return: visszatérés, jelen esetben 0-val. Ez jelzi az oprendszernek, hogy nem történt hiba.
Hello World! int main() { return 0; } függvény deklarációja int: visszatérési típus megjelölése main: függvény neve (): paraméterlista, jelenleg üres {…} programkód-blokk, a függvény törzse return x: a tényleges visszatérési érték
Hello World! cout << "Hello world!" << endl; cout: konzolra írás A kiíratás elemeit „<<” szimbólummal választjuk el endl: sortörés
C++ bevezető Szemantika Nevek nem kezdődhetnek számmal Case sensitive harmonika != Harmonika Kommentelés: // egy sor kikommentelése /// egy sor kikommentelése és kiemelése /* több sor kikommentelése */
Függvények A függvény a program egy saját működéssel rendelkező része (alprogramja), amely értéket ad vissza az őt meghívó utasításnak. A visszaadott érték a visszatérési érték, amelyet a return utasítással adunk meg, a függvény működése mindig leáll ennél a pontnál, ezért amit utána írunk, az nem kerül végrehajtásra.
Függvények Int main() { cout<<„ezt kiírja”; return 0; cout<<„ezt nem írja ki”; }
Vezérlési szerkezetek – elágazás A függvények többféle visszatérési érték közül választhatnak int main() { … if (…) { // elágazás, ha történik valami hiba return 1; // adjunk vissza 1-es kódot } else { // különben return 0; // adjunk vissza 0-s kódot }
Vezérlési szerkezetek – elágazás if (<logikai kifejezés>) { utasítás1; utasítás2; } VAGY if (<logikai kifejezés>) utasítás;
Vezérlési szerkezetek – while ciklus while (<feltétel>) { <utasítások> } do
Vezérlési szerkezetek – for ciklus for (<számláló kezdőérték>; <számláló feltétele>; <számláló inkrementálás>) { <utasítások> } Tehát pl: for (int i=0; i<10; i++) cout << i << endl;
Operátorok Értékadás összeadás (+) kivonás (–) szorzás (*) osztás (/), b = 3 összeadás (+) kivonás (–) szorzás (*) osztás (/), maradékképzés (modulo) (%) inkrementálás (++), dekrementálás (--)
Operátorok Logikai operátorok egyenlőségvizsgálat (==) különbségvizsgálat (!=) kisebb (<) nagyobb (>) kisebb, vagy egyenlő (<=) nagyobb, vagy egyenlő (>=) tagadás (!) és (&&) vagy (||)
Könnyítő megoldások „a = a + b” ugyanaz, mint „a += b” Ugyanígy használható a -=, *=, /=, %=
Indexelés Tömb, string indexelése: T[2] S[3] Mint Plangban
Változók Bárhol deklarálhatók, nem csak a program elején! Ha függvényen kívül hozzuk létre: globális változó (nem szerencsés, hibákat okozhat) int x; int main() { … }
Változók Programblokkban, függvényben deklarálva: lokális változó A blokk végére érve megszűnnek létezni változó deklaráció: <típus> <változónév>; lehetőségünk van kezdőértéket is adni a változónak: <típus> <változónév> = <kezdőérték>;
Változók Tehát: double x; char c = ’é’; string f,g,h; bool log = false; int a[10];
Beolvasás cin kulcsszóval: int a; std::cin >> a; // a bekérése std::cout << „A értéke: ” << a; // kiíratása figyelem: cin >> és cout <<
Programok fordítása Projekt a Code::Blocksban Forrásfájlok kiterjesztése: .cpp Fordítási üzenetek: Error: a kód nem fordítható, javítani kell Warning: fordítható, de lehetséges, hogy futás közben hiba lesz
Feladatok Írjuk ki egy egész szám rákövetkezőjét! kell egy egész típusú változó, legyen a neve ‘a’ az értékét inkrementálással megnöveljük használjuk a konzolról való bekérést és kiíratást, tehát szükségünk van az iostream-re Specifikáció: bemenet: egész szám (a) kimenet: a + 1
Feladatok Feladat: olvassunk be egy egész és egy valós számot, és írjuk ki a hányadosukat. Egy egész és egy valós számot olvasunk be egymás után, az első számot osztjuk a másodikkal, az eredményt egy harmadik valós számba tesszük Specifikáció: bemenet: egy egész szám (a) és egy valós szám (b) kimenet: a két szám hányadosa a harmadik (c) számban
Feladatok Feladat: döntsük el egy egész számról, hogy páros-e. a bekérés előtt írassuk ki a képernyőre, hogy mit kérünk be elágazás segítségével szövegesen adjuk meg a választ párosság eldöntése: 2-vel való osztás maradéka Specifikáció: bemenet: egész szám (szam) kimenet: „A szám páros”, ha szam páros, „A szám páratlan”, ha szam nem páros
Feladatok Feladat: írjunk ki N darab * jelet a képernyőre. N értékét bekérjük a felhasználótól egy számláló ciklusban minden lépésben kiírunk egy csillagot, legyen a ciklusváltozó i Specifikáció: bemenet: egész szám (n) kimenet: n db csillag
További feladatok Feladatgyűjtemény C++ adatbázis: cppreference.org Kifejezések 4-7 Vegyes 3, 4 C++ adatbázis: cppreference.org A Google a barátod