(#2102) 2012. április 07., szombat
A program forráskódja. Meglepõen egyszerû...
(mirõl is?) Nem pontosan errõl akarok írni, csak valami ilyesmirõl...
(kinek is?) Programozást tanulunk az enyéimekkel. Mindig, minden évben amikor E-seket taníthatok, tanítok nekik programozást is. Sajnálom nagyon, hogy se Erika, se Petra nem tanít ilyet. (Éva valami hasonlót igen, de nem programozást hanem algoritmizálást, ráadásul heti két órás keretben, na arra meg én mondom, hogy felesleges...)
(mit is?) Az alapok azt hiszem megvannak... Sajnos, a konzolos módban nagyon nem lehet megfogni a gyerek (OK, a fiatal :)) fantáziáját – a Lazarus-szal még nem próbálkoztam. Egy ötlet volt – sok éve azt hiszem már megcsináltam – hogy a bináris keresést megvalósítsuk. A németeseknél éppen arra maradt a program megcsinálását megelõzõ órán idõ, hogy a feladatot feldobjam, de az angolosoknál több idõ volt – egy hirtelen jött ötlet mentén kipróbáltuk azt, hogy lemodelleztük a megoldást. Egy valaki számot gondolt a megadott feltételekkel, aztán sorra mindenki tippelt és persze figyelni kellett, hogy szabályosan tippeljen amint hogy az aki gondolt, szabályosan reagáljon. Érdekes, a programozás nem, de ez a „móka” lekötötte õket...
(hogyan is?) A feladat tehát az, hogy gondol egy számot a kezelõ 1 és 1023 között, és a gép azt kitalálja. A gép feldob egy számot, és a kezelõ a K leütésével jelzi, hogy az õ, a kezelõ száma ennél kisebb, N leütésével pedig azt, hogy nagyobb. Végül E leütésével azt, hogy eltalálta. Csalni nem szabad, akkor a program „beszorul” egy számtartományba.
Szerintem szép feladat, kerek, konkrét és nem is erõltetetten kitûzött vagy megfogalmazott feladat (a címletezés volt még ilyen), de ezzel együtt is nem fogta meg a srácok fantáziáját, nekik ez is csak egy feladat volt :( Sajnos attól tartok, hogy ha maguknak kellett volna megcsinálni, az nem ment volna.
Pedig a feladat érdekes és köze van a címbelihez... Az algoritmus is egyszerû: a számtartomány közepét kínálja fel a program, mindig a két szélsõ érték közepét. Ha a felhasználó gondolt száma ennél nagyobb, akkor ez legyen az új tartomány alsó, ha meg kisebb akkor a felsõ határa. Így az eredeti tartományt éppen megfelezte. Ezt folytassa addig amíg csak nem E lesz a kezelõ válasza. A tartomány tehát felezõdik mindig... Azt nem tárgyaltuk ki, hogy ez a legoptimálisabb algoritmus, azt sem hogy a számtartomány mindig felezõdik. (Most utóbb, hogy írok erre és átgondolom, az jutott eszembe, hogy ez a feladat alkalmas lenne arra is, hogy a rekurzió fogalmát bevezessük és egy példát is megoldjuk, esetleg normál, nem rekurzív, illetve rekurzív módon. Ugyan töredékük fog emelt szinten érettségizni – a szabályozás változása miatt õk az elsõ olyan osztályunk akik legfeljebb csak hatodik tárgyként választhatják az informatikát – de látva mennyire fogékonyak a programozás gyönyöreire, azt hiszem, hogy a rekurzió bemutatásától megtartóztatom magam...)
Jó lenne még pár ilyen feladat... És jó lenne a Lazarus-szal is próbát tenni, bár ezt még magam sem ismerem...