Razumljivost, operatorji
Iz E-študij, proste zakladnice študentskega znanja
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).