A programozás alapjai 1.

A tantárgy angol neve: Basics of Programming 1.

Adatlap utolsó módosítása: 2013. június 24.

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

Villamosmérnöki Szak

BSc. képzés

Kötelező

Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIHIA106 1 2/1/1/f 5 1/1
3. A tantárgyfelelős személy és tanszék Dr. Zsóka Zoltán, Hálózati Rendszerek és Szolgáltatások Tanszék
4. A tantárgy előadója
Név
Beosztás  Tanszék
 Dr. Zsóka Zoltán docens Hálózati Rendszerek és Szolgáltatások Tanszék
 Vitéz András
 adjunktus Hálózati Rendszerek és Szolgáltatások Tanszék
  Dr. Fiala Péter
 adjuntkus Hálózati Rendszerek és Szolgáltatások Tanszék
6. Előtanulmányi rend
Kötelező:
Training.Code=("5N-A7")

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 hallgatók megfelelő jártasságot szerezzenek a számítógépes problémamegoldás módszereinek és alapvető eszközeinek használatában annak érdekében, 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 a C programozási nyelv megismerése teszi lehetővé. A gyakorlatok és laborok anyaga folyamatosan követi az előadások tematikáját, azok megértését, elmélyítését támogatja.

8. A tantárgy részletes tematikája 1.    
Előadás: A számítógépes problémamegoldás alapfogalmai: program, algoritmus, algoritmizálás, kódolás. Kifejezések és változók fogalma. A C nyelv alapjai. Változók deklarációja, értékadás, egymás utáni utasítások megadása. Egyszerű beolvasás és kiírás.
Gyakorlat: Hétköznapi algoritmusok, folyamatábraszerű rajz készítése, algoritmusok lejátszása. A HSZK használata.

