RSS

L5. Operatori. Expresii

29 Nov

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 SAU 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 => 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 &&.

 
6 Comments

Posted by on 29/11/2009 in C2_2 Limbajul C/C++

 

6 responses to “L5. Operatori. Expresii

  1. Alina

    03/11/2014 at 18:26

    si operatorii logici??? din rest e foarte bine explicat🙂

     
  2. mchelariu71

    07/11/2014 at 09:24

    Bineeee… am sa completez..

     
  3. mchelariu71

    07/11/2014 at 10:35

    Sper ca e ok petru tine. Oricum, multumesc pentru sustinere. Raman deschis la orice sugestii.

     
  4. bodega

    12/12/2014 at 12:08

    cel mai prost profesor de informatica

     
  5. mchelariu71

    12/12/2014 at 13:46

    dragule, stadionul e in alta parte!

     
  6. Raul

    12/05/2015 at 16:19

    Foarte fain, trebuie sa imi invat si eu pentru teza si mai caut si prin alte parti😀

     

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

 
%d bloggers like this: