A C++ PROGRAMOZÁS ALAPJAI

Hasonló dokumentumok
Pénzügyi algoritmusok

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

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

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

1. Alapok. Programozás II

Bevezetés a programozásba I.

Szoftvertervezés és -fejlesztés I.

Bevezetés a programozásba I.

Programozás alapjai 9.Gy: Struktúra 2.

Információs Technológia

Informatika terméktervezőknek

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

Szoftvertechnológia alapjai Java előadások

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

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

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

A C programozási nyelv I. Bevezetés

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

A C# programozási nyelv alapjai

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

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

A C programozási nyelv I. Bevezetés

Szoftvertervezés és -fejlesztés I.

Programozás I. gyakorlat

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

Java II. I A Java programozási nyelv alapelemei

Széchenyi István Egyetem

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

BASH script programozás II. Vezérlési szerkezetek

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

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

Programozási nyelvek JAVA EA+GY 1. gyakolat

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

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

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

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

1. Alapok. #!/bin/bash

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

Adatbázis-kezelés ODBC driverrel

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

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

Tamás Ferenc: C++ (az emelt szintű érettségin) Előszó

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

Programozási alapismeretek 1. előadás

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

Java II. I A Java programozási nyelv alapelemei

AWK programozás, minták, vezérlési szerkezetek

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Operációs Rendszerek II. labor. 2. alkalom

Maximum kiválasztás tömbben

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

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

Occam 1. Készítette: Szabó Éva

PASzSz. Dr. Kotsis Domokos

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

A C# PROGRAMOZÁSI NYELV

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Programozási nyelvek (ADA)

Stack Vezérlés szerkezet Adat 2.

Bevezetés a programozásba I.

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

Java programozási nyelv

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

Programzás I gyakorlat

AWK programozás, minták, vezérlési szerkezetek

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

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

Webprogramozás szakkör

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

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

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Programozás C és C++ -ban

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

A Microsoft Visual Studio 2005 fejlesztőkörnyezet

Pénzügyi algoritmusok

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Készítette: Nagy Tibor István

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

Szkriptnyelvek. 1. UNIX shell

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

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

Objektum Orientált Programozás V.

MEGÚJÍTOTT GIROLOCK_CA TANÚSÍTVÁNYCSERE

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

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Programozás II gyakorlat. 8. Operátor túlterhelés

Pénzügyi algoritmusok

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana

BME MOGI Gépészeti informatika 13.

Programozási Nyelvek: C++

Bevezetés a C++ programozásba

E-Freight beállítási segédlet

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

BME MOGI Gépészeti informatika 4.

Bevezetés a programozásba. 11. Előadás: Esettanulmány

S z á m í t ó g é p e s a l a p i s m e r e t e k

3. Osztályok II. Programozás II

Visual Basic 2005 Express Edition A VISUAL STUDIO HASZNÁLATA NEM LEKTORÁLT VÁLTOZAT

Átírás:

A C++ PROGRAMOZÁS ALAPJAI 2. óra IDE, Változók, vezérlési szerkezetek A Visual Studio 2013 Community Edition használata 1. Új projekt létrehozása 1. File New Project 2. Válasszuk ki bal oldalt az Other languages, Visual C++, Win32 kategóriában a Win32 Console Application sablont. Adjuk meg a projekt nevét, majd kattintsunk az OK gombra. 1

A megjelenő Varázsló ablakban kattintsunk a Next gombra. 4. A Varázsló második oldalán jelöljük be az Empty Project opciót, majd kattintsunk a Finish gombra. 2

2. A felhasználói felület felépítése A felhasználó felület három legfontosabb területe a Solution Explorer (1.), a kódszerkesztő (2.) és a hibalista (). A Solution Explorer tartalmazza a projektjeinket, illetve a hozzájuk tartozó fájlokat mappákba rendezve. A működése nagyon hasonlít a Windows Explorer működéséhez. Az egyes mappákon és fájlokon jobb kattintással számos opció érhető el. A kódszerkesztő egy okos szövegszerkesztő, ami egyrészt kiszínezi a felismert kódszavakat (pl. kékkel a nyelv kulcsszavait), másrészt gépelés közben javaslatokat tesz az adott ponton felhasználható típusokról, utasításokról, és még sok másról (kódkiegészítés). A megjelenő listán a nyílbillentyűkkel tudunk navigálni, a megfelelő kiválasztása után pedig az Enter leütésével szúrhatjuk be őket. A hibalista a kódban aktuálisan meglévő hibákról ad tájékoztatást. A legtöbb hibát az IntelliSense nevű technológia (ami a kódkiegészítést is végzi) már a kód írása közben jelenti, de legkésőbb a program lefordításakor minden hiba megjelenik a listában. Gyakran előfordul, hogy egyetlen hiba más hibák egész sorozatát idézi elő ilyenkor az hiba elsődleges forrását kell megkeresni és kijavítani. 2. 1. 3

