Operatori. Expresii

Valorile variabilelor interactioneaza intre ele prin operatii. Simbolurile prin care reprezentam aceste operatii se numesc operatori. Combinatiile care apar in urma folosirii operatorilor si variabilelor/constantelor se numesc expresii.

Expresii

O expresie poate fi:

  • o constanta/variabila
  • o combinatie de tipul operator expresie (cazul operatorilor unari: – a)
  • o combinatie de tipul expresie operator expresie (cazul operatorilor binari: a+b )

Operatori

Operatorii folositi in C/C++ sunt:

  • operatori aritmetici: +,-,*, /, %
    • A/B reprezinta catul impartirii lui A la B
    • A%B reprezinta restul impartirii lui A la B
      • A%10 reprezinta ultima cifra a lui A
      • A%2 va avea valoarea zero daca A este par si 1 daca A este impar
  • operatori relationali: <, <=, ==, !=, >=, >
    • majoritatea operatorilor relationali sunt intuitiv identici cu cei folositi in matematica; excepti fac == si !=
    • expr1 == expr2 verifica daca valoarea expresiei din stanga este aceeasi cu valoarea din dreapta
    • analog, expr1 != expr2 verifica daca valoarea expresiei din stanga este diferita de valoarea din dreapta
    • in toate cazurile raspunsul la intrebari (ex: A este mai mic decat B ) poate fi doar DA sau NU, adica ADEVARAT sau FALS; aceste raspunsuri se numesc valori logice (valori de adevar)
  • operatori logici: si logic( && ) , sau logic ( | | ), negare ( ! )
    • evident raspunsurile la operatorii logici sunt tot valori logice (Adevarat sau Fals)
    • operatorul logic SI ( && )
      • Exemplul Alinei: Imi plac baietii atletici SI glumeti. Aceasta propozitie poate fi scrisa ca A && B (A =Imi plac baietii atletici si B = Imi plac baietii glumeti)
      • posibilitatile care apar sunt:
        • neatletic, posac=> nu imi place ; raspuns NU (FALS)
        • neatletic, glumet => nu imi place ; raspuns NU (FALS)
        • atletic, posac => nu imi place; raspuns NU (FALS)
        • atletic, glumet => imi place; raspuns DA (ADEVARAT)
      • observam ca raspunsul este DA (ADEVARAT) numai in cazul cand ambele proprietati sa indeplinesc ( si atletic si glumet); daca macar o proprietate nu se indeplineste raspunsul este NU (FALS)
    • operatorul logic SAU ( || )
      • Pentru ca Alina nu a gasit ce cauta, a schimbat regula. Exemplul Alinei: Imi plac baietii atletici SAUglumeti. Aceasta propozitie poate fi scrisa ca A || B (A =Imi plac baietii atletici si B = Imi plac baietii glumeti)
      • posibilitatile care apar sunt:
        • neatletic, posac=> nu imi place ; raspuns NU (FALS)
        • neatletic, glumet => imi place; raspuns DA (ADEVARAT)
        • atletic, posac => imi place; raspuns DA (ADEVARAT)
        • atletic, glumet => imi place; raspuns DA (ADEVARAT)
      • observam ca raspunsul este DA (ADEVARAT) daca macar una din proprietati este adevarata; daca nici una dintre proprietati nu se indeplineste raspunsul este NU (FALS)
    • operatorul logic de negare ( ! )
      • l-am folosit deja pentru != (ne-egalitate)
      • Exemplul Alinei: Nu iti place?; Aceasta propozitie poate fi scrisa ca !A.
      • posibilitatile care apar sunt:
        • Alinei ii place: ! (Adevarat) => FALS
        • Alinei nu ii place: ! (Fals) => ADEVARAT

Exemple:

  • Cum scriem A apartine intervalului (- infinit, 7)
    • Raspuns: A<7
  • Cum scriem A apartine intervalului [3, infinit)
    • Raspuns: A>=3
  • Cum scriem A apartine intervalului  [3, 7)
    • Raspuns: (A>=3) && (A<7)
  • Cum scriem ca A nu apartine intervalului [3, 7)
    • Raspuns 1: ! ( (A>=3) && (A<7) )
    • Raspuns 2: valoarea lui A trebuie sa fie inainte de 3 SAU dupa 7=> A<3 || A>=7

Din acest ultim exemplu observam ca raspunsurile sunt echivalente (pentru acelasi A, indiferent de valoarea lui, obtinem acelasi raspuns). ! ( (A>=3) && (A<7) ) echivalent cu A<3 || A>=7.

Echivalentele de acest tip au fost studiate de matematicianul De Morgan, care a spus ca:

  • ! (A && B) = !A || !B
  • ! (A || B) = !A && !B

Prioritatea operatorilor

Spre deosebire de matematica, in informatica, pentru scrierea expresiilor se folosesc doar paranteze rotunde. Pentru a evita folosirea excesiva a parantezelor rotunde trebuie sa stiti prioritatea operatorilor (ordinea operatiilor):

In ordinea scaderii importantei, operatorii sunt:

  • ! (negare)
  • *, /, %
  • +, –
  • <, <=, >=, >
  • ==, !=
  • &&
  • ||

Exemplu: la expresia ! (A || B) = (!A) && (!B) nu sunt necesare parantezele din partea a 2-a deoarece oricum operatorul de negare se activeaza mai inainte de operatorul &&.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s