C Alapok els ra n Elemi tpusok n
- Slides: 43
C++ Alapok, első óra n. Elemi típusok n. Vezérlési szerkezetek n. Be- és kimenet n. Adatstruktúrák n. Függvények n. Main függvény
Alapvető típusok n n n 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
Változók deklarálása n n 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; ”
Egész számok ( int ) Egész számok 4 bájton ábrázolva n Pl: „int x=56; ” n Műveletek: n +, -, * n / - eredmény mindig egész n % - maradék képzése (mod) n n Relációk: n ==, !=, <=, >=
Valós számok ( float ) Pl. „float f=13. 766; ” n Műveletek: n n n +, -, *, / Relációk: n A szokásosak. . .
Logikai értékek ( bool ) Változók és konstansok, amik igazak és hamisak lehetnek. n Pl. „bool L=true; L=false; ” n Műveletek: n ==, != n ! – tagadás pl. „!L” n && - és pl. „L 1&&L 2” n || - vagy pl. „L 1||L 2” n
Karakterek ( char ) ASCII-es karakterek, konvertálható integerré (0. . 255 lehet az értéke) n Pl. „char c=‘A’; ” n Relációk: ==, != n
Karakterláncok ( string ) n n 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: n n n str. size() – az str-ben tárolt szöveg hossza str 1+str 2 – 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
Stringek 2 nstr. c_str() – az str-nek megfelelő char* értéket adja vissza nstr. substr(i, j) – str i-edik poziciójától j db karakter alkotta szöveg
Elemi utasítások A C++-ban minden utasítást „; ” zár n Értékadás: „változó = érték; ” n Pl. „x = 0; c = ‘A’; ” n Spec: „x = y = 5; ” <-> „x=5; y=5; ” n „x++; ”, „++x; ”, „x--; ”, „--x; ” (növelés, illetve csökkentés eggyel) n A különbség a visszatérési értékükben van. . . n
Elemi utasítások 2 n Program leállítása: „exit(szám); ”, ahol a szám egy nemnegatív egész és n n n 0, ha nem volt hiba >0, ha volt hiba és ekkor a szám a hiba kódja Megjegyzések: n n C++ stílusú: „// megjegyzés” -> az adott sor végéig tart C stílusú: „/*megjegyzés. . . Akár több sor */”
Logikai feltételek n Bármilyen egyszerű vagy összetett kifejezés, ami bool-t ad vissza bool típusú változók n bool visszatérési értékű függvények n a relációk segítségével felépített kifejezések n Pl. (4==2*2)&&(!L||ps(3)) n Ahol: bool ps(int i) {return i%2==0; } n
Vezérlési szerkezetek Szekvencia: parancsok egymásutáni végrehajtása. . . n Pl. n „ x = 5; n y = x/2; n x = y+1; ” n
Elágazás n Közönséges elágazás: if(feltétel) { ág 1 } else { ág 2 } n Egyszerűbb eset (ha az ágak csak egy utasításból állnak): if(feltétel) ut 1; else ut 2;
Többágú elágazás n Több feltétel, a legelső utasításait hajtjuk végre, ami teljesül: if(feltétel 1) { ág 1 } else if(feltétel 2) { ág 2 }. . . else { utolsó_ág }
Adott változó értéke szerinti elágazás n Ha egy adott változó értékei szerint akarunk elágaztatni a következőt is használhatjuk: switch(v) { case konstans 1: utasítások. . . break; case konstans 2: utasítások. . . break; . . . default: utasítások. . . break; }
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 n Az utasítás sorozatot ilyenkor a ciklus magjának nevezzük n
While-ciklus n 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. . . }
For-ciklus n A következő ciklus egyszerűbben is felírható a for utasítás segítségével: utasítás 1; while(feltétel) { mag. . utasítás 2; } for(utasítás 1; feltétel; utasítás 2) { mag }
Egyszerű példa a for használatára n Írjuk ki az egész számokat 0 -tól 100 -ig! for(int i=0; i<101; i++) { cout << i << endl; }
Do-while ciklus n Ez a hátultesztelős ciklus do{ mag. . . }while(feltétel);
A do-while ciklus egyik hasznos alkalmazása char c; do{ //programunk. . . cout << ” Futtassuk újra? (I/N) ”; cin >> c; }while(c!=‘n’&&c!=‘N’);
Be- és kimenetkezelés n Szabványos be- és kimenet kezelése (billentyűzet, illetve képernyő): #include <iostream> //ez kell using namespace std; //a fájl elejére cout << kifejezés 1 << kif 2 << endl; //kiírás+soremelés cin >> változó 1 >> változó 2; //beolvasás cout << ”n”; //a n a soremelésnek megfelelő karakter
Bemenet-Kimenet példa #include <iostream> 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; }
Karakterláncok beolvasása A << operátorral például az üres string nem olvasható be n Másik módszer erre: getline(cin, str); n Megjegyzés: a puffert esetleg üríteni kell. . . n
Egyszerű adatstruktúrák n Néhány egyszerűbb adatstruktúra: tömb: fix dimenziójú vektor, az indextartomány: 0, 1, . . . , méret-1 n struct: különböző adatmezőkből álló rekordtípus n
Tömbök használata Tömb típusú változó deklarálása: típus változónév[méret]; n Tömb adott indexű elemének elérése: változónév[index] n Ezzel a módszerrel csak konstans méretű tömbök hozhatóak létre (un. Statikus foglalású tömbök) n
Példa a tömbök használatára n 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 <math. h> kell hozzá
Struct n n 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ípus 1 mezőnév 1 //mező megadása. . . }; Változó: Típusnév változónév; Mezők elérése: változónév. mezőnév
Példa a struct használatára n 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;
Függvényhívások n Függvény deklarálása és definiálása: n n A deklarációnak meg kell előznie az első felhasználást „void my. Fuggveny(); ” Definiálás: „void my. Fuggveny() { //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ű.
Függvény visszatérési értéke n 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 n void = nincs visszatérési érték n 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; }” n
Függvény paraméterei n 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; }”
Paraméterfajták n A paraméterek lehetnek érték- és címszerintiek n n É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, . . );
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); my. Fuggveny(); n
Megjegyzések void függvény esetében a „return; ” utasítással is vissza lehet térni n 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); n
Megjegyzés 2 Tömbök mint paraméterek: void fv(tipus t[][20]){. . . t[i][j]. . . } void fv(tipus** &t) {. . . t[i][j]. . . } n
Egy egyszerű program szerkezete #include <iostream> using namespace std; //fv deklarációk int main(int argc, char* argv[]) { //program return 0; } //fv definíciók
Main függvény Kitüntetett függvény, ő indul el a program futtatásakor. n Csak egy lehet belőle. . . n Visszatérési értéke: void/int n Paraméterek: nincsenek vagy az alábbi kettő n
Programparaméterek argc -> a parancssori paraméterek száma n argv -> a parancssori paraméterek tömbje, elemei char* típusúak n Az első paraméter mindig a futtatási név pl. „C: Dev-Cppbevinfo 1cpp 1. exe” n
Ami még hátra van. . . Szöveges fájlok használata n Programozási tételek implementálása n
Egyéb n n Dev. C++ ingyenes fordító http: //www. bloodshed. net/devcpp. html (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
Gyakorló Feladatok 1. 2. 3. 4. Soroljuk fel az 1 és 100 közötti négyzetszámokat! Soroljuk fel az 1 és 10000 közötti 17 -tel vagy 19 -cel osztható számokat (egyetlen ciklust használva csak) 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! 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(P 1, P 2)^2=(x 1 -x 2)^2+(y 1 -y 2)^2+(z 1 -z 2)^2 )
- Triangles tipus
- Diftongs
- Kvarkok
- Reticularis kötőszövet
- Elemi idegi jelenségek
- Vas-vaskarbid egyensúlyi diagram
- Canvas te
- Html alapok
- Python alapok
- Sql alapok
- Nn befektetési alapok
- Vektor hosszának kiszámítása
- Rebase branch onto master
- Autocad alapok
- Java alapok
- Nn alapok
- Vertical magyarul
- Excel alapok
- Autocad alapok
- Active directory alapok
- Active directory alapok
- Hangtechnika alapok
- Autocad alapok
- Autocad parancssor
- Els vertebrats
- On vivien els bandolers
- Fecundació externa
- Edip a colonna
- Sociale stijlen
- Czanne
- Laocoont i els seus fills
- Pronom
- Pronoms febles i forts
- Els ecosistemes
- Els stack
- Angle convex i concau
- Schakeljaar gender en diversiteit
- En islcollective com
- Allah'ın kulu ve elçisi
- Els roelstraete
- Les categories lexiques
- Extreme long shot (els)
- Enxaneta verb cantar
- Els primers freds