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.