1. feladat: Szövegelés (10 pont)
2) Visszaadja szoveg első karakterét: elso(szoveg).
3) Visszaadja szoveg maradékát az első karaktere nélkül: maradek(szoveg).
4) szoveg2-t szoveg1-hez fuzi: fuz(szoveg1, szoveg2).
Pisti barátunk két új eljárást írt. Sajnos sürgősen el kellett utaznia,
nem maradt elég ideje az eljárások működésének ismertetésére. Rád vár a
feladat, hogy megfejtsd, mi az eredménye Pisti eljárásainak, ha meghívják
őket!
2. feladat: Portia ládikái (13 pont)
Néhanapján Portia megváltoztatja a játékszabályokat, pl. azt mondja a kérőknek, hogy a három ládika egyikén sincs igaz állítás, hogy legalább kettőn van igaz állítás stb.
a) Mondd meg, milyen játékszabálynak felel meg az alábbi PROLOG program!
Itt például a nem(ólomládikán(X)) állítás X=aranyban esetén akkor teljesül, ha a tényállítások között nincs ólomládikán(aranyban).
3. feladat: Táblázatkezelő (11 pont)
A1: ...
A2: Ha A1=0 akkor 0 különben A3 A3: A2+1 |
B2: Ha A1=0 akkor 1
különben B3 B3: A3*B2 |
b) Írj az A3 és a B3 cellákban azonos seredményt adó programot, csak egyszerűbben (legfeljebb két képlettel)!
4. feladat: Bitvektorok (7 pont)
BEGIN
t:=0; FOR i:=h DOWNTO 1 DO BEGIN p:=A[i]; q:=B[i]; s:=p XOR q; r:=s XOR t; t:=(p AND q) OR (s AND t); C[i]:=r END END; |
AND | OR | XOR | ||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
b) Mi a t változó szerepe a ciklusban?
c) Mit fejez ki t értéke a programrészletből való kilépéskor?
Utasítások magyarázata:
PENUP | ettől kezdve mozgás közben nem rajzol | |
PENDOWN | ettől kezdve mozgás közben rajzol | |
FORWARD n
BACK n |
az aktuális helytől az aktuális irányban n egységnyit lép előre, illetve hátra | |
LEFT f
RIGHT f |
az aktuális irányhoz képest f fokkal elfordul balra, illetve jobbra | |
REPEAT n [utasítás] | az utasítás utasítássorozatot n-szer megismétli |
ELSO N M X Y
PENUP REPEAT M [MASODIK N X Y LEFT 90 FORWARD Y RIGTH 90] END |
MASODIK N X Y
REPEAT N [HARMADIK X Y FORWARD X] BACK N*X END |
HARMADIK X Y
PENDOWN REPEAT 2 [FORWARD X RIGHT 90 FORWARD Y/3 RIGHT 60 FORWARD Y/3 LEFT 120 FORWARD Y/3 RIGHT 60 FORWARD Y/3 RIGHT 90] PENUP END |
b) A hibásak mit csinálnak?
A)
Lnko(A,B): Ciklus amíg A<>B Ha A>B akkor A:=A-B különben B:=B-A Ciklus vége Lnko:=A Eljárás vége |
B)
Lnko(A,B): X:=1 : H:=min(A/2, B/2) Ciklus I=2-től H-ig Ha I|A és I|B akkor X:=I Ciklus vége Lnko:=X Eljárás vége |
C)
Lnko(A, B): Ha A<B akkor Csere(A, B) Ciklus amíg B<>0 X:=A MOD B : A:=B : B:=X Ciklus vége Lnko:=A Eljárás vége |
D)
Lnko(A, B): X:=A : Y:=B Ciklus amíg X<>Y Ha X<Y akkor X:=X+A különben Y:=Y+B Ciklus vége Lnko:=X/(A*B) Eljárás vége |
7. feladat: Bagdadi tolvaj (10 pont)
VAR toronyhaz: ARRAY[1..150] OF INTEGER;
tuzKezdete, felsoEmelet, aranyakSzama, i : INTEGER; BEGIN FOR i:=1 TO 150 DO toronyhaz[i]:=0; read(tuzKezdete, i); WHILE i<>0 DO read(toronyhaz[i], i); (*töltsd meg a házat arannyal *) felsoEmelet:=(30*tuzKezdete-4) DIV 33; (*meddig lehet felmenni? *) aranyakSzama:=0; (*számold össze az aranyakat *) FOR i:=1 TO felsoEmelet DO aranyakSzama:=aranyakSzama+toronyhaz[i]; writeLn(aranyakSzama) (*írd ki az eredményt *) END. |
b) Mi van akkor, ha egy emelet sorszáma több számpár első tagjaként is előfordul?
c) Mi van akkor, ha egy emelet sorszáma egyetlen számpárban sem fordul elő?
d) A (30*tuzKezdete-4) DIV 33 kifejezésben az egyik állandó hibás. Melyik az, mi a helyes értéke, és miért?
e) Ha tűz a 32. emeleten üt ki, melyik emeleten láthat "munkához" a tolvaj?
Egy számítógépes adatbázis létrehozásához az adott feladatban előforduló dolgokat (az úgynevezett egyedeket) osztályozzuk, azaz halmazokba (úgynevezett egyedtípusokba) soroljuk. Az egyedtípust téglalappal, az egyedek közötti kapcsolatokat pedig a téglalapokat összekötő vonalakkal ábrázoljuk. Háromfelé ágazó vonal, úgyenvezett "szarkaláb" jelöli, ha egy egyed több más egyeddel is kapcsolatban lehet. Nézzük a következő példát!
A megyék halmazában megyék, a járásokéban járások, a városokéban városok vannak. A megyék halmazából kiválasztott tetszőleges megyében több járás is lehet, de minden járás csak egy megyéhez tartozhat. Ehhez hasonlóan egy járásban több város is lehet stb. A megyék és a városok kapcsolatát nem jelöltük külön vonallal, mert egy megyében a városok halmaza ugyanaz, mint az adott megyéhez tartozó járásokban lévő városok halmaza.
A sivatagi karavántúrákat szervező KALEF Kft. a következő leírást adta számítógépes nyilvántartó rendszerének megtervezéséhez: "Minden karavánt tapasztalt túravezető kísér. A karavánokra a turisták helyet foglalhatnak. A karavánok különböző időpontokban indulnak, ezért egy vezető több karavánt is vezethet, és egy turista több karavánra is jelentkezhet." Másold le az alábbi ábrát, és egészítsd ki a hiányzó nevekkel és összekötő vonalakkal!