1. feladat: Az óra csak jár (14 pont)
a) Melyiknek mi a feladata?
b) Miért használunk tömböket és mire szolgálnak a K(), E(), V() tömbök?
c) Bizonyos
estekeben a 2. eljárás hibás eredményt számol. Melyek ezek, s hogyan lehetne
kijavítani a programot?
Első(I):
E(I).or:=0; E(I).p:=0; E(I).mp:=0; E(I).szmp:=0 gettime(or,p,mp,szmp) K(I).or:=or; K(I).p:=p; K(I).mp:=mp; K(I).szmp:=szmp Eljárás vége. |
Második(I):
gettime(or,p,mp,szmp) E(I).szmp:=E(I).szmp+szmp-K(I).szmp E(I).mp:=E(I).mp+mp-K(I).mp E(I).p:=E(I).p+p-K(I).p E(I).or:=E(I).or+or-K(I).or V(I).or:=or; V(I).p:=p; V(I).mp:=mp; V(I).szmp:=szmp Eljárás vége. |
Harmadik(I):
gettime(or,p,mp,szmp) K(I).or:=or; K(I).p:=p; K(I).mp:=mp; K(I).szmp:=szmp Eljárás vége. |
2. feladat: Táblatalálgatás (13 pont)
A1: A1+1
A2: A2+2 A3: A2+A3 |
b) Az A1, A2, A3 cellák kezdőértéke a 0, X, Y. (X, Y tetszőleges pozitív számok.) A cellák következő értékeit kiszámító képletek:
A1: If(páros(A3),A1,A1+A2)
A2: If(páros(A3),A2*2,A2) A3: If(páros(A3),A3/2,A3-1) |
c) Az A1, A2, A3 cellák kezdőértéke az 1, X, Y. (X, Y tetszőleges pozitív számok.) A cellák következő érétkeit kiszámító képletek:
A1: If(páros(A3),A1,A1*A2)
A2: If(páros(A3),A2*A2,A2) A3: If(páros(A3),A3/2,A3-1) |
3. feladat: Flip-flop (18 pont)
T=h | T=i | |
yn=h |
|
|
yn=i |
|
|
S=h |
S=h |
S=i |
S=i |
|
yn=h |
|
|
|
|
yn=i |
|
|
|
|
K=h |
K=h |
K=i |
K=i |
|
yn=h |
|
|
|
|
yn=i |
|
|
|
|
4. feladat: Fabejárás (18 pont)
Az ábrán egy 3 szintű teljes bináris fa látható, a felső szinteken minden csúcsnak két részfája van, a legalsó szinten egy csúcshoz sem tartozik részfa (minden részfa üres).
Egy fa összes elemét írja ki a következő rekurzív program az ún. preorder bejárás szerint:
Az inorder és a post order bejárás algoritmusa a következő:
post(fa): ha nem üres(fa) akkor post(balrészfa), post(jobbrészfa), írdki(gyökér)
b) Milyen betűsorozatot kaptunk ugyanennek a fának az inorder bejárásával?
A moszat növekedését úgy játsszuk le, hogy kódjában szereplő jeleket a növekedést leíró szabályok szerinti jelsorozatra cseréljük. Folytasd 4 időegység növekedésének kódjával és ábrájával a megkezdett növekedést!
Szabályok:
0->10 | 3->3 | 6->58 | 9->39 |
1->32 | 4->56 | 7->3(9) | (->( |
2->3(4) | 5->37 | 8->50 | )->) |
4 | |
56 | |
3758 | |
33(9)3750 | ? |
? | ? |
? | ? |
? | ? |
6. feladat: Rajzőrület (12 pont)
a) Mit csinál a belső ciklus a Furcsa(A) eljárásban?
b) Mi a feladata a külső ciklusnak a Furcsa(A) eljárásban?
c) Mit rajzol ki az eljárás az A paraméter függvényében?
A programban használt utasítások magyarázata a következő:
REPEAT db | a következő, beljebb kezdett
utasításokat db-szor megismétli |
forward hossz | előrelép az aktuális irányban
hossz egységgel |
left szög | balrafordul szög fokkal a teknőc
síkjában |
pitch szög | a teknőc "felfelé" fordul
(függőleges síkban) szög fokkal |
Furcsa(A):
REPEAT 4
forward A
REPEAT 4
pitch 90
forward A
left 90
7. feladat: Egyiket a másik után (18 pont)
Nyissz(N,X):
Ha N=1 akkor X különben Nyissz(N-1,elsőutániak(X)) Függvény vége. |
Nyassz(A,B,X):
Ha B=0 akkor Üres sorozat különben Ha A=1 akkor elejére(első(X), Nyassz(A,B-1,elsőutániak(X))) különben Nyassz(A-1,B-1,elsőutániak(X)) Függvény vége. |
A függvények értelmezése:
a) Mit
csinál Nyissz függvény, ha N>0 egész, X sorozat?
b) Mit csinál a Nyassz függvény, ha A>0 egész, B>=0 egész, X sorozat?
c) Készíts függvényt egy sorozat N. elemének meghatározására. A függvény leírásában a fenti sorozatkezelő függvényeket lehet használni.