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: 2019. május 17.

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

    BME Természettudományi Kar

    Fizikus alapképzés (BSc) Szak

    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIEEA024   2/0/2/f 4  
    3. A tantárgyfelelős személy és tanszék dr. Pohl László,
    A tantárgy tanszéki weboldala http://www.eet.bme.hu/~kohari/vieea024/
    4. A tantárgy előadója

    Kohári Zsolt

    Egyetemi tanársegéd

    Elektronikus Eszközök Tsz

    Dr. Pohl László
    Egyetemi docens
    Elektronikus Eszközök Tsz
    6. Előtanulmányi rend
    Kötelező:
    Kepzes("9N-AF06")

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

    A kötelező előtanulmányi rend az adott szak honlapján és képzési programjában található.

    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, melyre további tanulmányaik során támaszkodhatnak. A hallgatók megismerik a programfejlesztést támogató alapvető eszközök használatát. 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

    a tárgy tematikája, követelményei,

    algoritmus, adat, nyelv,

    programozási nyelvek, miért pont a c?

    specifikáció, tervezés, kódolás, tesztelés, dokumentálás

    algoritmus választás kérdései LNKO kapcsán (próbálgatás, prímtényezők, euklideszi formula)

    algoritmusok elemei: szekvencia, elágazás, ciklus

    n! kiszámítása

    - algoritmus kiválasztása, milyen elemekből épül fel, milyen adatszerkezeten dolgozik,

    - algoritmus szöveges leírása

    - algoritmus blokkvázlattal

    - kódolás

    itt kis elemzés: egy c program kötelező elemei, a keret. a main fv. szerepe, return 0

    az indentálás célja es jelentősége.

    scanf egész érték beolvasása, printf egész értékek kiírása.

    2. hét

    tárolási egységek

    - változók, konstansok

    - függvények

    kötelező deklaráció/definíció

    szintaktika/szemantika

    - szintaxis diagram, egész szám szintaxisa

    - alapvető szintaxis szabályok: szabad írásmód (whitespace-ek), a != A, #preproc, /* komment */, szabályos azonosítók

    előre definiált típusok, miért int-et es double-t használjunk

    egész konstans megadása, dec, okt, hexa alakban

    logikai típus hiánya, számok logikai értéke

    utasítások

    - ;

    - deklaráció/definíció

    - kifejezés utasítás

    - feltételes utasítás

    - ciklus (most CSAK a while)

    - vezérlésátadó (switch/case csak említés szinten)

    - {}

    if..else és while-nál blokkdiagram

    feltételek

    - relációs operatorok ('==' != '=', az ebben rejlő veszély)

    - logikai operatorok !, &&, ||

    3. hét

    a múlt heti ismeretek kiegészítése és mélyítése. vezérlési szerkezetek, utasítások, beépített típusok, számábrázolási kérdések.

    könyvtári függvények használata

    4. hét

    alapvető operatorok:

    * aritmetikai, egész, valós,

    * type cast,

    * értékadó,

    * sizeof,

    * relációs,

    * logikai, shortcut

    * bitenkénti,

    * ?:

    5. hét

    iteratív megoldások

    =

    pre/post ++ --, post veszélyei

    tömbök, 1d, 2d, stringek

    pointerek

    6. hét

    1d dinamikus tömb (példa a használatra)

    (csak érintőleg, a használat szintjen:

    getchar, putchar, EOF, ctrl+z/ctrl+d)

    filter program template

    enum típus

    véges automata

    példa: írjuk ki a beolvasott C kódból a kommenteket.

    ly számláló

    7. hét

    Függvények

    a program számára foglalt memóriaterületek, mi hol van/lesz,

    heap, stack viselkedése, az eltérések következményei.

    tárolási osztályok (lokális változókra)

    a függvényhívás mechanizmusa

    több érték visszaadása:

    void descart2polar( double, double, double*, double*)

    miért tilos lokális változó címét visszaadni

    8. hét

    - struct, . , ->

    - typedef

    - rendezés direct selection, bubble, struktúratömbre is.

    - hasonlító függvények, strcmp, szöveg szerinti rendezések.

    9. hét

    - függvénypointerek,

    - qsort használata,

    - string, int, double hasonlító fv készítése (struktúratömb rendezése példáján),

    - önhivatkozó szerkezet bevezetése,

    - CSAK rajzolva egyirányú, kétirányú, több szempont szerint rendezett lista,

    - bináris fa

    - kód szinten csak a keresés a listában ciklus.

    10. hét

    listák kezelése

    beszúró, kereső, törlő függvény

    a két lehetséges head kezelés:

    head=insert(head... ill. insert(&head,...

    rekurzió értelmezése n!-on, bináris fák kezelése

    kód szinten csak az inorder bejárás

    11. hét

    I/O FILE, fopen, fclose, feof, f/sprintf f/scanf, getc/s putc/s, main paraméterei

    12. hét

    Röviden, ami kimaradt: vessző op., (union, bitmező, vararg )

    a C előfeldolgozó

    13. hét

    NAGYZH

    14. hét

    tartalék (ha nincs szükség elmaradt előadás pótlására, akkor több forrásmodulból álló programok kérdései)

    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 számítógépes laboratóriumi gyakorlatból áll. A laborgyakorlat célja az előadáson elmondottak elmélyítése, gyakorlati kipróbálása, alapalgoritmusok elsajátítá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 laborgyakorlatokon a felkészültséget ún. beugróval ellenőrizhetjük, amelynek anyaga az adott labor előadáson 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. A félév során a laborgyakorlatok alkalmával 5 kis zárthelyit iratunk “röp-zh” jelleggel. Ezeknek a pótlására nincs lehetőség, az elmulasztott kis zh-k eredményét 0-nak tekintjük. A három legeredményesebb kiszh átlaga számít.

     

    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 nagy zárthelyi dolgozat megírására 1 pótlási lehetőséget biztosítunk a szemeszter végén. Főszabály szerint további pótlási lehetőség nincs.

     

    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ó hetében, a laborgyakorlaton esedékes. Késedelmes feladatbeadás a pótlási időszak végéig lehetséges.

     

    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 (30%),

    ·    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 az előírt időn 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ényé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 tanúsított aktivitása alapján, saját belátásuk szerint +/– 0.5 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 szemeszterben. Főszabály szerint további pótlási lehetőség nincs. Gyakorlaton való részvétel valamint a kis ZH-k pótlására nincs lehetőség. Házi feladat késedelmes beadása a pótlási időszak végéig lehetséges. 

    12. Konzultációs lehetőségek Konzultáció e-mailen, illetve a hallgató igénye szerint személyesen, a gyakorlatvezetővel egyeztetve.
    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: az ANSI szerint szabványosított változat
    Mûszaki Könyvkiadó, 1994.

    [4] B.W. Kernighan - D.M. Ritchie:
    The C Programming Language.
    Prentice Hall, 1988. 2nd edition

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

    Kontakt óra

    56

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

    7

    Készülés gyakorlatokra

    0

    Készülés laborra

    14

    Készülés zárthelyire

    16

    Házi feladat elkészítése

    27

    Önálló tananyag-feldolgozás

    0

    Vizsgafelkészülés

    0

    Összesen

    120

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

    Dr.Poppe András

    Egyetemi docens

    Elektronikus Eszközök Tsz

    Kohári Zsolt

    Egyetemi tanársegéd

    Elektronikus Eszközök Tsz