Palyginimo operacijos Spausdinti
( 0 Votes )
Parašė Aurimas Šimkus   

Prolog kalboje palyginimo Operacija skiriasi nuo palyginimo operacijos tradininėse programavimo kalbose. Visų pirma reikią pabrėžti, kad čia kalbama apie termų (žr. sk. "Prolog terminai") lyginimą, o ne aritmetikos!

Iš viso yra 4-turi termų palyginimo operatoriai:

  1.    X = Y.            - X lygu Y
  2.    X \= Y.           - X nelygu Y 
  3.    X == Y.          - X griežtai lygu Y
  4.    X \== Y.         - X griežtai nelygu Y

    , kur X ir Y yra termai. 

Taigi matome 2 skirtingus lyginimo variantus: paprastą ir griežtą lyginimą.

Paprastame lyginime du operandai vadinami lygiais, jei tenkina vieną iš 4-turių taisyklių:

  1. Abu operandai - nesukonkretintieji kintamieji. Tokiu atveju jie yra susiejami. Tai dažnas lyginimo atvejis, kai norima pasakyti, kad ieškomas objektas turi būti toks pats, kaip kitas apskaičiuojamas objektas. Pavyzdys:
    X = Y.
       - X = Y
    

  2. Vienas operandas yra nesukonkretintas kintamasis, o kitas - sukonkretintas kintamasis arba termas, kuris nėra nesukonkretintas kintamasis (skaičius, atomas, faktas, struktūra). Tokiu atveju nesukonkretintasis kintamasis įgyja antrojo operando reikšmę. Pavyzdžiai:
    X = Y, X = 15.
       -  X = Y, Y = 15 (X=15, Y=15)
    X = automobilis(audi), Y = X.
       - X = Y, Y = automobilis(audi)
    
  3. Abu operandai yra konstantos (sveikieji skaičiai arba atomai) arba struktūros be kintamųjų ir yra vienodi. Pavyzdžiai:
    2 = 2.
       - true
    silta = salta.
       - false.
    temperatura(4) = temperatura(4).
       - true.
    paskaita(trukme(90), adresas(siauliai, centras)) = paskaita(trukme(90), adresas(siauliai, uzmiestis)).
       - false.
    
  4. Abu operandai yra struktūros su kintamaisiais ir kurių atitinkamos komponentės yra vienodos arba tampa vienodos kintamųjų pagalba. Pavyzdžiai:
    zmogus(X, arturas) = zmogus(Y, arturas).
       - X = Y.
    zmogus(X, arturas) = zmogus(Y, tomas).
       - false
    perka(tomas, X) = perka(Y, arbuzas).
       - X = arbuzas, Y = tomas.
    perka(tomas, X) = perka(X, arbuzas). 
       - false.
    

Griežtame lyginime du operandai vadinami griežtai lygiais, jei jie tenkina vieną iš dviejų taisyklių:

  1. Abu operandai yra nesukonkretinti kintamieji, kurių reikšmės prieš giržtą lyginimą buvo susietos arba jų pavadinimai yra vienodi.
  2. Abu operandai yra sukonkretintieji kintamieji, skaičiai, atomai, struktūros be kintamųjų arba struktūros su atitinkamais vienodo pavadinimo kintamaisiais ir jie visiškai sutampa. Pavyzdžiai:
    5 == 5.
       - true
    temperatura(20) == temperatura(20).
       - true
    X == Y.
       - false.
    X == 2.
       - false.
    

Visais kitais atvejais griežtai lyginami operandai bus nelygūs.