Toggle menu
310,1 tis.
44
18
525,6 tis.
Hrvatska internetska enciklopedija
Toggle preferences menu
Toggle personal menu
Niste prijavljeni
Your IP address will be publicly visible if you make any edits.

Operator (programiranje)

Izvor: Hrvatska internetska enciklopedija
(Preusmjereno s Preopterećenje operatora)

U računalnom programiranju, operator je računalni konstrukt definiran unutar programskog jezika, koji se ponaša poput funkcije, ali se razlikuje sintaksom.

Operatori se razlikuju prema broju operanada koje primaju i prema tipu podatka koji vraćaju kao rezultat.

Unarni operatori

Unarni operatori primaju jedan operand. To su:

  • logički NE (NOT) - vrši logičku negaciju nad boolean varijablom
  • inkrement (++) - vrši operaciju uvećanja broja za jedan
  • dekrement (--) - vrši operaciju umanjenja broja za jedan
  • adresni operator (&) - vraća memorijsku adresu varijable

Binarni operatori

Binarni operatori primaju dva operanda. To su:

  • logički ILI (OR) - vraća istinu ako je ijedan operand istinit
  • logički I (AND) - vraća istinu ako su oba operanda istinita
  • operatori usporedbe (manje (ili jednako) od, veće (ili jednako) od, jednako, različito) - vraćaju boolean rezultat
  • aritmetički zbroj (+)
  • aritmetička razlika (-)
  • aritmetički umnožak (*)
  • aritmetički količnik (/)
  • aritmetički modulo (%) - vraća cjelobrojni ostatak pri dijeljenju
  • operator pridruživanja (=)
  • operator obnavljajućeg pridruživanja - omogućuje kraći zapis aritmetičkih operacija (a=a+5 -> a+=5)

Ternarni operatori

  • kondicionalni operator (ponekad ternarni operator) (?:) - operator predikatne logike (uvjet ? ako je istina : ako je laž)

Preopterećenje operatora

Neki objektno orijentirani programski jezici dopuštaju dodavanje funkcija klasama kako bi se definiralo ponašanje operatora u ne-standardnim uvjetima. Primjer je uporaba operatora + na tipu string u svrhe konkatenacije ('ab' + 'cd'='abcd'). Programski jezik C++ zadano dopušta uoprabu operatora + na stringu.

Kod niže pisan u C++-u definira klasu Kompleksni i razne preopterećene operatore:

class Kompleksni{
    public:
        double re, im; //kompleksni broj sadrži realni i imaginarni dio
    Kompleksni(){}
    Kompleksni(double x, double y) : re(x), im(y) {} //preopterećenje konstruktora
    Kompleksni operator +(double re); // preopterećenje: kompleksni + double (ali ne obrnuto)
};
//članska funkcija (deklarirana iznad) - dopušta kompleksni + double ALI NE obrnuto
Kompleksni Kompleksni::operator +(double re){
    return Kompleksni(this->re + re, im);
}

//preopterećenje: ne-članska funkcija - dopušta double + kompleksni
Kompleksni operator +(double re, Kompleksni Z){
    return Z + re; // već definirano članskom operatorskom funkcijom
}

// preopterećenje prefiks operatora ++ (++i)
Kompleksni& Kompleksni::operator ++(){
    ++re;
    ++im;
    return *this;
}
// preopterećenje sufiks operatora ++ (i++)
Kompleksni Kompleksni::operator ++(int){
    Kompleksni Pom = *this;
    re++;
    im++;
    return Pom;
}

// preopterećenje operatora za unos kompleksnog broja
istream& operator >>(istream& ulaz, Kompleksni& Z){
    ulaz >> Z.re >> Z.im;
    return ulaz;
}
// preopterećenje operatora za ispis kompleksnog broja
ostream& operator <<(ostream& izlaz, Kompleksni Z){
    izlaz << Z.re << " + " << Z.im << "i";
    return izlaz;
}

Izvori