a c++ programozÁs alapjai -...

10
1 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.

Upload: others

Post on 08-Sep-2019

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: A C++ PROGRAMOZÁS ALAPJAI - mit.bme.humit.bme.hu/~molnarv/corvinus/seminar1/02_basics_handout.pdf · 1 A C++ PROGRAMOZÁS ALAPJAI 2. óra – IDE, Változók, vezérlési szerkezetek

1

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.

Page 2: A C++ PROGRAMOZÁS ALAPJAI - mit.bme.humit.bme.hu/~molnarv/corvinus/seminar1/02_basics_handout.pdf · 1 A C++ PROGRAMOZÁS ALAPJAI 2. óra – IDE, Változók, vezérlési szerkezetek

2

3. 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.

Page 3: A C++ PROGRAMOZÁS ALAPJAI - mit.bme.humit.bme.hu/~molnarv/corvinus/seminar1/02_basics_handout.pdf · 1 A C++ PROGRAMOZÁS ALAPJAI 2. óra – IDE, Változók, vezérlési szerkezetek

3

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 (3.).

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.

1. 2.

3.

Page 4: A C++ PROGRAMOZÁS ALAPJAI - mit.bme.humit.bme.hu/~molnarv/corvinus/seminar1/02_basics_handout.pdf · 1 A C++ PROGRAMOZÁS ALAPJAI 2. óra – IDE, Változók, vezérlési szerkezetek

4

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.

Page 5: A C++ PROGRAMOZÁS ALAPJAI - mit.bme.humit.bme.hu/~molnarv/corvinus/seminar1/02_basics_handout.pdf · 1 A C++ PROGRAMOZÁS ALAPJAI 2. óra – IDE, Változók, vezérlési szerkezetek

5

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.

3. 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.

Page 6: A C++ PROGRAMOZÁS ALAPJAI - mit.bme.humit.bme.hu/~molnarv/corvinus/seminar1/02_basics_handout.pdf · 1 A C++ PROGRAMOZÁS ALAPJAI 2. óra – IDE, Változók, vezérlési szerkezetek

6

C++ alapok 1. Hello World!

1. #include <iostream> 2. using namespace std; 3. 4. int main() 5. { 6. cout << "Hello world!" << endl; 7. return 0;

8. }

Kulcspontok:

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

1. #include <iostream> 2. using namespace std; 3. 4. int main() 5. { 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; 13. 14. // After the second year? 15. money *= 1 + rate; 16. cout << "After second year: " << money << endl; 17. return 0; 18. }

Kulcspontok:

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)

Page 7: A C++ PROGRAMOZÁS ALAPJAI - mit.bme.humit.bme.hu/~molnarv/corvinus/seminar1/02_basics_handout.pdf · 1 A C++ PROGRAMOZÁS ALAPJAI 2. óra – IDE, Változók, vezérlési szerkezetek

7

3. Pre- és posztfix inkrementálás

1. #include <iostream> 2. using namespace std; 3. 4. int main() 5. { 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; 13. cout << "a = " << a << "; b = " << b << endl; 14. }

Kulcspontok:

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

1. #include <iostream> 2. using namespace std; 3. 4. int main() 5. { 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; 13. 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. }

Kulcspontok:

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 (13. sor)

Feltételes elágazás „egyéb” ága (15. sor)

Az „egyéb” ághoz tartozó utasításblokk (16-19. sor)

Page 8: A C++ PROGRAMOZÁS ALAPJAI - mit.bme.humit.bme.hu/~molnarv/corvinus/seminar1/02_basics_handout.pdf · 1 A C++ PROGRAMOZÁS ALAPJAI 2. óra – IDE, Változók, vezérlési szerkezetek

8

5. A while ciklus

1. #include <iostream> 2. using namespace std; 3. 4. int main() 5. { 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) 13. { 14. current *= 1 + rate; 15. years++; 16. } 17. cout << "Years to reach target: " << years << endl; 18. return 0;

19. }

Kulcspontok:

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

1. #include <iostream> 2. using namespace std; 3. 4. int main() 5. { 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. { 13. current *= 1 + rate; 14. } 15. cout << "Money after " << years 16. << (years == 1 ? " year: " : " years: ") 17. << current << endl; 18. return 0;

19. }

Kulcspontok:

for ciklus és a hozzátartozó blokk (11-14. sor)

A ternális logikai operátor (16. sor)

Page 9: A C++ PROGRAMOZÁS ALAPJAI - mit.bme.humit.bme.hu/~molnarv/corvinus/seminar1/02_basics_handout.pdf · 1 A C++ PROGRAMOZÁS ALAPJAI 2. óra – IDE, Változók, vezérlési szerkezetek

9

7. A do…while ciklus

1. #include <iostream> 2. #include <cstdlib> 3. #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; 13. 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;

23. }

Kulcspontok:

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 (3. 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)

3. Í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)

Page 10: A C++ PROGRAMOZÁS ALAPJAI - mit.bme.humit.bme.hu/~molnarv/corvinus/seminar1/02_basics_handout.pdf · 1 A C++ PROGRAMOZÁS ALAPJAI 2. óra – IDE, Változók, vezérlési szerkezetek

10

Ad

attí

pu

sok

Character types

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.

Integer types (signed)

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.

Integer types (unsigned)

unsigned char

(same size as their signed counterparts)

unsigned short int

unsigned int

unsigned long int

unsigned long long int

Floating-point types

float

double Precision not less than float.

long double Precision not less than double.

Boolean type bool

Void type void no storage

Op

erát

oro

k

Level Precedence group Operator Description Grouping

1 Scope :: scope qualifier Left-to-right

2 Postfix (unary)

++ -- postfix increment / decrement

Left-to-right () functional forms

[] subscript

. -> member access

3 Prefix (unary)

++ -- prefix increment / decrement

Right-to-left

~ ! bitwise NOT / logical NOT

+ - unary prefix

& * reference / dereference

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