20 elemente de compilare }i dezvoltarea programelor mari
20 elemente de compilare }i dezvoltarea programelor mari
20 elemente de compilare }i dezvoltarea programelor mari
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Elemente <strong>de</strong> <strong>compilare</strong> 189<br />
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />
⎯<br />
#n<strong>de</strong>p[rtarea erorii 112 se realizeaz[ tot printr-o rescriere a<br />
<strong>de</strong>clara\iilor <strong>de</strong> domenii. #n cap. 2 am v[zut <strong>de</strong>ja c[ Turbo Prolog dispune<br />
<strong>de</strong> o sec\iune <strong>de</strong> constante - utilizate @n program cu semnifica\ia obi]nuit[<br />
(valori care nu se schimb[ @n timpul execu\iei programului).<br />
constants<br />
ion="Sfantul Ion"<br />
x =Variabila<br />
predicates<br />
sfant(symbol)<br />
clauses<br />
sfant(ion).<br />
goal<br />
sfant("Sfantul Ion"),sfant(x),write(x).<br />
Exemplul <strong>20</strong>.4. O constant[ fals[ ...<br />
Constanta x are valoarea <strong>de</strong>finit[ Variabila ceea ce face ca x s[<br />
fie tratat[ @n <strong>de</strong>monstra\ie ca o variabil[ ! (<strong>de</strong> fapt problema provine <strong>de</strong> la<br />
<strong>de</strong>fini\ia lui x care este un i<strong>de</strong>ntificator ce @ncepe cu liter[ mare)<br />
B. Re<strong>de</strong>finirea predicatelor<br />
O regul[ nu poate utiliza argumente ale unui predicat diferite <strong>de</strong><br />
tipul celor din <strong>de</strong>clara\ia sa.<br />
domains<br />
stanga,dreapta=symbol<br />
predicates<br />
la_stanga(stanga,dreapta)<br />
la_dreapta(dreapta,stanga)<br />
langa(stanga,dreapta)<br />
clauses<br />
la_dreapta(casa,arbore).<br />
la_stanga(casa,garaj).<br />
langa(X,Y):-la_stanga(X,Y).<br />
langa(X,Y):-la_dreapta(X,Y).<br />
Exemplul <strong>20</strong>.5. Concordan\a variabil[ - domeniu.<br />
Programul <strong>de</strong> mai sus furnizeaz[ eroarea fatal[;<br />
505 Type error: Illegal variable type for this<br />
position