2015/10/08 13:39 1/33 A C++ nyelv. A forráskód elkészítéséhez a CodeBlocks fejlesztő eszközt használjuk, amely a következő oldalon érhető el:



Hasonló dokumentumok
Információs Technológia

A programozás alapjai előadás. A C nyelv típusai. Egész típusok. C típusok. Előjeles egészek kettes komplemens kódú ábrázolása

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás

Programozás II. 2. Dr. Iványi Péter

1. Gyakorlat. Rövid elméleti összefoglaló. <tárolási osztály>típus <típus > változónév <= kezdőérték><, >;

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

Pénzügyi algoritmusok

1. Alapok. Programozás II

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Mintavételes szabályozás mikrovezérlő segítségével

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

C# gyorstalpaló. Készítette: Major Péter

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Programtervezési stratégiák. Top-down tervezés. Top-down tervezés. Bottom-up tervezés. 4.

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Bevezetés Kiíratás Beolvasás Formázás Fájlkezelés Gyakorló feladatok C++ I/O. Bevezetés. Izsó Tamás február 20. Izsó Tamás C++ I/O / 1

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

LibreOffice Makró Basic

Programozás 1. Dr. Iványi Péter

Java II. I A Java programozási nyelv alapelemei

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Informatika terméktervezőknek

Bevezetés a programozásba I.

Programozás II. 4. Dr. Iványi Péter

A C# programozási nyelv alapjai

1. Írjunk programot mely beolvas két egész számot és kinyomtatja az összegüket.

