===== 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ó szavá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 teknő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ögek 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!