Razumljivost, operatorji

Iz E-študij, proste zakladnice študentskega znanja

Skoči na: navigacija, iskanje

Vsebina

Razumljivost

Pri razumljivosti programa gre predvsem za berljivost.

Na razumljivost vplivajo:

Mnemonična imena

  • Imamo mnemonična imena spremenljivk, konstant, funktorjev in procedur

Urejenost

  • urejena in lepo strukturirana koda je lažje berljiva

Kratke procedure

  • krajše procedure so razumljivejše

Ločitev disjunkcije od konjunkcije

  • možgani razmišljajo linearno, zato je branje "mešanih" programov težko razumljivo

Komentarji

  • najprej beremo komentarje
  • namenjeni so razlagi zapletene kode - kjer uporaba ni samoumevna
  • uporabno pri trikih, posebnih prijemih ipd.
  • če je koda sama po sebi razumljiva je komentar odveč

Assert, retract

  • omejena uporaba assert in retract

Operatorji

Operatorji določajo strukturo izraza.

  • enomestni ali dvomestni
  • postfiksni zapis, prefiksni zapis in infiksni zapis
  • asociativnost
če se isti operator pojavi večkrat v izrazu asociativnost govori kateri od operatorjev veže močneje
asociativnost je
leva
levi veže močneje (večinoma je tako)
desna
desni veže močneje
brez
  • prioriteta
prioriteta pove kateri od različnih operatorjev veže močneje

Definiranje operatorja

:- op(Oznaka_prioritete, Tip_operatorja, Ime_operatorja)
Oznaka prioritete
oznaka je celo število
nižja številka pomeni močnejšo vezavo
Tip operatorja
atom
atomi ponazarjajo položaj elementa
xf, yf, fx, fy = enomestni operator
xfy, yfx, xfx = dvomestni operator

Primer

:- op(300,yfx,&). %logična konjunkcija
:- op(400,yfx,v). %logična disjunkcija

A & B :- A, B.
A v B :- A; B.


Pomen kombinacij x,y in f:

Oznaka Razred Asociativnost
fx prefix brez
fy prefix desna
xfx infix brez
xfy infix desna
yfx infix leva
xf postfix brez
yf postfix leva

If then else

prefix

if-then-else(P,Q,R) :- P,!Q;R.

infix

if P then Q else R :- P,!Q;R.


Možnost razgradnje:

  then
 /    \
if    else
|      / \
P     Q   R
:- op(701,fx,if). %naj veže šibkeje kot primerjalni operatorji
:- op(702,xfx,then).
:- op(701,xfx,else). 


Alternativno drevo:

    if
      \
       else
      /    \
   then     R
   /  \
  P    Q
:- op(703,fx,if). %naj veže šibkeje kot primerjalni operatorji
:- op(701,xfx,then).
:- op(702,xfx,else).

Povezave

Osebna orodja
Imenski prostori
Različice
Dejanja
navigacija

Tiskanje/izvoz
orodja