3. Constante
constante simbolice
#DEFINE NUME
TEXT_CE_INLOCUIESTE_NUMELE
- se inlocuieste ad-literam NUME in program cu
textul de dupa
#DEFINE TRUE 1
#DEFINE FALSE 0
conventie litere mari
4. Constante
12, 0; asimilate int
12345678900, 12L asimilate long
x, n char
sir de caractere, char* (string)
123u unsigned
12.5, 1.5e-2 double
12.4F - float
5. Declaratii
toate variabilele trebuie declarate inainte de utilizare
declaratia contine tipul si una sau mai multe variabile
de acelasi tip ex: int x,y,z;
se poate efectua initializare la declarare
ex: char sir*30+=un sir; int x=4;
const poate specifica faptul ca o variabila nu va fi
schimbata
ex: const x=5;
o variabila neinitializata va avea o valoare aleatoare
6. Expresie
Expresie primara = variabila sau constanta sau sir de
caractere sau (expresie)
ex:
x sau 5 sau sir de caractere sau (x+5)
expresie = expresii primare carora li se aplica operatori
ex:
x+5
5%2
(x+5)-(x-5)
http://www.csci.csusb.edu/dick/samples/c.syntax.html
#string_literal
7. Atribuire
variabila = expresie;
se evalueaza expresia si valoarea acesteia
devine noua valoare a variabilei
x= y; //atribuie variabilei x valoarea lui y
Varianta din Pascal x:=y;
8. Tipul enumerare
defineste un set de constante numite de tip
intreg
sintaxa: enum nume_tip {
identificator,
(sau) identificator=valoare
}
ex:
enum bool {false,true};
enum bool a; //declara un element a de tip bool
11. Bloc de instructiuni
bloc de instructiuni = mai multe instructiuni grupate
intre { }
bloc de instructiuni este echivalent cu o singura
instructiune
nu se pune ; dupa }
exemplu:
int main()
{ //inceputul blocului de instructiuni
printf(hello worldn);
return 0;
} //sfarsitul blocului de instructiuni
12. Decizie
if (expresie1)
instructiune1
else
instructiune2
else este optional
instructiune1 se executa
daca expresie1 este
evaluata la o valoare
diferita de 0
instructiune2 se executa
daca expresie1 este
evaluata la 0
13. Decizie (2)
A programmer is heading out to the grocery
store, so his wife tells him "get a gallon of
milk. If they have eggs, get a dozen." He
returns with 12 gallons of milk.
14. Decizie (3) if else if
structura folosita cand se pot lua mai multe
decizii diferite in functie de valoarea expresiei
if (delta<0)
printf(ecuatia nu are radacini reale);
else if (delta==0)
printf (ecuatia are 1 radacina reala egala cu
%f, );
else //cazul default acopera toate celelalte p
printf(ecuatia are 2 radacini reale egale cu %f
si %f, );
15. Operatori aritmetici
+,-,*,/,%
/ => impartire intreaga (returneaza catul) daca
operanzii sunt intregi
/ => impartire daca macar unul dintre operanzi
este real
% - restul impartirii
/ intreaga si % nu au rezultate bine definite in
standard pentru operanzi negativi
17. Operatori relationali
operatori relationali: >, <, >=,<=
operatori egalitate: ==, !=
observatie:
x==0 verifica daca x are valoarea 0 si intoarce 1
daca acest lucru se intampla
x=0 atribuie lui x valoarea 0 si intoarce aceasta
valoare
18. Operatori logici
&& - si
|| - sau
! not (operator unar)
e1
e2
e1&&e2
e1||e2
0
0
0
0
0
1 (!=0)
0
1
1 (!=0)
0
0
1
1 (!=0)
1 (!=0)
1
1
Observatie
prin e1=1 intelegem e1 diferit de 0
19. Operatorul ternar
Conditie?valoare intoarsa in caz true: valoare
rezultata in caz false
c?x:y
Ex:
a%2?impar:par
x>0?strict pozitiv:negativ sau 0
echivalent cu
if(c)
result=x;
else
result=y ;
20. Exemplu operatori logici + operator
ternar
"Are you going to sit and type in front of that
thing all day or are you going out with me?" -programmer's girlfriend. "Yes" -- programmer
21. Operatori pe biti
pot fi aplicati doar pe variabilele de tip
intreg(char, short, int, long)
& - and pe biti
| - sau pe biti
^ - xor
<< - shift stanga (inmultire cu 2)
>> - shift dreapta (impartire intreaga la 2)
23. Operatori unari
- => -x;
incrementare/decrementare
i++; i--;
i++ vs ++i
int a, b=3;
a=b++;
=>a=3;
int a, b=3
a=++b;
=>a=4
24. Precedenta operatorilor
tabelul din Kernighan&Ritchie p. 50
a op b op c = (a op b) op c daca
op are asociativitate stanga
a op b op c = a op (b op c) daca
op are asociativitate dreapta
25. Instruciuni repetitive for (;;)
for( [initializare];[conditie continuare];[actualizari])
instructiune
initializare expresie care se executa o singura data inainte
de a se executa instructiunea
conditie continuare este evaluata inainte de fiecare
iteratie
daca are valoarea true (diferit de 0) se executa instructiunea
daca lipseste conditia se considera ca este adevarata
daca are valoarea 0 se incheie iteratia, nu se mai executa
instructiunea si se trece la instructiunea urmatoare
instructiune se executa daca se evalueaza conditie
continuare la true
actualizari expresie care se executa dupa instructiune.
26. for - exemplu
A programmer heads out to the store. His wife
says "while you're out, get some milk.
He never came home.
important sa ne asiguram ca se ajunge sa se
iasa din for
27. Instructiuni repetitive while
while (expresie) instructiune
se evalueaza expresie
daca este false nu se executa instructiunea
daca este true
se executa instructiunea si se reia procesul
28. exemple while
ex1:
int i=1;
while (i>5) printf(%d,i); //nu se executa
niciodata printf
ex2:
int i=3;
while (i>0){ printf(%dn,i); i--;}
ce afiseaza?
29. instructiuni repetitive do while
do instructiune while (expresie);
singurul tip de instructiune repetitiva dupa
care se pune ;
expresia este evaluata dupa ce se executa
instructiunea (test final)