El szeretnék kezdeni programozást tanulni de sajnos fogalmam sincs hogy hogyan álljak neki és minek hol kezdjem el?
A logikáját akkor is meg értened
Javascriptben meg nem a legkönnyebb játékot csinálni...
Mit szólnál egy C tutorialhoz? Csak előtte tisztázzunk egy pár dolgot.
Ugye, programot azért készítünk, hogy egy adott feladatot elvégezzen helyettünk vagy segítsen nekünk valamiben (pl. tudjunk böngészni a neten, tudjunk zenét és videót vágni, rajzolni, stb.). Ahhoz, hogy a gépünk csináljon valamit, utasításokat kell neki adni. Magyarán szólva egy program sok-sok utasításból fog állni.
A programunk kezdetben valamilyen háttértárolón van, pl. merevlemezen, SSD-n, pendrive-on, CD-n, DVD-n stb. Ezek a tárolók marha lassúak, míg a processzor marha gyors. Ahhoz, hogy a programunk gyorsan fusson, egy nagyon gyors tárolóba kell bekerülnie, a memóriába, RAM-ba. Szóval amikor elindítasz valamit, a program a lemezről a memóriába másolódik fel.
Említettem ugye, hogy a program sok-sok utasításból áll. De a sok utasítás közül honnan tudjuk, hogy melyiknél kezdődik a program? Ezért minden programnak kell lennie egy ún. belépési pontnak. Ez a belépési pont jelöli a program legelső utasítását.
Mint mondtam, azért írunk programokat, hogy valamilyen feladatot elvégezzenek nekünk. Na ezt a feladatot a programnak vagy sikerül megcsinálnia, vagy nem. De ezt mindenképpen vissza kell jeleznie minden olyan ponton, ahol a program véget érhet valami miatt. Ezt nevezzük hibakódnak vagy angolul "exit code"-nak. A mai rendszerek szemlélete szerint egy program akkor futott le sikeresen, ha a 0 hibakódot adta vissza. Minden más esetben hiba történt. Ez sok szempontból hasznos lesz majd nekünk:
- Az operációs rendszer eldöntheti, hogy kell-e hibakeresést végeznie a programon és tanácsot adhat a hiba megoldására
- Írhatsz például egy ún. shell scriptet is, aminek a futása ettől a hibakódtól függ (ha sikerült megcsinálnia valamit, akkor örülünk, de ha nem, megpróbálhatja máshogy)
- stb.
Eddigi nagy ismereteinket felhasználva írjuk is meg az életünk első C nyelvű programját, ami az égvilágon nem csinál semmit, de azt sikeresen csinálja.
int main() { //ez a program belépési pontja - C-ben gyakran int main() {...} alakú
.. return 0; //itt jelezzük vissza, hogy a programunk sikeresen lefutott
} //itt ér véget a program
A // jelzi a programkódban a megjegyzést. Ez csak minket, embereket segít, hogy megértsük, mi miért van ott a programkódban. Ezt egy .c kiterjesztésű fájlban kell elmentened.
Pro tip: Tagold a kódot, hogy átlátható legyen! A C-szerű nyelvekben a {} közti részt mindig egy tab-bal beljebb kezdd! Tekintve, hogy ez az oldal letakarítja az ilyen tagolásokat, én ..-tal jeleztem.
Ha azt akarjuk, hogy a program ne csináljon semmit, de még az se sikerüljön neki, akkor egy 0-tól különböző hibakódot adunk vissza:
int main() {
.. return 1;
}
Most álljunk meg egy kicsit, mert ebben a 3 soros kódban még mindig van mit megbeszélni. Azt a return ...;-ot utasításnak nevezzük. A C-szerű nyelvekben onnan lehet felismerni egy utasítást, hogy ; áll utána. Ezt kötelező kitenni utasítások után, ha a fene fenét eszik is. Szokás olyat elkövetni, hogy egy sorba egy utasítást írunk. Na nézzük, mi lehet egy utasítás:
- lehet üres utasítás - ez szó szerint semmit sem csinál. A programkódban a C-szerű nyelvek nem jelölik semmi sem, de mivel utasítás, ezért ;-el le kell zárni. Példa:
void proba() { //ez most nem belépési pont, csak egy sima eljárás.
.. ;
}
- lehet egy kifejezés. Példa: 5; 5+3; stb.
- lehet deklaratív utasítás - erről azt kell tudni, hogy ezzel hozol létre valamit, pl. változót vagy konstanst: int i; int j = 5; const int a = 8;
- lehet értékadó utasítás - ezzel adhatsz értéket a változóidnak, pl. i = 5; j = 5+6;
- lehet eljáráshívás - hogy mi az az eljárás, arról majd később, de például ehhez fogsz nyúlni, ha ki akarsz valamit írni a képernyőre: puts("Hello World!");
- lehet vezérlő utasítás - ebből 5 darab van a C nyelvben: break; continue; goto [címke]; return; return [kifejezés];
Még egy dolog van, amit itt nem tisztáztunk: mit lehet "legkívülre" írni, azaz a main()-en kívülre. Oda szoktunk olyanokat tenni, mint pl. eljárások, függvények, és a nagyon gyakori #include-os sorokat.
Na most már jussunk el odáig, hogy kiírunk valamit a képernyőre:
#include <stdio.h>
int main() {
.. puts("Hello World");
.. return 0;
}
Szerencsére az életben vannak olyan dolgok, amiket már előkészítettek nekünk, így azt nem kell nekünk megírni a nulláról. Ilyen például a kiíratás. Egy életszerű példán keresztül bemutatva, ha te vajas kenyeret akarsz enni, elmész a boltba kenyérért és vajért, és nem te fogod bedagasztani és lesütni a kenyeret valamint megcsinálni a vajat. Csak ehhez annyit kellett tudnod, hogy hol kaphatsz kenyeret és vajat. Ez a #include-os dolog pont ezt jelentené, hogy használtam olyan dolgokat, amiket a fordító egy másik fájlban fog megtalálni. Ennek két változata van:
#include <fájlnév>
#include "fájlnév"
Feltűnhet, hogy utána nem áll pontosvessző. Ez azért van, mert nem utasítás, hanem egy kis jelzés a fordítónak. A #-tel kezdődő sorokat ún. fordítói direktíváknak nevezzük.
Szóval, a két #include közt az a különbség, hogy az első egy ún. "include path"-ban keresi a fájlt. Ez azt jelenti, hogy a gépeden van egy speciális célú könyvtár, ami az olyan fájlokat tartalmazza, amiket te felhasználhatsz a programodban. Ezekről a fájlokról azt kell tudni, hogy nem te készítetted őket, hanem valaki más adta oda neked, hogy használhasd.
A második #include-ot akkor fogod használni, amikor a programod már olyan összetett lesz, hogy jobban átlátható, ha egyes részeit külön fájlokba teszed feladatuk szerint. Ez a #include a te .c kiterjesztésű fájlod könyvtárához viszonyítva fogja keresni a kért fájlt. Például a .c fájlod legyen a:
D:\valami\proba.c
Az ebben lévő
#include "..\valami.h"
A D:\valami.h fájlt fogja betölteni.
Regélhetnék a végtelenségig, erre már megvan a szakirodalom. Én valahogy így kezdeném el a helyedben.
Szerintem ettől el is ment a kérdező kedve. :-)
Próbáld ki a Pythont, az kicsit kevésbé körülményes.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!