Operator (programiranje)

Izvor: Hrvatska internetska enciklopedija
Prijeđi na navigaciju Prijeđi na pretraživanje

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: <syntaxhighlight lang="cpp"> 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;

} </syntaxhighlight>

Izvori