28.04.2013 Views

20 elemente de compilare }i dezvoltarea programelor mari

20 elemente de compilare }i dezvoltarea programelor mari

20 elemente de compilare }i dezvoltarea programelor mari

SHOW MORE
SHOW LESS

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).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!