Sunteți pe pagina 1din 4

1.

EXPRESII

O expresie se compune din operanzi i operatori. n cea mai simpl


form, o expresie se compune dintr-un singur operand.
Evident, nu orice combinaie de operanzi i operatori va forma o
expresie.
O expresie are ntotdeauna o valoare.
Valoarea unei expresii reduse la un operand va fi chiar valoarea acelui
operand.
O valoare aparine ntotdeuna unui tip . De aceea i expresiile au un tip
i anume acesta este tipul valorilor lor.
Deci, putem spune c o expresie are ntotdeauna o valoare i un tip care
este tipul valorii sale.
De obicei, tipul unei expresii rmne acelai pe parcursul execuiei
aplicaiei care conine expresia respectiv. Totui, pot exista i expresii a cror
tip s difere pe parcursul execuiei aplicaiei care le conin.
La compilarea unei aplicaii se pot determina numai tipurile expresiilor
care nu se modific pe parcursul execuiei aplicaiei care le conin.
Pentru expresiile ale cror tipuri pot diferi pe parcursul execuiei
aplicaiilor care le conin, tipurile acestora se pot determina numai la execuia
aplicaiilor respective.
La nceputul capitolului ne vom opri puin asupra tipurilor limbajului
C#, apoi ne vom ocupa de operanzii expresiilor, iar n continuare vom trece n
revist operatorii care sunt destul de numeroi. Aa cum o s vedem n
continuare, acetia pot fi mprii n mai multe categorii.
Din matematic se tie c operatorilor li se atribuie anumite prioriti
care au importan la evaluarea expresiilor care conin mai muli operatori.
Prioritile impun ordinea de execuie a operatorilor din compunerea unei
expresii. De asemenea, exist i reguli de asociere a operatorilor de aceiai
prioritate, cnd acetia sunt ntlnii ntr-o aceiai expresie.
5

1.1. Despre tipuri


n limbajul C# se disting mai multe categorii de tipuri i anume:
- tipuri valoare;
- tipuri referin;
- tipuri pointeri.
Datele ale cror tipuri sunt tipuri valoare, memoreaz valori, aa cum le
spune i numele.
Datele ale cror tipuri sunt tipuri referin, pstreaz referine la diferite
date, cum ar fi obiecte, tablouri, funcii etc.
Pointerii sunt date care au ca valori adrese. Ei au fost introdui n
limbajul C i au o mare utilizare n limbajele C i C++. Au fost exclui din
limbajul Java, deoarece s-a considerat c ei sunt surse de erori n programare.
n limbajul C# ei sunt prezeni i pot fi utilizai ntr-o manier restrictiv.
Astfel, putem utiliza pointeri n C# numai n aa numite contexte unsafe
(nesigure). Contextele din C# sunt n general sigure (contexte safe), n sensul
c ele sunt verificabile la execuie.
Un context unsafe poate fi introdus n C# printr-o construcie de forma:
unsafe
{
...//aici se pot folosi date de tipuri pointeri
}

Un tip valoare poate fi convertit spre un tip referin i invers.


Tipurile valoare se pot mpri n:
- tip structurat (Struct type);
- tip enumerare (Enumeration type).
Tipurile structurate conin tipurile definite de utilizator folosind
construcia struct i tipurile predefinite numite i primitive.
Tipurile primitive pot fi i ele mprite n: tipuri numerice, tipul char
(pentru lucrul cu caractere) i tipul bool (tipul datelor logice).
Tipurile numerice conin tipurile integrale (Integral types) (pentru date
ntregi), tipurile flotante (Floating-point types) (pentru date flotante, adic
numere oarecare) i tipul decimal (pentru numere de pn la 28-29 cifre).
Tipurile primitive se precizeaz cu ajutorul unor cuvinte cheie care au
fost indicate n paragraful 1.2., din volumul 2.
n ordine alfabetic, acestea sunt:
bool, byte, char, decimal, double, float, int, long, sbyte, short,
uint, ulong, ushort.
6

Tipurile flotante sunt definite prin cuvintele cheie double i float, iar
tipul logic este definit prin cuvntul cheie bool.
Tipul decimal este definit prin cuvntul cheie decimal. Celelalte cuvinte
cheie definesc tipuri integrale (tipuri de date ce au valori ntregi).
Fiecrui tip primitiv i corespunde o clas n spaiul de nume System. De
obicei, clasa are acelai nume cu numele tipului dar prima liter a numelui
clasei este liter mare. Exist i cteva excepii pentru tipul bool, float, int, long
etc.
Mai jos se listeaz corespondena dintre tipurile primitive i clasele din
spaiul System care le corespund.
Tip definit printr-un cuvnt cheie
bool
byte
char
decimal
double
float
int
long
sbyte
short
uint
ulong
ushort

Clas din spaiul de nume System corespunztoare


Boolean
Byte
Char
Decimal
Double
Single
Int32
Int64
SByte
Int16
UInt32
UInt64
UInt16

Acest tabel indic faptul c putem utiliza numele claselor n locul


cuvintelor cheie ale tipurilor.
De exemplu, o declaraie de forma:
int x = 123456789;

poate fi scris i sub forma


System.Int32 x = 123456789;

sau dac este prezent directiva using System;, atunci putem scrie mai simplu:
Int32 x = 123456789;

S ne amintim c o declaraie de forma:


string s;

poate fi scris i sub forma


System.String s;

sau mai simplu:


String s;

V-192
Limbajul C# pentru nceptori
Expresii
Liviu Negrescu, Lavinia Negrescu
1. EXPRESII
1.1. Despre tipuri
1.2. Operanzi
Exerciii
1.3. Operatori
1.3.1. Operatorii aritmetici
Exerciii
1.3.2. Operatorul paranteze rotunde
1.3.3. Operatorul punct
1.3.4. Despre conversii
Exerciii
1.3.5. Operatorul de conversie explicit (Operatorul cast)
Exerciii
1.3.6. Operatorii relaionali
Exerciii
1.3.7. Operatorii de egalitate
Exerciii
1.3.8. Din nou despre operatorul paranteze rotunde
Exerciii
1.3.9. Operatorii logici condiionali i operatorul logic de negaie
Exerciii
1.3.10. Operatori logici
Exerciii
1.3.11. Operatorul de complementare fa de 1
Exerciii
1.3.12. Operatorii de deplasare
Exerciii
1.3.13. Operatorul paranteze ptrate sau de indexare
Exerciii
1.3.14. Operatorul dimensiune (sizeof)
Exerciii
1.3.15. Operatorul de determinare a tipului (typeof)
Exerciii
1.3.16. Operatorii pentru testarea (checked) i netestarea (uncheked) depirilor
la evaluarea expresiilor
Exerciii
1.3.17. Operatorii de atribuire
Exerciii