Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek Be- és kimenet Adatstruktúrák Függvények Main függvény.

Hasonló előadás


Az előadások a következő témára: "C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek Be- és kimenet Adatstruktúrák Függvények Main függvény."— Előadás másolata:

1 C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek Be- és kimenet Adatstruktúrák Függvények Main függvény

2 Alapvető típusok Az adatoknak típusuk van, így védekezik a rendszer például az ellen a hiba ellen, hogy a programozó számot próbáljon összeadni egy szöveggel Ha két típus egymásba alakítható (például egész és valós szám csonkolással), akkor explicit vagy implicit konverzió lehetséges A következő típusok többsége beépített típusa a C++ nyelvnek

3 Változók deklarálása Minden általunk használt változót az első használata előtt deklarálnunk kell ( és ezt csak egyszer tehetjük meg) Deklaráció: „típusnév változónév;” Speciálisan a deklarációban adhatunk neki egy kezdőértéket is, de ez csakis konstans lehet „int i=4;”

4 Egész számok ( int ) Egész számok 4 bájton ábrázolva Pl: „int x=56;” Műveletek: +,-,* / - eredmény mindig egész % - maradék képzése (mod) Relációk: ==, !=, =

5 Valós számok ( float ) Pl. „float f=13.766;” Műveletek: +,-,*,/ Relációk: A szokásosak...

6 Logikai értékek ( bool ) Változók és konstansok, amik igazak és hamisak lehetnek. Pl. „bool L=true; L=false;” Műveletek: ==,!= ! – tagadás pl. „!L” && - és pl. „L1&&L2” || - vagy pl. „L1||L2”

7 Karakterek ( char ) ASCII-es karakterek, konvertálható integerré ( lehet az értéke) Pl. „char c=‘A’;” Relációk: ==, !=

8 Karakterláncok ( string ) Régen (C-ben) „char*”-gal kezelték. Pl: „string str=‘’alma‘’;” Használatához valamelyik őt használó fejállományt is includolni kell (pl. iostream) Műveletek: str.size() – az str-ben tárolt szöveg hossza str1+str2 – a két string összefűzése str[i] – a zárójelek közé írva egy i egészet, a szöveg i-edik karakterét adja vissza

9 str.c_str() – az str-nek megfelelő char* értéket adja vissza str.substr(i,j) – str i-edik poziciójától j db karakter alkotta szöveg Stringek2

10 Elemi utasítások A C++-ban minden utasítást „;” zár Értékadás: „változó = érték;” Pl. „x = 0; c = ‘A’;” Spec: „x = y = 5;” „x=5; y=5;” „x++;”, „++x;”, „x--;”, „--x;” (növelés, illetve csökkentés eggyel) A különbség a visszatérési értékükben van...

11 Elemi utasítások 2 Program leállítása: „exit(szám);”, ahol a szám egy nemnegatív egész és 0, ha nem volt hiba >0, ha volt hiba és ekkor a szám a hiba kódja Megjegyzések: C++ stílusú: „// megjegyzés” -> az adott sor végéig tart C stílusú: „/*megjegyzés...Akár több sor */”

12 Logikai feltételek Bármilyen egyszerű vagy összetett kifejezés, ami bool-t ad vissza bool típusú változók bool visszatérési értékű függvények a relációk segítségével felépített kifejezések Pl. (4==2*2)&&(!L||ps(3)) Ahol: bool ps(int i) {return i%2==0;}

13 Vezérlési szerkezetek Szekvencia: parancsok egymásutáni végrehajtása... Pl. „ x = 5; y = x/2; x = y+1;”

14 Elágazás Közönséges elágazás: if(feltétel) { ág1 } else { ág2 } Egyszerűbb eset (ha az ágak csak egy utasításból állnak): if(feltétel) ut1; else ut2;

15 Többágú elágazás Több feltétel, a legelső utasításait hajtjuk végre, ami teljesül: if(feltétel1) { ág1 } else if(feltétel2) { ág2 }... else { utolsó_ág }

16 Adott változó értéke szerinti elágazás Ha egy adott változó értékei szerint akarunk elágaztatni a következőt is használhatjuk: switch(v) { case konstans1: utasítások... break; case konstans2: utasítások... break;... default: utasítások... break; }

17 Ciklus A ciklus egy speciális szerkezet, ami egy adott utasítás sorozatot addig hajt végre, amíg egy adott feltétel teljesül Az utasítás sorozatot ilyenkor a ciklus magjának nevezzük

18 While-ciklus Ez egy előltesztelős ciklus, azaz minden lépésben ellenőrzi a feltételt, ha az igaz, akkor végrehajtja a ciklusmagot, ha pedig hamis, akkor a ciklus befejeződik és a ciklus utáni utasítások következnek. while(feltétel) { utasítások sorozata... }

19 For-ciklus A következő ciklus egyszerűbben is felírható a for utasítás segítségével: utasítás1; while(feltétel) { mag.. utasítás2; } for(utasítás1; feltétel; utasítás2) { mag }

20 Egyszerű példa a for használatára Írjuk ki az egész számokat 0-tól 100-ig! for(int i=0; i<101; i++) { cout << i << endl; }

21 Do-while ciklus Ez a hátultesztelős ciklus do{ mag... }while(feltétel);

22 A do-while ciklus egyik hasznos alkalmazása char c; do{ //programunk... cout << ” Futtassuk újra?(I/N) ”; cin >> c; }while(c!=‘n’&&c!=‘N’);

23 Be- és kimenetkezelés Szabványos be- és kimenet kezelése (billentyűzet, illetve képernyő): #include //ez kell using namespace std; //a fájl elejére cout << kifejezés1 << kif2 << endl; //kiírás+soremelés cin >> változó1 >> változó2; //beolvasás cout << ”\n”; //a \n a soremelésnek megfelelő karakter

24 Bemenet-Kimenet példa #include using namespace std; void main() { int n; cout << ”Kérek egy egész számot! ”; cin >> n; cout << ”A(z) ” << n << ” szám négyzete: ” << n*n << endl; }

25 Karakterláncok beolvasása A << operátorral például az üres string nem olvasható be Másik módszer erre: getline(cin,str); Megjegyzés: a puffert esetleg üríteni kell...

26 Egyszerű adatstruktúrák Néhány egyszerűbb adatstruktúra: tömb: fix dimenziójú vektor, az indextartomány: 0,1,...,méret-1 struct: különböző adatmezőkből álló rekordtípus

27 Tömbök használata Tömb típusú változó deklarálása: típus változónév[méret]; Tömb adott indexű elemének elérése: változónév[index] Ezzel a módszerrel csak konstans méretű tömbök hozhatóak létre (un. Statikus foglalású tömbök)

28 Példa a tömbök használatára 8 dimenziós vektor hosszának kiszámítása: //így is lehet értéket adni, nem muszáj indexenként //de csak és kizárólag deklaráláskor: float v[]={3,6,7,1,0,0,9,12}; float f=0; for(int i=0; i<8; i++) f=f+(v[i]*v[i]); f=sqrt(f); //#include kell hozzá

29 Struct A struct kulcsszó segítségével létrehozhatunk egy új típust (mielőtt ilyen típusú változót létrehoznánk, a típust is meg kell adni) Módja: struct Típusnév { típus1 mezőnév1 //mező megadása... }; Változó: Típusnév változónév; Mezők elérése: változónév.mezőnév

30 Példa a struct használatára Hallgató típus megadása: struct Hallgato{ int id; char eha[7]; string vnev; string knev; }; Hallgato h; h.id=123; h.eha=”aaabbbb”; h.vnev=”Kiss”; h.knev=”Pisti”; cout << h.vnev << ” ” << h.knev << endl;

31 Függvényhívások Függvény deklarálása és definiálása: A deklarációnak meg kell előznie az első felhasználást „void myFuggveny();” Definiálás: „void myFuggveny() { //utasítások }” Deklaráció és definiálás együtt csak ha a deklaráció megelőzi a definiálást A definiálás önmagában is deklaráció értékű.

32 Függvény visszatérési értéke A függvénynek lehet visszatérési értéke Ennek típusa van és ezt is fel kell tüntetni a deklaráláskor/definiáláskor a neve előtt void = nincs visszatérési érték A return utasítással lehet visszatérési értéket adni, ekkor a függvény utasításainak végrehajtása meg is áll „int Nulla() { return 0; }”

33 Függvény paraméterei Definiáláskor/deklaráláskor fel kell sorolni a függvény paramétereit, ha vannak, a név után zárójelek között. A paramétereknek nevet és típust kell adni és ekkor a függvény törzsében ilyen néven használhatjuk őket. „int Osszeg(int a, int b) { return a+b; }”

34 Paraméterfajták A paraméterek lehetnek érték- és címszerintiek Értékszerinti paraméterátadás esetén létrejön egy új változó és ez megkapja kezdőértékül a bemenő értéket void f(int a,....); Címszerinti átadás esetén az aktuális paraméternek balértéknek kell lennie (változó) és ekkor ennek a címe adódik át (következmény: a változó értékét megváltoztathatja a függvény void f(int& a,....);

35 Függvény meghívása A függvény a nevével és az aktuális paraméterek megadásával hívható meg Pl. int i; i=Osszeg(Nulla(),1); myFuggveny();

36 Megjegyzések void függvény esetében a „return;” utasítással is vissza lehet térni A függvényeket a nevük és a paramétereik száma+típusuk sorrendje (nevük és a visszatérési érték típusa nem számít) Pl: int f(int a, int b); int f(int c);

37 Megjegyzés2 Tömbök mint paraméterek: void fv(tipus t[][20]){... t[i][j]... } void fv(tipus** &t) {... t[i][j]... }

38 Egy egyszerű program szerkezete #include using namespace std; //fv deklarációk int main(int argc, char* argv[]) { //program return 0; } //fv definíciók

39 Main függvény Kitüntetett függvény, ő indul el a program futtatásakor. Csak egy lehet belőle... Visszatérési értéke: void/int Paraméterek: nincsenek vagy az alábbi kettő

40 Programparaméterek argc -> a parancssori paraméterek száma argv -> a parancssori paraméterek tömbje, elemei char* típusúak Az első paraméter mindig a futtatási név pl. „C:\Dev-Cpp\bevinfo1\cpp1.exe”

41 Ami még hátra van... Szöveges fájlok használata Programozási tételek implementálása

42 Egyéb DevC++ ingyenes fordító (itt az elsőt kell letölteni, a többi a fordító forráskódja...) A letöltött fájl egy setup exe lesz, ezt futtatva telepítjük a programot... használat: Project: Console Application (new projektnél ezt kell keresni) Parancssori fordítás linux alatt 1. Megírjuk a forrásfájlt -> elso.cpp 2. „g++ elso.cpp –o proba.exe” ekkor az elso.cpp-ből fordul egy proba.exe nevű fájl, ami már futtatható is

43 Gyakorló Feladatok 1. Soroljuk fel az 1 és 100 közötti négyzetszámokat! 2. Soroljuk fel az 1 és közötti 17-tel vagy 19-cel osztható számokat (egyetlen ciklust használva csak) 3. Készítsünk egy programot, ami bekér a billentyűzetről egy n egész számot. Ha n<=0 akkor küldjünk hibaüzenetet és termináljunk, különben számoljuk meg, hogy 0 és n között hány olyan szám van, ami 3-at ad maradékul 7-tel osztva! 4. Készítsünk egy struct típust, ami a 3 dimenziós tér pontjainak koordinátáit(x,y,z valósak) és címkéit(tetszőleges string) tartja számon, majd hozzunk létre egy ilyen változót és tegyük bele a P(0.5;1;3.5) pontot. Ezután hozzunk létre még egy ilyen változót és annak tartalmát kérjük be a billentyűzetről. Ezután számoljuk ki a két pont távolságának a négyzetét! ( d(P1,P2)^2=(x1-x2)^2+(y1-y2)^2+(z1-z2)^2 )


Letölteni ppt "C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek Be- és kimenet Adatstruktúrák Függvények Main függvény."

Hasonló előadás


Google Hirdetések