====== Rekurzió ====== ==== 1995/9-10/1/2 ==== A következő LOGO program szimmetrikus ábrákat rajzol: TO mitcsinál A B FORWARD A LEFT B mitcsinál A B END A programban használt utasítások magyarázata a következő: | FORWARD hossz | előrelép az aktuális irányban hossz egységgel | | LEFT szög | balra fordul szög fokkal a teknőc síkjában | | TO | eljárás eleje | | END | eljárás vége | A szimmetria lehet kettes (pl. a pillangó szárnyai), hármas (a háromlevelű lóhere), négyes (ilyen a négylevelű lóhere) stb. A következő eljáráshívások eredménye milyen szimmetriát mutat? * A. mitcsinál 100 144 * B. mitcsinál 100 160 * C. mitcsinál 100 150 * D. mitcsinál 100 96 ==== 1996/9-10/1/4 ==== Egy vállalat dolgozóinak a beosztása a következő lehet: igazgató, igazgatóhelyettes, osztályvezető, alkalmazott. Az alkalmazottak valamelyik osztályon dolgoznak. Az igazgató közvetlen főnöke az igazgatóhelyetteseknek, az igazgatóhelyettesek az osztályvezetőknek, az osztályvezetők a saját osztályuk alkalmazottjainak. Mindenki küldhet levelet a közvetlen főnökének és összes (nem csak közvetlen) beosztottjának. A dolgozók beosztását PROLOG-szerű tényállításokkal írjuk le: **Példa:** igazgató("Avar András"). igazgatóhelyettes("Álmos Ádám"). igazgatóhelyettes("Boldog Blanka"). osztályvezető("Császár Csaba", "Pénzügyi osztály"). osztályvezető("Demeter Dóra", "Tervosztály"). alkalmazott("Elekes Eszter", "Tervosztály"). alkalmazott("Forró Ferenc", "Tervosztály"). A levélküldés szabályait a következő – félkész – PROLOG-szerű program definiálja: küldhet(Feladó,Címzett) {Feladó küldhet levelet Címzett-nek} ha közvetlenFőnöke(Feladó,Címzett) vagy beosztottja(Feladó,Címzett). közvetlenFőnöke(A,F) ha ... {A-nak közvetlen főnöke F}. beosztottja(F,A) ha ... {F-nek közvetlen vagy közvetett beosztottja A}. Fejezd be a két megkezdett eljárást! A ''ha'' alapszó utáni formulákban a ''nem'', a ''vagy'', valamint az ''és'' logikai műveleteket, továbbá a tényállításokat is használhatod a már definiált vagy általad definiálandó eljárások mellett.