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> 193<br />
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />
⎯<br />
co<strong>de</strong>=numar<br />
un<strong>de</strong> numar este num[rul <strong>de</strong> paragrafe <strong>de</strong>stinate acestei zone<br />
(1 paragraf = 16 bytes);<br />
De exemplu, pentru dimensionarea unei zone <strong>de</strong> 32 Kb plas[m la<br />
@nceputul programului co<strong>de</strong>=<strong>20</strong>48. Aceast[ directiv[ poate fi substituit[<br />
pentru cazul <strong>programelor</strong> executate sub Turbo Prolog folosind meniul<br />
Options/Compiler directives/Memory allocation/Co<strong>de</strong>....<br />
Dac[ la execu\ia unui program Turbo Prolog apare eroarea<br />
1002 Stack overflow<br />
este necesar s[ ne asigur[m <strong>de</strong> corecta elaborare din punct <strong>de</strong> ve<strong>de</strong>re logic<br />
a programului iar dac[ avem @n<strong>de</strong>plinit[ aceast[ condi\ie, trebuie s[<br />
redimension[m stiva <strong>de</strong> lucru a motorului <strong>de</strong> inferen\e folosind meniul<br />
Options/Compiler directives/Memory allocation/Stack... <strong>de</strong>sigur<br />
tot @n paragrafe.<br />
D3) Un predicat care genereaz[ solu\ii multiple @n cursul unui<br />
proces <strong>de</strong> <strong>de</strong>monstra\ie se nume]te ne<strong>de</strong>terminist. Compilatorul Turbo<br />
Prolog dispune <strong>de</strong> directiva check_<strong>de</strong>term (care se plaseaz[ @naintea<br />
sec\iunii domains din program) pentru avertizarea utilizatorului asupra<br />
clauzelor ne<strong>de</strong>terministe - permite <strong>de</strong>ci programatorului remedierea<br />
situa\iilor nedorite (eventual folosirea t[ieturii). #n cazul @n care<br />
programatorul cunoa]te predicatele ne<strong>de</strong>terministe din program ]i dore]te<br />
s[ r[m`n[ ca atare, aceste predicate trebuie s[ fie precedate @n <strong>de</strong>clara\ie<br />
<strong>de</strong> op\iunea non<strong>de</strong>term. Deasemenea, pentru a ob\ine un raport <strong>de</strong>taliat<br />
asupra predicatelor dintr-un program, se folose]te directiva diagnostics<br />
fie @n program (plasat[ la @nceputul acestuia) c`t ]i din meniul<br />
Options/Compiler directives/Diagnostics.<br />
E. Imbricarea <strong>programelor</strong> Turbo Prolog<br />
#n situa\ia @n care acelea]i <strong>de</strong>clara\ii <strong>de</strong> domenii, <strong>de</strong>clara\ii <strong>de</strong><br />
predicate ]i <strong>de</strong>fini\ii sunt utilizate @n mai multe programe, este util[<br />
folosirea directivei<br />
inclu<strong>de</strong> "NUME.PRO"<br />
un<strong>de</strong> NUME.PRO este numele fi]ierului Turbo Prolog care<br />
con\ine <strong>de</strong>fini\iile ]i <strong>de</strong>clara\iile necesare.<br />
Efectul acestei directive const[ @n imbricarea programului NUME.PRO @n<br />
programul propriu, chiar @n pozi\ia @n care apare directiva. Programatorul<br />
trebuie s[ verifice eventualele neconcordan\e care pot apare (predicate<br />
folosite dar @nc[ ne<strong>de</strong>clarate etc).