Forrásfájlok létrehozása A program kódját egy vagy több forrásfájlban tárolhatjuk. Ezeket a projetk különböző mappáiban tárolhatjuk, de egyelőre mi csak a Source Files mappát használjuk. 1. Kattintsunk jobb gombbal a Source Files mappára a Solution Explorerben, majd válasszuk az Add menü New Item lehetőségét. 2. Válasszuk ki a C++ File elemet, adjuk meg a fájl nevét (a legelső fájl rendszerint a main.cpp nevet kapja), majd kattintsunk az Add gombra. Megjegyzés: Elég a main nevet megadni, a.cpp kiterjesztést a Visual Studio automatikusan utána fogja illeszteni. 4

4. A program fordítása és futtatása Ahhoz, hogy a programkódból futtatható fájlt készítsünk, le kell fordítanunk (Compile és Link, egyben gyakran Build). 1. A program lefordítását az F6 -os billentyű lenyomásával, vagy a Build Build Solution menüvel indíthatjuk. 2. Ha a program nem tartalmaz hibát, az ablak bal alsó részén a Build started üzenet után megjelenik a Build succeeded. felirat. Ha a program hibás volt, a hibalistában megjelennek a hibák, alul pedig a Build failed. üzenet lesz. A program futtatásához az F5 vagy Ctrl+F5 billentyűparancsok, illetve az ezeknek megfelelő Debug Start Debugging vagy Debug Start Without Debugging menüpontok használhatók. Debugging esetén a Visual Studio hozzákapcsolódik a programhoz, lehetővé téve többek között a programfutás szabályozását vagy a változók értékeinek vizsgálatát. A program futtatásakor a Visual Studio alapértelmezés szerint megkérdezi, hogy le kívánjuk-e fordítani a program aktuális verzióját (ha még nem tettük). Többnyire ez a kívánt viselkedés, így célszerű a beállításokban átállítani az alapértelmezett műveletet. Ehhez a Tools Options menüvel nyissuk meg a beállításokat, majd navigáljuk a Projects and Solutions, Build and Run kategóriához. Itt a bekeretezett beállítást állítsuk Always build -re. 5

C++ alapok 1. Hello World! 6. cout << "Hello world!" << endl; 7. return 0; 8. } Kiíratás a szöveges kimenetre (6. sor) main függvény (4. sor) main függvény vége 0 visszatérési értékkel (7. sor) 2. Kifejezések 6. int money, start = 100000; 7. const float rate = 0.02; 8. 9. /* How much money will I have? 10. Calculate for one year. */ 11. money = start * (1 + rate); 12. cout << "After first year: " << money << endl; 1 14. // After the second year? 15. money *= 1 + rate; 16. cout << "After second year: " << money << endl; 17. return 0; 18. } Egész típusú változók létrehozása, inicializálása (6. sor) Lebegőpontos konstans létrehozása (7. sor) Többsoros komment (9-10. sor) Műveletvégzés és értékadás (11. sor) Egysoros komment (14. sor) Beíró művelet, nem kell zárójel (15. sor) 6

Pre- és posztfix inkrementálás 6. int a = 1, b = 2; 7. cout << "a = " << a << "; b = " << b << endl 8. << endl << "a = b++;" << endl; 9. a = b++; 10. cout << "a = " << a << "; b = " << b << endl 11. << endl << "a = ++b;" << endl; 12. a = ++b; 1 cout << "a = " << a << "; b = " << b << endl; 14. } Posztfix inkrementálás operátor (10. sor) Prefix inkrementálás operátor (14. sor) Sortörés az utasításban (7. és 10. sor) 4. Beolvasás és elágazás 6. int age; 7. cout << "Tell me your age!" << endl; 8. cin >> age; 9. 10. bool even = age % 2 == 0; 11. if (even && age % 3 == 1) 12. cout << "You will be rich!" << endl; 1 else if (!even && age < 24) 14. cout << "You will be happy!" << endl; 15. else 16. { 17. int timeleft = 100 - (age % 10) - age; 18. cout << "You will live for " << timeleft << " more years!" << endl; 19. } 20. return 0; 21. } Beolvasás a szöveges bemenetről (8. sor) Logikai változó létrehozása és inicializálása relációs kifejezéssel, maradékképzés (10. sor) Feltételes elágazás, logikai kifejezés (11. sor) Feltételes elágazás továbbfűzése, negálás operátor (1 sor) Feltételes elágazás egyéb ága (15. sor) Az egyéb ághoz tartozó utasításblokk (16-19. sor) 7

