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. augusztus 23.

    Budapesti Műszaki és Gazdaságtudományi Egyetem
    Villamosmérnöki és Informatikai Kar

    Mérnök informatikus szak, BSc képzés

    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIEEAA00 1 2/2/2/f 7  
    3. A tantárgyfelelős személy és tanszék Dr. Czirkos Zoltán, Elektronikus Eszközök Tanszéke
    A tantárgy tanszéki weboldala https://infoc.eet.bme.hu/
    4. A tantárgy előadója

    Név:

    Beosztás:

    Tanszék, Int.:

    Dr. Czirkos Zoltán

    Egyetemi docens

    Elektronikus Eszközök T.

    Dr. Pohl László

    Egyetemi adjunktus

    Elektronikus Eszközök T.

    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("BMEVIEEA100", "jegy", _) >= 2
    VAGY
    TárgyEredmény("BMEVIEEA100", "felvétel", AktualisFelev()) > 0
    VAGY
    TárgyEredmény("BMEVIEEA101", "jegy", _) >= 2
    VAGY
    TárgyEredmény("BMEVIEEA101", "felvétel", AktualisFelev()) > 0)

    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, úgy mint elemi és összetett adatok, lineáris adatszerkezetek, memóriakezelés. 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 tárgyat teljesítő hallgató képes lesz:

    (K3) alkalmazni az imperatív programozás ismertetett eszköztárát,

    (K3) statikus és dinamikus lineáris adatszerkezeteket építeni programjában, ezeken alapvető algoritmusokat, elemi programozási tételeket alkalmazni,

    (K3) C programozási nyelvet és integrált fejlesztőkörnyezetet használni a fenti eszközöket használó programok implementálásához,

    (K2) elemi megfontolásokat tenni egy program erőforrásigényére,

    (K2) specifikációkat, programozói dokumentációkat megérteni,

    (K2) elmagyarázni a tematikában szereplő magasabb szintű absztrakciók és nemlineáris adatszerkezetek működését, alkalmazási lehetőségeit.

    8. A tantárgy részletes tematikája

    1. hét.

    Előadás: Bevezetés. Programozás fogalma. Kifejezések és változók, típus fogalma. C nyelv alapjai. Egyszerű kifejezések a programban.

    Labor: HSZK bemutatása, házirend. Operációs rendszer alapismeretek: parancssor, program indítása parancssorból, szabványos bemenet és kimenet, átirányítás, paraméterek. Egyszerű C program lefordítása és kipróbálása.

    Gyakorlat: Hétköznapi algoritmusok. Folyamatábra készítése közismert algoritmusokhoz (pl. írásbeli összeadás, prímtényezős felbontás).

     

    2. hét.

    Előadás: Forráskódok elemei. Algoritmus fogalma, leírása. Ciklus, elágazás, szekvencia. Kombináció: összetett vezérlési szerkezetek, összetett kifejezések.

    Labor: Integrált fejlesztői környezet bemutatása. Program szövegének szerkesztése, fordítása. Szintaktikai és szemantikai hibák, nyomkövetés, értékadás megfigyelése, változók vizsgálata. A fordító hibaüzenetei. Printf és scanf kezelése, formátumok megadása.

    Gyakorlat: Algoritmizálás gyakorlása a kártyapakli példáján. Alapalgoritmusok iteratív megfogalmazása: „benne van-e?”, „melyik a leg...?”, „sorban van-e?”

     

    3. hét.

    Előadás: Egyszerű algoritmusok pszeudokód és C változatai. Összegzés, számlálás, szélsőérték keresése és szétválogatás tételei. Karakter és logikai típusok. Tömbök.

    Labor: Kódolás struktogramból, pszeudokódból. Triviális I/O-t végző programok; egyszerű számítások. Nyomkövető használata.

    Gyakorlat: Algoritmusok leírása C nyelven. Számelméleti példák, prímszám, tükörszám, másodfokú egyenlet, numerikus módszerek, pl. pi kiszámítása ciklussal.

     

    4. hét.

    Előadás: A számítógép felépítése. Beépített típusok részletesen. Véges ábrázolás. Egész és lebegőpontos számok ábrázolása, számábrázolási korlátok. Függvények fogalma, használata. Absztrakció, paraméterek és lokális változók.

    Labor: Összetett vezérlési szerkezetek gyakorlása. Ismert algoritmus (pl. prímszám, lnko) programozása.

    Gyakorlat: Tömbbel megoldható feladatok gyakorlása, pl. naptár kezelése, hisztogramok, eloszlások számítása.

     

    5. hét.

    Előadás: Operátorok. Precedencia, kiértékelés, mellékhatás. Összetett adatszerkezetek, struktúrák és saját típusok használata.

    Labor: Alapvető tömbkezelés. Tömbök létrehozása. Keresés, számlálás, szélsőérték keresése alapfeladatok. Tömbműveletek, tömb léptetése. Túlindexelés hatásának bemutatása.

    Gyakorlat: Összetett problémák, dekompozíció. Függvények használata; paraméterek és visszatérési értékek. Egyszerű, matematikai jellegű függvények írása, karakterek használata.

     

    6. hét.

    Előadás: Felsorolt típus. Állapotgép. Cím szerinti paraméterátadás, indirekció és sztringek a C nyelvben.

    Labor: Számrendszerek, bitműveletek. Szám kiírása kettes számrendszerben. Bitminta előállítása. Túlcsordulás hatásának vizsgálata. Lebegőpontos pontatlanság szemléltetése.

    Gyakorlat: Struktúrák, hozzájuk tartozó műveletek és függvények. Többszörösen összetett adatok. Struktúrában tömb, tömbben struktúra.

     

    7. hét.

    Előadás: Program kapcsolata a külvilággal: parancssori paraméterek és fájlkezelés. Előfeldolgozó. Programszegmentálás. Karbantartható programok írása, dokumentáció.

    Labor: Beépített sztringkezelő függvények. Tömbök kezelése – további gyakorlás. Többdimenziós tömbök.

    Gyakorlat: Tömbök és függvények használata, tömb átadása függvénynek. Sztringes feladatok. Szöveg megfordító, palindrom. Sztring átadása függvénynek. Tömbméret és sztringhossz közti különbség. Túlindexelés veszélye.

     

    8. hét.

    Előadás: Tömbi algoritmusok. Keresések. Rendezések. Rekurzió.

    Labor: Állapotgépek megvalósítása C nyelven. Fájlkezelés a C programokban.

    Gyakorlat: Állapotgépek tervezése példákon keresztül; részletek implementálása.

     

    9. hét.

    Előadás: Dinamikus memóriakezelés. Dinamikus tömbök. Dinamikus sztring kódolása. Memóriakezelés rendszerező tárgyalása.

    Labor: Rekurzió megfigyelése a nyomkövetőben. Rekurzióval megoldható problémák, pl. visszafelé kiírás, adott számrendszerben kiírás.

    Gyakorlat: Rekurzív problémák; a rekurzió tervezésének gyakorlása.

     

    10. hét.

    Előadás: Dinamikus adatszerkezet: láncolt listák. Listák használata. Bejárás, törlés, beszúrás. Egyszeres és többszörös láncolás.

    Labor: Dinamikus memóriakezelés és sztringek. Saját sztring típus létrehozása és műveleteinek kódolása.

    Gyakorlat: Munka dinamikus tömbbel. Komplett halmaz típus kódolása. Méret nyilvántartása, keresés, átméretezés. Munka struktúrákra mutató pointerekkel.

     

    11. hét.

    Előadás: Dinamikus adatszerkezet: bináris fák használata. Keresőfák, dekódoló fák. Fák bejárásai. Többszörös indirekció. Hasító táblák röviden.

    Labor: Listakezelés implementálása. Lista építése. Fájlba írás, fájlból olvasás. Strázsa alkalmazása. Beszúrás, törlés.

    Gyakorlat: Adatszerkezetek választása. Alacsony szintű listaműveletek, beszúrás és törlés, memóriakezelés.

     

    12. hét.

    Előadás: Függvényre mutató pointerek, generikus algoritmusok és típusok a C nyelvben.

    Labor: Fák kezelése: létrehozás, másolás, keresés.

    Gyakorlat: Fák algoritmusai. Csomópontok, szintek, levelek. Tükörképek, szimmetrikus fa vizsgálata.

     

    13. hét.

    Előadás: További adatszerkezetek. Nagyobb programok tervezése. Funkcionális dekompozíció bemutatása egy komplex példán.

    Labor: Házi feladatok beadása. Dinamikus adatszerkezetek gyakorlása.

    Gyakorlat: Függvényre mutató pointerek. Numerikus integrálás, generikus számlálás és rendezés.

     

    14. hét.

    Előadás: Tartalék előadás.

    Labor: Gyakorlás, áttekintő feladatok.

    Gyakorlat: Gyakorlás, áttekintő feladatok.

     

    9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium)

    A tárgyból heti egy alkalommal a teljes évfolyamnak előadást és heti egy alkalommal a tanulókörök számára tantermi gyakorlatot tartunk. A tárgyból számítógépes laboratóriumi foglalkozásaira a Hallgatói Számítóközpont (HSZK) termeiben kerül sor, az órarend szerinti időpontokban, kiscsoportos oktatással. A csoport- és terembeosztást külön hirdetményben tesszük közzé a tárgy weboldalán.

    A laboratórium célja, hogy a hallgatók gyakorlati jártasságot szerezzenek az előadáson és megismert módszerek kipróbálása által, és készség szinten elsajátítsák a fejlesztőkörnyezetek használatát. A gyakorlatok anyaga folyamatosan követi az előadások és a laborok tematikáját, azok mélyebb megértését, az algoritmusok részletes megismerését támogatja.

    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. A kis zárthelyik célja a folyamatos készülés motiválása. A nagy zárthelyik a megszerzett ismeretek alkalmazására fókuszálnak.

    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 a felkészültséget szintfelmérővel (beugróval) ellenőrizzük, amelynek anyaga az adott laborhoz tartozó előadás anyagával kapcsolatos. A beugró lehet rövid dolgozat, házi feladat vagy órai feladat is. Sikertelen beugró esetén az adott laboralkalom nem teljesítettnek 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 dolgozatok pontszámát nullának tekintjük.

    Nagy zárthelyi (összegző értékelés): 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 (részteljesítmény értékelés): 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 ellenőrizzük, és az értékelésnél figyelembe vesszük.

    A félévközi jegy a nagy zárthelyik, a páronként jobban sikerült kis zárthelyik, é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 félév elején a tárgy hallgatói számára lehetőség van egy ún. nulladik, szintfelmérő zárthelyit írni. Ennek témája a félév teljes tananyaga. A megfelelő szintű teljesítésével mentességet lehet szerezni a jelenlét követelmények és a gyakorlatokon írt kis zárthelyik alól. A többi tárgykövetelményt (a két nagy zárthelyi, nagy házi feladat) ilyenkor is teljesíteni kell. A kedvezmény elfogadása esetén a pontszámítás ugyanúgy alakul, mint normál esetben; a kis zárthelyik pontszámát a nulladik zárthelyi pontszáma helyettesíti.

    A felkészülést egyéni szorgalmi feladatok is segítik, melyek megoldása nem kötelező. A határidőre és sikeresen megoldott szorgalmi feladatokkal extra pontok szerezhetők, amelyeket a félévközi jegy kialakításánál veszünk figyelembe.

    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ár 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 javítására vagy pótlására a szorgalmi időszak végéig (utolsó tanítási napon, 14.00 óráig), 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

    A tárgy előadóival, gyakorlatvezetőivel és laborvezetőivel egyeztetett módon. A tantárgy weboldalán is rendszeresen hirdetünk meg konzultációkat.

    13. Jegyzet, tankönyv, felhasználható irodalom

    Jegyzet:

    A tárgy weboldalán elérhető elektronikus jegyzet: https://infoc.eet.bme.hu/.

    Ajánlott irodalom, a C programozási nyelv tekintetében::

    B. W. Kernighan, D. Ritchie: A C programozási nyelv: az ANSI szerint szabványosított változat (Műszaki Könyvkiadó, 1994.)

    Stephen G. Kochan: Programfejlesztés C nyelven. (Kiskapu, 2008.)

    Ajánlott irodalom, algoritmusok tekintetében:

    Pongor György: Szabványos PASCAL programozás és algoritmusok. (Műszaki Könyvkiadó, 1999.)

    Niklaus Wirth: Algoritmusok + Adatstruktúrák = Programok (Műszaki Könyvkiadó, 1982.)

    14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka

    Kontakt óra

    84

    Készülés előadásokra

    14

    Készülés gyakorlatokra

    21

    Készülés laborra

    21

    Készülés zárthelyire

    42

    Házi feladat elkészítése

    28

    Önálló tananyag-feldolgozás

    0

    Vizsgafelkészülés

    0

    15. A tantárgy tematikáját kidolgozta

    Név:

    Beosztás:

    Tanszék, Int.:

    Dr. Czirkos Zoltán

    Egyetemi docens

    Elektronikus Eszközök T.

    Az első éves programozás oktatók munkaközössége.

    IMSc tematika és módszer

    Az IMSc-s hallgatók számára külön gyakorlati és labor csoportokat indítunk. (Az előadás a teljes évfolyam számára közös.) Ezekben a csoportokban ugyanazon tananyag és tematika mellett mélyebb, összetettebb feladatok gyakoroltatják ugyanazokat a témaköröket.

    Az érdeklődők számára a tárgyon tanultak alkalmazását bemutató, illetve a tárgy tananyagán túlmutató szakmai írásokat teszünk közzé a tárgy honlapján. Ezek egyéni elmélyülésre adnak lehetőséget. Feldolgozásukhoz konzultációk keretében segítséget nyújtunk.

    IMSc pontozás

    A számonkéréseken alkalmazott pontozás és jegyszámítás mindenkinél egységes.

    A jeles alsó ponthatára feletti összes többlet pontszámot IMSc pontszámnak számolunk, a tárgy kreditértékének megfelelően összesen legfeljebb 35 pontot (5×7).

    A „követelmények” részben említett nagy és kis zárthelyik, illetve szorgalmi és nagy házi feladat pontszámok ugyanolyan módon történő számítása mellett 2×10 pontot lehet szerezni a nagy zárthelyiken választható kiegészítő feladatokkal is. A kiegészítő feladatot tartalmazó ZH-ra előzetesen jelentkezni kell. A kiegészítő feladatot csak az alap feladatok 75%-os teljesítése mellett pontozzuk, és az itt megszerzett pontok az aláírás megszerzésére nem használhatóak fel.

    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.

    Egyéb megjegyzések
    NEM (TárgyTeljesítve("BMEVIEEA100"))    
    VAGY  
    NEM (TárgyTeljesítve("BMEVIEEA101"))