Sunteți pe pagina 1din 6

PCLP Laboratorul 3

Asist.drd.ing. Ana-Maria SUDUC

Laboratorul 3
Variabile. Operatori
1. Noţiuni teoretice

1.1. Variabile
O variabilă este o locaţie cunoscută de memorie utilizată pentru a stoca o valoare care poate fi
modificată prin program. Toate variabilele trebuie declarate înainte de a putea fi folosite. Forma generală
a unei declaraţii este:
tip lista_variabile;
unde, tip poate fi un tip de date recunoscut în C/C++ iar lista_variabile poate conţine unul sau mai
multe nume de identificator, separate prin virgule.
Exemple de declaraţii:
int i,j,l;
short int a;
unsigned int b;
double balanta, profit, pierdere;
Variabilele se declară în trei locuri de bază:
• în interiorul funcţiilor – variabilele locale
• în definiţia parametrilor funcţiilor – parametrii formali
• în exteriorul tuturor funcţiilor – variabilele globale
1.1.1. Variabilele locale
Variabilele locale sunt declarate în interiorul unor funcţii şi există numai atâta timp cât blocul de
cod în interiorul căruia au fost declarate este executat.
Exemplul 1:
void funct1(void)
{
int x;
x=10;
}
void funct2(void)
{
int x;
x=-199;
}
Variabila întreagă x este declarată de două ori, o dată în funct1() şi a doua oară în funct2().
Variabila x din funct1() nu are nici o legătură cu variabila x din funct2(), şi aceasta deoarece fiecare x
este cunoscut numai codului din acelaşi bloc în care s-a făcut declararea variabilei.
În C variabilele trebuie declarate la începutul blocului. În C++ această restricţie a fost înlăturată,
variabilele putând fi declarate oriunde în interiorul unui bloc.
1.1.2. Parametrii formali
Dacă o funcţie foloseşte argumente, trebuie să declare variabilele care vor accepta valorile
argumentelor. Aceste variabile sunt denumite parametri formali ai funcţiei. Acestea se comportă ca orice
variabile locale din interiorul funcţiei. Declaraţiile acestora survin după numele funcţiei şi în interiorul
unor paranteze.
Parametrii formali declaraţi trebuie să fie de acelaşi tip cu argumentele folosite la apelarea
funcţiei.
1.1.3. Variabilele globale
Spre deosebire de variabilele locale, variabilele globale sunt recunoscute de către toate
componentele programului şi pot fi folosite de orice fragment de cod. De asemenea, acestea îşi păstrează
valoarea în timpul execuţiei programului. Pot fi accesate de către orice expresie, indiferent de blocul de
cod în care se află conţinută aceasta.

1
PCLP Laboratorul 3
Asist.drd.ing. Ana-Maria SUDUC

Variabilele globale ar putea fi declarate oriunde în program înainte de prima lor utilizare, dar se
recomandă declararea lor la începutul programului.
Variabilele globale sunt utile atunci când un mare număr de funcţii din program folosesc aceleaşi
date.
1.2. Modificatori de acces
C defineşte doi modificatori de acces care controlează modul de accesare sau modificare a
variabilelor: const şi volatile. Aceştia trebuie să preceadă şi numele tipurilor de date la care se referă.
Variabilele de tip const nu pot fi modificate prin program dar li se poate atribui o valoare iniţială.
Exemplu:
const int a=10;
O variabila de tip const poate fi modificată de către ceva situat în afara programului.
Modificatorul volatile indică compilatorului că valoarea unei variabile poate fi modificată
utilizând căi pe care programul nu le specifică în mod explicit. De exemplu, adresa unei variabile globale
poate fi transmisă rutinei de ceas a sistemului de operare şi utilizată pentru a memora timpul real al
sistemului. În această situaţie, conţinutul variabilei este modificat chiar şi în absenţa unor declaraţii de
atribuire specifice.
1.3. Iniţializarea variabilelor
În majoritatea cazurilor, în C atribuirea unei valori unei anumite variabile se realizează în
momentul declarării acesteia, amplasând un semn egal între numele variabilei şi o constantă. Forma
generală a unei iniţializări este:
tip nume_variabila = constanta;
Exemple:
char ch = ’a’;
int primul = 0;
float balanta = 123.23;
bool b = true;
1.4. Operatori
C/C++ defineşte patru clase de operatori: aritmetici, relaţionali, logici şi pe biţi. În plus, C++ mai
dispune de anumiţi operatori speciali pentru anumite operaţii.
1.4.1. Operatori aritmetici
În tabelul următor sunt prezentaţi operatorii aritmetici ai limbajului C:
Operator Acţiune
= Atribuire
- Scădere, de asemenea şi minus unar
+ Adunare
* Înmulţire
/ Împărţire
% Modulo (restul împărţirii)
-- Decrementare
++ Incrementare
Ordinea priorităţii operatorilor aritmetici:
Cel mai prioritar ++ --
- (minus unar)
*/%
Cel mai puţin prioritar +-
Operatorii de pe acelaşi nivel ierarhic sunt evaluaţi de către compilator de la stânga la dreapta. Pot
fi folosite parantezele pentru a modifica ordinea evaluării.
1.4.2. Operatori relaţionali şi logici
În denumirea de operator relaţional, “relaţional” se referă la relaţiile care se pot stabili între
diverse valori. În denumirea de operator logic, “logic” se referă la modurile în care se pot lega aceste
relaţii existente. De obicei operatorii relaţionali sunt folosiţi cu cei logici.