5. A while ciklus 6. float current, rate, target; 7. cout << "Current:\t"; cin >> current; 8. cout << "Rate:\t\t"; cin >> rate; 9. cout << "Target:\t\t"; cin >> target; 10. 11. int years = 0; 12. while (current < target) 1 { 14. current *= 1 + rate; 15. years++; 16. } 17. cout << "Years to reach target: " << years << endl; 18. return 0; 19. } Speciális karakter a szövegben ( \t a tabulátor jelölése), több utasítás egy sorban, sortörés hiánya a kiírás végén (7-9. sor) Elöltesztelő while ciklus (12. sor) A ciklushoz tartozó utasításblokk (13-16. sor) 6. A for ciklus 6. float current, rate, years; 7. cout << "Current:\t"; cin >> current; 8. cout << "Rate:\t\t"; cin >> rate; 9. cout << "Years:\t\t"; cin >> years; 10. 11. for (int i = 0; i < years; ++i) 12. { 1 current *= 1 + rate; 14. } 15. cout << "Money after " << years 16. << (years == 1? " year: " : " years: ") 17. << current << endl; 18. return 0; 19. } for ciklus és a hozzátartozó blokk (11-14. sor) A ternális logikai operátor (16. sor) 8

7. A do while ciklus 2. #include <cstdlib> #include <ctime> 4. using namespace std; 5. 6. int main() 7. { 8. //srand(time(null)); 9. int secret = (float)rand() / RAND_MAX * 10 + 1; 10. int guess; 11. 12. cout << "Guess my secret number (1 to 10)" << endl; 1 do 14. { 15. cin >> guess; 16. if (guess < secret) 17. cout << "It is a bit higher..." << endl; 18. if (guess > secret) 19. cout << "It is a bit lower..." << endl; 20. } while (guess!= secret); 21. cout << "Congratulations!" << endl; 22. return 0; 2 } A C++ sztenderd programkönyvtár beemelése a véletlenszám-generátor használatához (2. sor) A C++ időkezelő programkönyvtár beemelése az aktuális idő lekérdezéséhez ( sor) A véletlenszám-generátor inicializálása az aktuális rendszeridővel, NULL paraméterrel (8. sor) Véletlen szám generálása, egész szám lebegőpontossá alakítása (9. sor) Hátultesztelő do while ciklus és a hozzátartozó blokk (13-20. sor) Házi feladatok 1. Írj egy programot, ami a felhasználó által megadott kezdőtőkével, kamattal, és éves betéttel számolva megadja, hogy a megadott célösszeg hány év alatt érhető el, és mennyi lesz az utolsó év végén az aktuális tőke. (Gyakorló feladat) 2. Írj egy programot, ami egy másodfokú polinom három együtthatóját beolvasva kiírja a polinom valós gyökeit, vagy üzenetben tájékoztatja a felhasználót, ha nincs valós gyök. A gyökvonáshoz be kell emelni a cmath nevű programkönyvtárat. Maga a gyökvonás az sqrt( ) függvény segítségével végezhető el. (1 pont) Írj egy programot, ami beolvas egy számot a felhasználótól, majd kiszámolja és kiírja a Fibonacci sorozat első annyi elemét. (2 pont) 4. Írj egy programot, ami a felhasználó által megadott kezdőtőkével és éves betéttel számolva megadja, hogy a megadott célösszeg átlagosan hány év alatt érhető el, hogyha az éves hozam minden évben véletlenszerűen alakul 0% és 10% között. A becsléshez használt szimulációk számát a felhasználó adja meg! (5 pont) 9

Adattípusok Operátorok Character types Integer types (signed) Integer types (unsigned) char Exactly one byte in size. At least 8 bits. char16_t Not smaller than char. At least 16 bits. char32_t Not smaller than char16_t. At least 32 bits. wchar_t Can represent the largest supported character set. signed char Same size as char. At least 8 bits. signed short int Not smaller than char. At least 16 bits. signed int Not smaller than short. At least 16 bits. signed long int Not smaller than int. At least 32 bits. signed long long int Not smaller than long. At least 64 bits. unsigned char unsigned short int unsigned int (same size as their signed counterparts) unsigned long int unsigned long long int float Floating-point types double Precision not less than float. long double Precision not less than double. Boolean type bool Void type void no storage Level Precedence group Operator Description Grouping 1 Scope :: scope qualifier Left-to-right ++ -- postfix increment / decrement 2 Postfix (unary) () functional forms [] subscript Left-to-right. -> member access ++ -- prefix increment / decrement ~! bitwise NOT / logical NOT + - unary prefix 3 Prefix (unary) & * reference / dereference Right-to-left new delete allocation / deallocation sizeof parameter pack (type) C-style type-casting 4 Pointer-to-member.* ->* access pointer Left-to-right 5 Arithmetic: scaling * / % multiply, divide, modulo Left-to-right 6 Arithmetic: addition + - addition, subtraction Left-to-right 7 Bitwise shift << >> shift left, shift right Left-to-right 8 Relational < > <= >= comparison operators Left-to-right 9 Equality ==!= equality / inequality Left-to-right 10 And & bitwise AND Left-to-right 11 Exclusive or ^ bitwise XOR Left-to-right 12 Inclusive or bitwise OR Left-to-right 13 Conjunction && logical AND Left-to-right 14 Disjunction logical OR Left-to-right = *= /= %= += -= 15 Assignment-level expressions >>= <<= &= ^= = assignment / compound assignment Right-to-left?: conditional operator 16 Sequencing, comma separator Left-to-right 10