Programozási feladatok
Tartalom Néhány feladat .......................................................................................................................2 I. C# ...................................................................................................................................2 II. Java................................................................................................................................7 Néhány hallgatói vizsgafeladat képernyőképe.......................................................................18 Néhány vélemény .................................................................................................................25
1
Néhány feladat I. C# 1. feladat: Holnap lesz a boldogság világnapja. Erre vonatkozóan egy felmérést végeznek, melyhez egy C# programot kell írni. A felmérés férfiak és nők boldogságértékét számolja. A felmérésben résztvevő minden egyes embert egy azonosító és a születési évének megadásával regisztrálnak. Az emberek boldogságérték()ét több összetevő alapján határozzák meg. Számít a párkapcsolati mutató – ez egy -10, +10 közötti érték, amelyet a felmérés során árulnak el az emberek. Ez az érték természetesen gyakran változhat. Tudósok azt is kimutatták, hogy a másokon segítő emberek sokkal boldogabbak, és azt is, hogy a boldogság a kor előrehaladtával csökkenhet is. A boldogságérték tehát a következő módon számolható: a párkapcsolati mutatóhoz hozzáadják a segítések számának egy, az összes emberre egyformán érvényes szorzóval való szorzatát, és osztják az illető kor()ával. Ez az érték eltérően módosul majd férfiak és nők esetén. Minden embernek módjában áll segítenie. A segítés() során a segítések száma eggyel növekszik. A férfiak roppant vágynak a sikerre is. Egy férfi boldogságértékének kiszámításakor az alapértékhez még hozzáadódik a sikeresség mértékének és az illető korának a hányadosa. A férfiaktól a felmérés során kérdezik meg, hogy mennyire érzik sikeresnek magukat. A hölgyek boldogsága a gyerekszüléskor növekszik, és arányos a gyerekek számával. (A felmérés kezdetén meg kell adniuk a gyerekeik számát.) Az ő boldogságértékükhöz hozzáadódik még a gyerekek számának egy állandóval való szorzata. Ez az állandó minden hölgy esetén azonos. Egy hölgy akár még a (hosszabb ideig tartó) felmérés során is szülhet. Ha szül(), akkor gyerekei száma a metódus paraméterében megadott értékkel növekszik. (Ikreket is szülhet.) Kiíratáskor (ToString()) az illető azonosítóját, nemét és boldogságértékét (mértékegység: „egység”) lehessen olvasni. Hölgyek esetén tüntesse fel a gyerekek számát is. A fentiek figyelembe vételével írjon programot a következőkre: Az esetleges statikus adatok beállítása után olvassa be az adatokat az emberek.txt fájlból. (Adatszerkezet soronként: azonosító, születési év, nők esetén a gyerekek száma.) A férfiak azonosítója F-fel, a nőké N-nel kezdődik (subString(kezdőIndex, hossz) metódus). Beolvasás után írassa ki a vizsgálatban résztvevő emberek adatait, majd kezdődjön a vizsgálat. A vizsgálat a következőt jelenti. Véletlen módon állítsuk be az összes ember párkapcsolati mutatójának és a férfiak sikerességi mértékének az értékét. A sikerességi mérték 0 és 10 között változhat (de ne égesse be!), majd véletlen sokszor futtassa le a következőt: válasszon egy véletlen embert, aki segít, és egy másik véletlen embert, aki ha nem túl öreg hölgy, akkor szül valahány gyereket. A korhatárra adjon egy reális értéket (ne égesse be), az újszülöttek száma pedig legyen egy 0 és 3 közötti véletlen érték. (Azaz legföljebb hármas ikrek lehetnek, most a még több gyerekkel várandósak kimaradnak a felmérésből, de ezt se égesse be). A vizsgálat után is írassa ki az eredményeket, majd értékelje a vizsgálatot, azaz: Számolja ki az átlagos boldogságértéket (GNH – nemzeti boldogság index). Határozza meg, hogy kik a legboldogabbak. Állapítsa meg a gyerekek számát. 2
2. feladat: A mai gyerekek már elektronikus meséken nőnek fel (szegények ). Sőt, a mesékhez nem egyszer készül játék szoftver is. Akár az Ön feladata is lehet valamikor később, hogy egy, mondjuk a Csipkerózsika mesét feldolgozó játékszoftvert író csapat munkatársa legyen. Talán emlékszik rá, hogy a mesében vannak tündérek és boszorkány(ok) is. Hogy érdekesebb legyen a játék, ezek a karakterek rendelkezhetnek valamilyen, a játékhoz szükséges tulajdonságokkal. Például lehet varázserejük, ami változhat a játék során. Amikor találkoznak egy emberrel, akkor ennek az erőnek megfelelően valamilyen hatást gyakorolhatnak rájuk – a tündérek nyilván jó hatást, a boszorkányok rosszat, stb. Egy ilyen játék persze akkor érdekes, ha a felhasználó grafikus felületen, interaktív módon beleavatkozhat a játék menetébe, de még nem rendelkezik az ehhez szükséges ismeretekkel. A karakterek alaptulajdonságait viszont már meg tudja fogalmazni, és egy egyszerűbb kis tesztprogrammal ellenőrizni is tudja a működésüket. Ez lesz most a feladata. Vannak tehát tündérek és boszorkányok. Mindegyiknek van neve, és mindegyik rendelkezik valamekkora mágikus erővel (egy int érték). Mindegyikük tud áldani vagy átkozni. A „varázslás” (azaz áldás vagy átok) során mindegyikük kifejt valamekkora hatást. Ez a hatás egy egész szám, amelyet az illető hölgy ereje alapján számítunk, mégpedig úgy, hogy tündérek esetén ezt az erőt megszorozzuk egy, a tündérekre egyaránt érvényes szorzóval, boszorkányok esetén pedig egy, a boszorkányokra egyaránt érvényes szorzóval. Boszorkányok esetén ez a hatás még egy -1-es szorzóval is kiegészül. Mivel a jócselekedetek növelik az ember erejét, a rosszak pedig – legalábbis a mesében – csökkentik, ezért a tündérek ereje minden egyes varázsláskor 1-gyel növekszik, a boszorkányoké 1-gyel csökken, de csak addig, amíg nulla nem lesz. Mindenki tudja visszaadni (ToString()) azt, hogy tündér vagy boszorkány, továbbá a nevét és az erejének értékét. Ha a boszorkány ereje nullára csökken, akkor még az is kerüljön az adatok mellé, hogy „ megjavult”. a/ Tesztelje néhány adattal az elkészült osztályokat. b/ Írja meg a mese keresztelő részét, vagyis: olvassa be a meghívottak nevét addig, amíg van újabb meghívott (egy kérdésre adott válasz dönti el, hogy van-e még). Az illető hölgy induló ereje legyen egy véletlen érték. Az pedig, hogy tündér-e vagy boszorkány, szintén a véletlenen múlik. Vegye figyelembe azt is, hogy a hölgyeknek kb. x %-a boszorkány. A meghívás után írassa ki a jelenlévő hölgyeket, majd egyenként mindenki „varázsoljon”, és számoljuk ki ezek összhatását. c/ A mellékelt boszi.txt adatfájlból (vagy egy Ön által készített hasonló adatfájlból) olvassa be az adatokat, és hozza létre a hölgyek listáját, majd számolja ki, az átlagos varázserőt, valamint a legnagyobb varázserejű tündér és a leggonoszabb boszorkány nevét.
3
3. feladat: Korunk egyik új népbetegsége a szelfizés. Ahogy a feladat induló felületén is láthatja, erre már külön mértékegységet is bevezettek. Ennek mérését szimulálja a megoldandó feladat. A program indulásakor a képen látható módon aktívak vagy inaktívak a menüpontok. A Megnyitás menüpont hatására lehet kiválasztani a versenyzők adatait tartalmazó fájlt. Jelenleg ezek az adatok a versenyzok.txt fájlban vannak. Adatszerkezet: versenyző neve; képét tartalmazó fájl neve. Sikeres adatbeolvasás esetén ez a menüpont inaktívvá, az összes többi aktívvá válik, a felületen lévő kép pedig megváltozik, és kezdődhet a verseny. A Versenyzők menüpontra kattintva megjelenik a versenyzőket tartalmazó form (a Fényképez gomb még inaktív):
A verseny menete: Először meg kell adni a verseny időtartamát. Ezt a Start gombra kattintva lehet beállítani, és elindítani a visszaszámlálást – a hátralévő idő (sec) legyen olvasható a szövegdobozban. Hibás adat esetén adjon hibaüzenetet, helyes adatmegadás után a Start gomb tűnjön el, a Fényképez gomb pedig váljon aktívvá. Amíg le nem telik a versenyidő, addig lehessen kijelölni embereket (egyszerre többet is lehet) és a Fényképez gomb hatására készüljön róluk egy-egy kép. A gomb megnyomása után a kijelölés szűnjön meg. A fényképezés most csak ennyit jelent: meghívjuk az illető Fenykepez() metódusát, amelyben a selfie-számát eggyel növeljük. (Nem kell hibaüzenet, ha nincs kijelölés) A versenyidő lejárta után a Fényképez gomb legyen ismét inaktív. Az Eredmények menüpontra kattintva jelenjen meg az eredményeket tartalmazó richTextBox. A Névjegy menüpont hatására egy kis ablakban írja ki a nevét, EHA-kódját (ez akár egy rendesen feliratozott MessageBox is lehet). A kilépés menüpont hatására kilépünk a programból. Szorgalmi: a legnagyobb selfie-szám meghatározása.
Segítség: javasolt méretek: kép: 100x100, szélektől való távolság 10 pixel, kép és szöveg közti távolság, ill. két kép közti távolság szintén 10 pixel, a jelölőnégyzetek képtől való távolsága 150 pixel.
4
4. feladat: Az ELTE PPK (Pedagógiai és Pszichológiai kar) Gazdaság- és Környezetpszichológia Tanszéke idén a „vendéglátó-ipari egység fantázianév” kategória győzteseként a képen látható kocsmát jelölte meg. (https://www.facebook.com/photo.php?f bid=513577955420949&set=a.36007753 7437659.1073741828.359692027476210 &type=1&theater ) A rövid híradásból az nem derült ki, hogy kaptak-e érte valamilyen jutalmat, mi azonban ajándékozzuk meg őket egy C# programmal.
A Fájl menü a „szokásos”: meg lehet nyitni a kocsma választékát és árait tartalmazó adatfájlt. Az Itallap menüpont is és a Mentés is csak ezután válik elérhetővé. A Súgó menüpont hatására megnyíló ablakocska segít a továbbiakban: A fájl betöltése után azonnal (ill. bármikor később is az Itallap menüpontra kattintva) megjelenik az árlista. Ebből lehet rendelni. Mivel kis kocsmáról van szó, ezért egy italfajtából egyszerre legföljebb csak 999 adagot kérhetünk.
A Rendel gombra bal egérgombbal kattintva tudjuk leadni a rendelést. Ha semmi sincs kijelölve, akkor adjunk hibaüzenetet, ha valamelyik bejelölt italhoz tartozó adagot rosszul
5
töltöttük ki, akkor változzon pirosra a hozzá tartozó szövegdoboz háttérszíne, de akárhány hiba is van, csak egyetlen üzenetdoboz jelezze, hogy hibásak az adagok. Helyesen kitöltött adatok esetén vegye fel a rendelést, és szüntessük meg a kijelöléseket, ürítsük ki a szövegdobozokat. Ha jobb egérgombbal kattintunk a gombra, akkor jelenjen meg egy úgynevezett context menü: A Számlát kér menüpont hatása: (A számla egy richTextBox-ban jelenik meg.) A Fizet menüpont hatására kiürül a számla, a kifizetett értékeket pedig „könyvelik” – egyelőre még csak a memóriában, a Mentés menüpont hatására kerül majd fájlba. Az eredményfájl szerkezete ital fajtánként: az ital neve; összesen eladott adag; bevétel. A Galéria menüpont hatására egy képgaléria nyílik ki, ahol lapozgatni lehet a környékről készült képek között:
A névjegy most csak egy üzenet:
6
II. Java 1. feladat: A Naprakész Sztárhírek című internetes újság ismert emberek (sztárok) életének kiteregetésével foglalkozik. Az ismert embereket általában jellemzi a nevük (ez ismertté válásuk után nem változik meg) és az emberi élet alatt szintén változatlan IQ (intelligencia hányados). Fontos számukra, hogy hányszor ír róluk a média. Ez a szám egy megjelenik() metódus során növekszik, minden megjelenéskor eggyel. Minden egyes megjelenés után egyforma jutalékot kapnak az újságtól, így fizetés()ük a megjelenésszám K-szorosa. Az újság általában ismert emberekről ír, de időnként igazi művészekkel foglalkozik (őket a művészeti águk is jellemzi), ám legtöbbször az RTL klub sztárjairól jelennek meg pletykák. Közismertté válás után már nem szokás megváltoztatni a művészeti ágat. A művészek is, sztárocskák is további összeggel növelik a fizetésüket: ez a pótlék arányban van az IQ-jukkal. Művészek esetén az alapfizetéshez hozzáadódik még az IQ X-szerese, ahol X minden egyes művészre egyformán érvényes szorzó, RTL klub sztárok esetén azonban a fizetés fordított arányban áll az IQ-val (minél kisebb az IQ, annál nagyobb a fizetés ), esetükben az alapfizetéshez hozzájön még az IQ reciprokának Y-szorosa, ahol Y minden egyes RTL-klub sztár esetén egyforma. (A legostobább embernek sem 0 az IQ-ja ) Az öröklődés figyelembevételével írja meg a fentiekben leírtakat jellemző osztályokat! Majd használja fel a hozzájuk tartozó példányokat az alábbi felületen:
Az 700*500-as alkalmazásban egy TabbedPane segítségével lehet váltogatni a két felület, a megjelenés fül és a fizetések fül között. a/ megjelenések fül: A cikk gombra kattintva lehet cikket „megjelentetni” a beviteli mezőkben megadott nevű és IQ-jú emberről. Azt, hogy az illető melyik kategóriába tartozik, az IQ alapján lehet eldönteni. Egy határ fölött művész – ekkor művészeti ága (pl. író, zenész, festő, szobrász, színész) egy combo-box-ból választható ki –, egy másik határ alatt RTL-sztár, a kettő között pedig ismert embernek számít. Hiányos vagy hibás adatok esetén adjon hibajelzést!
7
A „megjelenés” most annyit jelent, hogy az illető neve (művésznél a művészeti ág is) bekerül a megfelelő kategóriát jelző listába. A cikk gomb hatására csak akkor kerül be egy név a megfelelő listába, ha még egyikben sem szerepel (vagyis minden név összesen csak egyszer szerepelhet a listákban), de ahányszor a cikk gombra kattintunk, annyiszor jelenik meg cikk az illetőről (ennyiszer meg kell hívni az erre vonatkozó metódust). Bármelyik listán rákattinthatunk bármelyik névre (egyszerre egyre), ekkor a felület jobboldalán olvashatjuk az illető megjelenéseinek számát, vagyis azt, hogy hányszor írt róluk az újság. b/ fizetések fül: A tabulátorfülre kattintva lehet váltani a két felület között. Ezen a felületen egy táblázatban olvasható az összes ember fizetése. A táblázat alatt megjelenik a teljes kifizetés értéke és az is, hogy mekkora a legnagyobb fizetés. A „Fájlba” gomb hatására kerüljön ki a fizetési lista egy adatfájlba. A statikus adatokat beállíthatja konstansként a program elején.
8
2. feladat: Egy pszichiátriai klinikán szenvedélybetegeket vizsgálnak. Egy emberen egyszerre csak egyfajta szenvedélyt tudnak vizsgálni, ezért a kórházi felvételkor egyértelműen el kell dönteni, hogy alkoholfüggő, vagy facebook-függő egyént vesznek fel. Egyelőre csak diagnosztizálnak, vagyis a vizsgálat célja annak eldöntése, hogy az illető valóban függő()-e. A vizsgálat abból áll, hogy a pácienseket engedik tetszőleges sokszor inni() is és internetezni() is (de mivel egy büfé és egyetlen számítógép van, ezért egyetlen időpillanatban csak egy ember lehet a büfében, ill egy ember a gépnél – és hogy mérhető legyen az eredmény, ezért minden más italforrást és minden saját gépet elkoboznak). Betegfelvételkor meg kell adni a páciens nevét, TAJ-számát, alkoholfüggők esetén azt is meg kell adni, hogy az illető visszaeső-e. A vizsgálat során bárki iszik() és internetezik(), de csak az alkoholfüggőknél figyelik, hogy mennyit isznak, és a facebook-függőknél, hogy mennyit interneteznek. Facebook-függők esetén minden egyes internetezéskor eggyel nő a belépések száma. Alkoholfüggők egyszerre egy pohárral isznak, és ilyenkor az alkoholszintjük megnövekszik a paraméterként megadott pohárban lévő alkohol mennyiségével. A facebook-függő akkor tekinthető függőnek, ha az internetes belépések száma meghalad egy, az összes facebook-függőre egyformán érvényes határt. Alkoholistáknál a függőség megállapításakor azt is figyelik, hogy az illető visszaeső-e. Egy visszaeső akkor tekinthető függőnek, ha alkoholszintjük egy, az összes alkoholfüggőre egyformán érvényes határ1 érték fölött van, nem visszaeső esetén pedig akkor, ha ez az érték egy határ2 fölött. A pohar-at egyértelműen megadhatjuk a benne lévő ital nevének, mennyiségének és alkoholfokának megadásával. Ezek alapján kiszámolható a pohárban lévő alkoholmennyiség(). (Ezt adatfájlból illene olvasni, de ha nincs elég ideje, megadhat néhány konkrét értéket is.) A szimulációt egy ehhez hasonló felületen végezze. (Ez most 600*400-as). A program elindulásakor már vannak betegek, az ő adatukat egy adatfájlból olvassa be. Az adatok soronként egy-egy pácienshez tartoznak, a páciens nevét, TAJ-számát tartalmazzák. Ha alkoholistáról van szó, akkor az is szerepel, hogy visszaeső-e vagy sem. (Mondjuk, 0 vagy 1.) A meglévő betegek mellé újat is fel lehet venni.
A „Vizsgálat” gombra kattintva megkezdődik a vizsgálat(). Ennek során véletlen sokszor fut le a következő: véletlenszerűen döntse el, hogy épp ki iszik, illetve ki internetezik a betegek közül. Aki iszik, az a rendelkezésre álló poharak közül véletlenszerűen választ egyet.
9
Végül összesítse az eredményeket: névsorba rendezve írassa ki az összes beteg adatát. Állapítsa meg, hogy kik interneteztek a legtöbbet, illetve, hogy összesen mennyi számít függőnek a megfigyelt betegek közül.
Szorgalmi: Ha látogató érkezik, akkor a rendszer meg tudja mondani, hogy a klinikán van-e a keresett páciens. Ehhez találjon ki valamilyen megfelelő felületet.
10
3. feladat: A foci VB kezdetén napvilágot látott egy szabályzat feleségek és barátnők számára. Ennek szellemében írjon egy VB-szimulációt. A szimulációban tévével rendelkező házaspárok vesznek részt. A programban résztvevő minden egyes embernek van neve, és mindegyikükre jellemző a meccsnézés(), de teljesen eltérő módon. A férjek meccsnézése során a megnézett meccsek száma eggyel növekszik. A feleségek esetében a metódus hatására a szabadidejük mennyisége növekszik egy, az összes feleségre egyformán érvényes meccshossz értékkel. (Ez az érték sajnos nem a teljes játékidő, de mondjuk, kb. 80 perc.) A házaspárokat egy férj és egy feleség alkotja . A szimulációt egy két kartotékfülből álló felületen szemléltesse. (Ábrák a 2. oldalon.) A Vb szabályzat feliratú felületen a foci.jpg kép látható, alatta pedig a szabályzat olvasható. A szabályzatot a szabalyzat.txt fájl tartalmazza. (Az üresnek látszó sorokban is van egy-egy szóköz, vagyis nem üresek, így nagyon egyszerű a fájl beolvasása.) A Vb időtarama feliratú felületen a házaspárok névsora látható, illetve külön-külön a férjek is és a feleségek is. A házaspárok névsorát a parok.txt fájl tartalmazza. (Adatszerkezet soronként: férj;feleség) Induláskor már mindenhol minden adat látható, de az átlag és az összeg nem. Ezek csak az első meccsnézés után válnak láthatókká. A Meccs feliratú gomb hatására a kijelölt házaspárok (egyszerre többet is ki lehet jelölni) „meccset néznek”, ennek hatására a férjekhez és feleségekhez kiírt adatok is változnak, illetve az átlag és összeg értékek is. A férjeket, feleségeket lehetőleg meccsszám, illetve szabadidő szerint csökkenő sorrendben írja ki, a férjek névsora alatt jelenjen meg az összes férjre vonatkoztatott átlagos meccsszám, a feleségek névsora alatt pedig a feleségek összes szabadideje. Ha senki sincs kiválasztva, adjon hibaüzenetet.
Segítség: Az ábrán látható méretek: a teljes méret: 976800. Egy-egy belső felület 960730
11
12
4. feladat: Játsszunk! Az ábrán látható felület mérete: 850*500, a vezérlő rész 150 pixel széles. Induláskor minden üres, csak a háttérkép látszódik. Az „Adatbetöltés” gomb hatására kerülnek be a halak a rendszerbe. Ez azt jelenti, hogy létre is jönnek a hal példányok: mindnek lesz neve, egyértelműen megadható hozzájuk a balés jobboldali profilképük és a képméret. Esetünkben a neveket az adatok.txt fájl tartalmazza, a képek az src\kepek mappában találhatóak, a méretük pedig véletlenül generálható a megadott határok között. Az adatfájlt egy fájlválasztó segítségével keressük meg. Adatbetöltés után megjelenik a nevük a listafelületen. A „Vízbedobás” gomb csak akkor válik aktívvá, ha sikerült beolvasni az adatokat. A „Vízbedobás” gomb hatására a listából kiválasztott halak (egyszerre többet is lehet választani) bekerülnek a vízbe, és ott elkezdenek úszkálni. Egyúttal a listából kikerül a nevük. Az úszás egyelőre ezt jelenti: véletlen sebességgel véletlenszerűen indulnak balra vagy jobbra, és ha az „akvárium” falához érnek, akkor visszafordulnak. A vízre kattintva megijednek, és vagy egyszerre mind megáll, vagy ha éppen álltak, akkor egyszerre mind nekiindul. Mivel a halak erősen társas lények, ezért az újonnan vízbedobott hal alkalmazkodik a többihez, és ha ők állnak, akkor az új is csak akkor kezd el mozogni, amikor a többi, ha mozognak, akkor ő is mozog.
b/ A kicsit „élethűbb” mozgás kedvéért oldjuk meg azt, hogy időnként ne csak akkor forduljon meg egyik-másik, amikor falhoz ér, hanem akkor, amikor kedve tartja.
c/ Engedjünk meg a mozgásukban némi le-föl hullámzást is.
d/ Lehet, hogy mégsem annyira összetartóak, mert most ha úgy kattintunk a vízre, hogy eltaláljuk az egyiket, akkor csak ő álljon meg (vagy induljon el), a többi mozgása ne változzon. Ekkor az új hal a vezér mozgása szerint mozog. (Vezér az, aki legrégebb óta bent van a vízben.)
13
e/ Lássa el az alkalmazást egy induló felülettel. A felületre kattintva tűnjön el ez a frame, és jelenjen meg helyette a másik.
Segítség: A frame-n lévő panelről így lehet hivatkozni a tartalmazó frame-re: JFrame frame = (JFrame) SwingUtilities.getRoot(this);
f/ Ha mégsem csak gyönyörködni szeretne a halakban, akkor az eltalált halat tüntesse el az akváriumból.
g/ Oldja meg, hogy el tudja menteni az aktuális állapotot, illetve vissza is tudja tölteni azt.
Az igazi kihívás az, ha objektumként akarja menteni (egyetlen mentendő objektumpéldány a halakat tartalmazó lista), ugyanis az Image nem szerializálható, csak az ImageIcon osztály.
h/ Oldja meg (vagy alakítsa át) úgy, hogy a Hal osztály a JComponent leszármazottja legyen. (A panelt BorderLayout-ra kell állítani, a takarást a komponenst zorder tulajdonságának beállításával lehet szabályozni.)
14
5. feladat: Itt a tél, fáznak a madarak, ezért a gyerekek madáretetőt raknak ki a számukra. A gyerekek az 1000600-as felület jobboldali, 800 szélességű részén látható házakban laknak. A gyerekek neve és a házuknak az a pontja, amelyre kirakható a madáretető közepe, egy adatfájlban található. A baloldalon látható comboBox-ból lehet kiválasztani, hogy a Kirak gomb hatására melyik gyerek helyez ki madáretetőt a házukhoz (célszerű a madáretetőt eleve a gyerekhez rendelni). Ekkor neve eltűnik a comboBox-ból, és átkerül a listába. Ha a comboBox kiürült, akkor az is és a Kirak gomb is inaktívvá válik, de addig nem. Ha már van kint legalább egy madáretető, akkor az Indit gomb is aktívvá válik. Hatására bizonyos időközönként (pl. fél másodpercenként, de ne égesse be fixen) madarak indulnak a kirakott etetőkhöz. A madarak véletlenszerűen vagy a kép bal szélének közepéről, vagy jobb szélének közepéről indulnak, és valamelyik véletlenszerűen választott etető középpontjáig mozognak. A képük véletlenszerűen (és persze, értelemszerűen is) vagy a balra-, vagy a jobbra forduló madárképek egyike. (Ezeket a képeket lehetőleg ne „gyalog” töltse be, de ha másképp nem megy, akkor kevesebb is elég belőlük.) Amikor odaérnek, akkor ott még ugyanannyi időt töltenek, mint amennyi alatt odaértek, majd egyszerűen eltűnnek. (Persze, ha nagyon sok ideje van, akkor vissza is mehetnek.) Amíg nem ettek a gyerekhez tartozó etetőből, addig csak a gyerek neve látható a listán, utána pedig már az etetőjéhez repült madarak száma is olvasható a neve mellett. Ez a szám akkor változik, amikor a madár „jóllakott”, azaz amikor eltűnik az etetőből. Ha valamelyik gyerek utólag gondolja meg magát, még akkor is kirakhat etetőt, ha a többiekéből már esznek. (De persze mindegyik csak egy etetőt használhat.)
Segédfájlok: Adatfájl: madarasgyerekek.txt adatszerkezet: a gyerek neve és etetőjének potenciális koordinátái. (Ha nagyon nem megy a fájlból való olvasás, akkor adjon meg néhányat fixen.) Képfájlok: telifalu.jpg; madareteto.png méret: szélesség = 60, magasság = 50; madarbalra0.png, …, madarbalra5.png méret: szélesség = 30, magasság = 30; madarjobbra0.png, …, madarjobbra5.png méret: szélesség = 30, magasság = 30;
15
6. feladat: Írjunk egy mini ETR alkalmazást!
A baloldalon látható 600500-as kezdőoldal képére kattintva helyette jelenjen meg a jobboldali felület – induláskor legyenek üresek a listák. A betölt gombot megnyomva a diákok listájába kerüljön be a diákok adatbázisban tárolt neve és EHA-kódja. Ha ezen a listán kiválasztjuk valamelyik nevet, akkor a teljesített tárgyak listájában olvashassuk a teljesített tárgyak nevét, a lista alatt pedig az ezekből adódó össz-kreditszámot, illetve a diák átlagát. Az aktuális tárgyak listájába az aktuálisan felvett tárgyak kerüljenek, alá pedig ezek össz-kredit értéke. A tárgyfelvétel fülre kattintva a begépelt EHAkódú diák esetén jelenjen meg a felvehető tárgynevek listája. Az ebből kiválasztott tárgyak a felvesz gomb hatására kerüljenek be a felvett tárgyak listájába. A mentés gomb hatására mentsük is el az új adatokat – pontosabban a felvett tárgyaknak megfelelően módosítsuk a már meglévő adatbázist. A megoldáshoz tetszőleges adatbázis-szervert használhat.
16
7. feladat: Írjunk egy saját fészbúkot. A szerver lesz a „fészbúk felület”, erre lehet bejelentkezni és üzeneteket küldeni. Az üzenetküldő megadja a becenevét és átküld egy avatárt is. A 750700-as felület 250 széles baloldali részén látható a bejelentkezettek avatárja, a jobboldalon pedig az üzenetek. Ha valaki kijelentkezik, akkor eltűnik az avatárja, az üzenetek között pedig jelezzük, hogy az illető kilépett.
A kliens-oldal egyszerűbb: egy 500300-as felületről kapcsolódhat a szerverhez, mégpedig úgy, hogy kapcsolódás előtt kiválaszt egy avatárt, és megadja a becenevét, kapcsolódás után pedig üzengethet.
17
Néhány hallgatói vizsgafeladat képernyőképe 1. Logikai játék
18
2. Adatbázis alapú zenés kvíz
4. Mario épp ugrik az ábrán:
19
4. Jópofa játék:
20
5. A diák hobbyja: lovaglás
21
6. Lányok 6a. Egyszerű kis játék, de látszik rajta, hogy szívesen csinálta a készítője:
6b. Öltöztessük fel a Mikulást:
22
7. A diákok hobbyja a zene: 7a. Gitár (pengetni lehet) – később továbbfejlesztette „zeneszerzéssel” is:
7b. Szintetizátor:
23
8. A tanárral is szabad viccelni:
24
Néhány vélemény Anonim módon kért vélemények közül néhány – igyekeztem csak az olyanokat iderakni, amelyek a diák saját élményére vonatkoztak. A tárgy szórakoztató volt, ki lehetett élni benne az ember alkotási vágyát. Jó érzés, amikor életre kel az általunk létrehozott program. Tetszettek a gyakorló feladatok, házik. Nem tetszett, hogy ilyen hamar vége a tárgynak, és többet nem tanítanak belőle, hogy még többet tudhassak. Az órák mindig tetszettek, jó érzés megtanulni alkotni valamit. Felbecsülhetetlennek tartom azt az érzést, mikor órákon át tartó programozás után mozog valami a rajzpanelen. Ha az ember foglalkozik a témakörrel, hihetetlen lehetőségek nyílnak kreativitása kiélésére. Lehetne több poén előadáson, mert nehéz koncentrálni. Tetszett, hogy az órán szerzett tudásomat tudtam kamatoztatni.(Sikerült a barátnőmnek írnom egy kalória, fehérje,... étrend összeállító programot, mellyel nagyon megkönnyítettem az idei tanulmányaimat.) Több napom is ráment, de örülök neki, mert jó érzés volt, amikor megleptem vele. Mindenképpen fejleszti a tárgy az ember türelmét, és a siker hatására a munkamorálom is javult (a sikertelenség pedig az idegrendszerem határait tolta egyre kijjebb :)) Véleményem szerint megéri hajtani a diákokat, még ha háborognak is érte, mert csak így lehet a fejlődés útjára lépni. Minden héten legalább heti 10 órát programoztam, ha kellett, munka után éjfélkor álltam neki legalább 1-2 órát írni. Végre örömömet leltem a tanulásban, és ezért hálás vagyok önnek. A tantárgy nagyon szerethető az ötletes példák, feladatok miatt. Tetszett, hogy rá voltam kényszerítve, hogy leüljek megtanulni olyan dolgokat, amiket mindig is szerettem volna tudni, de elrettentett a téma (első ránézésre) furcsa logikája. Gondolkodásra és gyakorlásra ösztönöz. Szeretem csinálni a programozást, mert nem csak egy technikai dolog, hanem kreatívnak is lehet benne lenni és ez általában jó dolgokat szül. Talán ez az oka, hogy jól sikerült a tárgy teljesítése. :)
25
Sikerességem oka nem a hosszú éjt-nappallá tevő tanulásban rejlik, hanem a "Jót, s jól..." idézetben. :) Harmadjára értettem meg miről van szó. Azóta nem csak a progi3 ment jobban... :) Köszönöm! Érdekelt a téma, és ezért nem tűnt tehernek a kiadott feladatok megírása. Ha valami olyasmi került szóba, amiről még nem hallottam, akkor inkább örültem, hogy ezt is tudom, nem pedig még egy megtanulandó információként tekintettem rá. Itt vagyok vizsgák után és a NetBeans-szel és az Eclipse-szel foglalkozom! Még szerencse hogy névtelen, mert most sokan megköveznének! Jó dolog a Java programozás, csak egy kis ambíció és türelem, no meg persze időráfordítás kell hozzá. Ám nem csak programozni tanít, hanem a kemény munkára, arra hogy ne a TV dobozt bámuljuk, hanem olvassunk helyette és segítsünk embertársainkon. Az egyéni fejlesztés jó „utolsó próba” volt, mindenki bemutathatta, hogy mennyit tanult, és az egy jegynyi javítás lehetősége is pozitívum. A szóbeli vizsgától nagyon féltem, ez volt számomra az első vizsga, ami nem írásbeli volt, de a tanárnő nagyon lazán kezelte a vizsgát, hamar sikerült feloldódni, örültem, hogy nem volt kikötve, hogy x percig mindenkinek beszélnie kell, és mit kell megemlítenie, hanem mindenki annyit beszélhetett, amennyit tudott és azt emelhette ki a programjából, amit akart, így sokkal egyedibbek voltak a bemutatók. Szeretném megköszönni a Tanárnő munkáját :) ha a Pollackon fele annyira bedobnák magukat a diákok, mint amennyi energiát fektet a Tanárnő, hogy megtanítson minket programozni, akkor tömegesen jönnének ki a Mérnökök.. :) Kifejezetten jólesik, amikor "életre kel" a hosszú percekig-órákig-napokig írt program(rész). Zh-n is érdekes lehetne egy olyan megoldás, hogy Tanárnő megadja, minek kell benne lennie, viszont mindenki saját ötlet alapján írjon egy programot, amiben a szükséges részek benne vannak, és lefutnak. Lehet, hogy lennének érdekes megoldások. (Megjegyzés: ha kisebb létszámú évfolyamokkal kellene foglalkozni, valószínűleg kipróbálnám, nekem is volt már ilyen ötletem. – A.Á.) Előadások érdekesek voltak, szinte mindig meg tudott lepni a tanárnő egy-egy érdekes megoldással, és hozzánk beszélt! nem úgy, mint egy két tanár... A következő hallgatóknak én is csak annyit tudok mondani, hogy készüljenek, gyakoroljanak sokat, mert szép dolog létrehozni valamit, több ez, mint egy technikai eszköz, és ha így állnak hozzá, sokkal könnyebb lesz teljesíteni a tárgyat is. Köszönöm, hogy itt lehettem.
26