A programozás alapjai I. - 4. kisZh

A VIK Wikiből


Ezen az oldalon gyűjtjük a A programozás alapjai I. tárgy gyakorlatain az elmúlt években előforduló kisZh feladatokat, azok megoldásaival. A feladatok nehézsége iránymutatónak tekinthető, de az egyes félévek időbeosztása eltérhet. Ne ess kétségbe, ha ismeretlen, nehéz, „megoldhatatlan” feladatsort látsz.


A megoldásokról

Szóval hogyan kell tanulni a prog ZH-kra? „Sehogyan.” Ez nem egy „tanulható”, hanem egy „gyakorolható” tárgy.

– Czirkos Zoltán, InfoC tanácsok


Az oldalon nem gyűjtjük a feladatok megoldásait. A kisZh-k eleji beugrók rövidek, általában 10 – 15 sorban megoldhatóak. A programozás nem egy „magolható” tárgy, nincsenek típusfeladatok, s azok megoldásai. A programozás alapjai I., s A programozás alapjai II. tárgyak egy szemléletmódot szeretnének megtanítani, amit a régebbi feladatsorok böngészésével nem, csak azok önálló megoldásával lehet elsajátítani. Kicsit bővebben olvashatsz erről az idézet végén linkelt oldalon.

Amennyiben egy-egy itt látható feladat nehézséget okoz, böngészd át az eddigi előadások anyagát. Ha még mindig nem megy a megoldás, fordulj bátran a felsőbb évesekhez, s a tárgy oktatóihoz, gyakorlatvezetőihez a levlistákon, készséggel fognak segíteni.

További tanulási tippekért olvasd el a tárgy adatlapjának Tippek fejezetét.

Feladatsorok

2014

Sakk

Írj programot, amelyben sakkfigurák pozícióit tárolod sor (1–8), oszlop (1–8) formában! Mindkettő egész szám. Válassz ehhez adatszerkezetet, amelyben a koordináták külön eltárolhatóak!

  • Írj egy függvényt, amely a paraméterként kapott pozíciót kiírja a képernyőre! Az oszlopokat jelöld az ábécé betűivel, 1=a, 2=b…; pl. ha a kapott pozíció a 3. oszlop 6. sor, akkor a kimenet: c6.
  • Írj függvényt, amely visszatér egy billentyűzetről beolvasott pozícióval! A felhasználó a kiírással megegyező formátumban fogja megadni (pl. c6).
  • Írj függvényt, amely két pozíciót kap, és megadja, hogy egy bástya léphet-e az egyik helyről a másikra! (A bástyák csak azonos oszlopon, azonos soron léphetnek. Feltételezhető, hogy nincs útban más figura.)
  • Írj főprogramot, amelyben a megírt függvények használatával beolvasol két pozíciót, kiírod őket, végül pedig szövegesen azt, hogy szabályos lenne-e a lépés egy bástya számára! Pl. „c6 d5” bemenet esetén a kimenet „c6 d5: szabálytalan”.

Euró

Az előadáson láthattad, hogy a tizedes törtek a double típusban nem tárolhatók pontosan: pl. a 9,95 érték nem ábrázolható. Írj programot, amely egy banki szoftver része lehet! Ebben a pénzösszegek egész euróit és egész centjeit kell tárolni egy alkalmas adatszerkezetben.

  • Írj függvényt, amely visszatér egy billentyűzetről beolvasott pénzösszeggel. A felhasználó „9€ 95c” formában fogja beírni.
  • Írj függvényt, amely paraméterként két pénzösszeget kap, és megadja ezek összegét! 100 cent = 1 euró, a centbe nem kerülhet 99-nél nagyobb érték.
  • Írj függvényt, amely a paraméterként kapott pénzösszeget egész euróra (50 centtől fölfelé) kerekíti, és azt adja vissza! Itt se használj valós számokat!
  • Írj főprogramot, amelyben az előbb megírt függvények használatával beolvasol egy pénzösszeget (a), és kiírod a dupláját (a+a) euróra kerekítve!

Angolszász

Írj programot, amelyben angolszáz mértékegységben (láb és hüvelyk) megadott hosszúságot tudsz tárolni egy alkalmas adatszerkezetben! Legyen mindkettő egész szám; a hüvelyk 0 és 11 között lehet, mert 12 hüvelyk = 1 láb.

  • Írj függvényt, amely visszatér egy billentyűzetről beolvasott hosszúsággal! A felhasználó ezt 6'9” formában fogja megadni. (C sztringben \' és \" kell.)
  • Írj függvényt, amely összead két hosszúságot, figyelve arra, hogy a hüvelyk–láb átváltást elvégezze!
  • Írj függvényt, amely megadja a paraméterként kapott hosszúságot méterben, valós számként. 1 láb = 0,3048 méter.
  • Írj függvényt, amelyben az előbb megírt függvények használatával megkérdezed a felhasználót, hogy milyen magas (láb'hüvelyk”), és utána kiírod méterben, hogy milyen magas lenne egy 1'2” magasságú székre állva.

Bolygó

Olyan programot kell írnod, amelyben bolygók keringési és forgási idejeit tárolod. Ezek földi nap, illetve óra mértékegységben lesznek megadva, pl. a Mars adatai: keringés = 686,971 földi nap, forgás = 24,6229 óra. Definiálj adatszerkezetet, amely egy bolygó idejeit tartalmazza!

  • Írj függvényt, amely visszatér egy bolygó billentyűzetről beolvasott adataival! A felhasználó „686.971d 24.6229h” formában fogja megadni.
  • Tegyük fel, hogy az emberek 23–25 órás napokhoz (az alvás miatt), a növények pedig 200–700 napos évekhez tudnak alkalmazkodni (az évszakok miatt). Írj függvényt, amely megadja egy bolygóról, hogy az emberek és a növények számára is lakható-e!
  • Írj függvényt, amely megadja a paraméterként átvett bolygóról, hogy hány napos ott egy évforduló, tehát hány ottani napból áll egy ottani év (keringés/forgás).
  • Írj főprogramot, amely a fent megírt függvényeket használva bekéri egy bolygó adatait; utána megvizsgálja, hogy lakható-e. Ha nem, akkor kiírja, hogy lakhatatlan; ha igen, akkor pedig azt, hogy az ottaniak hány naponta ünneplik a születésnapjukat!