BME Villamosmérnöki és Informatikai Kar
Műszaki informatika szak
Nappali tagozat
2001/2002. tanév, tavaszi félév

Deklaratív programozás

1. Prolog kis házi feladat

2002. március 1.

A kis házi feladat beadása nem kötelező.

A programot tömörítve, elektronikus levélben kell beküldeni. A beküldéshez egy bash szkriptet kell használni. A szkriptet futtatni a bash dpkhfbe.02s paranccsal lehet (feltéve, hogy ezen a néven mentettük el).

Figyelem! Az ural2 szerveren a /usr/local/bin könyvtárban található a bash program.

A szkript elindulaskor elmagyarázza a teendőket (mi legyen az adott könyvtárban, milyen néven stb.). Mielőtt valaki hibára panaszkodna, győződjön meg róla, hogy a hiba az ural2.hszk.bme.hu szerveren is reprodukálható.

A programok készülhetnek MS DOS vagy MS Windows alatt is, de Unix (linux) operációs rendszer alatt is működniük kell.

A feladat

Írjon egy olyan tortertek/2 Prolog-eljárást, amely eleget tesz az alábbi specifikációnak:

A segédeljárásokat feltétlenül lássa el fejkommenttel! Törekedjék arra, hogy a megoldás hatékony legyen! Vigyázzon arra is, hogy a megoldás ne sikerüljön többszörösen!

% :- kif      == integer       \/
%                { - kif     } \/
%                { kif + kif } \/
%                { kif - kif } \/
%                { kif * kif } \/
%                { kif / kif }.
% :- tort     == { szamlalo # nevezo }.
% :- szamlalo == integer.
% :- nevezo   == integer.
%
% tortertek(+Kif, -Ertek): a Kif aritmetikai kifejezés értéke
%   tovább nem egyszerűsíthető tört alakban Ertek.
% :- pred tortertek(kif::in, tort::out).

Példák

| ?- tortertek(12, E).
E = 12#1 ? ;
no

| ?- tortertek(4/(-6), E).
E = -2#3 ? ;
no

| ?- tortertek(3/2 - 1/3, E).
E = 7#6 ? ;
no

| ?- tortertek(- (4/5) + 1/4 * 6 - 3, E).
E = -23#10 ? ;
no

| ?- tortertek(1 / (3 - 6/2), E).
no

Egyéb követelmények és tudnivalók

Nem szükséges külön dokumentációt beadnia, de a programját lássa el a működést ismertető kommentekkel.

Két szám legnagyobb közös osztójának kiszámításához használja a beépített gcd(X,Y) aritmetikai függvényt! Például

| ?- X is gcd(4,6).
X = 2 ? ;
no

Ez az első Prolog kis házi feladat, ezért khf-pl1.pl néven kell beküldeni a megoldást. A beadási határidő 2002. március 13. szerda, 24:00.

A vizsgaosztályzat megállapításakor a határidőre beadott, helyesen megoldott kis házi feladatért plusz 1 pont jár.