Hogyan lehet a legkönyebben megtanulni (megérteni) a programozást?
Akkor fogod érteni miről is szól a programozás elsajátítása, ha megtanulod magad megoldani a problémát, logikát felépíteni, vagyis ki tudod találni a dolgokat mit hogyan kapcsolj össze. Ez egy teljesen külön világ az életben, nem hasonlítható nagyon másik szakmához. Most mesélek valamit, kicsit hosszabbra sikeredett, de személyes élményeim.
Saját tapasztalatom szerint a C# nem nehéz nyelv kezdőknek. Tudom hogy én az életben mindent fordított sorredben csinálok, de higgyétek el, hogy akkor kezdtem érteni a progit, amikor a Win ablakos aplikációkat kezdtük tanulni, magyarul az eseménykezelt programozásnál kezdtem érteni az egész programozás lényegét. Aztán kezdetben volt az a sok-sok IF meg IF meg IF aztán jött az ELSE majd az IF ELSE megértése (nálam végül is a struktúrált programozás fejlődött ki ösztönösen, és nem éppen az OOP, hiába a C# oop nyelv :D )...aztán jöttek az int-ek, string, később float. aztán kezdtem érteni, hogy mire jó ha meghívok egy metódust, vagyis ha egy külön void-ba pakolom a kódsorozatot. Valamint nagyon sokat jelentett, ha statikusan tudtam létrehozni egy adattagot, hogy azt akárhonnét előhívjam és módosítsam akár másik osztályon belül is :D Persze nekem mint amatőrnek volt egy kisgyerekkori álmom/vágyam, hogy játékot készítsek (2D-s platform), és közel 0 tudás mellett lekaptam az XNA Game Studio-t a C# mellé, és rögtön platform játékot akartam írni. Ami sikerült is egy nagy kusza kódhalmazzal nagynehezen, csak nem tudtam az elemeket példányosítani. Aztán valaki ajánlotta a konstruktort, amit 1x csak (kb. 1 év kínkeserves nézegetés után) megértettem teljesen min alapszik, azzal egyhuzamban jött a for meg a foreach megértése, később a while is, meg hogy azt mikor szabad használni. Csak mindezek után döntöttem úgy, hogy kicsit belenézegetek a sima konzolos aplikációkba, amik fekete-fehér alapon rajzolódnak ki előtted, vagyis semmi motivációja nincs.
Személyes tapasztalatom, hogy a hozzám hasonló nehéz fejűeket (alacsonyabb IQ-s egyéneket, és itt nem gondolok most senkire, hanem akik az én szorult helyzetemben vannak) is meg lehet(ne) tanítani a progrmaozásra, csak az életben tudni kéne magyarázni (pl. lerajzolni vagy prezentálni, akár kicsi animációt is készíteni egy ciklus lezajlásáról pl.), és hétköznapi példákkal hasonlítgatni egy-egy kódrész magyarázatát. Pl. nem értem a suliban mértnem lehetett a feltételkezelést így magyarázni, hogy:
"Képzeljetek el egy ajtót. Egy sima IF annyiból állna, ha húzom a kilincsénél fogva, akkor nyílik kifelé, ha elengedem úgy marad. Ha akarom hogy becsukódjon, akkor ha azután benyomok egy ELSE-t, szépen becsukódik mindig magától, mindaddig, amíg újra meg nem fogom a kilincset és nem kezdem el húzni, akkor megint érvénybe lép az IF"
Jó tudom ez nagyon dedós példa, de én az életben nagyon sok helyen hiányoltam az ilyen jellegű magyarázatot/oktatást. Meg egy később érő személy hogy értse meg mi az hogy for ciklus, mi a t***met csinál az, mi az hogy indexekkel ellátja egy lista elemeit, mi a zárójelben az a 3 darab kódrészecske pontosvesszővel elválasztva. Persze mostmár értem mindezt, csak az idő többszörösére volt szükségem hogy fel tudjam ezeket fogni, nem úgy mint egy átlag diáknak, akinek minden megy elsőre simán könnyen és gyorsan.
De a kérdésedre hogy válaszoljak röviden, én igazából csak akkor kezdtem el érteni a programozást, amikor már a suliban végzős voltam, addig szar jegyek, uncsi, nem értettem SEMMIT. Aztán saját magam készítettem ilyen kis semmilyen példákat Win ablakos környezetben. A legelső tán az volt, hogy rajzoltam egy kis házat, arra tettem transzparens png textúrát, azok voltak az égők. A különböző gombok a progiban az égők ki/bekapcsolására (képek megjelenítésére) szolgáltak, majd ami nekem akkor húúú de nehezen jött össze, hogy berakjak egy számlálót (TimerTick), és automatizáljam az égők ki-be kapcsolását, vagyis időre volt meghatározva meddig legyen bekapcsolva, és kikapcsolva. Aztán ilyesmiken keresztül lassan-lassan rávette magam a tanulásra (természetesen sok mindent összeszedtem fórumokról, legtöbbet a jatekfejlesztes.hu-ról ahol sokan segítettek válaszolni a progblémámra), persze mindez nem történt volna meg, ha nem az a célom, hogy játékot készítsek 1x. Aztán most úgy érzem jóval többet kaptam tudásból, mint amire számítottam anno.
Azért nem tanítják meg rendesen, mert azok mennek infótanárnak, akik nem igazán értenek a programozáshoz. Persze lehet, hogy van egy-két kivétel, de a legtöbb infótanár az ilyen.
Az IF-es példát mondjuk nem értettem teljesen :D Az IF feltételhez kötéshez jó, pl. HA az ajtó csukva van, akkor ne menj át rajta.
Egyébként tényleg az a legjobb, ha úgy kezded el e programozást, hogy felfedezed te magad a dolgokat. Kell tanulni is mellette, de ha csak unalmas magolni való dolog lesz az egész, akkor az semmire sem jó. Én azt javaslom, hogy ne egy összetett nyelvel kezdjen valaki, hanem minél egyszerűbbel. Pl. sokan írták itt a Phytont, az is jó. A C#-al meg a JAVA-bal az lehet a gond, hogy feleslegesen túlbonyolított kódot készít az illető.
Rendkívül gagyi ez az ifes példa, ráadásul meglehetõsen félrevezetõ is, úgy hogy ne erõltesd már légyszíves.
Egy egyszerû elágazáson meg nem tudom mit nem lehet érteni, akinek ehhez 2 és 3D-s ajtók kellenek az lehet rossz szakmát választott...
Ha hétköznapi példát akarsz, akkor már inkább ez:
1. if-else: "Ha (IF) süt a nap (feltétel), akkor (THEN) elmegyek sétálni (igaz-ág), különben (ELSE) otthon maradok takarítani (hamis-ág)"
2. while-do: "Ha (while) száraz a virág földje (feltétel), akkor addig (while) locsolom (ciklusmag), amíg száraz a földje (feltétel)"
3. do-while: "Indulj északnak (ciklusmag), és mindaddig menj északnak, amíg oda nem érsz (feltétel)."
A te IF-es példádnak az a hibája, hogy egy valami folyamat van mögötte. Nem, ez egy egyszeri döntés egy feltétel alapján. Nincs egy folyamatosan csukodó ajtó. Mondhatod, hogy jó a hasonlatod, de fölöslegesen bonyolítottad és vettél bele valamit, ami amúgy nincs benne és nem is kell bele.
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!