2.    
Előadás: Forráskódok elemei. Szintaktika, szemantika. A nyelvtani szabályok. Kulcsszavak, utasítások, azonosítók, megjegyzések fogalma. Algoritmusdokumentálási eszközök. Folyamatábra, struktogram, pszeudokód. Algoritmusok elemei: ciklusok, elágazások és szekvenciák. Változók definíciója. Összetett vezérlési szerkezetek, összetett logikai kifejezsek.
Gyakorlat: Operációs rendszer, parancssor, program indítása parancssorból, paraméterek. IDE bemutatása. Egyszerű, kézhez kapott programok fordítása.
3.    
Előadás: Egyszerű algoritmusok. Végjeles sorozatok kezelése, ciklusszervezés. Számlálás, összegzés, szélsőértékkeresés tétele. A C nyelv típusai: karakterek, egész, logikai típus megjelenítése. Tömbök fogalma, indexelés fogalma és azokat kezelő egyszerű algoritmusok.
Gyakorlat: Vezérlési szerkezetek (ciklusok, elágazás), beépített függvények. Egyszerű számelméleti algoritmusok, kiíratás, egyes beépített matematikai függvények.
4.    
Előadás: A C nyelv típusai. A véges számábrázolás fogalma. Belső ábrázolás, bitműveletek. Lebegőpontos számábrázolás. Függvények fogalma, dekompozíció fogalma. Lokális változók és élettartam fogalma. Deklaráció, definíció fogalma.
Gyakorlat: Összetettebb algoritmusok kódolása, beolvasás, egyszerű tömbkezelés. Beolvasás tömbbe; elemek megváltoztatása, kiíratása, indexelés, túlindexelés.
5.    
Előadás: Operátorok. Precedenciák, kiértékelés, mellékhatás. Balérték és jobbérték fogalma. Kiértékelési sorrend és kiértékelési pontok. Struktúrák, struktúrákon végzett műveletek. Struktúrák és függvények kapcsolata.
Gyakorlat: Függvények kódolása, egyszerű matematikai jellegű függvények. Összetettebb problémák dekompozíciója.
6.    
Előadás: Felsorolt típus. Az indirekció fogalma, pointerek bevezetése. Cím szerinti paraméterátadás. Pointerek és tömbök kapcsolata, pointer aritmetika. Sztring mint karaktertömb, sztring mint végjeles sorozat. Sztringkezelés beépített függvényekkel.
Gyakorlat: Nyomkövetés, lépésenkénti végrehajtás. Változók megfigyelése. Egész típusok bináris megjelenítése, túlcsordulás. Lebegőpontos ábrázolás pontatlansága. Struktúra, struktúra mint paraméter.
7.    
Előadás: Dinamikus tárkezelés. Memória-allokáció, felszabadítás. Többdimenziós dinamikus tömbök. Szabványos input és output, fájlkezelés.
Gyakorlat: Függvények és pointerek, cím szerinti paraméterátadás,. Tömb átadása függvénynek. Sztringkezelés saját függvényekkel, beépített sztringkezelő függvények.
8.    
Előadás: Önhivatkozó adatszerkezetek, láncolt listák. Egyszeres, kétszeres láncolás, strázsás lista. Lista változatai, lifo, fifo, fésűs lista. Többszörös indirekció fogalma.
Gyakorlat: Dinamikus memóriakezelés. Dinamikus tömbök. Egyszerű szöveges fájlkezelés.
9.    
Előadás: Rekurzió fogalma. Valódi és álrekurzió. Fák, mint rekurzív adatszerkezetek. Fák bejárása, keresőfák és dekódoló fák
Gyakorlat: Dinamikusan foglalt struktúrák. Listák kezelése, implementálása. Bináris fájlkezelés. Adatszerkezet építése fájlból.
10.    
Előadás: Függvényre mutató pointerek. Union és bitmező típusok. Memóriakezelés rendszerezése, verem, láthatóság és élettartam fogalmának részletes tárgyalása. Hibakezelés és tesztelés jelentősége. Keresések: lineáris és bináris keresés. Algoritmusok lépésszámának bevezetése.
Gyakorlat: Rekurzív függvények kódolása. Fabejáráson alapuló algoritmusok kódolása.
11.    
Előadás: Szétválogatás. Rendezések. Rendezések kulcsa, rendezések lépésszáma. Alapvető rendező algoritmusok. Gyorsrendezés. Generikus algoritmusok.
Gyakorlat: Bitműveletes feladatok, maszkolás. Fésűs lista adatszerkezet, felépítés fájlból. A tesztelés folyamatának demonstrálása. Gyakorlás a nagyzárthelyire.
12.    
Előadás: Program és külvilág kapcsolata. Állapotgép. További adatszerkezetek tárgyalása, gráfok modellezése.
Gyakorlat: Tömbkezelés, rendezés, függvények írása. Többdimenziós tömbök gyakorlása. Függvényre mutató pointerek. Gyakorlás a nagyzárthelyire.
13.    
Előadás: Az előfeldolgozó használata. Nagyobb programok tervezése; adatszerkezetek megválasztása, funkcionális dekompozíció. Programszegmentálás, alkalmazói program készítése a specifikációtól a dokumentálásig.
Gyakorlat:Parancssori argumentumok. Nagyházi beszedése. Gyakorlás.
14.    
Előadás: Tartalék előadás.
Gyakorlat: Gyakorlás.
9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium) Heti kétórás előadások, egy-egy óra gyakorlat és laboratórium egyben megtartva, számítógépes laboratóriumban.
10. Követelmények Az előadások és a gyakorlatok látogatása kötelező. Az előadásokon a jelenlétet a félév folyamán több, előre nem jelzett alkalommal ellenőrizzük, aláírást nem kaphat az, aki ezek alapján az alkalmak több mint 30%-áról (pl. 14 előadás esetén 5 vagy több, 21 előadás esetén 7 vagy több, 28 előadás esetén 9 vagy több alkalommal) hiányzott. A gyakorlatokon a jelenlétet minden alkalommal ellenőrizzük, 30%-ot meghaladó hiányzás esetén a tantárgyból sem aláírás sem kreditpont nem szerezhető.
a. A szorgalmi időszakban:
(1) a folyamatos tananyagkövetést ellenőrző gyakorlatokon és laborokon 11 előre bejelentett alkalommal íratott kiszárthelyi,
Értékelés: A dolgozatokra kapható pontszám a félév során az egyre nehezedő anyagnak megfelelően változik:
•    az A szakaszban 3 dolgozatot írnak, mindegyiken 1pontot lehet szerezni,
•    a B szakaszban 4 dolgozatot írnak, mindegyiken 2pontot lehet szerezni,
•    a C szakaszban 4 dolgozatot írnak, mindegyiken 3pontot lehet szerezni.
Minimum követelmény a legjobb 7 dolgozatból legalább 7 pont elérése. Ezen kívül az A szakaszban összesen minimum 1, a B szakaszban minimum 2 és a C szakaszban minimum 3 pontot is meg kell szerezni.
(2) az ismeretek átfogó és részletes áttekintését mérő nagyzárthelyi
Értékelés: 0-60 pontig
Minimum követelmény: 20 pont és a 3 feladat közül legalább egynek elfogadható szintű megoldása.
(3) az ismeretek alkalmazását és készségszintű megértését elősegítő nagyházi feladat, amely átfogja az adatszerkezet-tervezés, az algoritmizálás, az implementálás, a tesztelés és a dokumentálás fázisait. Ennek beadása több ütemben történik: adatszerkezet, algoritmusok, program. A program beadására az adatszerkezet és az algoritmusok elfogadása előtt nem kerülhet sor.
Értékelés: elfogadható/nem elfogadható
Minimum követelmény: elfogadott megoldási terv (adatszerkezet és az algoritmusok) és működőképes program az előírt dokumentációval.
b. A vizsgaidőszakban: nincs.
11. Pótlási lehetőségek A kiszárthelyik pótlására nincs lehetőség.
A nagyzárthelyi dolgozat pótzárthelyivel pótolható. Ennek sikertelensége esetén a dolgozat a TVSZ  16.§ (3) szerint a pótzárthelyi után, különeljárási díj fizetése mellett, másodszor is pótolható (pót-pótzárthelyi).
A házi feladatot az utolsó gyakorlaton személyesen kell bemutatni. Késedelmes beadására a pótlások hetében van lehetőség, a gyakorlatvezetővel egyeztetett időpontban.
12. Konzultációs lehetőségek

Igény szerint előadóval egyeztetve.

13. Jegyzet, tankönyv, felhasználható irodalom
  • N. Wirth: Algoritmusok + Adatstruktúrák = Programok, Műszaki Könyvkiadó, 1982
  • B. W. Kernighan - D. M. Ritchie: A C programozási nyelv, Az ANSI szerint szabványosított változat, Műszaki Kiadó, 1996
  • Benkő Tiborné, Dr. Poppe András: Együtt könnyebb a programozás – C, Computer Books, 2006
  • Wayne Amsbury: Data Structures from Arrays to Priority Queues, Wadsworth Publishing, 1985
    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

    56

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

    30

    Felkészülés zárthelyire

    30

    Házi feladat elkészítése

    34

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

    -

    ..

     

    Vizsgafelkészülés

    -

    Összesen

    150

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

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