Programozás


A tantárgy célja
:
Egyszerű, több ciklusos, függvényekre, osztályokra bontott alkalmazások készítésének megmutatása.
A programkészítésen belül a tervezés és a megvalósítás éles szétválasztása. Programozási minták (specifikációs-, algoritmus-, kód-, implementációs-, stb. minták) szerinti probléma megoldás.

Tantárgyi tematika
:
Algoritmus mintákra (programozási tételekre) történő visszavezetés, mint analóg programozási (programtervezési) technika. Egész számok intervallumára megfogalmazott programozási tételek. Feladatok megoldásának visszavezetése programozási tételekre és azok implementálása C++ nyelven. Beágyazott visszavezetés (tétel a tételben), annak segítségével készült programok implementálása függvények és modulokra bontás segítségével, kivételkezeléssel. Rekurzív függvények kibontása (csak az A, B és T szakirányon). Adattípus fogalma, típus megvalósítás és annak kódolása osztály segítségével. Nevezetes típus-szerkezetek. A felsoroló típus fogalma, nevezetes felsoroló típusok. Programozási tételek általánosítása felsoroló típusokra. Feladatok megoldása egyedi felsorolókkal (csak az A, B és T szakirányon).

Felhasznált irodalom:
- Bjarne Stroustrup: A C++ programozási nyelv (Kiskapu)
- Herbert Schildt: C/C++ Referenciakönyv (Panem Kft.) 1998.
- Andrei Alexandrescu, Herb Sutter: C++ kódolási szabályok. Kiskapu Kft. 2005.
- Kent Beck: Implementációs minták. Panem 2008.
- Fóthi Ákos: Bevezetés a programozáshoz. ELTE Eötvös Kiadó. 2005.

Követelmény:
A gyakorlaton megszerezhető összevont jegy

B, T szakirány
:
- hetente plusz-mínusz minősítésű kisdolgozat, amelynek nem lehet az összesített eredménye negatív
- 3 zárthelyi (a harmadik évfolyam szintű): 0-5-ig értékelt, legalább kettőt legalább 2-esre meg kell írni, 1 javítási lehetőség van a félév végén
- 3 házi feladat: mindegyiket legkésőbb a kitűzött határidőt követő négy héten belül, de még a szorgalmi időszakban kell bemutatni a megadott minőségi követelményeknek megfelelően.  Értéke 5, ami késés esetén hetente eggyel csökken. A házi feladatok része a részleges fejlesztői dokumentáció.
- megfelelt minősítésű félév végi géptermi zárthelyi, 1 javítási lehetőség

A, C, E szakirány:
- hetente plusz-mínusz: nem lehet a végeredmény negatív
- 3 zárthelyi (a harmadik évfolyam szintű): 0-5-ig értékelt, legalább kettőt legalább 2-esre meg kell írni, 1 javítási lehetőség van a félév végén
- 2 házi feladat: mindegyiket legkésőbb a kitűzött határidőt követő négy héten belül, de még a szorgalmi időszakban kell bemutatni a megadott minőségi követelményeknek megfelelően.  Értéke 5, ami késés esetén hetente eggyel csökken. A házi feladatok része a részleges fejlesztői dokumentáció.
- 2 géptermi zárthelyi: 0-5-ig értékelt, legalább az egyiket 2-esre meg kell írni, 1 javítási lehetőség

Előfeltétel:
Programozási alapismeretek

Óraszám:
2 óra előadás; 2 óra táblásgyakorlat, az A, C és E szakirányon további 2 óra laborgyakorlat, valamint mindenhol heti 1 óra konzultációs gyakorlat a házi feladatok bemutatására.

Tematika (2009-2010/2)

1. Egyszerű program készítése. Programozási minták. Összegzés programozási tétele.
2. Programozási tételek. (számlálás, maximum kiválasztás, kiválasztás, lineáris keresés, feltételes maximumkeresés) 
3. Többszörös beágyazott visszavezetés. Alprogramok használata.
4. Implementálás. Csomagokra bontott program. 
5. A,B,T: Rekurzív függvény kiszámításának tétele és a rekurzív függvény kibontása.
    C,E: Program átalakítások.
6. Adattípus fogalma. Típus megvalósítása osztállyal.
7. Absztrakt típus és típus-megvalósítás.
8. Nevezetes típus-szerkezetek. Felsoroló típus. Programozási tételek felsorolóra.
9. Visszavezetés nevezetes felsorolókkal. 
10. A,B,T: Visszavezetés egyedi (gyűjtemény nélküli, feltétel fennállásáig tartó és csoportonkénti) felsorolóval. 
     C,E: Visszavezetés nevezetes felsorolókkal.
11. Visszavezetés összefuttató felsorolóval.
12. Évfolyamzárthelyi