2
PCLP Laboratorul 3
Asist.drd.ing. Ana-Maria SUDUC

Operatori relaţionali
Operator Acţiune
> Mai mare decât
>= Mai mare sau egal
< Mai mic decât
<= Mai mic sau egal
== Egal
!= Diferit

Operatori logici
Operator Acţiune
&& SI
¦¦ SAU
! NU
Precedenţa relativă a operatorilor relaţionali şi logici:
Cel mai prioritar !
> >= < <=
= = !=
&&
Cel mai puţin prioritar ¦¦
Se pot folosi parantezele pentru a modifica ordinea naturală de evaluare într-o expresie relaţională
şi/sau logică.
Exemplu:
!0 && 0 ¦¦ 0 este falsă
!(0 && 0) ¦¦ 0 este adevărată
Care credeţi ca va fi rezultatul următorului fragment de program?
int x;
x=100;
cout<< x>10;
1.4.3. Operatori pe biţi
Operaţiile pe biţi includ testarea, amplasarea sau deplasarea biţilor dintr-un octet sau dintr-un
cuvânt, ceea ce corespunde tipurilor de date standard char şi int din C/C++. Operaţiile pe biţi nu pot fi
efectuate cu tipurile de date float, double, long double, void sau alte tipuri mai complexe.
Operaţiile pe biţi îşi găsesc aplicabilitate mai ales în programele de interfaţă cu echipamentele,
cum ar fi programe de modem, rutine de fişiere de pe disc şi rutine de imprimantă.
Operand Actiune
& SI
| SAU
^ SAU exclusiv
~ Complement fata de 1
>> Deplasare dreapta
<< Deplasare stânga
2. Aplicaţii
2.1. Lansaţi în execuţie aplicaţia Visual C++ 2010 Express Edition:
a) Din meniul Start-> Programs-> Microsoft Visual C++ 2010 Express, executaţi clic pe opţiunea
Microsoft Visual C++ 2010 Express.
2.2. Creaţi un nou proiect, Proiect1 şi un nou fişier File1.cpp:
b) Din meniul File->New, alegeţi opţiunea Project;
c) În fereastra New Project selectaţi opţiunea Win32 şi verificaţi să fie selectat Win32 Console
Application;
d) În câmpul Name introduceţi Proiect1 şi apăsaţi OK;
e) În fereastra deschisă apăsaţi Next şi apoi selectaţi opţiunea Empty Project şi apăsaţi Finish;

3
PCLP Laboratorul 3
Asist.drd.ing. Ana-Maria SUDUC

