Sunteți pe pagina 1din 27

Funcții, Expresii,

Operatori
PRIMELE PROGRAME ÎN LIMBAJUL C
Structura unui program
Orice program în limbajul C trebuie să fie compus din cel puțin o funcție, și anume funcția
main().
Structura unei funcții:
tip nume_functie(parametru1,parametru2…parametrun)
{

corp functie

}

Unde tip poate fi: - void (adică vid) sau


- un anumit tip de date (int, double etc.)
Structura unui program
La general vorbind un program în limbajul C începe cu includerea unor biblioteci de funcții
standard, pe care le folosim ulterior. Această includere se face cu ajutorul așa numitor directive
– o instructiune pentru procesor care se scrie doar pe o singura linie.
Exemplu: #include <stdio.h>
#include <conio.h>
#include “E:\Programe\Program1.c”

În cazul <…> - fișierul cu extensia .h este căutat în bibliotecă


Iar in cazul “…” - fișierul cu extensia .c este căutat în directorul specificat
Prin directiva #define si #undef putem defini și revoca o Constantă.

Exemplu: #define Pi 3.14


#undef Pi
Program1.c
Directve

….
tip nume_functie(par1…parn)
{
declaratii variabile/constante

apel functii corp functie
instructiuni

}
Funcții standard de introducere și afișare
Se cunosc urmatoarele funcții de intrare (introducere a datelor):
- getch() : citește un caracter din memorie
- getche() : citește un caracter din memorie cu ecou
- getchar() : citește un caracter de la tastatură
- gets() : citește un șir de caractere
- scanf() : introduce de la tastatură date formatate

Și funcții de ieșire (afișare a datelor):


- putch() : extrage din memorie un caracter
- putchar() : extrage un caracter
- puts() : extrage un șir de caractere
- printf() : extrage din memorie date formatate
Specificator de format
printf(“valoarea variabilei x=%d, y=%d”, x,y);
unde %d – este specificator de format
Se cunosc următorii specificatori de format in dependența de tipurile de date:
%d, %i – extrage o valoare int in baza 10
%o – extrage o valoare int in baza 8
%x – extrage o valoare int in baza 16
%s – extrage un șir de caractere
%f – extrage o valoare float
%e(E) – extrage în format științific 0.123e+3
%g(G) – extrage o valoare double
%u – unsigned
%ld sau %Ld – long int (valabil și pentru: i, o, x, f, e, g)
%hd – short int (d, o, x)
%p – pointer (adresă de memorie)

Exercițiu: 1. Să se afișeze în consolă toate cifrele, într-un rând separate printr-un spațiu și separat
câte una pe un rând.
Exercițiu 2: Fiecare să-și afișeze numele și prenumele sau pe ecran (consolă)
scanf(“%d”, &x);
unde %d – specificatorul de format
iar & - semnifică adresa de memorie a variabilei x
Expresii și operatori
O expresie (operație) în limbajul C este compusă din unul sau mai mulți operanzi (care pot fi
variabile, constante, funcții ș.a.) legați prin operatori.
Operatorii la rândul lor pot fi:
1. Unari – aplicând doar un operand (ex: operator incrementare)
2. Binari – aplicând 2 operanzi (ex: operatori aritmetici)
3. Ternari – aplicând 3 operanzi (ex: operator condiționat)
Operatori
Operatorii au și clasificarea în dependență de funcția pe care o îndeplinesc, scopul pe care il
poartă. Astfel deosebim operatori: aritmetici, relaţionali şi logici, operatori pentru prelucrare
biţi, precum şi câţiva operatori speciali pentru sarcini particulare.
Operatori aritmetici
+ reprezintă operatorul plus unar sau binar, în funcţie de context
- reprezintă operatorul minus unar sau binar, în funcţie de context
* reprezintă operatorul de înmulţire (binar)
/ reprezintă operatorul de împărţire (binar)
% reprezintă operatorul modulo (binar) – restul împărțirii a 2 numere întregi

Exercițiu: Să se calculeze valoarea expresiei:


(a / b) * b + a % b
Operatori relaționali
Operatori relationali:
1) Mai mare (>).
2) Mai mare sau egal (>=).
3) Mai mic (<).
4) Mai mic sau egal (<=).
5) Egal (==).
6) Diferit (!=).

Dacă expresia de relaţie e adevărată atunci valoarea ei este unu, în alt caz – 0.
Operatori logici
Negare (!)
Conjuncţie (&&) - SI
Disjuncţie (||) – SAU

expr1 && expr2 - e adevărată în cazul cînd ambele sunt adevărate


expr1||expr2 - e adevărată în cazul cînd măcar una din expresii e adevărată.
!expr1 - e adevărată dacă expr1 e falsă şi invers
Operatori logici pe biti
& AND (SI)
| OR (SAU)
^ exclusive OR (XOR)
~ complement faţă de unu (NOT)
>>  deplasare dreapta
<<  deplasare stânga
Exemplu:
x = 7; 00000111 7
x << 1; 0 0 0 0 1 1 1 0 14
x << 3; 0 1 1 1 0 0 0 0 112
x << 2; 1 1 0 0 0 0 0 0 192
x >> 1; 0 1 1 0 0 0 0 0 96
x >> 2; 0 0 0 1 1 0 0 0 24
Operatori de incrementare şi
decrementare
++ - incrementare
-- - decrementare

i++ sau ++i = i +1


i– sau –i = i-1

Exercițiu: să se calculeze:
1) s=y*x++
2) s=y*++x
3) s = m+++2, unde m=5
Operatorul de atribuire
“=“ – operatorul de atribuire

◦ suma = a + b + c;
◦ x = y = z = 0 este echivalentă cu (x=(y=(z=0)));

Operatorii de atribuire (asignare) sunt: = , += , -= , *= , /= , %= , <<= , >>= , &= , ^= , |=

Adică atribuirea sub forma compactă: var op = expresie


Operatorul sizeof
Operatorul sizeof returnează numărul de octeţi necesar memorării variabilei sau tipului datei
care este operandul său.

De exemplu, sizeof(char) va fi 1, sizeof(int) va fi 4 etc.

Exercițiu: includeți fișierul stddef.h - #include <stddef.h>


Și afișați în consolă dimensiunile tuturor tipurilor de date predefinite ale limbajului C.
Operatorul ternar ? (condiționat)
Expr1 ? Expr2 : Expr3

Se evaluează expresia Expr1. Dacă este adevărată, se evaluează Expr2, care devine valoarea întregii
expresii. Dacă Expr1 este falsă, se evaluează Expr3, iar valoarea acesteia devine valoarea întregii
expresii

Exemplu:
x = 14;
y = x > 7 ? 23 : 20;
rezultatul va fi y = 23
Operatorul virgulă
Operatorul virgulă se utilizează într-un şir în care se introduc mai multe expresii. Astfel,
instrucţiunea:
x = (y = 3, y+1),
are ca efect atribuirea valorii 4 variabilei x.
Operatorul de conversie explicită
(expresie cast)
Adesea se doreşte specificarea conversiei valorii unui operand spre un tip dat. Acest lucru este
posibil folosind o construcţie de forma: (tip) operand
Exemplu:
int b = 1;
double r, a = 4;

r= (double)b/a;
Conversii implicite
Există și conversii implicite, conversiile de la un tip inferior la altul superior care se fac automat:

int a = 1;
double z = 3.45;
r = z + a;
r – va fi de tipul double
Alţi operatori ai limbajului C
“ * ” este operator de dereferenţiere - se utilizează pentru a face acces la conţinutul unei zone de
memorie definită prin adresa ei de început.
“ & ” este operator de referenţiere - se aplică pentru a determina adresa de început a zonei de
memorie alocată unei date.

Operatorii „ . ” şi „ -> ” se utilizează pentru a se accesa componentele unei structuri.


Prioritatea operatorilor
Laborator 2
1. Sa se calculeze media aritmetica a 5 numere citite de la tastatura
2. Sa se determine minimul si maximul a 3 numere citite de la tastatura
Exerciții individuale
1. Sa se determine media aritmetica a 7 numere citite de la tastatura
2. Sa se determine minimul a 2 numere citite de la tastatura

S-ar putea să vă placă și