A programozás alapjai 1
A tantárgyleírás hatályossága
| Tantárgy neve (magyarul, angolul) |
A programozás alapjai 1
Basics of Programming 1
|
||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Tantárgykód | BMEVIHIAA01 | ||||||||||||
| Tantárgyjelleg | — | ||||||||||||
| Képzési szint | — | ||||||||||||
| Kurzustípusok és óraszámok (heti/féléves) |
|
||||||||||||
| Tanulmányi teljesítmény/értékelés típusa | félévközi érdemjegy | ||||||||||||
| Tantárgy kreditértéke | 7 | ||||||||||||
| Tantárgyfelelős |
DR. Fiala Péter
beosztás: egyetemi docens
elérhetőség:
fiala.peter@vik.bme.hu
|
||||||||||||
| Tantárgyat gondozó oktatási szervezeti egység |
Hálózati Rendszerek és Szolgáltatások Tanszék
|
||||||||||||
| Kar | Villamosmérnöki és Informatikai Kar | ||||||||||||
| Tantárgy weboldala | https://edu.vik.bme.hu/ | ||||||||||||
| Tantárgy elsődleges mintatantervi jellege | — | ||||||||||||
| Közvetlen előkövetelmények – Erős előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Gyenge előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Párhuzamos előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Mérföldkő előkövetelmény | nincs | ||||||||||||
| Közvetlen előkövetelmények – Kizáró feltétel | nincs |
Célkitűzés
1. Alapfogalmak: Az imperatív programozási paradigma. Algoritmus és annak leírása. Pszeudokód, folyamatábra. Kifejezések. Állandók és változók. A C nyelv alapjai. Forráskód, megjegyzések, kulcsszavak. Változók deklarálása. Értékadás. Beolvasás és kiírás.
2. Strukturált programok. A strukturált programozás tétele. A struktorgram. Strukturált programozás C-ben: az if és while utasítások. Egyéb strukturált elemek: for, do-while, switch. Összetett vezérlési szerkezetek.
3. Vektoralgoritmusok. A soros adatfeldolgozás: összegzés, számlálás, szélsőérték-keresés. Összetett logikai kifejezések. Tömbök: deklarálás, kezdetiérték-adás, indexelés. A túlindexelés. Egyszerű tömbös algorimusok: hisztogram. Ciklikus indexelés: körbuffer megvalósítása. Nemstrukturált vezérlő elemek: break, continue.
4. A C nyelv aritmetikai típusai: Az egész típusok. Ábrázolás, túlcsordulás. A logikai típus megjelenítése. A karakter típus: Az ASCII-tábla. Műveletek karakterekkel. A lebegőpontos típus: Ábrázolás, relatív pontosság. A gépi számábrázolási pontosság.
5. Függvények. A funkcionális dekompozíció. Függvények definiálása és hívása. A függvényhívás mechanizmusa. A verem. Lokális és globális változók láthatósága és élettartama. A felsorolt típus.
6. Struktúrák és a rajtuk végezhető műveletek. Struktúrákon végzett műveletek megvalósítása függvényekkel. Típusnév-hozzárendelés.
7. Indirekció. Memóriacímek és mutatók. Indirekt változóhozzáférés mutatókon keresztül. Cím szerinti paraméterátadás. Függvény által paraméterlistán visszaadott értékek. Mutatóaritmetika. Mutatók és tömbök kapcsolata. Sztringek és műveleteik. Szabványos sztringkezelő függvények.
8. Dinamikus memóriakezelés. Memóriafoglalás és -felszabadítás. Memóriaszivárgás. A heap fogalma. Dinamikusan foglalt tömbök és sztringek. Operátorok és kifejezések. Kifejezésfák felépítése. Operátorok precedenciája és asszociativitása. A kifejezésfák kiértékelése, operandusok kiértékelési sorrendje. A logikai rövidzár. Mellékhatásos kifejezések. Balérték és jobbérték fogalma. Kifejezések kiértékelésének sorrendhatár-pontjai.
9. Fájlkezelés C-ben. Műveletek szöveges fájlokkal: megnyitás, írás, olvasás, bezárás. A pufferelt fájlkezelés. Műveletek bináris fájlokkal: megnyitás, írás, olvasás, bezárás. Többdimenziós tömbök. Többszörös (sorfolytonos) indexelés. Többdimenziós tömb átadása függvénynek. Dinamikusan foglalt többdimenziós tömbök. Mutatótömbök, sztringtömbök.
10. Dinamikus adatszerkezetek. Önhivatkozó adatszerkezetek. Egyszeresen láncolt listák. Lista bejárása, keresés, beszúrás, törlés listából. Többszörösen láncolt listák. Strázsás listák. Listákkal megvalósított speciális adatszerkezetek: FIFO, LIFO, több szempont szerint rendezett listák, körkörösen láncolt listák.
11. Rekurzió. A rekurzió fogalma egyszerű példákon keresztül. A rekurzió megvalósítása a veremben. Iteráció és rekurzió összehasonlítása. Rekurzív algoritmusok: útvonalkeresés. Bináris fák. Bináris fa felépításe, bejárása, elem keresése, beszúrása. Mélységi bejárások: inorder, preorder, postorder.
12. Keresés és rendezés. Lineáris keresés rendezett és rendezetlen adatvektorban (tömbben és listában). Logaritmikus keresés tömbben. A keresések lépésszáma. Rendező algoritmusok: közvetlen kiválasztás, közvetlen beszúrás, buborékrendezés. Gyorsrendezés. Rendező algoritmusok lépésszámának összehasonlítása.
13. Függvénymutatók. Függvény mint függvény paramétere. Generikus algoritmusok. Típusfüggetlen generikus algoritmusok megvalósítása. Generikus keresés és rendezés.
A gyakorlatok és laborok részletes tematikája:
1. Gyakorlat: Hétköznapi és egyszerű matematikai algoritmusok, folyamatábraszerű rajz készítése, algoritmusok lejátszása. Labor: A HSZK használata. Operációs rendszer, parancssor, egyszerűbb parancsok, program indítása parancssorból, program indítása paraméterekkel, átirányítás.
2. Gyakorlat: Algoritmizálás strukturált elemekkel: struktogram, strukturált pszeudókód, C kód. Labor: IDE bemutatása. Egyszerű, kézhez kapott programok fordítása, átalakítása.
3. Gyakorlat: Adatsorok feldolgozását igénylő egyszerű problémák. Tömbök használata, beolvasás tömbbe; elemek megváltoztatása, kiíratása, indexelés. Labor: Vezérlési szerkezetek (ciklusok, elágazás), beépített függvények. Egyszerű számelméleti algoritmusok kódolása, kiíratás, egyes beépített matematikai függvények használata.
4. Gyakorlat: Egyszerű matematikai jellegű függvények, karakter-feldolgozó függvények. Összetettebb problémák dekompozíciója. Karakter típusú változók és tömbök használat, feldolgozása. Labor: Végjeles adatsor feldolgozása. Tömbkezelés programban, beolvasás tömbbe; elemek megváltoztatása, kiíratása, indexelés, túlindexelés.
5. Gyakorlat: Függvények használata. A funkcionális dekompozíció. Labor: Függvények kódolása, egyszerű matematikai jellegű függvények. Karaktereket feldolgozó függvények és programok. Nyomkövető (debug) funkció megismerése, lépésenkénti végrehajtás, változók megfigyelése.
6. Gyakorlat: Struktúrák használata, struktúrákat kezelő függvények. Felsorolt típus használata. Labor: Struktúra, struktúra mint paraméter. Egész típusok bináris megjelenítése, túlcsordulás. Lebegőpontos ábrázolás pontatlansága.
7. 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. Labor: Pointerek, tömbök, sztringek kezelése függvényekkel. Beépített sztringkezelő függvények. Kapcsolódó nyomkövetési funkciók.
8. Gyakorlat: Dinamikus memóriakezelés. Dinamikus tömbök. Labor: Dinamikus tömbök. Szöveges fájlkezelés.
9. Gyakorlat: Formázott olvasás és írás szöveges fájlból és sztringből. Labor: Egyszerű lista építése bináris fájlból. Összetettebb listás feladat továbbfejlesztése.
10. Gyakorlat: Dinamikusan foglalt struktúrák. Listák kezelése. Adatszerkezet építése. Labor: Egyszerű lista építése bináris fájlból. Összetettebb listás feladat továbbfejlesztése.
11. Gyakorlat: 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 Labor: Fa építése, bejárása, törlése. Fésűs lista adatszerkezet.
12. Gyakorlat: A program kapcsolata a külvilággal. Parancssori paraméterek feldolgozása. Labor: Fésűs lista adatszerkezeten alapuló egyszerű program fejlesztése, beleértve a hibakeresést és az egyszerű tesztelést is.
13. Gyakorlat: Bitműveletes feladatok, maszkolás. Függvénypointerek. Függvény átadása függvénynek, keresési feladat paraméterként átadott függvény feltétellel. Gyakorlás a nagyzárthelyire. Labor: Függvény átadása paraméterként. Szabványos kereső és rendező függvények használata. Többdimenziós tömbök gyakorlása.
Tanulmányi eredmények
Ez a tantárgy a KKK rendeletben meghatározott, következő kompetenciák fejlesztését szolgálja:
Tudás
Nincsenek rögzített tanulási eredmények.
Képességek
Nincsenek rögzített tanulási eredmények.
Attitűd
Nincsenek rögzített tanulási eredmények.
Autonómia és felelősség
Nincsenek rögzített tanulási eredmények.
Oktatási módszertan
Tanulástámogató anyagok
Online források
A tantárgy teljesítéséhez ajánlott előzetes ismeretek
Általános szabályok
Teljesítményértékelési módszerek
Szorgalmi időszakban végzett teljesítményértékelések részletes leírása
Nincs megadva részletes értékelés.
Szorgalmi időszakban végzett teljesítményértékelések részaránya
Nincs megadva részarány.
Vizsgaidőszakban végzett teljesítményértékelések részletes leírása
Nincs megadva részletes értékelés.
Vizsgarészek részaránya
Nincs megadva részarány.
Érdemjegy megállapítása
Nincs megadva érdemjegy határ.
Jelenléti és részvételi követelmények
Nincs megadva jelenléti követelmény.
Javítás, ismétlés és pótlás különös szabályai
Nincs megadva.
Rövid leírás
Nincs megadva.
Részletes leírás
Ajánlott tantárgyak
A tantárgy elvégzéséhez szükséges tanulmányi munka
Nincs megadva munkaidő bontás.
Tantárgykövetelmények hatályossága
Tantervi elhelyezés
Nincsenek rögzített tantervi elhelyezések ehhez a tárgyverzióhoz.