f) În secţiunea Solution Explorer executaţi clic dreapta pe directorul Source File şi alegeţi
opţiunea New-> Item;
g) În fereastra Add New Item selectaţi categoria Code şi verificaţi să fie selectată opţiunea C++
File (.cpp);
h) În câmpul Name tastaţi numele File1 şi apăsaţi Add.
2.3. În fişierul File1.cpp introduceţi şi testaţi următorul program:
#include <iostream>
using namespace std;
void main ()
{
int a, b; // a=?, b=?
a = 4; // a=4, b=?
b = 8; // a=4, b=8
a = b; // a=8, b=8
b = 16; // a=8, b=16
cout << "a:";
cout << a << endl;
cout << "b:";
cout << b << endl;
}
a) Tastaţi programul dat, respectând liniile de cod;
b) Compilaţi programul executând clic dreapta pe numele fişierului din secţiunea Solution
Explorer şi executând clic pe opţiunea Compile;
c) Corectaţi eventualele erori semnalate în secţiunea Output conform indicaţiilor din laboratorul
anterior;
d) După rezolvarea eventualelor erori, rulaţi programul selectând, din meniul Debug, opţiunea
Start Without Debugging;
2.4. Creaţi un nou proiect, Proiect2, şi un nou fişier File2.cpp. Introduceţi în fişierul creat şi testaţi
următorul program:
#include <iostream>
using namespace std;
void main ()
{
int x=0;
int a,b,j,k;
a=10;
b=9;
j=x>1;
k=x<=10;
cout<<"x= "<<x<<"\nj= "<<j<<"\nk= "<<k;
cout<<"\na= "<<a<<"\nb= "<<b;
cout<<"\na egal cu b: "<<(a==b);
cout<<"\na diferit de b: "<<(a!=b)<<endl;
}
a) Tastaţi programul dat;
b) Compilaţi şi rulaţi conform indicaţiilor de mai sus.
2.5. Scrieţi un program care să citească de la tastatură valorile variabilelor întregi a, b şi c şi să
calculeze şi să afişeze valoarea expresiei: !(a=b)||(a!=c)&&b.
a) Declaraţi variabilele de tip întreg a, b şi c;
b) Scrieţi instrucţiunile de citire (indicaţie: cin) de la tastatură a valorilor celor trei variabile;
c) Scrieţi instrucţiunea de calculare şi afişare a expresiei.
2.6. Creaţi un nou proiect, Proiect3, şi un nou fişier File3.cpp. Introduceţi în fişierul creat şi testaţi
următorul program:
#include <iostream>
using namespace std;

4
PCLP Laboratorul 3
Asist.drd.ing. Ana-Maria SUDUC

void main ()
{
int a, b=3;
a = b;
a+=2; // echivalent cu a=a+2
cout << a <<endl;
}
2.7. Realizaţi un program care citeşte de la tastatură valorile variabilelor reale a, b şi c şi calculează
expresiile:
a-=5;
b/=4;
c*=a+c;
Afişaţi valoarea expresiei ++a-b+c--
2.8. Modificaţi programul anterior pentru a calcula şi afişa valorile expresiilor:
a=b++;
a=++b;
!a>=b;
(7>a) && (b>8);
(7>a) || (b>8);
a=(b=5, b+3);
a=5+b%2;
a) Folosiţi cout pentru a afişa valorile expresiilor (acestea sunt plasate între paranteze).
2.9. Creaţi un nou proiect, Proiect4, şi un nou fişier File4.cpp. Introduceţi în fişierul creat şi testaţi
următorul exemplu de folosire a operatorului de cast int:
#include <iostream>
using namespace std;
void main ()
{
int a;
float b=3.14;
a = (int) b;
cout << a <<endl;
cout << b <<endl;
}
2.10. Realizaţi un program care să creeze o variabilă a de tip întreg fără semn, b de tip real şi c
de tip caracter. Programul trebuie să citească de la tastatură valorile celor trei variabile şi să le
afişeze.
2.11. Creaţi un nou proiect, Proiect5, şi un nou fişier File5.cpp. Introduceţi în fişierul creat şi
testaţi următorul exemplu de declarare şi de folosire a unei variabile de tip bool:
#include <iostream>
using namespace std;
void main(void)
{
int a=7,b=5;
bool r=true;
cout<<r<<endl;
r=a==b;
cout<<r<<endl;
}
2.12. Creaţi un nou proiect, Proiect6, şi un nou fişier File6.cpp. Introduceţi în fişierul creat şi
testaţi următorul program ce include cele trei tipuri de variabile: locale, globale şi parametri
formali:
#include <iostream>
using namespace std;
int suma(int a, int b);
int s; //s este variabila globala
void main()

5
PCLP Laboratorul 3
Asist.drd.ing. Ana-Maria SUDUC

{
int x, y; //x si y sunt variabile locale
cout<<"x=";
cin>>x;
cout<<"y=";
cin>>y;
suma(x,y);
cout<<"Suma celor doua numere este "<<s<<endl;
}
int suma (int a, int b) //a si b sunt parametri formali
{
s=a+b;
return s;
}

2.13. Intensitatea curentului ce străbate un circuit simplu care cuprinde un rezistor cu rezistenţa
de 9 Ωşi o sursă cu rezistenţa interioară deΩ 1este de 140 mA. Realizaţi un program care
calculează şi afişează a) tensiunea la bornele circuitului (U=I*R), b) tensiunea interioară (u=I*r),
c) tensiunea electromotoare (E=U+u).
2.14. Modificaţi programul creat anterior astfel încât valorile pentru rezistenţa rezistorului,
rezistenţa interioară şi intensitatea curentului să fie citite de la tastatură.