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.
BME Természettudományi Kar
Mérnök-fizikus Szak
Név:
Beosztás:
Tanszék, Int.:
Dr. Poppe András
docens
Elektronikus Eszközök Tsz.
-
Tematikaütközés miatt a tárgyat csak azok vehetik fel, akik korábban nem hallgatták a következő tárgyakat:
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.
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.
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.
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
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,
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.
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.
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.
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)
(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