5. Gyakorlat. struct diak {

Programozás C++ -ban 2007/1

Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás

1. Egyszerű (primitív) típusok. 2. Referencia típusok

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

Programozás C és C++ -ban

Bevezetés a C++ programozási nyelvbe

A C# PROGRAMOZÁSI NYELV

Programozás alapjai. 5. előadás

Algoritmizálás + kódolás C++ nyelven és Pascalban

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

Szoftvertechnológia alapjai Java előadások

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós május 6. Széchenyi István Egyetem, Gy r

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Maximum kiválasztás tömbben

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

Készítette: Nagy Tibor István

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

Típusok és konstansok

Bevezetés a programozásba. 8. Előadás: Függvények 2.

Bevezetés a programozásba I.

A C++ nyelvben a függvény nevek túlterhelésével biztonságosabbá tehetnénk az adatok kiírását és beolvasását.

Alkalmazott modul: Programozás 2. fejezet. C++ alapismeretek. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Bevezetés a C++ programozásba

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

C programozás. 1 óra Bevezetés

3. Gyakorlat Ismerkedés a Java nyelvvel

9.fejezet: Függvények és külső eljárások

Bevezetés a programozásba. 6. Előadás: C++ bevezető

Programozás 3. Dr. Iványi Péter

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Java II. I A Java programozási nyelv alapelemei

Programozás I. C# bevezető. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 17.

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Assembly programozás: 2. gyakorlat

Szoftvertervezés és -fejlesztés I.

117. AA Megoldó Alfréd AA 117.

Programozás C++ -ban

Alkalmazott modul: Programozás 2. előadás. Procedurális programozás: adatfolyamok, adatsorok kezelése

C++ programozási nyelv Struktúrák a C++ nyelvben Gyakorlat

Programozás I. gyakorlat

Programozási nyelvek JAVA EA+GY 1. gyakolat

Python nyelv. Helló Világ. Karakterkódolás. Interpreter. < Python

Python tanfolyam Python bevezető I. rész

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

Pénzügyi algoritmusok

Bevezetés a programozásba I.

Programozás C++ -ban 2007/4

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Algoritmizálás + kódolás C++ nyelven és Pascalban

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Dinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése

Bevezetés a C programozási nyelvbe. Az Általános Informatikai Tanszék C nyelvi kódolási szabványa

Programozás alapjai II. (2. ea) C++

Programozás alapjai II. (2. ea) C++

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

INFORMATIKA tétel 2017

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Programozás I gyakorlat

INFORMATIKA tétel 2018

Programozás. C++ típusok, operátorok. Fodor Attila

1. Alapok. #!/bin/bash

Mutatók és mutató-aritmetika C-ben március 19.

Kifejezések. Kozsik Tamás. December 11, 2016

Programozás C és C++ -ban

Programozás I gyakorlat

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Kifejezések. Kozsik Tamás. December 11, 2016

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Átírás:

2015/10/08 13:39 1/33 A C++ nyelv < Cpp A C++ nyelv Szerző: Sallai András Copyright Sallai András, 2011, 2014 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu Bevezetés Fejlesztői környezet A forráskód elkészítéséhez a CodeBlocks fejlesztő eszközt használjuk, amely a következő oldalon érhető el: http://codeblocks.org Ha a gépeden nincs MingW telepítve akkor ez a változat szükséges: codeblocks-10.05mingwsetup.exe Ha CodeBlocksot telepítesz, a használható fejlécállományokat itt találod: c:\program Files\CodeBlocks\MinGW\lib\gcc\mingw32\4.7.1\include\c++\ Fordító A forráskód lefordításához a GCC fordítót használjuk, amelynek Windowsos megvalósítása a MingW32. A MinGW32 fordító feltelepíthető külön is a következő oldalról: http://mingw.org Egyéb fordítók Intel C++ Compiler http://en.wikipedia.org/wiki/intel_c%2b%2b_compiler Visual C++ http://en.wikipedia.org/wiki/visual_c%2b%2b Borland C++ Compiler http://en.wikipedia.org/wiki/borland_c%2b%2b Watcom C++ Compiler http://en.wikipedia.org/wiki/watcom_c_compiler Még több C++ fordító: http://en.wikipedia.org/wiki/c%2b%2b_compiler#c.2fc.2b.2b_compilers Szabvány Amit használunk http://www.iso.org/iso/catalogue_detail.htm?csnumber=38110

Last update: 2014/12/20 00:49 oktatas:programozás:cpp:cpp_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:cpp:cpp_nyelv Legújabb szabvány A fordítók csak részben ismerik (2011) http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=50372 http://en.wikipedia.org/wiki/c++0x Történet A C++ nyelv kifejlesztője: Bjarne Stroustrup (Dánia) http://hu.wikipedia.org/wiki/bjarne_stroustrup 2003-as szabvány: http://www.iso.org/iso/catalogue_detail.htm?csnumber=38110 Év C szabvány C++ szabvány 2011 ISO/IEC 14882:2011 2007 2004 ISO/IEC 9899:1999/Cor 3:2007 (A C99 harmadik javítása) ISO/IEC 9899:1999/Cor 2:2004 (A C99 második javítása) ISO/IEC TR 19768:2007 Kiterjesztések C++11 vagy C++0x C++TR1 2003 ISO/IEC 14882:2003 C++03 2001 ISO/IEC 9899:1999/Cor 1:2001 (A C99 első javítása) 1999 ISO/IEC 9899:1999 C99 1998 ISO/IEC 14882:1998 C++98 1996 1995 1994 ISO/IEC 9899:1990/Cor 2:1996 (A C90 második javítása) ISO/IEC 9899:1990/Amd 1:1995 (Irányadó javítás NA-ről C90-re) ISO/IEC 9899:1990/Cor 1:1994 \\(A C90 első javítása) C95 1990 ISO/IEC 9899:1990 \\(A C89 ISO szabvány lesz) C90 1989 ANSI X3.159-1989 \\(ANSI C) C89 1983 Bjarne Stroustrup C++ 1978 nincs hivatalos szabvány - Kernighan & Ritchie C Helló Világ A "Helló Világ!" nevű program forráskódja hello.cpp http://szit.hu/ Printed on 2015/10/08 13:39

2015/10/08 13:39 3/33 A C++ nyelv cout << "Helló Világ" << endl; Egy hesmárk (#) azt jelenti preprocessor direktíva következik. Ezek nem általános kódsorok, de a fordító számára megmondják, hogy ezeket a sorokat előre dolgozza fel. A sor azt mondja, hogy a lefordítandó programba fordítsuk bele az iostream állományt is. Az std névtér használata. A C++ függvényei névterekbe vannak csoportosítva. A using namespace std; utasítással azt mondjuk, hogy szeretnénk az std névtérben lévő utasításokat használni. A főfüggvény definíciójának kezdete. Az elején az int, azt jelenti, hogy a program végrehajtás után egy egész számmal tér vissza. cout << "Helló Világ" << endl; A cout egy utasítás, amely a folyamként átadott adatokat a képernyőre visszhangozza. A «karakterek mondják meg, hogy az utána következő adatot a cout vegye át folyamként. Az endl is kiíratásra kerül, amely egy sortörést reprezentál. return 0; A főfüggvény vége. A programot arra utasítja, hogy 0 értékkel térjen vissza. Lehetséges kiterjesztések A forrásállományok kiterjesztése platformonként változhat. A szokásos kiterjesztések:.c,.cc,.cpp,.cxx

Last update: 2014/12/20 00:49 oktatas:programozás:cpp:cpp_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:cpp:cpp_nyelv Fejlécállományok a következők lehetnek:.h,.hpp, hxx vagy kiterjesztés nélküli A szabványos C++ könyvtárak kiterjesztés nélküliek. CodeBlocksal telepített MinGW esetén a helyük: c:\program Files\CodeBlocks\MinGW\lib\gcc\mingw32\4.7.1\include\c++\ Egy sor A fenti program a sorait az átláthatóság miatt írtuk több sorba. Egy ilyen program függvény része, leírható akár egyetlen sorként is: cout << "Helló Világ" << endl; A C++ nyelven mindent utasítást pontosvesszővel (;) zárunk. Ez jelöli az utasítás végét, így biztosítva, hogy egy sorba több utasítás is írható. Kivitel Az iostream állományban lévő függvényeket szeretném használni. cout << "karaktersorozat" << endl; A cout a képernyőre írja a paraméterként megadott adatokat. Idézőjelek közzé írjuk a kiírni kívánt karaktersorozatot. Az endl sortörést helyez el a képernyőn. Az endl egy sortörést jelöl. Ha két képernyőre írató utasításom van, és az egyik végén nincs endl akkor ott nem lesz sortörés. Próbáljuk ki a következő programot: egysor.cpp cout << "Helló Világ"; cout << "Egy C++ program vagyok" << endl; http://szit.hu/ Printed on 2015/10/08 13:39

2015/10/08 13:39 5/33 A C++ nyelv Escape szekvenciák Escape szekvencia Leírás \' felsővessző (byte 0x27) \ idézőjel (byte 0x22) \\ backslash (byte 0x5c) \0 nul karakter (byte 0x00) \a csengőhang (byte 0x07) \b backspace (byte 0x08) \f lapdobás - form feed (byte 0x0c) \n soremelés - line feed (byte 0x0a) \r kocsi vissza - carriage return (byte 0x0d) \t vízszintes tabulátor (byte 0x09) \v függőleges tabulátor (byte 0x0b) \nnn oktális bájt (nnn) \nn hexadecimális bájt (nn) Változók, adattípusok Alaptípusok Név Leírás Méret* Tartomány* char Karakter vagy kis egész 1byte signed: -128 127 unsigned: 0 to 255 short int (short) Rövid Egész 2bytes int Egész (integer) 4bytes long int (long) bool Hosszú egész (Long integer) Logikai érték (Boolean) Két értéke lehet: true vagyr false 4bytes 1byte signed: -32768 to 32767 unsigned: 0 to 65535 signed: -2147483648 2147483647 unsigned: 0 to 4294967295 signed: -2147483648 2147483647 unsigned: 0 to 4294967295 true vagy false float Lebegőpontos szám (floating) 4bytes +/- 3.4e +/- 38 (~7 számjegy) double long double wchar_t Dupla pontosságú lebegőpontos szám Hosszú dupla pontosságú lebegőpontos szám Széles karakter (wide) A C++11 szabvány bevezet két új típust: char16_t - UTF-16 karakter char32_t - UTF-32 karakter 8bytes 8bytes 2 vagy 4 bytes +/- 1.7e +/- 308 (~15 számjegy) +/- 1.7e +/- 308 (~15 számjegy) 1 wide karakter Módosítók Módosítják a típust. Sorrendjük mindegy. Egy típusdefinícióban csak egyszer szerepelhetnek.

Last update: 2014/12/20 00:49 oktatas:programozás:cpp:cpp_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:cpp:cpp_nyelv Előjelváltó signed - előjeles értelmezés (ez az alapértelmezett) unsigned - előjel nélküli értelmezés Méret short - Célja a jó helykihasználás, amely legkevesebb 16 bites szám lesz. long - Cél, hogy legkevesebb 30 bites legyen long long - Cél, hogy legkevesebb 64 bites legyen (Csak C++11 szabvány) Példa unsigned short int szam; A számváltozó 16 bites előjel nélküli szám lesz. long long int szam; A szam változó 8 bájtos lesz. long double szam; A szam változó 12 bájtos lesz. Limitek A climits állományban a típusok maximális és minimális értéke lekérdezhető. Az int egész típus maximális értéke például így kérdezhető le: maxint.cpp #include <climits> cout << INT_MAX << endl; További állandók az alábbi táblázatban találhatók: http://szit.hu/ Printed on 2015/10/08 13:39

2015/10/08 13:39 7/33 A C++ nyelv name leírás min. nagyság* CHAR_BIT Egy karakterobjektum bitjeinek száma (byte) 8 SCHAR_MIN Egy signed char objektum minimumértéke -127 SCHAR_MAX Egy signed char objektum maximális értéke 127 UCHAR_MAX Egy unsigned char típusú objektum maximális értéke 255 CHAR_MIN Egy char típusú objektum minimum értéke SCHAR_MIN vagy 0 CHAR_MAX MB_LEN_MAX Egy char típusú objektum maximális értéke A bájtok maximális száma egy több bájtos karakter esetén, helyi (locale) beállításokhoz igazodva SHRT_MIN Egy short int objektum minimális értéke -32767 SHRT_MAX Egy short int objektum maximális értéke 32767 USHRT_MAX Egy unsigned short int objektum maximális értéke 65535 INT_MIN Egy int típusú objektum minimum értéke -32767 INT_MAX Egy int típusú objektum maximum értéke 32767 UINT_MAX Egy unsigned int objektum maximum értéke 65535 SCHAR_MAX vagy UCHAR_MAX LONG_MIN Egy long int objektum minimum értéke -2147483647 LONG_MAX Egy long int maximum értéke 2147483647 ULONG_MAX Egy unsigned long int objektum maximum értéke 4294967295 Típus kasztolás 1 casting [UK: ˈkɑːstɪŋ] [US: ˈkæstɪŋ] esés, hajítás, horgászás, kimustrálás, öntés, öntvény, szereposztás, vetemedés Implicit conversion Az implicit konverzióhoz nem szükséges operátor. Ez automatikusan teljesül, amikor egy értéket adunk. Például: short a=2000; int b; b=a; class A ; class B public: B (A a) ; A a; B b=a; Explicit conversion A C++ erősen típusos nyelv. Néhány típuson explicit konverziót alkalmazhatunk.

Last update: 2014/12/20 00:49 oktatas:programozás:cpp:cpp_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:cpp:cpp_nyelv short a=2000; int b; b = (int) a; // c-stílusú kasztolás b = int (a); // függvényszerű jelölés // class type-casting class CDummy float i,j; ; class CAddition int x,y; public: CAddition (int a, int b) x=a; y=b; int result() return x+y; ; int main () CDummy d; CAddition * padd; padd = (CAddition*) &d; cout << padd->result(); http://cplusplus.com/doc/tutorial/typecasting/ Literális állandók int a = 3; double b = 4.5; char c = 'a'; char d = '\n'; string e = "szilva"; Az egyenlőség jel jobb oldalán lévő értékek állandók. Állandók mert a futási időben ezeket nem változtatjuk meg. Mégpedig literális állandók. 255, 0377, 0xff Egészek (decimális, oktális, hex) 2147483647L, 0x7fffffffl Hosszú, 32-bites egészek 123.0, 1.23e2 dupla pontosságú valós számok 'a', '\141', '\x61' Karakter (literális, oktális, hex) '\n', '\\', '\'', '\"' ÚjSor, visszaperjel, felső vessző, idézőjel "szöveg\n" Karaktertömbök \0 lezárással "helló" "világ" Összefűzött karaktersorozatok http://szit.hu/ Printed on 2015/10/08 13:39

2015/10/08 13:39 9/33 A C++ nyelv true, false logikai állandók 1 és 0 int a = 0xff; //Hexadecimális szám megadása cout << a << endl; Nevesített állandó const int max = 5; cout << max << endl; #define MAX 25 cout << MAX << endl; Formázott kivitel Formázott kivitelhez a iomanip fejállományt kell beillesztenünk. Mezőszélesség mezo.cpp #include <iomanip>

Last update: 2014/12/20 00:49 oktatas:programozás:cpp:cpp_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:cpp:cpp_nyelv int szam = 28; cout << setw(10) << szam << endl; Kitöltés kitoltes.cpp #include <iomanip> double szam = 28.12345; cout << setw(10) << setfill('0') << szam << endl; Precizitás A tizedesek száma lebegőpontos szám esetén: prec.cpp #include <iomanip> double szam = 2800.1234; //cout << setiosflags(ios::fixed) << setprecision(2) << szam << endl; cout << setprecision(2) << szam << endl; http://szit.hu/ Printed on 2015/10/08 13:39

2015/10/08 13:39 11/33 A C++ nyelv Ha fixpontos ábrázolással szeretnénk ábrázolni: prec.cpp #include <iomanip> double szam = 2800.1234; cout << setiosflags(ios::fixed) << setprecision(2) << szam << endl; Vezető nullák vezetonulla.cpp #include <iomanip> int szam = 58; cout << setfill('0') << setw(10) << szam << endl; Dátum kiíratása: datum.cpp #include <iomanip>

Last update: 2014/12/20 00:49 oktatas:programozás:cpp:cpp_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:cpp:cpp_nyelv int ev = 1995; int ho = 1; int nap = 1; cout << setfill('0'); cout << ev << '.' << setw(2) << ho << '.' << setw(2) << nap << endl; Számrendszerek Váltás 10-től eltérő számrendszerbe: valtas.cpp #include <iomanip> int szam = 15; cout << "Oktális szám: " << oct << szam << endl; cout << "Hexadecimális szám: " << hex << szam << endl; http://www.cplusplus.com/reference/iostream/manipulators/ http://www.cprogramming.com/tutorial/iomanip.html Tizedes jegyek száma Valós számok esetén a tizedes jegyek számának meghatározása (két tizedesjegy beállítása): #include <iomanip> double a; http://szit.hu/ Printed on 2015/10/08 13:39

2015/10/08 13:39 13/33 A C++ nyelv a = 328.2843824; cout.precision(2); cout << fixed << a << endl; #include <iomanip> double a; a = 328.2843824; cout << setprecision(2) << fixed << a << endl; A fixed beállítja, hogy fixpontos számábrázolást használjunk. Matematikai függvények abs() Abszolút érték számítása. p01.cxx #include <cmath> cout << abs(-9) << endl; Trigonometriai függvények cos() Koszinusz sin() Szinusz tan() Tangens acos() Arkusz koszinusz

Last update: 2014/12/20 00:49 oktatas:programozás:cpp:cpp_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:cpp:cpp_nyelv Trigonometriai függvények asin() Arkusz szinusz atan() Arkusz tangens atan2() Arkusz tangens két paraméterrel Hiperbolikusz függvények cosh() Hyperbolikusz konszinusz sinh() Hyperbolikusz szinusz tanh() Hyperbolikusz tangens acosh() Arkusz hyperbolikusz koszinusz asinh() Arkusz hyperbolikusz koszinusz atanh() Arkusz hyperbolikusz tangens Exponenciális és logratimikus függvények exp() Exponenciális függvény frexp() Együttható és kitevő lekérdezése ldexp() Érték generálása együtthatóból és kitevőből log() Természetes logaritmus log10() 10-es alapú (általános) logaritmus modf() A tört és egész egész rész számítása exp2() bináris exponenciális számítása expm1() exponenciális minusz 1 ilogb() egész bináris logratimus log1p() logaritmus plusz 1 log2() Bináris logaritmus logb() lebegőpontos alapú logaritmus scalbn() Adott együttható használata lebegőpontosként, adott kitevőn scalebln() Adott együttható használata lebegőpontosként (long) Hatvány függvények pow() adott hatványra emel sqrt() gyökvonás cbrt() köbgyök hypot() derékszögű háromszög átfogója Konstansok M_PI pi értéke Operátorok Értékadó (=) Meghatározzuk egy változó értékét. a = 5; a = b; a = 2 + (b = 5); http://szit.hu/ Printed on 2015/10/08 13:39

2015/10/08 13:39 15/33 A C++ nyelv Aritmetikai operátorok ( +, -, *, /, % ) + összeadás - kivonás * szorzás / osztás % maradékképzés a = 11 % 3; Az a értéke 2 lesz. Összetett meghatározások (+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, =) kifejezés egyenlő ezzel valtozo += novekmeny; valtozo = valtozo + novekmeny; a -= 5; a = a - 5; a /= b; a = a / b; egysegar *= egyseg + 1; egysegar = egysegar * (egyseg + 1); Inkrementálás és dekrementálás (++, --) A ++ operátor növeli egy változó értékét, a pedig csökkenti eggyel. c++; c+=1; c=c+1; A fenti három utasítások ugyanazt csinálja. Mindegyik növeli a c változó értékét 1-el. Az inkrementáló és dekrementáló utasításokat írhatjuk a változó neve elé és után is. Egy értékadó kifejezés jobboldalán a viselkedésük eltér. Példa 1 Példa 2 B=3; B=3; A=++B; A=B++; // A tartalma 4, B tartalma 4 // A tartalma 3, B tartalma 4 A táblázatban leírt példából láthatjuk, hogy ha a ++ operátor a B előtt van (++B), akkor előbb növeljük a B változó értékét, és csak az után tesszük azt egyenlővé az A változóval. Ha a ++ operátor a B változó után áll, akkor előbb eltároljuk az A változóban a B aktuális értékét, majd utána növelem a B változó értékét 1-el. Összehasonlító operátorok ( ==,!=, >, <, >=, <= ) == egyenlő!= nem egyenlő > nagyobb mint

Last update: 2014/12/20 00:49 oktatas:programozás:cpp:cpp_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:cpp:cpp_nyelv < kisebb mint >= nagyobb vagy egyenlő <= kisebb vagy egyenlő (8 == 5) // az értékelés eredmény hamis (false) (5 > 4) // az értékelés eredmény igaz (true) (3!= 2) // az értékelés eredmény igaz (true) (6 >= 6) // az értékelés eredmény igaz (true) (3 < 3) // az értékelés eredmény hamis (false) Logikai operátorok (!, &&, )! operátor!(5 == 5) // értéke false, mert a (5 == 5), és ennek ellenkezőjét kell venni.!(6 <= 4) // értéke true, mert (6 <= 4) kifejezés értéke false!true // értéke false!false // értéke true. && operátor a b a && b true true true true false false false true false false false false operátor a b a b true true true true false true false true true false false false Példák ( (8 == 8) && (2 > 4) ) // értéke false ( true && false ) ( (8 == 8) (2 > 4) ) // értéke true ( true false ) Feltételes operátor (?) feltétel? visszatérési_érték1 : visszatérési_érték2 http://szit.hu/ Printed on 2015/10/08 13:39

2015/10/08 13:39 17/33 A C++ nyelv 8==3? 4 : 3 // visszatérési érték 3, mert 8 nem egyenlő 3-al 7==5+2? 4 : 3 // visszatérési érték: 4, since 7 is equal to 5+2. 6>3? a : b // visszatér a értékével, mivel 6 nagyobb mint 3 a>b? a : b // visszatér a nagyobbal, a vagy b-vel Vessző operátor (, ) A vesszőoperátor kettő vagy több kifejezés elválasztására való, ott ahol csak egy kifejezés írható. A példa kedvéért egy kód: a = (b=3, b+2); Először a 3 rendelődik a b változóhoz, majd a b-hez 2-őt adunk, amely a végén a váltózóba kerül. A végén így a változó értéke 5 lesz. Bitmódosító operátor ( &,, ^, ~, <<, >> ) operátor asm megfelelő leírás & AND bitenkénti ÉS (AND) OR bitenkénti bezáró VAGY (OR) ^ XOR bitenkénti kizáró VAGY (OR) ~ NOT egyes komplemens (bit invertálás) << SHL balra tolás >> SHR jobbra tolás Nyílt típusmeghatározó operátor Kasztolás néven ismert típusátalakítás. int i; float f = 3.14; i = (int) f; Az f változóban valós szám van, de az (int) kasztoló operátorral, egész típusúvá alakítjuk. sizeof() Ez az operátor egy paramétert fogad, amely egy típus vagy egy változó. Visszatér annak méretével bájtokban megadva. Például: a = sizeof (char);

Last update: 2014/12/20 00:49 oktatas:programozás:cpp:cpp_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:cpp:cpp_nyelv Konvertálás stringstream A stringstream a <sstream> fájlban található és szövegalapú objektumok folyamként való kezelését teszi lehetővé. Ezzel könnyen átalakíthatunk karaktersorozatot számmá és vissza. convert1.cpp #include <sstream> cout << "Hi" << endl; string str("384"); int a; stringstream(str) >> a; cout << a << endl; convert2.cpp #include <sstream> string str; float ar; cout << "Ar: "; getline(cin, str); stringstream(str) >> ar; cout << ar << endl; aru.cpp #include <sstream> http://szit.hu/ Printed on 2015/10/08 13:39

2015/10/08 13:39 19/33 A C++ nyelv string str; float ar; int mennyiseg; cout << "Ar: "; getline(cin, str); stringstream(str) >> ar; cout << "Mennyiseg: " ; getline(cin, str); stringstream(str) >> mennyiseg; cout << "Fizetendo: " << ar * mennyiseg << endl; atoi #include <cmath> char *str = "123"; int a = atoi(str); cout << a * 2 << endl; Bevitel Egész szám bekérése int a;

Last update: 2014/12/20 00:49 oktatas:programozás:cpp:cpp_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:cpp:cpp_nyelv cin >> a; Karakter bekérése A cin segítségével egy karaktert vagy egy karaktersorozatot kérhetünk be a billentyűzetről. karakterbe.cpp char cha, chb; cout << "Karakter: "; cin >> cha; cin.ignore(); cout << "Karakter2: "; cin >> chb; cout << endl << "Első: " << cha << endl; cout << "Második: " << chb << endl; Karaktersorozat esetén whitespace karakter után a karakterek tárolása megszakad. Írhatunk még karaktersorozatokat, de csak a whitespace előtti rész kerül a változóba. Így ezzel az utasítással csak egy szót kérhetünk be. Mi azonban nem mindig ezt szeretnénk. Ha szeretnénk egy egész mondatot bekérni akkor a getline() függvényt használhatjuk. A getline() több módon használható. getline() mondatbe.cpp cout << "Mondat: "; string str; getline(cin, str); cout << str << endl; http://szit.hu/ Printed on 2015/10/08 13:39

2015/10/08 13:39 21/33 A C++ nyelv Várakozás egy billentyűnyomásra cin.get(); Egy billentyűnyomást vár. A lenyomott billentyűt el is tárolhatjuk: char a = cin.get(); vagy int a = cin.get(); A lenyomott billentyű egész számként is eltárolható. Ilyenkor az ASCII kódtáblában a billentyűnek megfelelő ASCII kód kerül tárolásra. Vezérlőtevékenységek Egy programkód nem feltétlenül egymás után hajtódik végre. Vannak, amelyek végrehajtását bizonyos feltételhez kötjük. Vannak, amelyeket többször egymás után szeretnék végrehajtani. Vannak olyan utasítások, amelyeket szeretnénk együtt kezelni. Az együtt kezelendő utasításokat blokkokba szervezzük. A blokkokat kapcsos zárójelekkel adjuk meg: utasítás1; utasítás2; utasítás3; Szelekció if Általánosságban a legegyszerűbb if feltételes utasítás a következő módon épül fel: if (feltétel) utasítások Az if után zárójelek között megadjuk a feltételt. A zárójel után megadunk egy utasítást vagy egy utasításblokkot. if (x == 100) cout << "x tartalma 100" ; int a;

Last update: 2014/12/20 00:49 oktatas:programozás:cpp:cpp_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:cpp:cpp_nyelv cin << a; if(a < 10) cout << "Kisebb mint 10" << endl; else cout << "Nagyobb vagy egyenlő mint 10" << endl; int a; cin << a; if(a < 10) cout << "Kisebb mint 10"; cout << endl; else cout << "Nagyobb vagy egyenlő mint 10"; cout << endl; switch int a; cin >> a; switch(a) case 3 : cout << "Három" << endl; break; case 5 : cout << "Öt" << endl; break; case 7 : cout << "Hét" << endl; break; program01.cxx int main(int argc, char **argv) char b; cin >> b; switch(b) case 'a': cout << "A betű" << endl; break; case 'b': cout << "B betű" << endl; break; default: cout << "Egyéb" <<endl; http://szit.hu/ Printed on 2015/10/08 13:39

2015/10/08 13:39 23/33 A C++ nyelv Iteráció while int a; a = ; while(a < 10) cout << "alma" << endl; a++; for int a; cin >> a; for(a=; a < 10; a++) cout << "alma" << endl; Ha számokat visszafele szeretnénk megkapni, akkor: n-- int main () for (int n=10; n>; n--) cout << n << ", "; cout << "TUZ!\n"; Az előkészítős részben és a növekményes részben megadható több utasítás a vessző operátor segítségével. for ( n=, i=100 ; n!=i ; n++, i-- ) // amit tenni szeretnénk...

Last update: 2014/12/20 00:49 oktatas:programozás:cpp:cpp_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:cpp:cpp_nyelv do int i = 1; do cout << "alma" << endl; i++; while (i <= 10); Ugró utasítások break int main () int n; for (n=10; n>; n--) cout << n << ", "; if (n==3) cout << "számlálás leállítása!"; break; 10, 9, 8, 7, 6, 5, 4, 3, számlálás leállítása! continue // continue példa int main () for (int n=10; n>; n--) if (n==5) continue; cout << n << ", "; http://szit.hu/ Printed on 2015/10/08 13:39

2015/10/08 13:39 25/33 A C++ nyelv cout << "TUZ!\n"; 10, 9, 8, 7, 6, 4, 3, 2, 1, TUZ! goto // goto példa int main () int n=10; ciklus: cout << n << ", "; n--; if (n>) goto ciklus; cout << "TUZ!\n"; 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, TUZ! Az exit() függvény Az exit() függvény a cstdlib könyvtárban van definiálva. Az exit() függvény megszakítja a program futását és visszaad az operációs rendszernek egy visszatérési értéket. Az exit() fejrésze: void exit (int exitcode); Tömbök Azonos típusok tárolására használt adatszerkezet. Vektor Egydimenziós tömbök, vagyis kiterjedésük egyirányú. Pl:

Last update: 2014/12/20 00:49 oktatas:programozás:cpp:cpp_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:cpp:cpp_nyelv 3 9 5 8 2 1 4 A tömbünk egész számokat tartalmaz. De lehet ugyanez valós számokkal 2.7 0.8 1.5 5.3 9.4 1.3 5.0 Vagy tartalmazhat karaktereket: 'c' 'k' 'e' 'r' 'n' 'p' 'b' int egeszszamok[5]; egeszszamok[] = 35; egeszszamok[1] = 42; egeszszamok[2] = 98; egeszszamok[3] = 22; egeszszamok[4] = 76; Kezdőérték: int egeszszamok[5] = 35, 42, 98, 22, 76; Mátrix 3 19 35 18 2 1 4 9 2 3 5 15 23 2 18 92 25 38 11 19 42 33 30 51 82 23 14 44 3.6 19 35 18 2 1 4 9 2 3 5 15 23 2 18 92 25 38 11 19 42 33 30 51 82 23 14 44 int matrix[4][7]; Fájlkezelés Fájlok olvasása, írása #include <fstream> string s; ifstream in("test.dat"); //Megnyitás olvasásra ofstream out("test2.dat"); //Megnyitás írásra http://szit.hu/ Printed on 2015/10/08 13:39

2015/10/08 13:39 27/33 A C++ nyelv while(getline(in, s)) cout << s << "n"; //Olvassunk be egy sort //Írjuk egy másik fájlba Fájlok írása másként #include <fstream> main() ofstream f f.open("test.txt"); if(!f.is_open()) cerr << "A fájlt nem sikerült megnyitni" << endl; return; f << "Kiírnivaló" << endl; f.close() fájlok olvasása másként #include <fstream> #include <string> main() ifstream f f.open("test.txt"); if(!f.is_open()) cerr << "A fájlt nem sikerült megnyitni" << endl; return;

Last update: 2014/12/20 00:49 oktatas:programozás:cpp:cpp_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:cpp:cpp_nyelv string s; while(!f.eof()) f >> s; cout << s << endl; f.close() fájl nyitás megint #include <fstream> long begin,end; ifstream f ("input.txt"); // GET pointer lekérése begin = f.tellg(); // file végére pozícionálunk f.seekg (, ios::end); end = f.tellg(); myfile.close(); // különbség (fajlméret) kiírása cout << "Méret: " << (end-begin) << " byte.\n"; Tagolt olvasás fájlból olvas.cpp /* Olvasás szóközökkel tagotl fájlból */ #include <fstream> http://szit.hu/ Printed on 2015/10/08 13:39

2015/10/08 13:39 29/33 A C++ nyelv ifstream befolyam("adat.txt"); string str; int ar; befolyam >> str; befolyam >> ar; while(befolyam.good()) cout << str << " "; cout << ar << endl; befolyam >> str; befolyam >> ar; Dinamikus változók Ha egy változót mutatóként hoztunk létre és már nincs rá szükségünk, lehetőségünk van a memóriafoglalást megszüntetni, azaz felszabadítani. Ezt a delete utasítással tehetjük meg: using namesapce std; main() int *a; a = new int; *a = 3; cout << *a << endl; delete(a); Tömbök felszabadításakor a delete operátor után mindig használjuk az üres szögletes zárójelpárt ('[]'). Ezáltal a tömb minden elemére lefut a destruktor, felszabadítva a dinamikusan lefoglalt memóriaterületeket is. A szögletes zárójelpár nélkül csak az objektumhoz statikusan tartozó memóriaterület szabadul fel. Ha a zárójelbe a tömb méretétől eltérő szám kerül, akkor vagy nem szabadul fel az összes memória, vagy a destruktor olyan objektumra is meghívódik, ami nem is létezett. Az üres zárójelpár használatával ezek elkerülhetőek.

Last update: 2014/12/20 00:49 oktatas:programozás:cpp:cpp_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:cpp:cpp_nyelv Barátok class a (...) friend globalisfuggvenyneve(parm. lista); ; class b (...) friend class osztalynev; ; Véletlen szám #include <ctime> // time() #include <cstdlib> // srand() és rand() srand(time()); int r = (rand() % 10) + 1; // 1 és 10 közötti szám Szövegkezelés Szöveg darabolása #include <string> #include <sstream> main() string szoveg = "szilva:körte:barack"; istringstream szovegfolyam(szoveg); string resz; while(getline(szovegfolyam, resz, ':')) http://szit.hu/ Printed on 2015/10/08 13:39

2015/10/08 13:39 31/33 A C++ nyelv cout << resz << endl; #include <string> int main () string line = "rovid vonal a teszteleshez"; // with no arguments string s1; s1 = "András"; cout << "s1: " << s1 << endl; // copy constructor string s2 (s1); cout << "s2: " << s2 << endl; // one argumen string s3 (line); cout << "s3: " << s3 << endl; // first argumen C string // second number of characters string s4 (line,10); cout << "s4: " << s4 << endl; // 1 - C++ string // 2 - start position // 3 - number of characters string s5 (s3,7,5); // copy word 'line' from s3 cout << "s5: " << s5 << endl; // 1 - number characters // 2 - character itself string s6 (15,'*'); cout << "s6: " << s6 << endl; // 1 - start iterator // 2 - end iterator string s7 (s3.begin(),s3.end()-5); cout << "s7: " << s7 << endl; // you can instantiate string with assignment string s8 = "Andras"; cout << "s8: " << s8 << endl;

Last update: 2014/12/20 00:49 oktatas:programozás:cpp:cpp_nyelv http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:cpp:cpp_nyelv Darabolás újra: darbolas3.cpp #include <string> #include <sstream> main() std::string gyumolcs("alma:szilva:körte:barack"); std::istringstream iss(gyumolcs); std::string token; while(getline(iss, token, ':')) std::cout << token << std::endl; Makró Egy kódrészlet, amelynek nevet adunk. Amikor használjuk a nevet a makró kódja behelyettesítődik. Kétféle makró van. Leginkább abban különböznek, ahogy használatkor kinéznek. Objektumszerű makró, mint amikor egy objektumot használunk Függvényszerű makró, mint amikor egy függvényt használunk Objektumszerű Definiálása: #define BUFFER_SIZE 1024 Használata: foo = (char *) malloc (BUFFER_SIZE); Egy tömb megadása: #define NUMBERS 1, \ 2, \ 3 int x[] = NUMBERS ; Olyan mintha ezt írtuk volna: http://szit.hu/ Printed on 2015/10/08 13:39

2015/10/08 13:39 33/33 A C++ nyelv int x[] = 1, 2, 3 ; Függvényszerű #define lang_init() c_init() Ezek után, ha meghívjuk a következő függvényt: lang_init() akkor valójában ez a függvény hajtódik végre: c_init() From: http://szit.hu/ - SzitWiki Permanent link: http://szit.hu/doku.php?id=oktatas:programoz%c3%a1s:cpp:cpp_nyelv Last update: 2014/12/20 00:49