Budapest University of Technology and Economics, Faculty of Electrical Engineering and Informatics

    Belépés
    címtáras azonosítással

    vissza a tantárgylistához   nyomtatható verzió    

    A programozás alapjai 1

    A tantárgy angol neve: Basics of Programming 1

    Adatlap utolsó módosítása: 2017. június 27.

    Budapesti Műszaki és Gazdaságtudományi Egyetem
    Villamosmérnöki és Informatikai Kar
    Villamosmérnöki szak, BSc képzés

    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIHIAA01 1 2/2/2/f 7  
    3. A tantárgyfelelős személy és tanszék Dr. Fiala Péter,
    4. A tantárgy előadója
    Név:
    Beosztás:
    Tanszék, Int.:
    Dr. Zsóka Zoltán
    docens
    Hálózati Rendszerek és Szolgáltatások Tanszék
    Vitéz Andrásadjunktus
    Hálózati Rendszerek és Szolgáltatások Tanszék 
    Dr. Fiala Péter
    adjunktusHálózati Rendszerek és Szolgáltatások Tanszék 

    Az előadók eléréséhez szükséges adatok a tanszék honlapján megtalálhatók:

    https://www.hit.bme.hu/portal/args/munkatarsak/oktatok_kutatok

     

    5. A tantárgy az alábbi témakörök ismeretére épít -
    6. Előtanulmányi rend
    Kötelező:
    NEM ( TárgyEredmény( "BMEVIHIA106", "jegy" , _ ) >= 2
    VAGY TárgyEredmény("BMEVIHIA106", "FELVETEL", AktualisFelev()) > 0)

    ÉS (Training.Code=("5N-A7") VAGY Training.Code=("5N-A7H") VAGY Training.Code=("5NAA7"))

    A fenti forma a Neptun sajátja, ezen technikai okokból nem változtattunk.

    A kötelező előtanulmányi rendek grafikus formában itt láthatók.

    Ajánlott:
    -
    7. A tantárgy célkitűzése A tantárgy célkitűzése, hogy a hallgatók készség szinten alkalmazható ismereteket szerezzenek a számítógépes problémamegoldás módszereinek és alapvető eszközeinek használatában. További cél, hogy a megszerzett ismereteket és készségeket további tanulmányaik során hatékonyan legyenek képesek alkalmazni.
    A célkitűzés teljesítését egy magas szintű programozási nyelv, a C megismerése teszi lehetővé. A gyakorlatok anyaga folyamatosan követi az előadások tematikáját, azok mélyebb megértését, az algoritmusok részletes megismerését támogatja. A laboratórium célja, hogy a hallgatók gyakorlati jártasságot szerezzenek az előadáson és gyakorlaton megismert módszerek kipróbálása által, és készség szinten elsajátítsák a fejlesztőkörnyezetek használatát.
    Az anyag jobb elsajátítása érdekében a laboratóriumi foglalkozásokhoz kapcsolódóan egy nagyobb házi feladatot is meg kell oldani.
    8. A tantárgy részletes tematikája 1.    
    Előadás: A számítógépes problémamegoldás alapfogalmai: program, algoritmus, algoritmizálás, kódolás. Kifejezések és változók fogalma. A C nyelv alapjai. Változók deklarációja, értékadás, egymás utáni utasítások megadása. Egyszerű beolvasás és kiírás.
    Gyakorlat: Hétköznapi és egyszerű matematikai algoritmusok, folyamatábraszerű rajz készítése, algoritmusok lejátszása.
    Labor: A HSZK használata. Operációs rendszer, parancssor, egyszerűbb parancsok, program indítása parancssorból, program indítása paraméterekkel, átirányítás.

    2.    
    Előadás: Forráskódok elemei. Szintaktika, szemantika. A nyelvtani szabályok. Kulcsszavak, utasítások, azonosítók, megjegyzések fogalma. Algoritmusdokumentálási eszközök. Folyamatábra, struktogram, pszeudokód. Algoritmusok elemei: ciklusok, elágazások és szekvenciák. Változók definíciója. Összetett vezérlési szerkezetek, összetett logikai kifejezések.
    Gyakorlat: Algoritmizálás strukturált elemekkel: struktogram, strukturált pszeudókód, C kód.
    Labor: IDE bemutatása. Egyszerű, kézhez kapott programok fordítása, átalakítása.
    3.    
    Előadás: Egyszerű algoritmusok. Végjeles sorozatok kezelése, ciklusszervezés. Számlálás, összegzés, szélsőérték-keresés tétele. A C nyelv típusai: karakterek, egész, logikai típus megjelenítése. Tömbök fogalma, indexelés fogalma és azokat kezelő egyszerű algoritmusok.
    Gyakorlat: Adatsorok feldolgozását igénylő egyszerű problémák. Tömbök használata, beolvasás tömbbe; elemek megváltoztatása, kiíratása, indexelés.
    Labor: Vezérlési szerkezetek (ciklusok, elágazás), beépített függvények. Egyszerű számelméleti algoritmusok kódolása, kiíratás, egyes beépített matematikai függvények használata.
    4.    
    Előadás: A C nyelv típusai. A véges számábrázolás fogalma. Belső ábrázolás, bitműveletek. Lebegőpontos számábrázolás. Függvények fogalma, dekompozíció fogalma. Lokális változók és élettartam fogalma. Deklaráció, definíció fogalma.
    Gyakorlat: Egyszerű matematikai jellegű függvények, karakter-feldolgozó függvények. Összetettebb problémák dekompozíciója. Karakter típusú változók és tömbök használat, feldolgozása.
    Labor: Végjeles adatsor feldolgozása. Tömbkezelés programban, beolvasás tömbbe; elemek megváltoztatása, kiíratása, indexelés, túlindexelés.
    5.    
    Előadás: Operátorok. Precedenciák, kiértékelés, mellékhatás. Balérték és jobbérték fogalma. Kiértékelési sorrend és kiértékelési pontok. Struktúrák, struktúrákon végzett műveletek. Struktúrák és függvények kapcsolata.
    Gyakorlat: Struktúrák használata, struktúrákat kezelő függvények.
    Labor: Függvények kódolása, egyszerű matematikai jellegű függvények. Karaktereket feldolgozó függvények és programok. Nyomkövető (debug) funkció megismerése, lépésenkénti végrehajtás, változók megfigyelése.
    6.    
    Előadás: Felsorolt típus. Az indirekció fogalma, pointerek bevezetése. Cím szerinti paraméterátadás. Pointerek és tömbök kapcsolata, pointer aritmetika. Sztring mint karaktertömb, sztring mint végjeles sorozat. Sztringkezelés beépített függvényekkel.
    Gyakorlat: Felsorolt típus használat. Függvények és pointerek, cím szerinti paraméterátadás. Tömb átadása függvénynek. Sztringkezelés saját függvényekkel.
    Labor: Struktúra, struktúra mint paraméter. Egész típusok bináris megjelenítése, túlcsordulás. Lebegőpontos ábrázolás pontatlansága.
    7.    
    Előadás: Dinamikus tárkezelés. Memória-allokáció, felszabadítás. Többdimenziós dinamikus tömbök. Szabványos input és output, fájlkezelés.
    Gyakorlat: Gyakorlati kisZH. Dinamikus memóriakezelés. Dinamikus tömbök. Formázott olvasás és írás szöveges fájlból és sztringből.
    Labor: Pointerek, tömbök, sztringek kezelése függvényekkel. Beépített sztringkezelő függvények. Kapcsolódó nyomkövetési funkciók.
    8.    
    Előadás: Önhivatkozó adatszerkezetek, láncolt listák. Egyszeres, kétszeres láncolás, strázsás lista. Lista változatai, lifo, fifo, fésűs lista. Többszörös indirekció fogalma.
    Gyakorlat: Dinamikusan foglalt struktúrák. Listák kezelése. Adatszerkezet építése.
    Labor: Dinamikus tömbök. Szöveges fájlkezelés.
    9.    
    Előadás: Rekurzió fogalma. Valódi és álrekurzió. Fák, mint rekurzív adatszerkezetek. Fák bejárása, keresőfák és dekódoló fák
    Gyakorlat: Rekurzív függvények. Lista és fa bejárásán alapuló algoritmusok.
    Labor: Egyszerű lista építése bináris fájlból. Összetettebb listás feladat továbbfejlesztése.
    10.    
    Előadás: Függvényre mutató pointerek. Keresések: lineáris és bináris keresés. Algoritmusok lépésszámának bevezetése. Union és bitmező típusok. Bitszintű operátorok. Hibakezelés és tesztelés jelentősége.
    Gyakorlat: Bitműveletes feladatok, maszkolás. Függvénypointerek. Függvény átadása függvénynek, keresési feladat paraméterként átadott függvény feltétellel. Gyakorlás a nagyzárthelyire.
    Labor: Fa építése, bejárása, törlése. Fésűs lista adatszerkezet.
    11.    
    Előadás: Szétválogatás. Rendezések. Rendezések kulcsa, rendezések lépésszáma. Alapvető rendező algoritmusok. Gyorsrendezés. Generikus algoritmusok.
    Gyakorlat: Statikus és dinamikus többdimenziós tömbök használata. Sztringtömb rendezése. Gyakorlás a nagyzárthelyire.
    Labor: Fésűs lista adatszerkezeten alapuló egyszerű program fejlesztése, beleértve a hibakeresést és az egyszerű tesztelést is.
    12.    
    Előadás: Program és külvilág kapcsolata. Állapotgép. További adatszerkezetek tárgyalása, gráfok modellezése. Memóriakezelés rendszerezése, verem, láthatóság és élettartam fogalmának részletes tárgyalása.
    Gyakorlat: Állapotgépes feladatok. Gyakorlati kisZH pótlása, mely a nem pótló hallgatóknak gyakorlás a nagyzárthelyire.
    Labor: Függvény átadása paraméterként. Szabványos kereső és rendező függvények használata. Többdimenziós tömbök gyakorlása.
    13.    
    Előadás: Az előfeldolgozó használata. Nagyobb programok tervezése; adatszerkezetek megválasztása, funkcionális dekompozíció. Programszegmentálás, alkalmazói program készítése a specifikációtól a dokumentálásig.
    Gyakorlat: Makrók használata. Parancssori argumentumok feldolgozása. Gyakorlás.
    Labor: SVG fájl készítése programmal (érdekességként). Nagyházi beszedése.
    14.    
    Előadás: Tartalék előadás.
    Gyakorlat: Tartalék gyakorlat, gyakorlás.
    Labor: Tartalék labor, nagyházi beszedés.

    9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium) A tárgyból heti egy alkalommal előadást tartunk a teljes évfolyamnak és heti egy alkalommal tantermi gyakorlatot tartunk a tanulókörök számára. A tárgyból számítógépes laboratóriumi foglalkozásokat is tartunk a Hallgatói Számítóközpont (HSZK) termeiben, az órarend szerinti időpontokban, kiscsoportos oktatással.

    10. Követelmények A félév végi jegy megszerzésének feltételei az alábbiak:
    •    Jelenlét: az órákon (előadás, gyakorlat, labor) való rendszeres részvétel. A hiányzások megengedett mértékét a TVSz rögzíti (30%). A feltételnek mindhárom óratípuson külön-külön is teljesülnie kell. A laborgyakorlatokon csak felkészült hallgatók vehetnek részt. A laborgyakorlatokon a felkészültséget ún. beugróval ellenőrizzük, amelynek anyaga az adott labor előadáson és gyakorlaton már bemutatott anyagával kapcsolatos. A beugró lehet teszt, házi feladat vagy órai feladat is. Az elégtelen felkészültség mulasztott laboralkalomnak számít.
    •    Kis zárthelyik (ellenőrző dolgozat): a félév során hat alkalommal kis zárthelyit íratunk a gyakorlatokon. Ezek három témakört ölelnek fel, azaz három dolgozatpárost jelentenek. Minden pár közül a jobban sikerült eredménye számít; ez kell elérje az adott dolgozatra szerezhető pontszám 40%-át. A meg nem írt ZH pontszámát nullának tekintjük.
    •    Nagy zárthelyi: a szorgalmi időszak alatt kettő alkalommal, az évfolyam terhelési táblázata szerinti időpontban nagy zárthelyi dolgozatot íratunk. Ezeknek egyenként nincs minimumkövetelménye, csak az összegüknek. Az összpontszám el kell érje a két zárthelyire szerezhető összpontszám 50%-át. A meg nem írt ZH pontszámát nullának tekintjük.
    •    Nagy házi feladat: minden hallgatónak egy egyéni nagy házi feladatot kell megoldania, önálló munkával. Ennek elfogadható szintű teljesítése a félév követelménye. A nagy házi feladatokat a 6. héten adjuk ki és a 13. héten kell beadni a megoldásokat. Az előrehaladást a félév közben részfeladatok alapján ellenőrizzük.

    A félévközi jegy a nagy zárthelyik, a páronként jobban sikerült kis zárthelyik pontszáma, és a nagy házi feladat pontszáma alapján számítódik ki. A nagy zárthelyikre maximum 2×40 pont, a kis zárthelyikre maximum 3×10 pont szerezhető, a nagy házi feladatra 20, ez összesen 130 pont. Ha a minimumkritériumok teljesülnek, a jegy nem lehet rosszabb elégségesnél.

    A felkészülést egyéni szorgalmi feladatok is segítik, melyek megoldása nem kötelező.

    11. Pótlási lehetőségek A jelenlét és a laborgyakorlatokon írt beugrók nem pótolhatóak.

    A kis zárthelyik félév közbeni pótlását az teszi lehetővé, hogy páronként mindig a jobban sikerült számít. Az egyik kis zárthelyi pótlására a pótlási héten is biztosítunk lehetőséget, különeljárási díj megfizetése mellett.

    Nagy zárthelyi pótlására a pótlási héten van lehetőség. A két nagy zárthelyi összevontan javítható vagy pótolható, ilyen esetben az új pontszám kétszerese számít az eredeti pontszámok összege helyett. Második pótlási lehetőség alapértelmezetten már nincs.

    A nagy házi feladat pótlólagos beadására csak a szorgalmi időszak végéig (utolsó tanítási napon, 12.00 óráig), van mód, azon túl a nagy házi feladat nem adható be. Pótlás esetén különeljárási díj fizetendő. Javítani csak előzőleg már elfogadott megoldást lehet.

    12. Konzultációs lehetőségek Igény szerint, a tárgy előadóival, gyakorlatvezetőivel és laborvezetőivel egyeztetett módon.
    13. Jegyzet, tankönyv, felhasználható irodalom •    Elektronikus óravázlat és a segédanyagok a tanórákra felkészüléshez (bejelentkezés után elérhetőek a tárgy adminisztratív honlapján: http://www.hit.bme.hu/~zsoka/vihiaa01.php )
    •    N. Wirth: Algoritmusok + Adatstruktúrák = Programok, Műszaki Könyvkiadó, 1982
    •    B. W. Kernighan - D. M. Ritchie: A C programozási nyelv, Az ANSI szerint szabványosított változat, Műszaki Kiadó, 1996
    •    Benkő Tiborné, Dr. Poppe András: Együtt könnyebb a programozás – C, Computer Books, 2006
    •    Wayne Amsbury: Data Structures from Arrays to Priority Queues, Wadsworth Publishing, 1985

    14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
    Kontakt óra84
    Készülés előadásokra
    7
    Készülés gyakorlatokra28
    Készülés laborra
    28
    Készülés zárthelyire35
    Házi feladat elkészítése28
    Önálló tananyag-feldolgozás0
    Vizsgafelkészülés0
    Összesen210
    15. A tantárgy tematikáját kidolgozta Dr. Zsóka Zoltán    docens    Hálózati Rendszerek és Szolgáltatások Tsz.
    Dr. Fiala Péter    docens    Hálózati Rendszerek és Szolgáltatások Tsz.
    valamint az elsőéves programozás tárgyakat oktatók munkaközössége.

    IMSc tematika és módszer Emelt szintű gyakorlatok és laborok, amelyek során a gyorsabb haladás több, összetettebb feladat megtárgyalását, megoldását tesz lehetővé.
    IMSc pontot NHF-ben a részfeladatok részletesebb és időre történő kidolgozásával, valamint többletfeladattal, továbbá a NZH-kon megoldott többletfeladattal (ezt szükség esetén csoportos konzultáció támogatja), és a szorgalmi feladatokkal lehet szerezni.

    IMSc pontozás Szerezhető IMSc pont összesen: 35
    Sikeresen megoldott szorgalmi feladatokkal összesen 20 IMSc pont szerezhető (4 feladat, egyenként 5 IMSc pont).
    Sikeresen megoldott egy-egy többletfeladat NZH-nként 6 IMSc pont, összesen 12 IMSc pont.
    A NHF keretében sikeresen megoldott többletfeladatok: összesen 3 IMSc pont.
    Ebből két többletfeladatot jelent az előkészítő munkaszakaszok (specifikáció, adatszerkezetek és algoritmusok terve) eredményeinek részletesebben kidolgozott és időben történő beadása (1+1 IMSc pont), és egyet a tesztelési struktúra kidolgozása és dokumentálása (további 1 IMSc pont).
    Az IMSc pontok megszerzése a programban nem résztvevő hallgatók számára is biztosított, azonban a tárgy kreditjének megszerzéséhez kötött.