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ó    

    Programozás

    A tantárgy angol neve: Programming

    Adatlap utolsó módosítása: 2006. július 1.

    Tantárgy lejárati dátuma: 2013. június 30.

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

    BME Természettudományi Kar

    Mérnök-fizikus Szak

    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIEE0159 1 2+0+2 f 4 1/1
    3. A tantárgyfelelős személy és tanszék Dr. Poppe András,
    4. A tantárgy előadója

    Név:

    Beosztás:

    Tanszék, Int.:

    Dr. Poppe András

    docens

    Elektronikus Eszközök Tsz.

    5. A tantárgy az alábbi témakörök ismeretére épít

    -

    6. Előtanulmányi rend
    Ajánlott:

    Tematikaütközés miatt a tárgyat csak azok vehetik fel, akik korábban nem hallgatták a következő tárgyakat:

    -

    7. A tantárgy célkitűzése

    A tantárgy célja megismertetni a hallgatókkal a számítógépes problémamegoldás általános lépéseit, tipikus adatszerkezeteket és azok kezelését valamint alapvető algoritmusokat (rendezés, keresés, egyes numerikus módszerek). A hallgatóknak készség szintű jártasságot szereznek egy, a gyakorlati életben széleskörűen alkalmazott programozási nyelv, a C nyelv használatában. A hallgatók megismerik a több modulból álló programok készítését, megismertik a modulkönyvtárak és a programfejlesztést támogató alapvető eszközök haszálatát. A tárgy igyekszik rálátást nyújtani az objektum-orientált programozás alapjaira is. A tárgy további fontos célkitűzése a hordozható programok írásának elsajátíttatása.

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

    1. hét

    Előadás: A számítógépes problémamegoldás általános lépései, a számítógépek fő részei, áttekintés a programozási nyelvekről. Bevezetés a C programozási nyelvbe: történelem, a nyelv helye.

    Gyakorlat: a számítógép-használat alapismeretei, C(++) fejlesztői környezet megismerése, egyszerű C program készítése.

    2. hét

    Előadás: Egyszerű adattípusok, tárolási osztályok (először). A sizeof operátor alkalmazása típusokra. Értékadás, kifejezések, aritmetikai és egyéb fontosabb operátorok. printf és 1 karakteres standard i/o röviden. Az első program. Vezérlési szerkezetek (if, while, for)

    Gyakorlat: Algoritmizálás. Egyszerű számításokat végző programok írása (prímtényezős felbontás, LNKO, másodfokú egyenlet megoldása, Fibonacci-számsor, stb.). Algoritmizálás.

    3. hét

    Előadás: További vezérlési szerkezetek (for még egyszer, do-while, case). További típusok: enum, struct, union. Függvények. Egy C program szerkezete. Típusmódosító operátorok fogalma. Tömb-, pointer- és függvénytípusok, ezek kombináció.

    Gyakorlat: Tömbök használata, egyszerű tömb algoritmusok. Függvény mint paraméter. A qsort függvény használata.

    4. hét

    Előadás: Az előfeldolgozó. Elôre definiált konstansok, makrók, include file-ok. A legfontosabb standard fejléc file-ok (stdio, stdlib, math), az ott deklarált függvények (stcpy, strcmp, stb). Feltételes fordítás.

    Gyakorlat: Portábilis programok írása az előfeldolgozó segítségével.

    5-6. hét Előadás: Dinamikus memóriakezelés (malloc, free, realloc). Pointer és címaritmetika. Bonyolultabb pointerkifjezések, függvénypointerek, illetve függvénypointer-tömbök és azok használata. Rekurzió.

    Gyakorlat: Dinamikus tárkezelés a C-ben, illetve C++-ban. Pointer változó deklarálása, memória foglalás, lefoglalt memória felszabadítása. Listaszerkezetek, fa struktúrák létjogosultsága. Memória újra allokálása. Többszörös indirekció, többdimenziós tömbök. Feladatkiadás.

    7-8. hét

    Előadás: Stream és alacsony szintű i/o: az (s|f)printf, (s|f)scanf, (f)getc, (f)putc, fopen, fclose, fgets, fputs, open, close, read, write, fseek. Változó argumentumszámú függvények (varargs.h). A main argumentumai. Többmodulos C programok. A tárolási osztályokról újból.

    Gyakorlat: Standard könyvtári függvények és azok használata.

    9-10. hét

    Előadás: Többmodulos programok írása. Object modul, forrás modul, definició, deklaráció. Láthatóság (programra, modulra, blokkra vonatkozóan: auto, static, extern mégegyszer). Object modul library fogalma. Könyvtárba illeszthető függvények, modulok.

    Gyakorlat: A make/project fogalma. File-ok függőségi viszonyai. Az object modul könyvtár fogalma. Saját project készítése.

    11. hét Előadás: Processz kezelés. A system függvény. Programok indítása különböző operációs rendszerekben. A spawn és exec függvények, illetve függvénycsaládok. Az exit függvény.

    Gyakorlat: Rendszerhívások gyakorlása, külső program aktivizálása (pl. grafikus megjelenítés a GNUPLOT program segítségével).

    12. hét

    Előadás: Az objektum-orientált programozás alapjai, röviden a C++-ról. Osztályok, konstruktorok, destruktorok. Paraméterszignatúra, overloading. Operátor overloading.

    Gyakorlat: Egyszerű objektum-osztály definiálása, operátor-függvény elkészítése

    13. hét

    Előadás: Numerikus módszerek áttekintése. Pontossági kérdések. Egy-két jellegzetes megvalósítás és alkalmazási terület.

    Gyakorlat: Egyes numerikus eljárások implementálása. Feladatbeadás.

    14. hét

    Elmondottak áttekintése, hiányok pótlása, feladatbeadás.

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

    A tárgy heti két órás előadásból és heti két órás terminál laboratóriumi gyakorlatból áll. A laborgyakorlat célja az előadáson elmondottak elmélyítése, gyakorlati kipróbálása.

    10. Követelmények

    a. A szorgalmi időszakban:

    A tárgyból heti 1 alkalommal 2 órás előadást és 2 órás laborgyakorlatokat tartunk. A laborgyakorlatokon a megjelenés kötelező, a részvételt minden alkalommal ellenőrizzük. A félév során a laborgyakorlatok alkalmával 5 kis zárthelyit iratunk “röp-zh” jelleggel. Ezek a pótlására nincs lehetőség, az elmulasztott kis zh-k eredményét 0-nak tekintjük. A félév során a dékáni hivatal ütemezése szerinti időpontban egy nagy zárthelyi dolgozatot iratunk. A nagy zárthelyi dolgozat megírása kötelező. A félév 6. hetében nagy házi feladat kiadására kerül sor a laborgyakorlatok alkalmával. A feladat beadása a szorgalmi időszak utolsó előtti hetében, a laborgyakorlaton esedékes. Késedelmes feladatbeadás a szorgalmi időszak utolsó tanítási napján, 18.00 óráig lehetséges a TVSZ-ben meghatározott különeljárási díj megfizetése mellett.

    A félév elfogadásának és a félév végi jegy megadásának a feltétele:

    Aláírást az kaphat,

    · aki a gyakorlatokról nem hiányzott többet, mint a TVSZ-ben meghatározott mérték,

    · akinek a 3 legjobb kis zárthelyi dolgozat eredményéből számított átlaga legalább elégséges,

    · aki legalább elégséges osztályzatot szerzett a nagy zárthelyi dolgozatával, és

    • aki a szorgalmi időszakon belül beadta a nagy házi feladatát és arra legalább elégséges osztályzatot kapott.

    Félévközi jegyet az szerezhet, aki aláírást is szerzett. A félévközi jegy mind a kis zh-k, mind a nagy zh, mind a nagy házi feladat eredménétôl függ, a következôk szerint:

    · nagy zh eredménye: 35% súllyal,

    · a 3 legjobb kis zh átlaga: 35% súllyal,

    • a nagy házi feladatra kapott osztályzat: 30% súllyal.

    Az így kialakuló osztályzatot a gyakorlatvezetők a hallgatóknak a laborfoglalkozásokon tanusított aktivitása alapján, saját belátásuk szerint +/- 1 jeggyel módosíthatják.

    11. Pótlási lehetőségek

    A nagy zárthelyi dolgozat megírására 1 pótlási lehetőséget biztosítunk a szorgalmi időszak végéig. A vizsgaidőszakban a pótlás a TVSz szerint lehetséges.

    Az elmaradt nagy házi feladat pótlására a szorgalmi időszakon túl nincs lehetőség.

    12. Konzultációs lehetőségek

    A szemeszter folyamán a tárgy előadójával ill. a laborgyakorlatok vezetőivel történt személyes egyeztetéssel lehetséges konzultálni.

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

    Bármely a C programozási nyelvvel foglalkozó könyv vagy jegyzet használható. A numerikus módszerek kapcsán különösen ajánlott az [1] vagy [2] példatárak használata.

    [1] Benkô Tiborné, Benkô László, Tóth Bertalan:

    Programozzunk C nyelven!

    ComputerBooks Kiadó, 1995.

    [2] Benkô Tiborné, Benkô László:

    Programozási feladatok és algoritmusok Turbo C és C++ nyelven

    ComputerBooks Kiadó, 1997.

    [3] B.W. Kernighan - D.M. Ritchie:

    A C programozás nyelv.

    Műszaki Könyvkiadó, 1985.

    [4] B.W. Kernighan - D.M. Ritchie:

    The C Programming Language.

    Prentice Hall, 1988. 2nd edition

    [5] B. Stroutstrup:

    The C++ Programming Language.

    Addison-Wesley, 1986.

    [6] M.A. Ellis - B. Stroutstrup:

    The Annotated C++ Reference Manual.

    Addison - Wesley, 1990.

    [7] Benkő - Poppe:

    Bevezetés a BORLAND C++ programozásba.

    ComputerBooks, 1991, 1996.

    [8] Kocsis - Poppe:

    C programozás feladtgyűjtemény és példatár.

    BME Mérnöktovábbképző Intézet, 1992. (5328-as jegyzet)

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

    (a tantárgyhoz tartozó tanulmányi idő körülbelüli felosztása a tanórák, továbbá a házi feladatok és a zárthelyik között (a felkészülésre, ill. a kidolgozásra átlagosan fordítandó/elvárható idők félévi munkaórában, kredit x 30 óra, pl. 5 kredit esetén 150 óra)):

    Kontakt óra

    60

    Félévközi készülés órákra

    15

    Felkészülés zárthelyire

    25

    Házi feladat elkészítése

    20

    Kijelölt írásos tananyag elsajátítása

    ..

    Vizsgafelkészülés

    Összesen

    120

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

    Név:

    Beosztás:

    Tanszék, Int.:

    Dr. Poppe András

    docens

    Elektronikus Eszközök Tsz.