Documente Academic
Documente Profesional
Documente Cultură
Variabile
Un aspect fundamental pentru programele ce urmeaza a fi dezvoltate este utilizarea
variabilelor. O variabila poate fi privita ca o locatie de memorie folosita pentru stocarea unei
valori si este caracterizata prin:
nume: acesta este asociat adresei locatiei de memorie. Caracterele ce formeaza
numele pot fi : litere, cifre, respectiv caracterul _ (numit underline). Exista o serie de
restrictii in alegerea numelui: primul caracter trebuie sa fie o litera; cuvinte cheie de
genul : if, else, int , float etc. sunt rezervate si nu pot fi folosite ca nume de variabile.
Exemple de greseli in alegerea numelor:
2suma - incepe cu cifra
multiplu+comun contine caracterul + (rezervat pt operatorul de adunare)
while este cuvant rezervat (numele unei instructiuni)
divizor comun - contine spatiu
ATENTIE! (in principal pentru studentii obisnuiti cu limbajul Pascal) C este "case sensitive":
va lua in considerare diferentele dintre literele mari si cele mici folosite in cadrul numelor
identificatorilor.
Compilatorul face distinctie intre:
Mediaaritmetica
mediaAritmetica
MediaAritmetica
MEDIAARITMETICA
media_aritmetica
Se recomanda ca variabilelor sa li se asocieze nume sugestive pentru contextul/scopul in
care vor fi folosite.
valoare: informatia stocata
tip: determina multimea de valori pe care le poate lua variabila precum si operatiile
ce se pot aplica acestor valori. Interpretarea informatiei stocate este data de tipul
specificat.
Toate variabilele trebuie declarate inainte de a fi folosite. In cadrul unei declaratii se va
specifica numele si tipul variabilei. Nu este necesara declararea independenta a
variabilelor ce au acelasi tip, fiind suficienta specificarea unica a tipului si apoi a listei de
variabile (delimitate prin caracterul ',').
Exemple de declaratii:
int i;
/*am declarat o variabila de tip intreg ce are numele i */
char s,t,t23; /*am declarat trei variabile de tip caracter ce au numele s, t, respectiv t23 */
Observatii:
La declararea variabilelor nu se face initializarea implicita a acestora (compilatorul nu le da
automat valoarea 0), ci acestea vor avea valorile arbitrare care se afla in locatiile de
memorie pe care le-au primit in urma declararii. Exceptie fac variabilele globale declarate
in afara oricarei functii care sunt initializate implicit cu valoarea 0.
Volosirea unei variabile neinitializate (implicit sau explicit) in partea dreapta a unei expresii
trebuie evitata deoarece va duce la o functionare eronata, impredictibila a programului.
Tipuri de date
Tipuri de date intregi
Observatie importanta: semnul & (numit ampersant) aplicat unei variabile reprezinta
operatorul de referentiere si returneaza adresa zonei de memorie a acelei variabile.
La apelarea functiei scanf este obligatorie utilizarea adreselor variabilelor, nu a
numelor (valorilor) acestora. Functia scanf trebuie sa primeasca informatii despre
UNDE in memorie sa depoziteze valoarea pe care a citit-o de la intrare.
printf(%d,i) /*pentru afisarea valorii unei variabile intregi*/
printf(%c,l) /*pentru afisarea valorii unei variabile de tip caracter*/
Observatie: functia printf nu are nevoie de adresa variabilei ce va fi afisare, valoarea
acesteia fiind suficienta.
Tipul intreg implicit este int.
consultati
documentatia
ISO/IEC
9899.
Observatie: este bine sa verificati inainte de efectuarea unei impartiri daca impartitorul nu
are valoarea 0. Daca nu veti face asta si impartitorul are valoarea 0, programul se va bloca
sau va avea o comportare nedeterminista.
Nu comparati numerele reale direct cu operatorul ==. Intrucat precizam ca reprezentarea
lor nu este exacta, nu verificati niciodata daca a==b, ci daca |a-b|<epsilon, unde epsilon
este un numar real mic.
Intructiunea if
if (conditie) instructiune1; else instructiune2;
Functionare: daca valoarea de adevar a conditiei este adevarata (adica diferita de 0),
atunci se executa intructiune1, altfel se executa intructiune2.
Conditia e obligatoriu sa fie pusa intre paranteze rotunde.
Atat instructiune1, cat si intructiune2 pot sa lipseasca. Exemple:
if(conditite); /*este ok, dar utilitatea este redusa*/
if(conditie)intructiune1;
if(conditie);else intructiune2;
Daca instuctiune1 sau intructiune2 contin mai mult de o instructiune, atunci acestea vor fi
incadrate intre acolade:
if(conditie)
{
}
else
{
}
Observatie importanta: operatorul = semnifica atribuire si nu trebuie confundat cu
operatorul ==. Pentru verificarea egalitatii se foloseste operatorul ==, iar pentru verificarea
diferentei se foloseste operatorul != (diferit).
Folosind aceasta intructiune puteti face diverse validari ale datelor de intrare, puteti verifica
impartitorul unei impartiri, puteti compara valori de variabile etc.
Atentie! La imbricarea (cascadarea) if-urilor fiecare ramura else apartine de cel mai
apropiat if anterior ei. Exemplu:
if(a>2)
if(b<6)y=2;
else y=9;
Contrar modului in care au fost aliniate instructiunile, ramura else apartine de al doilea if,
nu de primul. Daca dorim sa apartina de primul if, atunci trebuie sa punem un else vid
celui de-al doilea if.
if(a>2)
if(b<6)y=2;else;
else y=9;
Aplicatii:
1. Scrieti un program ce citeste de la tastatura 3 numere intregi si afiseaza valoarea
celui mai mare numar citit (doar aceasta).
2. Sa se realizeze un program care citeste de la tastaura coeficientii a,b,c (float) ai
ecuatiei de gradul II , calculeaza si tipareste numarul si valorile solutiilor (toate cazurile inclusiv solutii complexe).
Informatii utile:
- pentru citirea unei valori float de la tastatura puteti folosi apeluri de forma
scanf("%f",&a);
- calculul radicalului de ordinul 2 se face prin apelul functiei sqrt definita in fisierul
"math.h". =>la inceputul programului va trebui inclusa si linia: #include<math.h>.
Tipul valorilor calculate de sqrt este double.
#include <math.h>
...
double d;
float f;
d=4.0;
f=(float)sqrt(d);
...
- sunt valabile constructii si expresii de tipul:
...
int a,b; a=5; b=7;
a>b?printf("a mai mare ca b\n"):printf("a mai mic sau egal cu b\n"); // se afiseaza textul "a
mai mare ca b" daca a>b, respectiv // "a mai mic sau egal cu b" in caz contrar.
...
3. Se citesc coordonatele a doua puncte din plan :P1(x1,y1) ; P2(x2,y2) ce determina un
dreptunghi (colturile opuse). Se citesc coordonatele inca unui punct din plan P(x,y). Sa se
afiseze daca acesta este interior sau exterior dreptunghiului.