Ce sunt operatorii in programare?
Invatarea programarii se poate dovedi o calatorie pe cat de faina si de interesanta, pe atat de complexa si provocatoare in ceea ce priveste intelegerea sa teoretica si aplicarea sa in practica. Precum o limba straina, intelegerea programarii porneste de la cateva notiuni de baza, obligatorii de stiut inainte de a ne avanta la lucruri mai complicate.
O astfel de notiune fundamentala din programare care ne ajuta sa scriem codul, indiferent de limbajul pe care l-am ales pentru a invata si exersa, o reprezinta operatorii.
Ce reprezinta operatorii in programare?
Propriu-zis, prin operatori in programare ne referim la anumite semne / simboluri care au o anumita semnificatie in contextul codului nostru si ne ajuta sa relationam intre 2 sau mai multe elemente din cod care se numesc in mod formal „argumente” sau „operanzi” (engl. operands).
Cu alte cuvinte, daca avem definite 2 elemente in cod, sa zicem 2 variabile sau o variabila si o constanta, cumva trebuie sa facem sa interactioneze una cu cealalta pentru o produce si returna un rezultat nou, altfel codul nostru ar fi unul static si in esenta fara utilitate practica.
Operatorii sunt de mai multe tipuri, dupa cum putem intui deja. In functie de contextul aplicat si de ceea ce vrem sa obtinem, valoarea operatorilor poate sa fie diferita si ne pot ajuta sa facem multiple lucruri intre elementele definite deja in cod. Ca sintaxa (mod de scriere) pot sa difere usor de la un limbaj de programare la altul, dar in principiu ei sunt aceeasi si semnificatia lor din perspectiva logicii nu e diferita.
Tipuri de operatori
In continuare vom vedea pe scurt care sunt principalele tipuri de operatori in programare, la modul universal valabil si care ne pot fi de folos in extrem de multe contexte.
1. Operatori aritmetici (Arithmetic operators)
O prima categorie de operatori extrem de intalnita in programare si in mai toate limbajele deopotriva este cea a operatorilor aritmetici. Acestia sunt semnele clasice din matematica care ne ajuta sa realizam operatiile de baza: „+” (pentru adunarea valorilor), „-” (pentru scadere), „*” (inmultire), „/” (impartire) si „%” (modulo – pentru a afla restul unei impartiri).
Acestia sunt operatori primari deoarece ii intalnim la baza oricarei aplicatii care coroboreaza mai multe valori si returneaza un rezultat pe baza lor. Daca avem de exemplu o platforma care vinde bilete, cu doua campuri distincte, „numarBileteRezervate” si „pretBilet”, cu ajutorul operatorului de inmultire putem afisa intr-un al treilea camp „pretTotal” ca rezultat al inmultirii primelor doua.
2. Operatori de comparatie (Comparison operators)
O a doua categorie foarte intalnita de operatori este cea legata de comparatia operanzilor din cadrul codului. Acestia sunt exact aceeasi operatori care se invata si la clasele primare la matematica atunci cand trebuia sa comparam doua numere si sa stabilim ce relatie este intre ele: mai mare (>), mai mic (<), egale (==), mai mare / mic sau egal (>=, <=) sau diferite unul de altul (!=).
Pe langa operatorul de egalitate normala „==” mai exista si „===”, operatorul de egalitate stricta. Acesta verifica ca 2 variabile de exemplu au si aceeasi valoare, dar sunt si de acelasi tip. De exemplu, daca avem variabila A = 3 (deci de tip integer), si variabila B =”3″ (de tip string), daca facem A===B, atunci acest operator ne va returna valoarea de tip boolean false, deoarece A si B au aceeasi valoare (sau continut mai bine spus), dar nu sunt de acelasi tip.
Acesti operatori sunt utili cand vrem sa stabilim anumite conditii initiale in codul nostru pentru a-i spori complexitatea si eficienta. De exemplu, revenind la exemplul cu platforma de vandut bilete la evenimente, putem avea un field numit „varsta”, si in functie de varsta oamenilor sa stabilim intervale diferite de pret la bilete.
Daca varsta <= 14 ani, atunci pretBilet = 10 lei. Daca varsta > 15 ani, atunci pretBilet = 20 lei. Sau daca student = true, atunci pretBilet = pretBilet * 3 / 4 (pentru a aplica o reducere de 25% la valoarea initiala).
3. Operatori de crestere si descrestere (Increment and decrement operators)
Destul de asemanatori cu operatorii aritmetici sunt si operatorii incrementali, care ne ajuta sa crestem sau sa descrestem in mod progresiv un element cu o anumita valoare data, in functie de anumite conditii ce le stabilim noi in cod.
Acestia sunt fie „++”, care ne ajuta in mod implicit sa crestem treptat valoarea initiala cu 1, sau „- -” daca vrem sa o scadem. De regula acest operator este asociat cu un alt element din programare, si anume For, care ne ajuta sa iteram un element pornind de la o valoare initiala si una maxim admisa.
In acest exemplu avem un For, in care variabila i porneste de la valoarea initiala 0, are dreptul sa creasca pana cand aceasta devine mai mica sau egala cu 10, iar i++ semnifica faptul ca aceasta creste de fiecare data cu 1 fata de valoarea precedenta.
4. Operatori logici (Logical operators)
Urmatoarea categorie foarte importanta de operatori care e obligatorie de stiut pentru a lega elementele deja create si pentru a inlantui in mod organic anumite conditii sunt operatorii logici. In aceasta lista se inscriu „&&” (echivalentul lui SI), „||” (echivalentul lui SAU) si „!” (echivalentul pentru NEGAT).
Acesti operatori sunt extrem de utili mai ales cand pentru a trece la urmatoarea etapa in executia unui cod sau a unui test automat, avem mai multe conditii care trebuie indeplinite simultan sau etapizat, in functie de care decidem logica pasului urmator.
De exemplu, putem avea doua conditii, „cerSenin” = true si „temperatura” >= 20 grade, si daca ambele sunt adevarate simultan, atunci „iesimAfara”. Aceste lucruri se pot scrie cu operatorul logic „&&”: if {cerSenin = true && temperatura >= 20 grade} atunci „iesimAfara” = true.
5. Operatori de atribuire a valorilor (Assignment operators)
Pornind tot de la operatorii aritmetici, dar putin mai avansati din perspectiva rolului lor sunt si operatorii de atribuire a valorilor. Acestia au rolul de a atribui (asigna, termenul provenit din engleza) o valoare existenta sau noua unei variabile sau constante din cadrul unei aplicatii software, sau dupa caz sa o modifice intr-un fel si apoi sa o asigneze.
Cel mai cunoscut si folosit operator este cel de atribuire simpla „=”, prin care acordam in mod direct o valoare unei variabile si atat. De exemplu pretBilet = 10 lei. A nu se confunda operatorul de atribuire „=” cu „==” care verifica egalitatea valorilor dintre 2 operanzi diferiti.
Pe langa acesta, mai exista si „+=” (care creste valoarea initiala cu X unitati si apoi o atribuie elementului respectiv), „-=” (acelasi lucru dar prin scadere), „*=” (pentru inmultire si atribuire), „/=” (impartire la un numar si apoi asignarea valorii) si „%=” (pentru a atribui ca valoare restul unei impartiri).
6. Operatori pe biti (Bitwise operators)
Ultima categorie principala de operatori pe care o vom aborda este cea a operatorilor pe biti, sau bitwise operators. Acestia sunt mult mai rar folositi si intalniti decat precedentele categorii, ca urmare a faptului ca se folosesc in contexte mult mai avansate si specifice ale programarii, si destul de rar atunci cand invatam bazele ei, insa merita retinuti pentru orice eventualitate.
Dupa cum reflecta si numele lor, acesti operatori sunt folositi pentru a realiza operatii cu biti la nivelul codului. Mai exact, acestia sunt folositi cand anumite valori initiale ale unor variabile sau constante sunt transformate in biti, si ulterior cu acesti biti sunt efectuate anumite operatii logice precum SI, SAU si NEGAT (AND, OR, NOT) etc.
Operatorii care realizeaza operatii intre biti ii regasim in special in programarea low-level, cea (mai) apropiata de componentele hardware ale sistemelor informatice. Exemple sugestive in acest sens ar putea fi sistemele embedded (embedded systems) sau fisierele pentru drivere ale componentelor de sistem care nu pot functiona singure (de exemplu un driver pentru partea audio).
Printre bitwise operators mai intalnim „&” (AND la nivel de biti), „|” (OR la nivel de biti), „~” (NOT / negat), sau semnele de mutare a bitilor spre stanga sau spre dreapta cu un anumit numar de pozitii „<<” si „>>”.
Concluzii
In incheiere, operatorii constituie fara echivoc un capitol esential din invatarea bazelor programarii, indiferent de limbajul cu care lucram sau de scopul pentru care invatam programare (pentru dezvoltare de aplicatii, testare automata etc.). Chiar daca nu par cei mai grei la prima vedere, operatorii nu trebuie neglijati deoarece ei leaga in mod logic si structural elementele din codul nostru si ii confera complexitate si sens.
Astfel, este extrem de important sa cunoastem operatorii pentru a putea intelege bazele oricarui cod scris de noi sau de altii, si pentru a dezvolta lucruri mai complexe si utile cu timpul.
Surse pe subiect
Resurse si informatii utile despre tipurile de operatori in programare gasesti pe Geekforgeeks, TechTarget si HackerEarth.