===== Algoritmusok követése ===== ==== 1995/9-10/1/5 ==== A LOGO programnyelv következő függvényeit mondatokra is és szavakra is lehet alkalmazni: * ''FIRST'' X - megadja az X szó első betűjét (vagy az X mondat első szavát) * ''BUTFIRST'' X - megadja az X szót az első betűje nélkül (vagy az X mondatot az első szava nélkül) * ''LAST'' X - megadja az X szó utolsó betűjét (vagy az X mondat utolsó sza­vát) * ''BUTLAST'' X - megadja az X szót az utolsó betűje nélkül (vagy az X mondatot az utolsó szava nélkül) Az önálló betűk elé ''~'' jelet, a szavak elé ''˝'' jelet kell tenni, a mondatokat pedig ''[]'' jelek közé tesszük, s a mondaton belül a szavak elé nem kell kitenni az idézőjelet. **Példák:** |~B |''FIRST'' ˝SZÓ -> ~S | |˝SZÓ |''BUTFIRST'' ˝SZÓ -> ˝ZÓ | |[RÖVID MONDAT] |''FIRST'' [RÖVID MONDAT] -> ˝RÖVID | |[EZ EGY HOSSZABB MONDAT] |''BUTFIRST'' [MONDAT] -> []| Mit adnak meg a következő LOGO kifejezések? Add meg a konkrét értéket, valamint fogalmazd meg általánosan is a kapott eredményt! * A. ''FIRST'' ''BUTFIRST'' [FEKETE MACSKA] * B. ''BUTFIRST'' ''FIRST'' [VÉGIGÉRő FA] * C. ''LAST'' ''FIRST'' [LOGO PROGRAMNYELVű UTASÍTÁSOK] * D. ''BUTLAST'' ''BUTFIRST'' [MI LESZ EZ] ==== 1996/9-10/1/1 ==== Mit rajzolnak a következő LOGO-nyelvű programok? Méreteket is adj meg! A tek­nőc kezdetben a képernyő közepén áll és az X-tengely irányába néz. Kezdetben a toll a papíron van, ''PENUP'' felemeli a papírról, ''PENDOWN'' leengedi a papírra. A teknőc ''LEFT s'' hatására balra, ''RIGHT s'' hatására jobbra fordul ''s'' fokkal, ''FORWARD x'' hatására előre, ''BACK x'' hatására hátra lép ''x'' egységgel, ''REPEAT n'' [utasítások] hatására pedig a záró­jelbe tett utasításokat ''n''-szer megismétli. Az ''n'' értéke a B) részfeladatban 2-vel osztható. * A. ''REPEAT n [REPEAT 5 [FORWARD 5 LEFT 90] RIGHT 90 PENUP FORWARD 5 PENDOWN]'' * B. ''REPEAT n/2 [REPEAT 5 [FORWARD 5 LEFT 120] LEFT 120 PENUP FORWARD 5 PENDOWN REPEAT 5 [FORWARD 5 RIGHT 120] RIGHT 120 PENUP FORWARD 5 PENDOWN]'' * C. ''REPEAT n [REPEAT 8 [FORWARD 2 BACK 4 FORWARD 2 LEFT 45] PENUP FORWARD 8 PENDOWN]'' ==== 1996/9-10/1/5 ==== Egy vasútmodell-szerelvényt az alábbi paranccsal mozgathatunk a sínen: Mozgat(Y,V) – Y távolságot tesz meg, végsebessége V lesz. A szerelvény csak egyenletesen tud gyorsulni vagy lassulni. Egy eljárást készítettünk, amely a szerelvényt S távolságra juttatja el (a ^ jel hatványozást jelöl): Vezérlés(X,V): Y:=A*DT^2/2 + V*DT Ha X+Y <= S/2 és V+A*DT <= W akkor V_új:=V+A*DT Mozgat(Y,V_új): Vezérlés(X+Y,V_új): Mozgat(Y,V) különben Mozgat(S-2*X,V) Eljárás vége. Kezdetben X=0, V=0, DT=1, A=2, S=20 és W=10! Másold le az alábbi táblázatot, és írd bele a Mozgat eljárás i-edik meghívása előtt (i = 1,2,3,...) érvényes értékeket! | i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | | X | | | | | | | | | | | | V | | | | | | | | | | | | Y | | | | | | | | | | | | V_új | | | | | | | | | | | | megtett út | 0 | | | | | | | | | | A „megtett út” sorba az i-edik lépésig megtett útszakaszok összege írandó. ==== 1997/9-10/1/2 ==== Az alábbi LOGO programokban egyszerre 2 teknőc rajzol. Azonos kezdőállapotból indulnak, kelet felé, a tollak a papíron vannak. Rajzold le az általuk elkészített ábrákat! Add meg az egyes szöge­k nagyságát fokban, és nevezd meg a jellegzetes geometriai alakzatokat is! A. Teknőc1: right 90 forward 10 left 90 forward 100 right 90 forward 20 left 120 forward 60 Teknőc2: left 90 forward 10 right 90 forward 100 left 90 forward 20 right 120 forward 60 B. Teknőc1: right 135 forward négyzetgyök 200 left 135 forward 100 right 120 forward 20 left 150 forward 20+20*négyzetgyök 3 Teknőc2: left 135 forward négyzetgyök 200 right 135 forward 100 left 120 forward 20 right 150 forward 20+20*négyzetgyök 3 ==== 2014/9-10/1/1 ==== Egy síkban növekvő növény egyes darabjait az A, B, C betűkkel jelöljük. A növekedés egy időegységében megadjuk minden darabra, hogy a következő időegységben mi lesz belőle. Kezdetben mindig egy darab A típusú elemből áll a növény, amely felfelé néz. (Ha egy elem nem felfele néz azt az alábbi példákban így jelöljük: A> jobbra, | A ^ | ^ -> | A | ^ | ^ -> | | | A ^ ::: | B ^::: | B ^ :::| C | A> ^::: | C ^:::| C | A fenti szabályokkal az egyetlen A típusú elemből álló növény így fejlődik 3 időegységben: | ^ -> | ^ -> | | ^ -> | A | | | | ^:::| ^:::| | ^:::| B | | | | ^:::| ^:::| | ^:::| A | | | | ^:::| ^:::| A | ^:::| C | A> | | | ^:::| ^:::| B | ^:::| A | | | | ^:::| A ^:::| A | ^:::| B | | | | A ^:::| B ^:::| C | A> ^:::| C | B> | A> | A. Rajzold le az első 4 időegységben a növény fejlődését, ha az alábbi szabályokat kell alkalmazni! | ^ -> | C ^ | ^ -> | ^ | ^ -> | | | | ^::: | B ^:::| ^::: | ^:::| ^::: | A | | | A ^::: | B ^:::| B ^::: | B ^:::| C ^::: | B | A> | B. Rajzold le az első 4 időegységben a növény fejlődését, ha az alábbi szabályokat kell alkalmazni! | ^ -> | A ^ | ^ -> | ^ | | | ^ -> | | | | | A ^::: | B ^:::| B ^::: | C ^:::| | C | ^::: | | ==== 2015/9-10/1/2 ===== Az alábbi áramkör A és B bemenetére érkezik egy-egy 1-bites érték (A és B), amelyből a NEM, ÉS, VAGY áramköri elemek állítják elő az X és a C 1-bites értékeket. {{:informatika:programozas:algoritmusok:nt-2015-9-1-2.png?direct&400|}} Töltsd ki az alábbi táblázatban, hogy A és B adott értékeire (0=hamis, 1=igaz) mi lesz X és C értéke! ^ A ^ B ^ X ^ C ^ | 0 | 0 | | | | 0 | 1 | | | | 1 | 0 | | | | 1 | 1 | | | ==== 2015/9-10/1/4 ==== Az 1..n elemek egy részhalmazát egy ún. bináris levélfában ábrázolunk, amire a következő tulajdonságok teljesülnek: - A fának n levélpontja van. - A fának n-1 belső (nem levél) pontja van. - Minden belső pontnak két fia van. - A fa minden belső pontja a jobb részfájában lévő halmazelemek számát tartalmazza. Például a {2;4;5;7;9;10} halmaz ábrázolása, ha n=10: {{ :informatika:programozas:algoritmusok:nt-2015-9-1-4-1.png?direct&300 |}} Egy ilyen fára egyetlen műveletet alkalmazunk, az I-edik legnagyobb eltávolítását a fából. (A példában az első legnagyobb a 10, a hatodik legnagyobb a 2.) Ha a fenti fából a 4. legnagyobb elemet kivesszük, akkor a fa így alakul (a 4. legnagyobb az 5-ös volt, a törlés után a 4. legnagyobb a 4-es lesz): {{ :informatika:programozas:algoritmusok:nt-2015-9-1-4-2.png?direct&300 |}} Az alábbi fából indulunk ki: {{ :informatika:programozas:algoritmusok:nt-2015-9-1-4-3.png?direct&300 |}} Rajzold le a fát minden törlés után, ha elemeket az alábbi sorrendben törlünk: 4. legnagyobb, 4. legnagyobb, 1. legnagyobb, 4. legnagyobb!