Múlt héten feltettem egyik kedvenc kérdésmet friss munkatársaimnak. Az eredményre ugyan számítottam, de azért meglepődtem, hogy egyetlen ember sem tudott ra valaszolni.
Aki ismerős a C illetve Java nyelvekben az pályázhat. Adott egy egyszerű for ciklus és azt át kell írni a vele ekvivalens while ciklusra. Szóval akövetkezőt kell átírni:
for (inti i = 0; i < 10; i++ ); |
Eddig még mindenki akövetkező választ adta:
int i = 0; while (i < 10){ i++; } |
Talán mondanom sem kell, hogy ez nem jó válasz. Nézzük csak meg, hogy miért! Ha van egy A halmazunk ami ekvivalen B halmazza, akkor a halmazelmélet szerint A unio C ekvivalens B unio C-vel. Természetesen C is egy halmaz. Ha azt állítjuk, hogy ez a két ciklus ekvivalens, akkor a while cilus után irassuk ki az i változó értékét, ez a mi C hallmazunk. Hoppán! azonnal látszik, hogy az for ciklusnál ez nem megoldható, mivel alapban fordítási hibával szállna el. A hleyes megoldás a következő:
{ int i = 0; while (i < 10){ i++; } } |
Ilyen egyszerű és még nem találkoztam személyesen olyan emberrel, aki erre helyes választ adott volna. Perszer, persze most mindenki (azok is akiket kérdeztem) azt mondják, hogy ez is jó, mert nem tudták, hogy mit akarok ezzel a továbbiakban. Ha tudták volna, hogy a while után ki akarom iratni a ciklusváltozó értékét, akkor simén jól írták volna át. Hát ez az! De mért nem elsőre.
Ebben a feladatban nem is maga a feladat a probléma, hanem a gondolkodás. És itt van a gond. A problémák ritkán vannak csak úgy saját magukért. A problémáknak van környezetük. Ennek a problémának nem ismerjük a környezetét. Ekkor mit tehetünk? Első megoldás az, hogy kérdezünk. ebben az esetben monjuk nem volt lehetőség. Második megoldás az, hogy a lehető legjobban be kell biztosítani a megoldást addig amíg többet nem tudunk a problémáról. Mert ha nem tiszta a probléma, akkor ki kell suvickolni, tisztává kell tenni!
Ok vegyünk egy másik példát ugyanerre! Tervezz egy házat! Nem baj, ha nem vagy tervező, csak készítss egy vázlatott egy házról. Ha úgy kezded, hogy rajzolsz egy téglalapot akkor buktál, mert mi van, ha én egy eszkimókunyhót akarok, ami kör alapterületű.
Másik, ami megint informatikai probléma, adatbázis normalizálás. Adott egy attribútumhallmaz: vezetéknév, keresztnév, születési év, születési hely, testsúly, rögzítés dátuma. Ha csak azt mondom errőlaproblémáról, hogy ez egy személy adatai, akkor akár rá is véghatnánk, hogy ez attributumhalmaz normalizált (ok, nem az, de ha egy ID-t is odaképzelsz, akkor már OK) . Dermondok még egy mondatot: ezek az adatok egy fittnesz edző szánmára készült alkalmazás lenne. Hoppá. Egyetlen szót sem ejtettünk az adatokról, de azonnal több adatunk van. Egy edzőnek ritkén van arra szüksége, hogy egy személy súllyát ismerje, neki az kell, hogy több időpillanatban is tudja azt. Tehát azonnal két relációra kell osztani. (Ugye nem kell elmagyaráznom pontosan ?!)
< P>