Scrigroup - Documente si articole

Username / Parola inexistente      

Home Documente Upload Resurse Alte limbi doc  
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Operatori

c



+ Font mai mare | - Font mai mic



Operatori

Operatorii constituie unul din conceptele cele mai importante si mai interesante care stau la baza unui limbaj de programare. Limbajul C este vestit pentru marea varietate de operatori pe care-i pune la dispozitia programatorului rezultand si o diversitate de expresii ce se pot forma pe baza acestora. Dupa cum se stie, o expresie este formata din variabile, constante, functii si operatori. In acest paragraf voi aminti cateva din categoriile de operatori ai limbajului C:



Operatorii aritmetici:

adunare, - scadere, * produs, / impartire, % - restul impartirii intregi

, -- incrementare si decrementare

Operatori relationali:

< , >

egal

<= mai mic sau egal

>= mai mare sau egal

diferit

Operatori logici:

&& - si logic

- sau logic

- negatie logica

Operatorii logici si relationali sunt implicati in formarea expresiilor cu valoare logica. Spre exemplu:

a<2, 7/5+2<s-1, (X>-3) &&(x<3), !(a==b)

sunt expresii cu valoare logica.

Operatori de atribuire.

In sectiunea precedenta am amintit, vorbind despre reprezentarea algoritmilor prin scheme logice, de operatia de atribuire. In limbajul C se considera ca atribuirea este un operator. Atribuirea are urmatoarea sintaxa:

variabila = expresie;

Modul de functionare este urmatorul:

se evalueaza expresia;

valoarea obtinuta este stocata in zona de memorie a variabilei, realizandu-se eventuale conversii de tip.

valoarea rezultata in urma atribuirii este valoarea atribuita variabilei.

Observatie: Atribuirea fiind un operator, se considera ca operanzii sunt variabila din partea stanga, respectiv expresia din partea dreapta. Orice expresie trebuie sa aiba, in urma evaluarii sale, o valoare (un rezultat). Valoarea expresiei de atribuire este valoarea obtinuta prin evaluarea expresiei din partea dreapta a atribuirii.

Daca valoarea obtinuta prin evaluarea expresiei din dreapta atribuirii este de alt tip decat tipul variabilei din stanga atunci se incearca conversia tipului valorii la tipul variabilei. Nu intotdeauna conversia este posibila, caz in care se va afisa un mesaj de eroare in urma compilarii.

Exemplul 1 : Fie urmatoarea secventa de program:

void main(void)

Observatie: Executand programul de mai sus se vor obtine valori diferite pentru variabilele a si c, desi expresia care apare in dreapta ambelor atribuiri este aceeasi. Pentru a se obtine valoarea 3, iar pentru c se obtine 3,75. Explicatia sta in modul in care se realizeaza conversiile de tip in cadrul atribuirilor. Valoarea expresiei 3./2.+9./4. este 3,75 dar variabilei a i se va atribui partea intreaga a acestei valori, adica 3. Variabila c este de tip float (numar real), deci nu va mai fi nevoie de conversia rezultatului evaluarii expresiei la tipul variabilei.

Exemplul 2:

void main(void)

Observatie: Executand acest program se va afisa valoarea 2 si nu valoarea 2,5 asa cum ar fi fost de asteptat. Explicatia este urmatoarea: operatorul / realizeaza, atunci cand operanzii sunt intregi, impartirea intreaga, deci vom obtine catul impartirii intregi dintre 5 si 2. Exista doua modalitati de rezolvare a problemei: fie inlocuim expresia cu 5./2. (5.=5.0) fie utilizam operatorul de conversie explicita ( ). Acest nou operator ( numit cast), se utilizeaza astfel



( tip_de_date) expresie;

Semnificatia este urmatoarea: Se cere convertirea valorii rezultate din evaluarea expresiei la o valoare de tipul specificat intre paranteze. In exemplul de mai sus vom inlocui atribuirea cu:

a=(float) 5/2;

(rezultatul expresiei va fi de tip float, deci variabilei a i se va atribui valoarea 2.5).

Exercitiu: Fie urmatorul program, care calculeaza media aritmetica a trei numere a,b,c , primele doua introduse de la tastatura.:

void main(void)

Executati acest program si identificati greselile. Corectati greselile gasite.

operatori de atribuire compusa:

+=, -=, *=, /=, %=

Operatorii de atribuire compusa au fost introdusi pentru a fi utilizati in locul atribuirilor de tipul:

v=v+expresie;

v=v-expresie;

v=v*expresie; etc.

unde:

v - variabila

expresie-orice expresie corecta in limbajul C

In locul acestor expresii se vor folosi:

v+=expresie;

v -= expresie; etc.

Folosirea operatorilor de atribuire compusa sporeste lizibilitatea programului si viteza de executie. Daca atribuirea este de forma:

v=v+1;

sau

v=v-1;

se pot utiliza operatorii de incrementare si decrementare ++ si --. Expresiile de mai sus se vor putea scrie:

v++;

respectiv

v--;

Exemplul 3: Se da urmatorul program:

void main(void)

Observatie: Cand apar expresii de tipul :

++variabila

sau

--variabila;

spunem ca se realizeaza o preincrementare, respectiv predecrementare. In cazul preincrementarii, variabila va primi ca valoare 1+valoarea initiala. Daca preincrementarea apare intr-o expresie se realizeaza intai aceasta operatie si abia apoi celelalte operatii care mai apar in expresie (preincrementarea are prioritate mai mare). In atribuirea a = ++I se realizeaza intai preincrementarea, in urma careia i va avea valoarea 4, si abia apoi se realizeaza atribuirea (a va avea valoarea 4).

In expresia b = a - se realizeaza o postdecrementare, adica se modifica valoarea variabilei a doar dupa ce s-au efectuat celelalte operatii din expresie. In cazul nostru, b va primi valoarea lui a (4, in momentul acela) si abia apoi se va micsora valoarea lui a cu o unitate.

Exercitiu: Executati programul de mai sus si urmariti rezultatele care se obtin.

Mai exista operatori de atribuire compusa, folosindu-se operatorii logici ce actioneaza la nivel de bit, dar despre acestia vom vorbi intr-o sectiune viitoare. Tot atunci vom discuta si despre atribuirea multipla.





Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 758
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved