1. feladat: Rekurzió (20 pont)
Valami(I):
Ciklus J=1-től 5-ig T[I]:=J Ha I=5 akkor Print különben Valami(I+1) Ciklus vége Eljárás vége. |
Print:
Ciklus K=1-től 5-ig Kiír(TORPE[T[K]]) Ciklus cége Sorvég-írás Eljárás vége. |
Ha (J nemeleme H-nak), akkor H:=HU{J} : T[I]:=J
Ha I=5 akkor Print különben Valami(I+1) H:=H-{J} Elágazás vége |
A Küld(szöveg) utasítás hatására a felügyelő program feljegyzi az adott szöveget. A Van(szöveg1, szöveg2, ...) függvény értéke igaz, ha a megadott szövegek közül legalább egyet tárol a felügyelő program. Tárolt szöveget a Töröl(szöveg) utasítással törölhetünk.
Adatbázist író és olvasó programokból tetszőlegesen sok futhat egyszerre.
Részlet az író programokból: | Részlet az olvasó programokból: |
Az írandó adatok elkészítése
Küld("Írási szándék") Vár amíg Van("Olvasás","Írás") Küld("Írás") Töröl("Írási szándék") Az adatbázis írása
|
Az olvasandó adatok meghatározása
Küld("Olvasási szándék") Vár amíg Van("Írás") Küld("Olvasás") Töröl("Olvasási szándék") Az adatbázis olvasása
|
Telefonszám(A,F):
DB1:=0 DB2:=0 Ciklus I=1-től N-ig Ha TEL(I)>=A és TEL(I)<=(A+F) div 2 akkor DB1:=DB1+1 Ha TEL(I)<=F és TEL(I)>(A+F) div 2 akkor DB2:=DB2+1 Ciklus vége Ha DB1=0 akkor Telefonszám:=A különben Ha DB2=0 akkor Telefonszám:=F különben Ha DB1<=DB2 akkor Telefonszám:=Telefonszám(A, (A+F) div 2) különben Telefonszám:=Telefonszám((A+F) div 2+1,F) Függvény vége. |
A. Mi lesz
a Telefonszám(1000, 9999) hívás eredménye, ha a TEL vektorban 100 darab
2-vel kezdődő telefonszám van?
B. Mi lesz
a Telefonszám(1000,9999) hívás eredménye, ha a TEL vektor az összes 000-ra
végződő telefonszámot tartalmazza és más számot nem?
C. Milyen
tulajdonságú értéket ad eredményül a Telefonszám függvény?
D. Legfeljebb
hányszor hívhatja meg saját magát a Telefonszám függvény a Telefonszám(1000,9999)
hívás hatására?
Első:
I:=1 : J:=1 : K:=1 : L:=0 Ciklus amíg I<=N és J<=M és K<=P Elágazás A(I)<B(J) esetén I:=I+1 B(J)<C(K) esetén J:=J+1 C(K)<A(I) esetén K:=K+1 egyéb esetben L:=L+1 : D(L):=A(I) I:=I+1 : J:=J+1 : K:=K+1 Elágazás vége Ciklus vége Eljárás vége. |
Második:
I:=1 : J:=1 : K:=1 : L:=0 Ciklus amíg I<=N és J<=M és K<=P Elágazás A(I)<min(B(J), C(K)) esetén L:=L+1 : D(L):=A(I) : I:=I+1 B(J)<min(C(K), A(I)) esetén L:=L+1: D(L):=B(J) : J:=J+1 C(K)<min(A(I), B(J)) esetén L:=L+1 : D(L):=C(K) : K:=K+1 egyéb esetben (*) Elágazás A(I)<B(J) esetén I:=I+1 : K:=K+1 B(J)<C(K) esetén I:=I+1 : J:=J+1 C(K)<A(I) esetén J:=J+1 : K:=K+1 egyéb esetben L:=L+1 : D(L):=A(I) (**) I:=I+1 : J:=J+1 : K:=K+1 Elágazás vége Elágazás vége Ciklus vége Eljárás vége. |
Képfeldolgozás:
Ciklus I=2-től N-1-ig Ciklus J=2-től M-1-ig B(I,J):=128+(A(I,J)-A(I,J-1)) div 2 C(I,J):=128+(2*A(I,J)-A(I,J-1)-A(I-1,J)) div 4 D(I,J):=128+(4*A(I,J)-A(I,J+1)-A(I+1,J)-A(I,J-1)-A(I-1,J)) div 8 Ciklus vége Ciklus vége Eljárás vége. |
Két halmaz elemei között a kapcsolatot egy vonallal jelöljük. A példában a bal oldali halmaz (Osztály) egy-egy eleméhez a jobb oldalinak (Diák) több eleme is tartozhat, a jobb oldali minden eleme a bal oldalinak pontosan egy eleméhez tartozik.
A halmazelemek jellemzőit a "/" után adjuk meg az ábrán. Jelölésük az algoritmusokban: Halmaz.jellemző (például Diák.Átlag az összes diák átlagát jelenti). Definiálhatók változók is, amelyek nem halmazhoz kapcsolódnak.
Az alkalmazható függvények:
Példa:
Osztály.fiú_átlag=ÁTLAG Diák (Átlag) [Fiú] | az osztályok fiútanulóinak átlagai |
Iskolai átlag=ÁTLAG Diák (Átlag) | iskolai átlag |
Diák.eltérés=Diák(Átlag-Iskolai_átlag) | az iskolai átlagtól való eltérés diákonként |
Osztály.mind_jobb=MINDEN diák [eltérés>0] | azon osztályok,
amelyekben minden diák átlaga jobb az iskolai átlagnál |
Válaszolj az alábbi ábrához tartozó kérdésekre!
A. Mit adnak
meg a következő képletek?
Mozi.X=ÖSSZEG Vetítés (Nézőszám) [Rendező.Név="Rendes
Ödön"]
Y=MAXIMUM Mozi (X) Mozi.Z=Mozi (X=Y) |
Műsor.X:=ÖSSZEG Vetítés (Nézőszám)
Mozi.Y=ÁTLAG Műsor (X) Film.Z=ELEMSZÁM Műsor [X>Mozi.Y] |
D. Írj fel olyan képletet, amely filmenként megadja, hogy van-e bennük japán szereplő, és egy másikat, amely megadja azokat a mozikat, ahol nem látható japán színész!