Létrehozó: Létrehozás: Utolsó mód.: Változat: Tárgy: Kezelése:
Horváth Ernő 2016. 02. 17. 9:17:00 2016. 02. 17. 18:54:00 1.0.4 NGB_IN001_2 Nyilvános
Féléves feladat elkészítési szabályai progSzabalyzat_2015-16-2.docx
Féléves feladat elkészítési szabályai Összefoglalás: A Programozás II. (NGB_IN001_2) tárgy féléves programozási feladatának elkészítési szabályai
Oldal: Féléves feladat
1/19
Létrehozó: Létrehozás: Utolsó mód.: Változat: Tárgy: Kezelése:
Horváth Ernő 2016. 02. 17. 9:17:00 2016. 02. 17. 18:54:00 1.0.4 NGB_IN001_2 Nyilvános
Féléves feladat elkészítési szabályai progSzabalyzat_2015-16-2.docx
Oldal:
2/19
Féléves feladat
Tartalom 1.
Bevezetés .......................................................................................................................................................................... 3
2.
Formai előírások ................................................................................................................................................................ 4
2.1.
A dokumentáció szerkezete .............................................................................................................................................. 4
2.1.1.
Felépítés ............................................................................................................................................................................ 4
2.1.2.
Fejezetek, címek, bekezdések ........................................................................................................................................... 4
2.1.3.
Számozás ........................................................................................................................................................................... 4
2.2.
Formátum .......................................................................................................................................................................... 5
2.2.1.
Általános jellemzők............................................................................................................................................................ 5
2.2.2.
Kiemelések, rövidítések ..................................................................................................................................................... 5
2.2.3.
Programrészletek, programelemek ................................................................................................................................... 5
3.
Programfejlesztés .............................................................................................................................................................. 7
3.1.
Általános ismertető ........................................................................................................................................................... 7
3.2.
A plágium ........................................................................................................................................................................... 7
3.3.
Megjegyzés grafikus programokhoz .................................................................................................................................. 7
3.4.
Elektronikus melléklet ....................................................................................................................................................... 8
3.5.
A melléklet ......................................................................................................................................................................... 8
4.
Munkaszervezés és ellenőrzés .......................................................................................................................................... 9
4.1.
Feladatkiírás és munkavégzés ........................................................................................................................................... 9
4.2.
Feladatbeadás és értékelés ............................................................................................................................................... 9
5.
Választható programok ................................................................................................................................................... 10
5.1.
Érdekes, összetett algoritmust használó feladatok ......................................................................................................... 10
5.2.
Matematikai jellegű feladatok......................................................................................................................................... 12
5.3.
Játék jellegű feladatok ..................................................................................................................................................... 13
5.4.
Nyilvántartás jellegű feladatok ........................................................................................................................................ 15
6.
Irodalomjegyzék .............................................................................................................................................................. 18
7.
Értékelőlap féléves programozási feladathoz ................................................................................................................. 19
Létrehozó: Létrehozás: Utolsó mód.: Változat: Tárgy: Kezelése:
1.
Horváth Ernő 2016. 02. 17. 9:17:00 2016. 02. 17. 18:54:00 1.0.4 NGB_IN001_2 Nyilvános
Féléves feladat elkészítési szabályai progSzabalyzat_2015-16-2.docx
Oldal:
3/19
Féléves feladat
BEVEZETÉS
A jelen dokumentum célja, hogy egységes, mind a formai, mind a tartalmi szempontokra kiterjedő szabályozást adjon a Programozás II. (NGB_IN001_2) tantárgyhoz előírt féléves programozási feladatra vonatkozóan. 5
Célja, hogy a feladatok elkészítésénél és dokumentálásánál felvetődő gyakori kérdésekre, problémákra egységes, írásban is rögzített választ adjon és a feladatmegoldások - mind formai megjelenésükben, mind tartalmi felépítésükben, szerkezetükben – minél egységesebb, az itt folyó szakképzésre jellemző képet mutassanak. Jelen szabályzat nem foglalkozik a munkaszervezési, határidőzési előírásokkal.
10
Előrebocsátjuk még, hogy a dokumentáció, mint kiadvány megszerkesztésére vonatkozó formai előírásokat, ahol ez a pontosság és egyértelműség kedvéért szükséges, a Microsoft Word, mint ebben a feladatkörben jelenleg leginkább használt kiadványszerkesztő terminológiájában fogalmazzuk meg. Egyben ezt is ajánljuk (a 2007 vagy magasabb verzióban) a dokumentáció elkészítésére. Ez nem kötelező, más, legalább ilyen szolgáltatási szintű kiadványszerkesztő is használható, a követelmények értelemszerű alkalmazása mellett. A feladatkiírás összeállításához az ajánlásokat, a hozzájárulást és számos mintafeladatot köszönjük a Budapesti Műszaki és Gazdaságtudományi Egyetem Elektronikus Eszközök Tanszékének és Dr. Czirkos Zoltánnak [1].
15
Létrehozó: Létrehozás: Utolsó mód.: Változat: Tárgy: Kezelése:
2.
Horváth Ernő 2016. 02. 17. 9:17:00 2016. 02. 17. 18:54:00 1.0.4 NGB_IN001_2 Nyilvános
Féléves feladat elkészítési szabályai progSzabalyzat_2015-16-2.docx
Oldal:
4/19
Féléves feladat
FORMAI ELŐÍRÁSOK
2.1. A dokumentáció szerkezete 2.1.1.
Felépítés
A félév során 2 dokumentumot szükséges leadni: 20
1.
2. 25
A 7. hétig egy egyoldalas előválasztó lapot a Moodle rendszerben. Azonos típusú feladatból nem fogadunk el 5-nél többet. A már nem választható feladattípusok listáját a Moodle oldalain folyamatosan frissítjük. Sikeres feladatválasztás esetén a feladattípus mellett az azt kiválasztó hallgatók Neptun kódját feltüntetjük. Probléma esetén az érintett hallgatókat a Moodle rendszeren keresztül külön is értesítjük. A végleges feladat dokumentációt kinyomtatva, lefűzve a szorgalmi időszak utolsó napjáig kell leadni. Ugyanez a határideje a programkód beérkezésének is a Moodle rendszerbe. Adminisztrációs okok miatt a kinyomtatott dokumentumot a Moodle rendszerbe feltöltve is kérjük.
Az előválasztó lap egyetlen oldalból áll, a sablon ehhez a progSablonElovalasztoLap.docx. A végleges feladat dokumentáció sablonja a progSablonVegleges.docx, ennek felépítése: 30
35
• • • • • •
Címlap. Tartalomjegyzék. Bevezetés (fő fejezet). Tervezési dokumentáció (fő fejezet). Felhasználói útmutató (fő fejezet). Mellékletet (fő fejezet).
A dokumentáció A4 szabványméretű lapokra egyoldalasan nyomtatandó ki. A dokumentációt egy műanyag dossziéba kell lefűzni, vagy spirálozottan összefűzni. A fedőlap mindkét esetben átlátszó legyen. Hangsúlyozzuk, hogy mindenfajta formai jegynek a dokumentáción belül azonosnak kell lenni. 40
2.1.2.
Fejezetek, címek, bekezdések
A dokumentáció tartalmi része – hierarchikus szerkezetben – fejezetekre tagolandó. Minden fejezetnek címe van. A címeket külön sorban kiemelve, központozott decimális arab számozással ellátva kell feltüntetni. A címszámozás adja meg a szöveg hierarchikus szerkezetét. Ágaként a címszámozás folyamatos. 45
A fő fejezeteket egyjegyű, 1-gyel kezdődő sorszámmal kell ellátni, ezeket mindig új oldalon kezdjük. Az alsóbbrendű fejezetekre ez már nem áll, és általában törekedjünk az oldalak kitöltöttségére. Törekedjünk arra, hogy a cím rövid, egy sorban elférő legyen. Cím előtt és után térközt kell hagyni. A cím (a számával együtt) lehet balra igazított, vagy sorkizárt. Cím nem állhat egy oldal utolsó soraként. Törekedjünk arra, hogy a cím után még minél több sor legyen az oldalon. A fejezetek bekezdésekre tagolódnak. A bekezdések közt térköz legyen.
50
2.1.3.
Számozás
Folyamatos arab számozással kell ellátni a főbb tartalmi részeket. Az oldalszám és egyéb információk a fejlécben helyezendőek el.
1. ábra Példaábra 55
Az ábraszámozás folyamatos sorszámozás. Az ábraszám után ábracím is írandó. Az ábraszám és cím az ábra alá, középre igazítva helyezkedik el (ld. 1. ábra). Egy ábra legfeljebb 1 oldalt foglalhat el.
Létrehozó: Létrehozás: Utolsó mód.: Változat: Tárgy: Kezelése:
Horváth Ernő 2016. 02. 17. 9:17:00 2016. 02. 17. 18:54:00 1.0.4 NGB_IN001_2 Nyilvános
Féléves feladat elkészítési szabályai progSzabalyzat_2015-16-2.docx
Oldal:
5/19
Féléves feladat 1. táblázat. Példatáblázat
A 1,23 -2,00
60
B 2,34 56,09
C 3,45 2,45
A táblázatokat csak akkor számozzuk, ha ez belső hivatkozások miatt szükséges. A számozás és címezés rendszere ugyanolyan, mint az ábráké, de itt a táblázat fölé teendő a szám és a cím (1. táblázat). Törekedjünk a legfeljebb 1 oldalas táblázatokra, de ha a táblázat több oldalas lenne, a fejlécsora minden oldalon megismétlendő, valamint a táblázatban is jelezni kell a megszakítást és a folytatást.
1
∞
𝑓(𝑡) = 2𝜋 ∫−∞ 𝐹(𝜔)𝑒 𝑗𝜔𝑡 𝑑𝜔
(1)
A képleteket csak akkor számozzuk, ha ez belső hivatkozások miatt szükséges. A számozás rendszere ugyanolyan, mint az ábráké, de itt a képlet mellett a jobb oldalon és zárójelbe téve számozunk, ld. fentebb az 1. képlet. 65
2.2. Formátum 2.2.1.
Általános jellemzők
A formátum által megkövetelt betűtípus az alapszövegre: Calibri, Microsoft Word esetén. Nem megengedett semmilyen extra, díszítő jellegű (mint pl. a kézírást utánzó) betűtípus. Az alapszöveg szimpla sortávolsággal, 12-es betűnagysággal írandó. 70
A bekezdéseket egy üres sornyi térköz választja el. A bekezdés első sora is a bal szélen kezdődjön. A bekezdés igazítása lehet sorkizárt, vagy balra igazított (de csak egyféle). Mivel a Word sablon sok helyen dokumentumtulajdonságokat is használ leadás előtt mindenképp frissíteni kell az összes mezőt. Leggyorsabb ezt elvégezni a Ctrl+A (mindent kijelöl) majd F9 (mezők frissítése) billentyűkombinációval. 2.2.2.
75
Kiemelések, rövidítések
Az alapszövegen belüli kiemelésre használható a dőlt betűvel írás, a félkövérszedés, esetleg más betűtípus. A kiemelt szövegrész betűmérete indokolt esetben lehet kisebb, mint az alapszövegé, de ne legyen nagyobb annál. Ne használjuk az aláhúzásos kiemelést. A rövidítéseket, betűszavakat első előfordulásuknál oldjuk fel, magyarázzuk meg. 2.2.3.
80
85
Programrészletek, programelemek
A dokumentációban csak feltétlenül indokolt esetben szerepeltessünk programrészeket, forráskódot. A program működésének megértését inkább a megfelelő diagramokkal szemléltessük, mert a terjedelmes forráskód a melléklet részeként elektronikus formában bármikor megtekinthető. A szöveg között esetleg betétként szereplő programrészek nyomtatási képe kövesse a programrésznek az eredeti programszövegben meglévő tagolását, szerkezetét. E célból a programrészeket azonos jelszélességű (monospace) betűtípussal és megfelelő betűmérettel írjuk. A formátum által megkövetelt betűtípus itt: Consolas, Microsoft Word esetén. Ha szövegben valamely programbeli azonosítót vagy programelemet írunk le, ezt mindenképpen emeljük ki, különböztessük meg az alapszövegtől. Javasolt, hogy ugyanolyan betűtípussal írjuk, mint a programrészt. Ugyanilyen módon (monospace) emeljük ki a számítástechnikai környezetre vonatkozó azonosítókat is. Ilyenek például a fájlazonosítók, programnevek, globális fájlazonosítók (pl. valami.csv).
90
95
A programrészek írásánál kövessük a programfejlesztő rendszer (Microsoft Visual Studio 2010) szövegszerkesztőjének stílusjegyeit, pl. az alapszavak kiemelése, a megjegyzések írásmódja tekintetében. A Visual Studio másoláskor meg is tartja ezeket a formázásokat. #include <stdio.h> void main() { printf("Hello world.\n");
Létrehozó: Létrehozás: Utolsó mód.: Változat: Tárgy: Kezelése:
Horváth Ernő 2016. 02. 17. 9:17:00 2016. 02. 17. 18:54:00 1.0.4 NGB_IN001_2 Nyilvános
getchar(); }
Féléves feladat elkészítési szabályai progSzabalyzat_2015-16-2.docx
Oldal: Féléves feladat
6/19
Létrehozó: Létrehozás: Utolsó mód.: Változat: Tárgy: Kezelése: 100
3.
Horváth Ernő 2016. 02. 17. 9:17:00 2016. 02. 17. 18:54:00 1.0.4 NGB_IN001_2 Nyilvános
Féléves feladat elkészítési szabályai progSzabalyzat_2015-16-2.docx
Oldal:
7/19
Féléves feladat
PROGRAMFEJLESZTÉS
3.1. Általános ismertető
105
Általános követelmény a programmal szemben az, hogy a józanész elvárásai szerint működjön. A programnak olyan magától értetődő képességekkel is kellhet rendelkeznie, amelyek a specifikációban külön nincsenek rögzítve. Például ha a specifikáció annyit mond, hogy a program egy nevet megjegyez, akkor elvárható az is, hogy a névben lehessen szóköz karakter; vagy ha a specifikáció azt mondja, hogy a program bizonyos adatokat fájlba tud menteni, akkor elvárás az is, hogy vissza is tudja tölteni azokat. A program tervezésénél betartandók az alábbi általános szempontok: •
110
• •
115
• • • •
Strukturált szerkezet, függvények alkalmazása, jól és lehetőleg teljesen paraméterezett szubrutinok, globális változókat csak kivételesen és rendkívül alapos indokkal használjunk. Törekedjünk a program moduláris felépítésére, az egyes funkciók, funkciócsoportok formailag is különüljenek el, kerüljenek külön forrásfájlokba. Ellenőrzött billentyűzet-képernyő input, a felhasználót segítő, tájékoztató, egyértelmű és a lehetőségekhez mérten intuitív működés. Csak saját készítésű vagy a tananyag részét képező programelemek használhatók. Preferáljuk a közös (tananyagbeli) elemek használatát, vagyis: ha valamely funkcióra (pl. ellenőrzött input) van közös megoldás, akkor egyéni megoldás csak akkor fogadható el, ha alkalmazása indokolható. Nem tartalmazhat a program a tananyagban szereplő általános célú eszközöknél alacsonyabb színvonalú megoldásokat. A tananyaghoz tartozó függvényeket, konstansokat, stb. a projekt „tananyag” mappájába kell elhelyezni, ezzel is hangsúlyozottan elkülönítve a saját fejlesztésű programrészektől.
120
Maga a kifejlesztett program legyen jól tagolt, áttekinthető, és tartsa be a strukturált programtervezés alapkövetelményeit.
125
A programírásnál, elkülönítendő a fejlesztő rendszer által adott programelemektől, az általunk bevezetett programelemeknek adjunk magyar nyelvű elnevezéseket, rövidítéseket, lehetőleg olyanokat, amelyek emlékeztetnek az illető elem programbeli funkciójára. Természetesen, ebben alkalmazkodni kell a fejlesztőrendszer szintaktikus szabályaihoz is, például az ékezetek elhagyásával. Külön felhívjuk a figyelmet arra, hogy a program tesztelését a különféle ellenőrző jellegű fordítási opciók bekapcsolt állapotában végezzük, Microsoft Visual Studio 2010 segítségével.
3.2. A plágium 130
A féléves egyéni vagy páros feladat. A plágiumot a TVSZ bünteti. A plágiumot elkövető hallgatók ellen hivatalból fegyelmi eljárást kell indítani.
135
A tárgyban plágiumnak minősül más szellemi termékének minden forrásmegjelölés nélküli felhasználása. Ez független attól, hogy a házi feladatként beadott anyag milyen úton és formában jutott el az eredeti tulajdonostól a beadóhoz. Ide értjük többek között más házijának (módosított) beadását, a házi feladat megoldások ajándékozását és vásárlását, az Internetről letöltést is. Kivételt képeznek a tárgy honlapjáról letölthető kódrészletek (előadás, gyakorlat, labor feladatok megoldásai), továbbá a tárgy oktatóinak tanácsai, iránymutatásai. A plagizált programokat évfolyam szinten, gépesítve keressük egy plágiumkereső szoftverrel (pl. Similarity Tester). Ez a szoftver forráskódok összehasonlítására van kihegyezve, és képes megtalálni azokat a programokat is, amelyek csak formázásban, változónevekben, sztringekben stb. különböznek egymásból. A szoftver által kiadott eredményeket minden esetben szemrevételezéssel ellenőrizzük. [1]
140
3.3. Megjegyzés grafikus programokhoz A féléves feladatnak nem követelménye a grafikus megjelenítés. Aki összetettebb konzolos felületet szeretne készíteni (pl. aknakereső, tetris), használhatja az econio-t, amely a konzol képernyő kezelését segítő függvényeket tartalmaz (színek beállítása, adott pozícióra ugrás stb.) Ez egyszerűbb játékokhoz, teljes képernyőn futó programokhoz jól használható Windows alatt. [1]
145
A grafikus programokhoz pl. a platformfüggetlen SDL használható. A grafikus megjelenítés ebben a tárgyban nem tananyag, de önszorgalomból bárki készíthet grafikus programot is. Ezzel a házi feladat egyéb követelményeit nem lehet kiváltani.
Létrehozó: Létrehozás: Utolsó mód.: Változat: Tárgy: Kezelése:
Horváth Ernő 2016. 02. 17. 9:17:00 2016. 02. 17. 18:54:00 1.0.4 NGB_IN001_2 Nyilvános
Féléves feladat elkészítési szabályai progSzabalyzat_2015-16-2.docx
Oldal:
8/19
Féléves feladat
3.4. Elektronikus melléklet Az elektronikus melléklet jellegéből adódóan nem része a nyomtatott dokumentációnak, ugyanakkor ezen a ponton szót kell ejtenünk annak tartalmáról. Tartalmaznia kell: 150
155
• a terjedelmes forráskódokat, • gépi eszközzel előállított dokumentációs segédleteket, ha vannak ilyenek, • a beadandó dokumentum elektronikus változatát, • a teszt- és példaadatokat egyetlen zip fájlba tömörítve. Itt ismételten felhívjuk a figyelmet a tananyagban szereplő programrészletek „tananyag” mappában történő elkülönítésére. Ezt azután fel kell tölteni az egyetem Moodle rendszerének Programozás II. tárgyhoz tartozó oldalára (https://elearning.sze.hu/moodle/course/view.php?id=2). Az egyértelmű azonosítás miatt a fájl nevének tartalmaznia kell a készítő(k) nevét, Neptun-kódját és a verziószámot (ami minden javítást, ismételt beküldést követően eggyel nő). Pl. • •
KovacsKingaABC123_HirtelenHelgaEFG456_v1.zip vagy GipszJakab11A2A3_v2.zip
3.5. A melléklet 160
A mellékletben kell megadni az elektronikus mellékletben található forráskódok teljes listáját, az egyes fájlok funkciójának megjelölésével. A programrészeknek áttekinthetőnek, megfelelően tagoltnak (forrásfájlok, függvények) és kommentáltnak kell lennie. Amennyiben a feladat dokumentálása szoftveres segítséggel történt, fel kell tüntetni, hogy az ennek eredményeképpen előállt állományok melyik mappában találhatóak.
165
Fentieken túlmenően még feltüntetendő a nyomtatott dokumentum elektronikus változatának tömörített állományon belüli elérési útja, fájlneve is.
Létrehozó: Létrehozás: Utolsó mód.: Változat: Tárgy: Kezelése:
Horváth Ernő 2016. 02. 17. 9:17:00 2016. 02. 17. 18:54:00 1.0.4 NGB_IN001_2 Nyilvános
Féléves feladat elkészítési szabályai progSzabalyzat_2015-16-2.docx
Oldal:
9/19
Féléves feladat
4. MUNKASZERVEZÉS ÉS ELLENŐRZÉS 4.1. Feladatkiírás és munkavégzés 170
A feladatkiírás az adott félév 4. oktatási hetén megtörténik. Ennek részleteiről a hallgatóságot az előadások és gyakorlatok alkalmával értesítjük. A feladatok kiírásáért a tantárgy előadója felelős.
175
A hallgatók a számukra rendelkezésre bocsátott feladatok közül önállóan választhatnak, vagy rendelkezésre bocsájtott feladatokhoz hasonló nehézségűt találhatnak ki. A választás módját a Moodle rendszer tantárgyi oldalán részletezzük. Egy feladatot meg lehet oldani önállóan, vagy legfeljebb kétfős csapatokban. A csoportmunkában megoldott feladat a csoporttagok közös produktuma. A csoporton belüli munkamegosztástól függetlenül a csoport minden tagja egyénileg, a teljes produkcióért felelős, beszámoltatható és azonos értékelést kap. A feladatot pontosan abban a fejlesztőkörnyezetben (ANSI szerint szabványosított „C” nyelv, Microsoft Visual Studio 2010) kell megoldani, amely az adott félében és tantárgyban az oktatásban szerepel.
4.2. Feladatbeadás és értékelés A feladat elfogadható szintű teljesítése az aláírás megszerzésének, és egyben a vizsgára bocsátásnak is feltétele. 180
185
A feladat (dokumentáció és elektronikus melléklet) a szorgalmi időszakban a gyakorlati foglalkozásokon adható be. A beadott feladat értékelése legkésőbb öt munkanap alatt megtörténik. Vitás, gyanús esetekben előírható esetenkénti személyes beszámoló is. Amennyiben erre szükség van, a feladatot értékelő oktató a Neptun rendszeren keresztül előzetesen értesíti a hallgatókat. A feladat értékét pontozással állapítjuk meg. Ez a jelen szabályzat részét képező értékelőlap szerint történik. Ha a feladat valamely értékelési szempontból nem megfelelő, kijavításra visszaadjuk. Az újbóli beadásra is az eredeti ütemezés vonatkozik.
Létrehozó: Létrehozás: Utolsó mód.: Változat: Tárgy: Kezelése:
5.
190
Horváth Ernő 2016. 02. 17. 9:17:00 2016. 02. 17. 18:54:00 1.0.4 NGB_IN001_2 Nyilvános
Féléves feladat elkészítési szabályai progSzabalyzat_2015-16-2.docx
Oldal:
10/19
Féléves feladat
VÁLASZTHATÓ PROGRAMOK
A feladatot lehet a lenti listából is választani, vagy azokhoz hasonló nehézségű, az elvárásoknak megfelelő saját problémák is megoldhatóak. Természetesen a listából való választás sem jelent végleges feladatspecifikációt, a rövid leírásokat még több helyen lehet kiegészíteni, módosítani. Tipp: válasszon olyan feladatot, amelyre szívesen szán időt. Egy érdekes feladaton sokkal hasznosabb és mellesleg könnyebb is dolgozni, még akkor is, ha programozási szempontból összetettebb. Az alábbi feladatok közül számos mintáját a BME Programozás alapjai I. tantárgy adta. [1]
195
Négy kategóriába sorolhatóak a feladatok: Érdekes, összetett algoritmust használó feladatok (5.1), Matematikai jellegű feladatok (5.2), Játék jellegű feladatok (5.3), Nyilvántartás jellegű (5.4). Amennyiben önálló feladatot old meg, szintén ezekben a kategóriákban gondolkozzon.
5.1. Érdekes, összetett algoritmust használó feladatok Adatszerkezetek: Elsőbbségi sor 200
Készítsen C programot önálló megvalósítással, nem a könyvtári függvény hívásával, amely képes az elsőbbségi sorok szemléltetésére. A feladat megoldásához fájlműveletek és dinamikus adatszerkezetek használata szükséges lehet. http://en.wikipedia.org/wiki/Priority_queue Adatszerkezetek: Hasító táblázat
205
Készítsen C programot önálló megvalósítással, nem a könyvtári függvény hívásával, amely képes az hasító táblázatok szemléltetésére. Ehhez természetesen fájlműveletek, és dinamikus adatszerkezetek szükséges lehet. http://en.wikipedia.org/wiki/Hash_table Adatszerkezetek: Közvetlen címzésű táblázat Készítsen C programot önálló megvalósítással, nem a könyvtári függvény hívásával, amely képes a közvetlen címzésű táblázat algoritmus szemléltetésére. Ehhez természetesen fájlműveletek, és dinamikus adatszerkezetek szükségesek. [2] Adatszerkezetek: Hasító függvények ütközésfeloldással
210
Készítsen C programot önálló megvalósítással, nem a könyvtári függvény hívásával, amely képes a hasító függvények ütközésfeloldással adatszerkezet szemléltetésére. Ehhez természetesen fájlműveletek, és dinamikus adatszerkezetek szükségesek. http://en.wikipedia.org/wiki/Hash_table#Collision_resolution Adatszerkezetek: Nyílt címzés
215
Készítsen C programot önálló megvalósítással, nem a könyvtári függvény hívásával, amely képes a nyílt címzés (open addressing) szemléltetésére. Ehhez természetesen fájlműveletek, és dinamikus adatszerkezetek szükségesek. http://en.wikipedia.org/wiki/Hash_table#Open_addressing Adatszerkezetek: Piros-fekete fa
220
Készítsen C programot önálló megvalósítással, nem a könyvtári függvény hívásával, amely képes a piros-fekete fa adatszerkezet szemléltetésére. Leírást a piros-fekete fákról itt érhet el: http://en.wikipedia.org/wiki/Red%E2%80%93black_tree. A feladathoz természetesen fájlműveletek, és dinamikus adatszerkezetek szükségesek. Az algoritmus szemléltetéséhez nagyban hozzájárulhat valamilyen grafikus megjelenítő, de ez nem kötelező jellegű. Adatszerkezetek: Huffmann -kód
225
Készítsen parancssorból hívható C programot, amely a Huffman kódoló algoritmust felhasználva tömörít fájlokat. Részletek a http://en.wikipedia.org/wiki/Huffman_code címen. Tervezzen megfelelő fájl formátumot a tömörítés kódtáblázatának tárolására. A program legyen képes: • • •
fájlok tömörítése, fájlok visszaállítása, a tömörítés iránya parancssor kapcsolóval legyen megadható.
Létrehozó: Létrehozás: Utolsó mód.: Változat: Tárgy: Kezelése:
Horváth Ernő 2016. 02. 17. 9:17:00 2016. 02. 17. 18:54:00 1.0.4 NGB_IN001_2 Nyilvános
Féléves feladat elkészítési szabályai progSzabalyzat_2015-16-2.docx
Oldal:
11/19
Féléves feladat
230
Rendező algoritmusok: Kupacrendezés
235
Készítsen C programot önálló megvalósítással, nem a könyvtári függvény hívásával, amely képes a kupacrendező algoritmus szemléltetésére (pl. az alábbi ábrákhoz hasonló diagramokat rajzol karakteresen). Ehhez természetesen fájlműveletek, és dinamikus adatszerkezetek is szükségesek. További információk a http://en.wikipedia.org/wiki/Heapsort címen érhetőek el. A program legyen képes összehasonlítást (pl. futási idő, lépések száma, legjobb, legrosszabb eset) végezni másik rendező algoritmussal.
Az egyszerűség kedvéért négy tipikus adatkészletet van ábrázolva képen: a random elemeké, a részben rendezett elemeké, a fordított sorrendben rendezett elemeké és az egyedi csoportos elemeké. Rendező algoritmusok: Gyorsrendezés 240
Készítsen C programot önálló megvalósítással, nem a könyvtári függvény hívásával, amely képes a gyorskeresés algoritmus szemléltetésére. Ehhez természetesen fájlműveletek, és dinamikus adatszerkezetek is szükségesek. További információk a http://en.wikipedia.org/wiki/Quicksort címen. A program legyen képes összehasonlítást (pl. futási idő, lépések száma) végezni másik rendező algoritmussal. Itt az összehasonlítást ne a beépített (qsort) rendezővel tegye meg, hanem egy másik önálló megvalósítású rendezéssel (pl. összefésülő rendezés).
245
Rendező algoritmusok: Leszámláló rendezés Készítsen C programot önálló megvalósítással, nem a könyvtári függvény hívásával, amely képes leszámláló rendezés algoritmus szemléltetésére. Ehhez természetesen fájlműveletek, és dinamikus adatszerkezetek is szükségesek. A program legyen képes összehasonlítást (pl. futási idő, lépések száma, legjobb, legrosszabb eset) végezni másik rendező algoritmussal. [2] Rendező algoritmusok: Edényrendezés
250
Készítsen C programot önálló megvalósítással, nem a könyvtári függvény hívásával, amely képes az edényrendező algoritmus szemléltetésére. Ehhez természetesen fájlműveletek, és dinamikus adatszerkezetek szükségesek. A program legyen képes összehasonlítást (pl. futási idő, lépések száma, legjobb, legrosszabb eset) végezni másik rendező algoritmussal. [2] Gráfalgoritmusok: Szélességi keresés (Dijkstra)
255
Készítsen C programot önálló megvalósítással, amely képes a Dijkstra gráfalgoritmus szemléltetésére. Részletek: http://en.wikipedia.org/wiki/Dijkstra's_algorithm. Az algoritmus szemléltetéséhez nagyban hozzájárulhat valamilyen grafikus vagy akár karakteres megjelenítő. A feladat tovább bővíthető A* algoritmussá alkalmas heurisztika választásával. Gráfalgoritmusok: Mélységi keresés
260
Készítsen C programot önálló megvalósítással, amely képes a Mélységi keresés gráfalgoritmus szemléltetésére. Részletek: http://en.wikipedia.org/wiki/Depth-first_search. Az algoritmus szemléltetéséhez nagyban hozzájárulhat valamilyen grafikus megjelenítő. Gráfalgoritmusok: Minimális feszítőfa meghatározása Készítsen C programot önálló megvalósítással, amely képes a Mélységi keresés gráfalgoritmus szemléltetésére. Részletek: http://en.wikipedia.org/wiki/Minimum_spanning_tree. Az algoritmus szemléltetéséhez nagyban hozzájárulhat valamilyen grafikus megjelenítő.
265
Gráfalgoritmusok: Ford -Fulkerson (max. folyam) Készítsen C programot önálló megvalósítással, amely képes a Ford-Fulkerson gráfalgoritmus szemléltetésére. Részletek: http://en.wikipedia.org/wiki/Ford-Fulkerson_algorithm. Az algoritmus szemléltetéséhez nagyban hozzájárulhat valamilyen grafikus megjelenítő. Lempel-Ziv tömörítő
270
Lempel és Ziv algoritmusa a következő ötlettel tömöríti a fájlokat. Tegyük fel, hogy adott egy fájl a következő tartalommal: Blah blah blah
Létrehozó: Létrehozás: Utolsó mód.: Változat: Tárgy: Kezelése:
Horváth Ernő 2016. 02. 17. 9:17:00 2016. 02. 17. 18:54:00 1.0.4 NGB_IN001_2 Nyilvános
Féléves feladat elkészítési szabályai progSzabalyzat_2015-16-2.docx
Oldal:
12/19
Féléves feladat
Ebben a színnel jelölt részek egyformák, ezért a második előfordulást egy hivatkozással lehet helyettesíteni:
275
Blah b[D=5,L=5]lah Ez azt jelenti, hogy D=5 bájtnyival ezelőtt volt egy L=5 hosszúságú sorozat, amit az adott helyen meg kell ismételni. (Most hosszabbnak tűnik, de binárisan tárolva ezt, rövidebb lesz.) Írjon programot, amely ilyen módszerrel képes tömöríteni és kicsomagolni fájlokat! Tesztelje a programodat szövegfájlokon és képeken is (pl. bmp. A png és jpg fájlok már eleve tömörítve vannak, a tesztelést tömörítetlen fájlon érdemes végezni.) Az algoritmusról sok leírást találsz a neten. Archív fájl függvénykönyvtár
280
Készítsen függvénykönyvtárat, amellyel egy archív fájlba becsomagolt fájlok nyithatók meg C programból! A függvénykönyvtár használata hasonlítson minél jobban az stdio.h fájlkezelésére! A fájlok becsomagolását egy parancssori segédprogrammal lehessen végezni: pack archiv.dat file1.bmp file2.dat file3.doc Ekkor keletkezzen egy archiv.dat nevű fájl. Abból a programból a file2.dat megnyitása:
285
ARCHIV_FILE *fp; char tomb[1024]; fp = archiv_fopen("archiv.dat", "file2.dat", "rb"); archiv_fread(tomb, 1, 1024, fp);
290
A fájlokat tömöríteni nem kell. Útvonaltervező
295
Készítsen útvonaltervező programot! A program legyen képes egy térkép szöveges reprezentációját fájlból beolvasni és az ebből felépített adatstruktúra alapján két megadott helyszín között útvonalat tervezni. Lehessen megadni az útvonaltervezés szempontját is (leggyorsabb, legrövidebb, stb)! Buszjáratok Készítsen programot, amely egy közlekedési társaság buszjáratait képes nyilvántartani, és a menetrendek alapján útvonalakat felépíteni! Elvárások a programmal szemben:
300
305
• • • • • •
tudja tárolni a megállók neveit tárolja járatok adatait, amiben a fenti megállónevek szerepelnek, legyen képes útvonalakat megtalálni egy adott helytől egy másik helyig (két megállónévvel adott), átszállásokkal együtt tárolja a járatok menetrendjeit is (melyik órában hány percenként) ezek alapján számolja ki egy utazás minimum és maximum időtartamát is minden adatot mentsen fájlba, hogy azokat később vissza lehessen tölteni és tovább szerkeszteni
5.2. Matematikai jellegű feladatok Életjáték (GOL) Készítsen menüvezérelt C programot, mely a Conway féle LIFE (életjáték) modellt valósítja meg. Részletek a http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life címen. A program legyen képes:
310
315
• választott méretű élettéren, • a felhasználó által, • illetve fájlból beolvasott kezdeti állapotból indulni, • a szimuláció folyamatos vagy lépésenkénti megjelenítésére. Egész aritmetika Készítsen függvénykönyvtárat, amely nem korlátozott ábrázolási tartományú egész aritmetikát valósít meg – vagyis képes tetszőlegesen nagy, mondjuk 1000 (de akár még több) számjegyű egész számokkal is számolni. A program legyen képes a négy alapművelet elvégzésére – amelyekkel alkotott kifejezéseket a billentyűzetről vagy fájlból vár. (Ezek lehetnek fordított lengyel jelöléssel adottak is.)
Létrehozó: Létrehozás: Utolsó mód.: Változat: Tárgy: Kezelése:
Horváth Ernő 2016. 02. 17. 9:17:00 2016. 02. 17. 18:54:00 1.0.4 NGB_IN001_2 Nyilvános
Féléves feladat elkészítési szabályai progSzabalyzat_2015-16-2.docx
Oldal:
13/19
Féléves feladat
Tizedes tört aritmetika 320
Készítsen függvénykönyvtárat, amellyel tetszőleges, előre meghatározott számú tizedesjegyig végezhetők el az alapműveletek! Pl. legyen képes 1000 tizedesjegyig, de akár még tovább számolni. Számolja ki a √2 értékét 1000 tizedesjegyig! A program legyen képes a négy alapművelet elvégzésére – amelyekkel alkotott kifejezéseket a billentyűzetről vagy fájlból vár. (Ezek lehetnek fordított lengyel jelöléssel adottak is.) Numerikus integráló
325
Készíts C programot, mely a felhasználó által megadott függvényt numerikusan integrálja. Gondosan tervezze meg az adatstruktúrát! Tervezzen egy megfelelő bemeneti nyelvet. A program legyen képes:
330
• alapműveletek, polinomok, • a szokásos matematikai függvények (sin, log, exp stb.) • és tetszőleges kombinációjuk kezelésére. A program legyen képes felhasználó által megadott kifejezéseket eltárolni és feldolgozni! (Ezek lehetnek fordított lengyel jelöléssel adottak is.) Mátrix függvénykönyvtár Készítsen függvénykönyvtárat, amellyel mátrixműveletek végezhetőek! Tárold egy mátrix szélességét, magasságát, valós értékeit! Legyen képes a programod bármilyen nagy mátrixokkal dolgozni, és a szokásos műveletek elvégzésén kívül a mátrixokat fájlba írni és fájlból visszaolvasni!
335
5.3. Játék jellegű feladatok Amőba Készítsen menüvezérelt C programot, mely amőbát játszik. A program legyen képes:
340
• a játék adminisztrálására egy tetszőleges méretű táblán, • több támadó és védekező stratégiát alkalmazni, • állás elmentésére és visszatöltésére. Reversi Írjon reversi játékot, amelyben a gép ellen lehet játszani! A program legyen képes:
345
• Kirajzolni a pályát (szövegesen vagy grafikusan). • Fájlba menteni és visszatölteni az állást. • Ellenőrizni, hogy helyes-e a játékos lépése. • Támadó stratégiákat alkalmazni. (Vigyázat, ennél is kötelező dinamikus memóriakezelést használni, bár az amőbával ellentétben ezt fix méretű pályán szokták játszani.) Sokoban
350
A játékban egy figurával ládákat kell tologatni a képernyőn; úgy, hogy azok a megfelelő helyre kerüljenek. A pálya viszont olyan, hogy könnyű betolni olyan helyre a ládákat, ahonnan már elmozdítani nem lehet őket. Olvasd a pályák leírását fájlból! Vezess dicsőséglistát! (Melyik játékos, melyik pályát, hány lépésből tudta megoldani?) Ez könnyedén megoldható szöveges képernyőn is. Hexxagon
355
Táblás játék. A pálya hatszögletű elemekből áll. Mindkét fél néhány bábuval indul. Minden lépésben a játékosok valamely bábuval a szomszédos helyre terjeszkedhetnek (ilyenkor nő a bábuk száma), vagy kettővel arrébb ugorhatnak (ilyenkor nem) egy szabadon választott bábujukkal. Az újonnan lerakott bábu mellett az ellenség bábui színt váltanak; a lépő játékos megnyeri azokat. YouTube videó itt: http://www.youtube.com/watch?v=_E10ydLaLE8. Írj programot, amelyben a gép különféle stratégiákkal játszik a felhasználó ellen!
360
Töltés-játék (Grafikus program.) A játék a következő. A program a képernyő adott pontjából, adott irányban kilő egy pozitív töltéssel rendelkező részecskét. A játékos számára adott néhány másik töltés, amelyeket úgy kell elhelyeznie a képernyőn, hogy a mozgó
Létrehozó: Létrehozás: Utolsó mód.: Változat: Tárgy: Kezelése:
Horváth Ernő 2016. 02. 17. 9:17:00 2016. 02. 17. 18:54:00 1.0.4 NGB_IN001_2 Nyilvános
Féléves feladat elkészítési szabályai progSzabalyzat_2015-16-2.docx
Oldal:
14/19
Féléves feladat
töltés egy megadott célba jusson. Ezek az elhelyezendő töltések lehetnek különböző erősségűek, polaritásúak. Közben a pályán lehetnek fix töltések, falak stb. (Hasonló játék itt: http://kmk.blog.hu/2007/07/26/newton_kedvenc_jateka) 365
A program számoljon pontszámot a játékos számára (pl. hány próbálkozásra sikerült megoldania a pályákat), és ez alapján tartson nyilván dicsőséglistát is, amelyet fájlba ment és vissza is olvas! A programnak tetszőlegesen sok töltést kell tudni kezelnie. A pályák leírását (hol van töltés, hol van fal) olvasd fájlból! Egy pályán lehessen tetszőlegesen sok mind a kettőből! Atomix
370
A játékban egy zegzugos pályán kell kirakni az elszórt atomokból egy molekulát. A játékos egy kattintással (vagy egy gomb megnyomásával) megfoghatja az atomokat, utána pedig egy irány megadásával (fel, le, jobbra vagy balra) elindíthatja azokat. A nehézség abban áll, hogy ilyenkor az atomok nem egyet ugranak arrébb, hanem addig mennek, amíg falba vagy egy másik atomba nem ütköznek. A játékban a pálya lehessen tetszőlegesen nagy! Pályák letölthetőek innen: atomix.zip. Leírás megtalálható a ZIP-ben. Az original.json fájl viszonylag egyszerű pályákat tartalmaz.
375
Kalandjáték Készítsen szöveges kalandjáték programot, amely
380
• felajánlja a választási lehetőségeket, • a küldetéseket egy szövegfájlból dinamikus adatszerkezetbe olvassa be, • képes a játék állásának elmentésére, • a játékban tetszőlegesen sok helyszín között lehet mozogni, és a játékosnál tetszőlegesen sok tárgy lehet. Kígyó játék Készíts kígyó játékot, ahol a kígyók ha megeszik a véletlenszerűen elhelyezett étket, akkor nő a méretük. Ha önmaguknak, vagy egymásnak ütköznek, az a játék végét jelenti. A program legyen képes:
385
• •
egy, illetve két játékos üzemmódra a pontok számolására és elmentésére
Aknakereső játék Készíts aknakereső játékot. A pálya téglalap alakú, cellákból álló tábla. Egy cellára rálépve megtudhatjuk, hogy az adott cellán van-e akna (ebben az esetben felrobbanunk – vége a játéknak), illetve, hogy hány szomszédos cellán van. Legyen lehetőség: 390
• • • • •
a tábla méreteinek a meghatározására, a táblán lévő aknák számának megadására, a játékidő mérésére (esetleg limitálására), a játékos által aknának gondolt cellák megjelölésére, aknamentes környék automatikus felderítésére.
395
További játékok Készíts egyszerű játékprogramot (PacMan, Tetris, stb.) A program legyen képes:
400
• • • •
a játékot pontozással értékelni, a pontszámokat a játékos nevekkel együtt elmenteni (tetszőleges számban), az elmentett eredményeket a pontok szerint csökkenő sorrendben megjeleníteni, pálya térképet fájlból beolvasni (pacmannél), tetszőleges méretű pályán játszani (tetrisnél) stb.
Akasztófa Az akasztófás és a szótáras programokhoz használható szólisták: szotar.zip. 405
A program a szavak listájából gondol egy feladványt, amelyet a felhasználónak ki kell találnia. Betűket tippel, amelyek ha a gondolt szóban szerepelnek, a gép felfedi őket. Pl. ha a gondolt szó ökör, a tippek k és r, akkor a felhasználó ezt látja:_k_r. A program legyen képes: • •
A felhasználó által megadott hosszúságú szóra gondolni (ha van olyan az adatbázisában). Szólni, ha már tippelt egy adott betűt a felhasználó.
Létrehozó: Létrehozás: Utolsó mód.: Változat: Tárgy: Kezelése: 410
Horváth Ernő 2016. 02. 17. 9:17:00 2016. 02. 17. 18:54:00 1.0.4 NGB_IN001_2 Nyilvános
Féléves feladat elkészítési szabályai progSzabalyzat_2015-16-2.docx
Oldal:
15/19
Féléves feladat
•
A szavak adatbázisát kezelni: a felhasználó által megadott új szót felvenni, ábécében listázni, hosszúság szerint válogatni, meglévő szavakat törölni. • A szavakat tároló bemeneti fájlt csak egyszer beolvasni és egyszer kiírni! A szavak tömbben történő tárolása ennél a feladatnál nem elfogadható! Gonosz akasztófa
415
Az alapfelállás a fentihez hasonló, de itt a gép nem kötelezi el magát egyetlen egy szó mellett sem. A felhasználó tippjei alapján mindig úgy szűkíti a szóba jöhető szavak halmazát, hogy a legkevesebb segítséget adjon a felhasználónak. Pl. a felhasználó idáig eljutott: _k_r, és az „akár” szóra gondol. Ezért tippel egy a-t, mire a gép azt mondja, hogy veszített, mert a szó az „ökör” volt. Miközben igazából eddig nem is gondolt egyetlen szóra sem. KRESZ-teszt
420
425
Készítsen programot, amellyel a KRESZ vizsgára lehet gyakorolni! A programnak fájlból kell beolvasnia a kérdéseket, amelyekre természetesen a helyes választ is tudja. A felhasználónak ezt kell megmondania. Vagy passzolnia, de akkor a kérdések végére érve újra meg fogja kapni a kihagyott kérdést. Vegye figyelembe a program az időt is! (Lehet megvalósítani úgy, hogy egy kérdésen akármennyi ideig lehet gondolkodni, de a válasz után nézi a program, hogy mennyi idő telt el a játék indítása óta.) Készítsen dicsőséglistát és szégyenpadot: dicsőséglistára azok kerülnek, akik nagyon gyorsan válaszoltak a kérdésekre, szégyenpadra azok, akik a legtöbb rossz választ adták. A kérdések adatbázisát is csatolni kell elektronikus mellékletként. Legyen Ön Is Milliomos! A kérdések adatbázisa: loim.xlsx. Ez egy Excel tábla, amiből tetszőleges kódolással szövegfájlt lehet exportálni. Mint a tévés játék: egymás utáni kérdések, mindegyikre egy jó és három rossz válasz. Rossz válasz esetén rögtön kiesik a játékos; lehet kérni a gép segítségét (elvesz két rossz választ) és a közönség segítségét (szavaznak).
430
A program tartalmazzon dicsőséglistát a játékosokról: ki mennyi pénzt nyert, és mennyi ideig (perc) volt játékban. A programnak fájlból kell beolvasnia a kérdéseket, amelyekből tetszőlegesen sok lehet!
5.4. Nyilvántartás jellegű feladatok Tömbös megoldások ezeknél nem elfogadhatóak! Ugyancsak elfogadhatatlan az olyan megoldás, amelyik dinamikus memóriakezelést nem használ, hanem tisztán fájlműveletekkel próbál megoldani mindent. 435
Telefonkönyv Készítsen menüvezérelt C programot, amely „rekordokban” tárolja bizonyos személyek nevét, foglalkozását, telefonszámát, esetleg más jellemző adatait. A program legyen alkalmas:
440
• • • • •
új rekordok létrehozására, a régiek módosítására, a régiek törlésére, név, telefonszám, foglalkozás szerinti keresésre (részinformáció alapján is), az adatbázis fájlba mentésére.
Határidő napló 445
450
Készítsen határidő napló programot, amely „rekordokban” tárolja az események dátumát, pontos idejét, helyét, elnevezését, és egy hozzá kapcsolódó megjegyezést. Használj dinamikus adatszerkezetet. A program legyen képes: • • • • • •
új rekodok létrehozására, a régiek módosítására, a régiek törlésére, egy adott naphoz, illetve héthez tartozó események kilistázására, esemény név szerinti keresésére, az adatbázis fájlba mentésére.
Létrehozó: Létrehozás: Utolsó mód.: Változat: Tárgy: Kezelése:
Horváth Ernő 2016. 02. 17. 9:17:00 2016. 02. 17. 18:54:00 1.0.4 NGB_IN001_2 Nyilvános
Féléves feladat elkészítési szabályai progSzabalyzat_2015-16-2.docx
Oldal:
16/19
Féléves feladat
Oktatók hallgatói véleményezése 455
Készítsen programot, amely OHV kérdőíveket és azokra adott válaszokat tárol! A kérdőívek tetszőlegesen sok kérdést tartalmazhatnak, amelyekre tetszőlegesen sok válasz lehet. Ezen felül tartalmaznak egy szöveges mezőt, ahova a kitöltő bármit írhat. Készítsen a program statisztikát a kitöltött kérdőívek alapján! Legyen képes a kérdőívek és az eredmények fájlba mentésére, illetve visszatöltésére!
460
Könyvtár Készítsen könyvtár-programot, amely képes könyvek adatait eltárolni „rekordokban”. A program legyen képes:
465
• • • • • Szótár
új rekodok létrehozására, a régiek módosítására, a régiek törlésére, könyvek szerző, cím, kiadási év, téma alapján való keresésére, az adatbázis fájlba mentésére.
Készítsen szótár programot. A program adjon lehetőséget: 470
475
480
485
490
• a szótárfájl kiválasztására, • új szótárfájl létrehozására, • a szótárfájl bővítésére és a bejegyzések javítására, • minimum kettő nyelv kezelésére, • esetleg több, akár tetszőleges számú nyelv kezelésére. Étterem Készítsen programot, amely egy étteremben az egyes asztalokhoz tartozó megrendeléseket jegyzi meg. Legyen lehetőség: • • • • • • •
Az asztalok megadására (az étterem nyitásakor) Az étterem menüjének rögzítésére Új asztal nyitására vendégek érkezése esetén Rendelések felvételére a menü alapján számla „nyomtatására” (képernyőre) Asztalfoglalás rögzítésére Az asztalfoglalásokat és a menüt mentse a program fájlba is, hiszen azokat nem felejtheti el egy újraindítás vagy egy áramszünet miatt! Mini-Facebook Írj programot, amely emberek személyes adatait (név, nem, születési dátum stb.), továbbá ismeretségi viszonyait (kik ismerik egymást) képes nyilvántartani, és lehetővé teszi azt, hogy két ismerős üzenni tudjon egymásnak! A programnak nem kell grafikusnak, se hálózatosnak lennie; elég, ha egyszerre egy ember tudja használni. (Utána ő kijelentkezik, és valaki más bejelentkezik.) Tegyen lehetővé ugyanakkor kereséseket (név szerint, iskola szerint, lakóhely szerint stb.), és ajánlja fel egy menüpontban a felhasználók számára az ismerősök ismerőseit! Tároljon el minden adatot fájlban (az üzeneteket is), és tegye lehetővé akárhány felhasználó és üzenet létezését! Morze Készítsen parancssorból hívható C programot, amely Morze szövegeket kezel. Morze ábécé elérhető az Interneten. A program tudjon:
495
• • • • •
szöveget Morzésítani Morze szöveget visszakódolni adjon statisztikát a karakterekről és a Morze jelekről (ti, tá). a konverzió iránya parancssor kapcsolóval legyen megadható. Tömbös, listás megoldás nem elfogadható!
Létrehozó: Létrehozás: Utolsó mód.: Változat: Tárgy: Kezelése:
Horváth Ernő 2016. 02. 17. 9:17:00 2016. 02. 17. 18:54:00 1.0.4 NGB_IN001_2 Nyilvános
Féléves feladat elkészítési szabályai progSzabalyzat_2015-16-2.docx
Oldal:
17/19
Féléves feladat
Repülőjegyek 500
505
510
Készítsen menüvezérelt C programot, amellyel repülőjegyek foglalásait tudod nyilvántartani! Legyen lehetőség a programban a járatok adatait megadni. Ezen felül legyen lehetőség külön menüpontban elvégezni olyan műveleteket, amelyeket általában internetes repülőjegy-vásárlásnál is lehet: • Járatokat keresni. • Adott névre repülőjegyet foglalni. • Egy megkeresett foglaláshoz ülőhelyet foglalni. • Egy megkeresett foglaláshoz menüt (normál, vega, laktózmentes stb.) választani. Legyen képes a program: • • •
Kezelni az ülőhelyek számát, nehogy túlfoglalás legyen Ne engedje két utasnak ugyanazt az ülőhelyet kiadni Összesíteni, hogy melyik járatra, melyik menüből hány adagot kell felvinni.
Létrehozó: Létrehozás: Utolsó mód.: Változat: Tárgy: Kezelése:
6.
Horváth Ernő 2016. 02. 17. 9:17:00 2016. 02. 17. 18:54:00 1.0.4 NGB_IN001_2 Nyilvános
Féléves feladat elkészítési szabályai progSzabalyzat_2015-16-2.docx
Oldal: Féléves feladat
IRODALOMJEGYZÉK
[1] Z. Czirkos, G. Nagy and L. Pohl, “BME EET Programozás alapjai I.,” 2009-2015. [Online]. Available: https://infoc.eet.bme.hu/nhf.php. [2] T. H. Cormen, C. E. Leiserson, R. L. Rivest és C. Stein, Új algoritmusok, Scolar Kft., 2003. [3] P. Bauer, Programozás I-II. C programnyelv, Universitas-Győr Kht., 2005.
18/19
Létrehozó: Létrehozás: Utolsó mód.: Változat: Tárgy: Kezelése: 515
7.
Horváth Ernő 2016. 02. 17. 9:17:00 2016. 02. 17. 18:54:00 1.0.4 NGB_IN001_2 Nyilvános
Féléves feladat elkészítési szabályai progSzabalyzat_2015-16-2.docx
Oldal:
19/19
Féléves feladat
ÉRTÉKELŐLAP FÉLÉVES PROGRAMOZÁSI FELADATHOZ
Hallgató(k):
Elfogadható
Értékelő neve: Feladat címe:
Igen
Nem
A dokumentáció formája 2: A dokumentáció gondosan szerkesztett, áttekinthető, stílus és nyelvhelyességi szempontból is jó. 1: Kisebb hiányosságok vannak a jó esethez képest. 0: Lényeges hiányosságok vannak a jó esethez képest (pl. „ömlesztett” szöveg, sok elírási, helyesírási hiba)
[Pont]
A dokumentáció tartalma 2: A dokumentáció kellő részletességgel tartalmazza az előírt részeket. 1: Kisebb hiányosságok vannak a jó esethez képest. 0: Lényeges hiányosságok vannak a jó esethez képest (pl. erősen keverednek vagy teljesen hiányoznak egyes részek).
[Pont]
A program felépítése 2: A program jól illeszkedik a tananyaghoz, a megkívánt eszközökkel és módszerekkel lett előállítva, megfelelően strukturált és moduláris. 1: Kisebb hiányosságok vannak a jó esethez képest. 0: Lényeges hiányosságok vannak a jó esethez képest (pl. nem ellenőrzött input, a tanultnál alacsonyabb színvonalú megoldások, „ömlesztett” programlista, paraméterezetlen szubrutinok).
[Pont]
A program működése 2: A program biztonságosan és helyesen működik. 1: A program „normál” tesztadatokkal biztonságosan és helyesen működik, de a „szélső” esetek kezelése bizonytalan. 0: A program a megadott forrásanyagokból az előirt környezetben nem állítható elő (pl. szintaktikus hiba), „normál” tesztadatokkal is helytelen eredményeket, ill. futási hibákat produkál.
Megjegyzés: • A tesztelésnél a hibaellenőrzési opciókat be kell kapcsolni. • Ha valamely értékelési szempont szerint a munka 0 értékű, akkor nem elfogadható.
[Pont]