Elvárt ismeretek: adatbekérés, kiírás, összehasonlítás, elágazás, iteráció
Feladat: A bekért pozitív számok közül írassuk ki a legnagyobbat!
Az adatbekérést nem ellenőrizzük, feltételezzük hogy egész számokat kapunk. Feltételezzük hogy nem kell megjegyezni az összes bekért adatot.
Olvassuk el és értelmezzük a feladatot.
Mit csinálunk? Bekérünk számokat.
Mi lesz ezekkel a számokkal? Kiíratjuk a legnagyobbat.
Ez eddig elég egyszerűnek hangzik, de gondoljunk bele egy picit mélyebben.
Hogyan határozzuk meg a legnagyobbat? Nyilván összehasonlítással.
Sorra kell vennünk az adatokat és a nagyobbat megjegyezve ismételni az összehasonlítást addig, míg az összes adatot égig nem vettük.
Éppen ezt a tevékenységet kellene programozni!
- az aktuális legnagyobb számnak jegyezzük meg a 0 értéket. Ennél csak nagyobbakkal kell foglalkozni.
- Kérjük be a soron következő számot.
- hasonlítsuk össze az aktuális legnagyobb számmal
- ha nagyobb mint az aktuális legnagyobb, akkor felejtsük el az eddigi legnagyobbat és helyette jegyezzük meg az éppen soron lévőt legnagyobbként.
- ha van még további bekért szám akkor vegyük a következőt és folytassuk a 2. pontnál
- írassuk ki a megjegyzett legnagyobb számot.
Először célszerű valamilyen szabványos általános jelölésrendszert alkalmazva a programot leírni. Később már erre nem lesz szükség egyszerűbb feladatnál, de most tegyük meg.
Picit pontosítani kell a feladatot. Honnan tudjuk, hogy van-e még további kiértékelendő szám? A feladat kiírásában az szerepel, hogy pozitív számokkal kell dolgozni. Ezért most hozunk egy olyan döntést, hogy ha 0-át kapunk kiértékelésre, az azt jelenti hogy nincs több kiértékelendő adat.
(Itt jegyzem meg, hogy az ilyen döntéseket mindig egyeztetni kell a megrendelővel és azt el kell fogadtatni vele, hiszen ő tudja hogy pontosan mit is szeretne megvalósítani!)
Ezzel a döntéssel már elkészíthető az alkalmazás.
Az adatmodell és a pszeudó nyelvű megoldás:
A REPEAT...UNTIL iteráció úgynevezett hátul tesztelő ciklus. Ez azt jelenti, hogy a ciklusmag lefutása után értékelődik ki a ciklus feltétele. Tehát a ciklusmag legalább egyszer lefut. Az UNTIL után megadott feltétel a kilépés feltétele.
Ennyi volt a legnagyobb számot kiírató programocska.
A feladat elején megfogalmazott ismeretek birtokában elkészíthetők az alábbi módosított feladatok is! A feladatok egyre összetettebbek, de mind megoldható szelekcióval és iterációval.
Próbálj ezek közül minél többet elkészíteni pszeudó nyelven és az éppen tanult programnyelven is (C/Pascal)
Ha elküldöd emailen a megoldást, szívesen véleményezem!
Írd át a programot, hogy kiírja a legnagyobb és a legkisebb számot is!
Írd át a programot, hogy kiírja azt is hogy hány szám lett összesen megadva!
Írd át úgy a programot, hogy pozitív számok mellett a 0 is szerepelhessen input adatként!
Írd át úgy a programot, hogy összesen 10 adatot kell bekérni és azok közül kiválasztani a legnagyobbat stb...
Írd át úgy a programot, hogy először megkérdezi, hogy hány adatot szeretnék megadni és fogadjon el negatív számokat is.
Aki kitalálja hol van hiba a fenti Pascal programban, az kap egy virtuális sportszeletet :)
VálaszTörlés