Anime programozólány C++ kóddal – c++ main függvény (belépési pont) illusztráció

C++ alapok

C++ main függvény

Mielőtt belevágnánk a C++ témába, rakjunk rendet: mi az a forrásfájl, a C++ main függvény, hogyan néz ki a programváz, mik azok a headerek (#include <…>) és mit ad a C++ stardard library.
Ha a környezeted még nincs kész, itt a két útmutató hozzá:
Dev-C++ telepítés, beállítás
Dev-C++ használata (projekt, fájl, futtatás)
A Dev-C++-t innen is le tudod tölteni: Embarcadero hivatalos oldala

A legkisebb, már hasznos C++ program

C++ main függvény – Dev-C++ konzol kimenet (Hello, C++)

A C++ main függvény mindig int típussal tér vissza A return 0; státuszkód: az operációs rendszernek üzen, hogy a program sikeresen lefutott.
Az #include <iostream> fejléccel kapjuk meg a be-/kimeneti eszközöket (pl.: std::cout)

Mi történt, amikor lefuttattad a "Hello, C++"-t?

1. Előfeldolgozás – #include

Az #include <iostream> olyan, mintha a fordítás előtt a fordító bemásolná az iostream fejléc tartalmát a fájlod elejére. Ez a fejléc adja a std::cout (kiírás), std::cin (beolvasás) neveit. Ha ezt elhagyod, a fordító nem tudja, mi az a std::cout -> hibára fog futni. 

2. Fordítás – ellenőrzés és gépi kód

A fordító végigmegy a kódon: jók-e a szintaktikai szabályok (pontosvessző, kapcsos zárójelek, létező nevek stb.) Ha rendben, a kódból objektumkód lesz.

3. Linkelés – összerakás

A linker hozzákapcsolja a programodhoz a szükséges kész elemeket a standard libraryból (pl. ami a std::cout mögött dolgozik). Ebből lesz a futtatható fájl. 

4. Futtatás – indul a main()

A programod mindig a main() függvény elején indul. Soronként lefutnak az utasítások: 

kiírja a szöveget

majd a return 0; – ezzel státuszkódot ad vissza az operációs rendszernek. Ha egyezik, azaz 0, akkor siker, ha nem 0, akkor valami gond adódott. A Dev-C++ a futás végén azt írta: „Process exited with return value 0” -> a program rendben lefutott

 

C++ main függvény előtt: include és a standard library

1. #include <…>

Előre megírt eszközök neveit hozod be, (most iostream az I/O-hoz). Mit érdemes ehhez még megjegyezni? 
iostream – kiírás a képernyőre (cout), beolvasás a billyentyűzetről (cin)
string – szöveg tárolásához, pl.: neveknél, országkódoknál, fájlneveknél. Például:
           #include <string> 
           std::string nev = „Kata”;
           nev += ” Kovacs”;           //összefűzés

vector – rugalmas tömb, mely nőhet, csökkenhet. Akkor használd, ha nem tudod, hány elemed lesz (pl. beolvasás fájlból)

limits – a std::numeric_limits családot adja. Gyakran cin.ignore(std::numeric_limits<std::streamsize>::max(),’\n’) mintához használjuk, amikor a bemeneti pufferből ki akarjuk dobni a maradékot (például egy szám után maradt entert)

iomanip – szép kiírás, oszlopszélesség, tizedesek száma, hex/dec. stb. Táblázatos kiírásoknál használd, pénzösszeg formázásánál, statisztikánál

cmath – matekos függvényeknél hasznos, sqrt, pow, abs, sin stb.

fstream – fájlolvasáshozs és -íráshoz (ifstream, ofstream). Akkor használd, ha a feladat fájlból kér adatot. 

algorithm – rendezésnél, min/max keresésnél, darabszámolásnál hasznos: sort, min_element, max_element, count_if stb.

set – elemek gyűjtéséhez hasznos, duplikátum nélkül, automatikusan elrendezve

map – képzeld el, hogy vannak címkés dobozaid. Minden doboz címkéje a kulcs, a dobozban levő tartalom pedig az érték. A kulcsok egyediek, egy címke csak egyszer szerepelhet, pl HUN – országkód, érték: hány magyar versenyző van. Akkor használd, ha össze akarsz kapcsolni két dolgot: a kulcsot az értékkel, pl.: nemzetet – darabszámmal, rajtszámot – versenyzői adatokkal

sstream – ha egy sorban több adat van és kényelmesen szét szeretnéd bontani

cctype – karaktervizsgálat. Bemenet ellenőrzésnél (szám-e), normalizálásnál (kisbetűsítés)

array – fix méretű, „biztonságosabb” tömb, ha tényleg fix a méret. Például tudod, hogy 5 elemet tartalmaz és nem kell nőnie. 

Fontos, hogy csak az include-old, amit tényleg használsz, hogy a jód tisztább és a fordítás gyorsabb legyen. Ezekről majd később lesz szó bővebben, most csak néhányat kiemeltem, ami fontos lehet. 

2. mi az az std:: ?

A standard library elemei az std névtérben vannak: std::cout, std::cin, std::string, std::vector …
Kezdőként inkább írd ki az std::-ot, egyértelműbb és elkerülöd az ütközéseket.

 

C++ main függvény

Minden C++ program kötelező belépési pontja a main() függvény, itt indul az egész programozás.
A függvény négy részből áll:

1. Visszatérési típus – amikor egy függvény lefut, valamit visszaadhat annak, aki meghívta. Ennek a „valaminek” előre megmondjuk a típusát – ez a visszatérési típus. Lehet:

      • int > egész számot ad vissza (hányat dobtál a dobókockával?)
      • double > valós számot ad vissza (mennyi volt az átlagpontszám?)
      • bool > igaz/hamis értéket ad vissza (páros szám?)
      • std::string > szöveget ad vissza (köszönés szövege)
      • void > nem ad vissza értéket, csak elvégez valamit (csak történik valami, nem hoz semmit vissza, pl Kapcsold fel a villanyt)

Példa:   
int duplaz(int x) {
return 2 * x;
}
//visszatérünk az x kétszeresével (egész szám)

bool paros(int n) {
return n % 2 == 0;
}
//n: egy változó. A függvény ide kapja meg a számot, amit ellenőriznünk kell. 
% – maradékos osztás. pl. a % b = maradék. ha 8%2=0 (nem marad semmi, tehát páros). ha 13%2=1
== egyenlőségvizsgálat. Kérdés a gépnek: egyenló-e a jobb és a bal oldal. n%2 == 0 akkor igaz, ha az osztás maradéka 0

#include <string>
std::string udvozol(const std::string& nev) {
return „Szia, ” + nev + „!”;
}

#include <iostream>
void kiirSzoveg(const std::string& s) {
std::cout << s << ‘\n’;
}
//void – nincs visszatérési érték. A függvény csak elvégez valamit (kiír valamit itt a képernyőre és kész). 
kiirSzoveg – a függvény neve

Mit tudsz most?

  • mi a forrásfájl és a header, hogyan hozunk be eszközöket az #include <…> – val
  • mi a standard library és az std:: névtér szerepe
  • a main() a belépési pont; int státuszkódot ad vissza (0=siker)

Szuper munka!

 

Ha a C++ main függvény és a programváz világos, ugorjunk tovább az adatok kiírására és beolvasására:

➡️ Következő lecke: C++ be- és kimenet – cout, cin (iostream) »
⬅️ Vissza az áttekintő oldalra: C++ alapok – összes lecke »

 

Lecke vége: anime lány V-jelet mutat, laptopon Visual Studio Code, mellette bögre tea és alvó cirmos macska, konfettivel.