- (1. resz) Full stack fejlesztő önállóan, kezdőknek
- (2. resz) Programozás alapjai Go nyelven
- (3. resz) Hálózat programozás alapjai Go nyelven
- (4. resz) Backend fejlesztés Go nyelven
- (5. resz) Adatbázisok: hogy működnek, hogy válasszunk?
- (6. resz) Frontend fejlesztés alapjai
Ebben a cikkben a progromozás alapjait fogjuk átnézéni, egyszerű példákon keresztül.
Mi a program?
A program egy olyan utasítássorozat amit a számítógép végre tud hajtani. A számítógépnek két része van, ami most fontos nekünk. A processzor (CPU) és a memória (RAM).
Processzor: Van egy utasítás készlete. Amikor a gép futtatja a programot, akkor a processzor sorban végig megy az utasítássorozaton ami a programban van és végrehajtja. Ilyen utasítások lehetnek pl.: összeadás, kivonás, adat mozgatás és még sok másik.
Memória: Egy tároló, ami kis részekre van felosztva és minden résznek van egy száma (cím). A processzor a memóriában lévő adatokkal tud műveleteket végezni.
Példa egy konkrét programra: “c7 45 f4 0a 00 00 00 c7 45 f8 02 00 00 00 c7 45 fc 00 00 00 00 8b 55 f4 8b 45 f8 01 d0 89 45 fc”. Ez az utasítássorozat kiszámolja mennyi 10+2 és tárolja az eredmenyt a memóriában.
Mi a programnyelv?
Ha alaposan megfigyeljük az előbbi programot, észrevehetjük hogy, ha igy kellene programozni, nem sok programozó lenne.
A programnyelvek olyan programok, amikben könnyebben érthető módon tudjuk leírni a programunkat és az alapján a programnyelv létre hozza a megfelelő gépi utasításokat. Rengeteg féle programnyelv van.
Pythonban például így néz ki:
a = 10
b = 2
eredmeny = a+b
(A Python program nem pontosan ugyan azokat a gépi utasításokat fogja végrehajtani)
A Go programnyelv
A Go a Google által fejlesztett programnyelv. Arra tervezték hogy:
- Egyszerű legyen megtanulni
- Támogassa a csapatmunkat, sok csapat tudjon egy programon hatékonyan dolgozni
- Támogassa a nagy méretű programok fejlesztését
- Gyors legyen
- Beépítetten támogassa a többszálú végrehajtást
A Go Playground-on egyszerűen le lehet futtatni a példa kódokat, de érdemes telepíteni a gépre.
A Go nyelvről részletesebben a Learning Go könyvből érdemes tanulni.
Az első programkódunk
Feladat: írassuk ki a programmal hogy “Hello World”!
|
|
Ha sikerült lefuttatni, nézzük meg, mi mit jelent:
Változók
A változókat úgy képzelhetjük el mint dobozokat, amikbe dolgokat tudunk tenni, azzal a megkötéssel hogy ha valamit beleteszünk a dobozba, akkor ami előtte benne volt, megsemmisül.
Technikailag a váltzók, eszközök a programnyelvekben, amin keresztül a memóriát használhatjuk, így nem közvetlenül memóriacímekkel kell dolgoznunk.
Ahhoz hogy használni tudjuk a változókat, 3 fontos dolgokat kell tudnunk:
- Neve: A változókra a nevével tudunk hivatkozni a kódban.
- Típusa: A háttérben minden adat csak byteok sorozata. A típus azt mondja meg, miként kell értelmeznünk a bytesorozatot és milyen műveleteket végezhetünk rajta. Pl: int (egész szám), float (tört szám), bool (igaz / hamis), string (szöveg).
Feladat: írjunk programot, ami kiírja mennyi 10+2, változók használatával (hasonlóan mint a gépi kód fentebb)!
|
|
A kiemelt sorok magyarázata:
Az a változóhoz tartozó memóriarészt állítsd be 10-re .
Az b változóhoz tartozó memóriarészt állítsd be 2-re.
Foglalj le helyet egy átmeneti változónak, az értéke legyen a + b.
A sum változóhoz tartozó memóriarészt állítsd be az átmenti változó értékére.
Mire szoktuk használni a változókat?
- Fix érték (konstans): Létrehozás után nem változik az értéke a program futása során, pl a PI értéke.
- Léptető: Ciklusoknál fordul elő általában, később lesz róla szó részletesebben.
- Jelölő: Azt jelöljük meg vele hogy valami megtörtént, pl.: volt-e hiba, kész-e a feladat, el kell-e végezni egy feladatot.
- Iterátor: Adatszerkezetek bejárására használjuk, pl.: vigigmenni egy lista vagy fa minden elemén.
- Legutolsó érték tárolója: Amikor egy lista elemeit akarjuk feldolgozni, ebben tárololjuk amit éppen sorra került.
- Keresett érték tárolója: Amikor egy listán vigigmegyünk (általában keresünk valamit, pl legkisebb vagy legnagyobb elem), akkor ebben tároljuk a legutolsó elemet amit megtaláltunk.
- Gyűjtő: Amikor egy listát feldolgozunk, ebbe a változóba gyűjtjük és összegezzük az adatokat. Pl egy számsorozat összege.
- Tároló: Tárolunk benne több dolgot egyszerre, amit később fel akarunk dolgozni. Pl fák, gráfok, listák.
- Követő: Bizonyos algoritmusoknál amikor egy listát feldolgozunk, nem csak az aktuális elemre van szükségünk, hanem az azt megelőzőre is. Ezt tároljuk ebben.
- Rendező: Van amikor az adatokat más formában is tárolnunk kell, hogy hatékonyabban tudjunk dolgozni vele. Pl keresésnél néha a listákat hash táblává rendezzükat át.
- Átmenti: Csak rövid ideig kell, átmeneti adatok tárolására.
A változók szerepéről az eredeti tanulmány.
Ciklus (ismételt végrehajtás)
Az előbbi listában sokszor szerepelt a “lista feldolgozása”. Amikor egy listát dolgozunk fel, akkor egy kódrészletet akarunk lefuttatni annyiszor, amennyi elem van a listában. Vagy addig akarunk ismételni egy kód részletet amig nem végzett a program. Ezekre és a hasonló feladatokra ciklust használunk.
Feladat: írjunk programot, ami összeadja a számokat 1-től 10-ig!
|
|
A kiemelt sorok magyarázata (nagy kép):
A “i := 1; i <= 10; i++” részletesebben:
Tehát a ciklus végrehajtása így fog kinézni:
Kérdés: mennyi lesz a sum változó értéke?
Elágazás (feltételes végrehajtás)
A ciklusoknál láttuk hogy a számítógép képes, bizonyos feltételek esetén különböző utasításokat végrehajtani. Ez a programkódban közvetlenül nem jelent meg, de amikor az i <= 10 feltétel igaz, akkor olyan utasítást hajt végre a processzor, hogy a ciklusmag elején keresse a következő utasítást, amikor hamis, akkor pedig a ciklusmag vége után.
Bármilyen utasításnál meg lehet oldani, hogy bizonyos feltételek esetén fusson csak le. Pl.: ha az óra 9-et mutat azt írjuk ki hogy “Jó napot!”, ha többet, akkor azt hogy “Mikor lesz már vége a napnak?”.
Feladat: írjunk programot, ami kiírja hogy nyár van-e. Ha 6. 7. vagy 8. hónapban vagyunk akkor nyár van, különben nincs.
|
|
A kiemelt sorok magyarázata: