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 | BMEVIEEAA00 | ||||||||||||
| 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 |
Kohári Zsolt
beosztás: tanársegéd
elérhetőség:
kohari.zsolt@vik.bme.hu
|
||||||||||||
| Tantárgyat gondozó oktatási szervezeti egység |
Elektronikus Eszközök Tanszéke
|
||||||||||||
| Kar | Villamosmérnöki és Informatikai Kar | ||||||||||||
| Tantárgy weboldala | https://infoc.eet.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
Az előadások részletes tematikája
1. hét.
Bevezetés. Programozás fogalma. Kifejezések és változók, típus fogalma. C nyelv alapjai. Egyszerű kifejezések a programban.
2. hét.
Forráskódok elemei. Algoritmus fogalma, leírása. Ciklus, elágazás, szekvencia. Kombináció: összetett vezérlési szerkezetek, összetett kifejezések.
3. hét.
Egyszerű algoritmusok pszeudokód és C változatai. Összegzés, számlálás, szélsőérték keresése és szétválogatás tételei. Karakter és logikai típusok. Tömbök.
4. hét.
A számítógép felépítése. Beépített típusok részletesen. Véges ábrázolás. Egész és lebegőpontos számok ábrázolása, számábrázolási korlátok. Függvények fogalma, használata. Absztrakció, paraméterek és lokális változók.
5. hét.
Operátorok. Precedencia, kiértékelés, mellékhatás. Összetett adatszerkezetek, struktúrák és saját típusok használata.
6. hét.
Felsorolt típus. Állapotgép. Cím szerinti paraméterátadás, indirekció és sztringek a C nyelvben.
7. hét.
Program kapcsolata a külvilággal: parancssori paraméterek és fájlkezelés. Előfeldolgozó. Programszegmentálás. Karbantartható programok írása, dokumentáció.
8. hét.
Tömbi algoritmusok. Keresések. Rendezések. Rekurzió.
9. hét.
Dinamikus memóriakezelés. Dinamikus tömbök. Dinamikus sztring kódolása. Memóriakezelés rendszerező tárgyalása.
10. hét.
Dinamikus adatszerkezet: láncolt listák. Listák használata. Bejárás, törlés, beszúrás. Egyszeres és többszörös láncolás.
11. hét.
Dinamikus adatszerkezet: bináris fák használata. Keresőfák, dekódoló fák. Fák bejárásai. Többszörös indirekció. Hasító táblák röviden.
12. hét.
Függvényre mutató pointerek, generikus algoritmusok és típusok a C nyelvben.
13. hét.
További adatszerkezetek. Nagyobb programok tervezése. Funkcionális dekompozíció bemutatása egy komplex példán.
14. hét.
Tartalék előadás.
A gyakorlatok/laborok részletes tematikája
1. hét.
Labor: HSZK bemutatása, házirend. Operációs rendszer alapismeretek: parancssor, program indítása parancssorból, szabványos bemenet és kimenet, átirányítás, paraméterek. Egyszerű C program lefordítása és kipróbálása.
Gyakorlat: Hétköznapi algoritmusok. Folyamatábra készítése közismert algoritmusokhoz (pl. írásbeli összeadás, prímtényezős felbontás).
2. hét.
Labor: Integrált fejlesztői környezet bemutatása. Program szövegének szerkesztése, fordítása. Szintaktikai és szemantikai hibák, nyomkövetés, értékadás megfigyelése, változók vizsgálata. A fordító hibaüzenetei. Printf és scanf kezelése, formátumok megadása.
Gyakorlat: Algoritmizálás gyakorlása a kártyapakli példáján. Alapalgoritmusok iteratív megfogalmazása: „benne van-e?”, „melyik a leg...?”, „sorban van-e?”
3. hét.
Labor: Kódolás struktogramból, pszeudokódból. Triviális I/O-t végző programok; egyszerű számítások. Nyomkövető használata.
Gyakorlat: Algoritmusok leírása C nyelven. Számelméleti példák, prímszám, tükörszám, másodfokú egyenlet, numerikus módszerek, pl. pi kiszámítása ciklussal.
4. hét.
Labor: Összetett vezérlési szerkezetek gyakorlása. Ismert algoritmus (pl. prímszám, lnko) programozása.
Gyakorlat: Tömbbel megoldható feladatok gyakorlása, pl. naptár kezelése, hisztogramok, eloszlások számítása.
5. hét.
Labor: Alapvető tömbkezelés. Tömbök létrehozása. Keresés, számlálás, szélsőérték keresése alapfeladatok. Tömbműveletek, tömb léptetése. Túlindexelés hatásának bemutatása.
Gyakorlat: Összetett problémák, dekompozíció. Függvények használata; paraméterek és visszatérési értékek. Egyszerű, matematikai jellegű függvények írása, karakterek használata.
6. hét.
Labor: Számrendszerek, bitműveletek. Szám kiírása kettes számrendszerben. Bitminta előállítása. Túlcsordulás hatásának vizsgálata. Lebegőpontos pontatlanság szemléltetése.
Gyakorlat: Struktúrák, hozzájuk tartozó műveletek és függvények. Többszörösen összetett adatok. Struktúrában tömb, tömbben struktúra.
7. hét.
Labor: Beépített sztringkezelő függvények. Tömbök kezelése – további gyakorlás. Többdimenziós tömbök.
Gyakorlat: Tömbök és függvények használata, tömb átadása függvénynek. Sztringes feladatok. Szöveg megfordító, palindrom. Sztring átadása függvénynek. Tömbméret és sztringhossz közti különbség. Túlindexelés veszélye.
8. hét.
Labor: Állapotgépek megvalósítása C nyelven. Fájlkezelés a C programokban.
Gyakorlat: Állapotgépek tervezése példákon keresztül; részletek implementálása.
9. hét.
Labor: Rekurzió megfigyelése a nyomkövetőben. Rekurzióval megoldható problémák, pl. visszafelé kiírás, adott számrendszerben kiírás.
Gyakorlat: Rekurzív problémák; a rekurzió tervezésének gyakorlása.
10. hét.
Labor: Dinamikus memóriakezelés és sztringek. Saját sztring típus létrehozása és műveleteinek kódolása.
Gyakorlat: Munka dinamikus tömbbel. Komplett halmaz típus kódolása. Méret nyilvántartása, keresés, átméretezés. Munka struktúrákra mutató pointerekkel.
11. hét.
Labor: Listakezelés implementálása. Lista építése. Fájlba írás, fájlból olvasás. Strázsa alkalmazása. Beszúrás, törlés.
Gyakorlat: Adatszerkezetek választása. Alacsony szintű listaműveletek, beszúrás és törlés, memóriakezelés.
12. hét.
Labor: Fák kezelése: létrehozás, másolás, keresés.
Gyakorlat: Fák algoritmusai. Csomópontok, szintek, levelek. Tükörképek, szimmetrikus fa vizsgálata.
13. hét.
Labor: Házi feladatok beadása. Dinamikus adatszerkezetek gyakorlása.
Gyakorlat: Függvényre mutató pointerek. Numerikus integrálás, generikus számlálás és rendezés.
14. hét.
Labor: Gyakorlás, áttekintő feladatok.
Gyakorlat: Gyakorlás, áttekintő feladatok.
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.