Tantárgy neve, kódja: C programozási alapok, GSZABAN-CPROALAP-1

Szak neve, képzési szintje: szabadon választható, BSc
Tanterv: 2023
Heti órászám (előadás + gyakorlat + labor): 2+0+2
Kreditérték: 4
Elmélet: 50 %
Gyakorlat: 50 %
A tantárgy tantervi helye: 2. félév
Munkarend: Nappali
Előtanulmányi feltételek:
Értékelés: gyakorlati jegy
Tantárgy besorolása:
Oktatás nyelve: Magyar
Tantárgyfelelős: Dr. Csík Norbert
Felelős tanszék: Informatika Tanszék
Tantárgy oktatója(i): Dr. Csík Norbert , Farkas Attila
Ellenőrzésért felel: Dr. Csík Norbert
Tárgy oktatásának célja:
A tárgy célja az algoritmikus gondolkodás fejlesztése, egyszerűbb, C/C++ nyelven írt konzolos programok fejlesztésének elsajátítása.
Elsajátítandó ismeretanyag előadás:

1. Fordítók, platformok. 2. C/C++ nyelvi alapok, különbségek. 3. Programozási stílusok, kommentek, hibakeresés, „unit”-teszt. 4. Szekvenciális programozási alapok. 5. Statikus és dinamikus változók, pointerek 6. Tömbök, struktúrák. 7. Műveletek változókkal. 8. Vezérlési szerkezetek, ciklusok. 9. Konzolos megjelenés kezelése, fájlkezelés. 10. Függvények, függvénypointerek, paraméterátadás. 11. Programok bonyolultságelemzése. 12. Betekintés az ARDUINO világába. 13. Szintézis óra


Elsajátítandó ismeretanyag laboratórium:

01. CodeBlocks telepítése, megismerése. 02. Projekt felépítése, létrehozása, "Hello Word" alkalmazás elemzése. 03. Header-ek, define-ok, makrók (ghost coding könyvtár kipróbálása) 04. Egyszerű bekérés és konzolos kiíratás (nyelvi tábla beállítása, printf, scanf) 05. Vezérlési szerkezetek, ciklusok bemutatása 06. Szimulációk differenciaegyenletekkel (ciklusok, fetételvizsgálat) 07. Tömbök. Tömbök bejárása. Műveletek struktúrákkal, struktúratömbök. 08. Pointerek alkalmazása lista megírása (struktúrák listája), listaműveletek 09. Monte-carlo szimuláció, fixpont-kontrakciós probléma megoldása programmal 10. Függvény, elsjárás, rekurzió 11. Kommunikáció ARDUINO-val (windows.h, API) 12. OpenGL alapú grafika használata 13. Egyéni grafikával kiegészített szimuláció bemutatása

Elsajátítandó szakmai kompetenciák (tudás, képesség, attitűd, autonómia és felelősség, további szakmai kompetenciák):
Tudása:

Megkeresi és elhárítja az otthoni és kisvállalati informatikai környezetben jelentkező hardveres és szoftveres hibákat. Internetes források és tudásbázisok segítségével követi, valamint feladatainak elvégzéséhez lehetőség szerint alkalmazza a legmodernebb információs technológiákat és trendeket (IoT, stb.). Az elkészült termékhez prezentációt készít és bemutatja, előadja azt munkatársainak, vezetőinek, ügyfeleinek. Az általa végzett szoftverfejlesztési feladatok esetében kiválasztja a legmegfelelőbb technikákat, eljárásokat és módszereket. A tiszta kód elveinek megfelelő, megfelelő mennyiségű megjegyzéssel ellátott, kellőképpen tagolt, jól átlátható, kódot készít. Manuális és automatizált szoftvertesztelést végezve ellenőrzi a szoftver hibátlan működését, dokumentálja a tesztek eredményét. Szoftverfejlesztés vagy -tesztelés során felmerülő problémákat old meg és hibákat hárít el webes kereséssel és internetes tudásbázisok használatával.

Képességei:

Ismeri az otthoni és kisvállalati informatikai környezetben leggyakrabban felmerülő hibákat és azok elhárításának módjait. Naprakész információkkal rendelkezik a legmodernebb információs technológiákkal és trendekkel kapcsolatban. Ismeri a hatékony prezentálás szabályait, a prezentációs szoftverek lehetőségeit. Elegendő ismerettel rendelkezik a meghatározó szoftverfejlesztési technológiák (programozási nyelvek, keretrendszerek, könyvtárak stb.), illetve módszerek erősségeiről és hátrányairól. Ismeri a tiszta kód készítésének alapelveit. Ismeri a unit tesztelés, valamint más tesztelési, hibakeresési technikák alapelveit és alapvető eszközeit. Ismeri a hibakeresés szisztematikus módszereit, a problémák elhárításának lépéseit. Ismeri a munkájához kapcsolódó internetes keresési módszereket és tudásbázisokat.

Attitűdje:

Nyitott és érdeklődő a legmodernebb információs technológiák és trendek iránt. Törekszik a tömör, lényegre törő, de szakszerű bemutató összeállítására. Nyitott az új technológiák megismerésére, tudását folyamatosan fejleszti. Törekszik arra, hogy az elkészített kódja jól átlátható, és mások számára is értelmezhető legyen. Törekszik a mindenre kiterjedő, az összes lehetséges hibát felderítő tesztelésre, valamint a tesztek körültekintő dokumentálására. Törekszik a hibák elhárítására, megoldására, és arra, hogy azokkal lehetőség szerint ne okozzon újabb hibákat.

Autonómia és felelősség:

Önállóan behatárolja a hibát. Egyszerűbb problémákat önállóan, összetettebbeket szakmai irányítással hárít el. Önállóan szerez információkat a témában releváns szakmai platformokról. A projektcsapat tagjaival egyeztetve, de önállóan elkészíti az elvégzett munka eredményét bemutató prezentációt. Önállóan dönt a fejlesztés során használt technológiákról és eszközökről. Saját fejlesztésként megvalósított kisebb projektekben önállóan végzi a tesztelést, tesztelői szerepben nagyobb projektekben irányítás mellett végez meghatározott tesztelési feladatokat. Internetes információszerzéssel önállóan old meg problémákat és hárít el hibákat.

További szakmai kompetenciák:


A számonkérés és értékelés rendszere:
Félévközi tanulmányi követelmények:
Egyéni beadandó projekt késztése (fájlkezelés, grafikus megoldás, stb.)
Vizsgakövetelmények:

Tanulmányi segédanyagok, laborháttér:

A hallgatók a számítógépes laborban vesznek részt az oktatáson, célszerűen saját gépeiket igénybe véve. Azok számára, akik nem rendelkeznek saját géppel 15 fő erejéig tudunk iskolai gépet rendelkezésre bocsátani – emiatt bár nem kitétel, de az otthoni gyakorláshoz és a projektek hordozhatóságának biztosításához erősen ajánlott saját laptop használata.

Kötelező irodalom:

[1] Herbert Schild: C/C++ referenciakönyv, Panem kft., 1998. [2] Benkő László, Benkő Tiborné, Tóth Bertalan: Programozzunk C Nyelven!, Computerbooks, 2010.

Ajánlott irodalom:

[1] Fehér Krisztián: Programozz C nyelven!, Fehér Krisztián Dezső, 2022 [2] Stephen R. Davis: C++ Tantusz Könyvek, Taramix Kiadó Kft, 2021