Instructiunile limbajului C++
12In urmatorul articol voi prezenta principalele instructiuni ale limbajului de programare C++. Articolul cuprinde exemple, exercitii si indicatii, toate acestea spre a le face mai usor de invatat pentru incepatori.
- Ce este o instructiune ?
O instructiune este o serie de comenzi date de catre programator calculatorului pentru a fi executate.
- Instructiunea de atribuire
Forma generala:
variabila=valoare;
Unde :
variabila este numele variabilei utilizate
valoare este valoarea luata de acea variabila
Exemplu:
a=5;
Variabilei a i s-a atribuit valoarea 5 .
- Instructiunea de incrementare/decremantare
A incrementa inseamna a adauga o valoare unei variabile, adica a mari valoarea initiala. A decrementa inseamna total invers, a o micsora.
O forma simplista este :
i=i+1;
iar una mai „sofisticata” este:
i++ ;
sau ++i;
Efectul operatorilor unari este acelasi,insa momentul difera. ++i intai incrementeaza variabila si dupa face operatiile cu valoarea incrementate pe cand i++ face operatiile cu valoarea neincrementata si abia apoi o incrementeaza.
Pentru a decrementa folosim — .
i – – ;
sau – – i;
- Instructiunea compusa
Forma generala:
{
instructiune 1;
instructiune 2;
…..
instructiune n;}
Utilizam aceasta instructiune cand avem de efectuat mai multe „operatii” , cauze ale unei anumite instructiuni (de obicei de decizie sau while-do etc. ) .
- Instructiunea If
Aceasta instructiune este o instructiune de decizie.
Forma generala:
if (c0nditie) insctructiune ;
Putem citi acest lucru astfel: daca este indeplinita conditia atunci executa instructiune.
Instructiunea if cuprinde si o ramura else, optionala.
Forma generala:
if (conditite) instructiune 1 ;
else instructiune 2;
Daca ( , ) conditia este adevarata atunci executa instructiune 1, altfel executa instructiune 2.
Exemplu
if (5>3) cout<<„adevarat ! „;
else cout<<„fals”;
Daca 5 > 3 atunci scriem „adevarat !” , altfel scriem „fals” .
Exemplu:
a=7;
b=4;
c=2;if (a>b+c) cout<<„a este mai mare decat b+c”;
else cout<<„a nu este mai mare decat b+c”;
Am atribuit valori variabilelor a,b si c. Daca a>b+c atunci afisam „a este mai mare decat b+c”, altfel afisam „a nu este mai mare decat b+c”;
If-uri imbricate:
Daca vrem sa verificam o conditie pe mai multe ramuri putem utiliza instructiuneile if imbricate, care nu sunt altceva decat niste instructiunui imbinate.
Exemplu:
if (a>b) a=b;
else if (b>a) b=1;
else if (a==b) cout<<„sunt egale”;
Uneori aceasta metoda este anevoioasa, pentru a verifica mai multe cazuri putem folosi instructiuncea switch, care va fi prezenata imediat.
- Instructiunea switch
Aceasta instructiune este corespondenta instructiunii case din Pascal.
Forma generala:
switch (variabila)
{
case valoare 1: instructiune 1;
case valoare 2 : instructiune 2;
case valoare n: instructiune n;
default: instructiune default;
}
Pentru a pricepe mai bine principiul de executie al acestei instructiuni, voi da un exemplu:
a=3;
switch (a)
{
case 1: cout<<„a este egal cu 1”;
case 2: cout<<„a este egal cu 2”;
case 3: cout<<„a este egal cu 3”;
default: cout<<„a este mai mare decat 3”;
}
Daca a==1 atunci afisam mesajul corespunzator, daca a==2 atunci afisam mesajul corespunazator, la fel si pentru a==3. Daca a nu indeplineste niciuna din conditiile din „case-uri”, atunci instructiunea default afiseaza „a este mai mare decat 3”. Ramura default este obligatorie pentru instructiunea switch.
Switch este deosebit de utila atunci cand trebuie sa verificam proprietati ale unei variabile pe mai multe cazuri.
- Instructiunea while
In engleza, while inseamna in timp ce. Numele cred ca deja va sugereaza despre ce este vorba. 😉
Forma generala
while (conditie)
{
instructiune 1;
instructiune 2;
instructiune 3;
…..
instructiune n;
}
Iarasi un exemplu va face mai clara situatia.
a=3;
b=2;
while (a>b)
{
s=a+b;
a=b;
b=4;
}
Cat timp a>b suma va lua valoarea a+b, a ia valoarea b, iar b devine 4.
Aceasta este o instrctiune, la fel ca cea care urmeaza a fi prezentata:
- Instructiunea do…while
Forma generala
do
{
instructiune 1;
instructiune 2;
instructiune 3;
….
instructiune n;
}while (conditie);
Executa instructiunile atata timp cat conditiile din while sunt adevarate. Diferente dintre while si do while este urmatoarea : Daca in cazul primeia daca conditia este falsa nu se executa niciodata instructiunile in cazul celei de-a doua se va executa o data tot sirul de instructiuni dupa care se va opri executia.
- Instructiunea for
Aceasta est eo instructiune repetitiva de asemena, dar cu un numar finit de pasi. Este cea mai folosita instructiune repetitiva. Poate fi simulata cu ajutorul instructilor while sau while-do, dar majoritatea programatorilor prefera sa o foloseasca in forma sa „pura”.
Forma generala
for (variabila=valoare;cat timp conditie;instructiune)
{
instructiune 1;
instructiune 2;
….
inctructiune n;
}
Exemplu:
for (i=0;i<3;i++)
{
cout<<„executam instructiunea for”;
}
Prima data i este 0. Verificam daca i este mai mic decat 3, daca este atunci i=i+1, adica 1 si executam instructiunea de afisare. I este 1, verificam daca 1<3, daca este adevarat atunci i=i+1, adica i=2 acum. Executam instructiunea dintre { }. Verificam daca 2<3, daca da atunci i++, adica i=3. Executam inca o data ceea ce este intre { Â }. Verifica daca 3<3, nu este asa ca ne oprim.
Instructiunea for este folosita in foarte multe situatii, de exemplu atunci cand citit/afisam/lucram asupra unui vector sau a unei matrice.
- Exercitii propuse:
1) Cu ajutorul instructiunii switch, pentru fiecare zi a saptamanii afisati un mesaj corespunzator/
2) Intr-o instructiune for incercati sa afisati valorile lui i, 1<=i<=10.
3) Transformati secventa din pseudocod in cod C++ si creati programul, compilati-l.
i<-1
cat timp (i<4)
inceput cat timp
daca (i%2=0) scrie „i este par”
altfel scrie „i este impar”
sfarsit cat timp
b<-7
daca (b>5) scrie „b este mai mare”
altfel scire „b este mai mic”
4) Cu ajutorul unei instructiuni de atribuire, dati variabilelor a,b,c,d,e valorile 1,2,3,4,5 si afisati suma valorilor a si b, b si c, c si d, d si e, a si e.
Sper ca ati inteles instructiunile limbajului C++. Imi cer scuze pentru eventualele greseli de ortografie, am scris repede. Do you like instructions of C++ now ? 😀
Da-mi voie sa te corectez la faza cu „efectul este acelasi,indiferent de pozitia operatorilor unari ++”, in caz de ++i va returna i+1 si ii va atribui lui i valoarea i+1, in caz de i++ va returna i si ii va atribui lui i valoarea i+1. Acelasi lucru in cazul operatorului unar —
Da ai dreptate,in cazul in care avem o functie ce va face procesarile in functie de un anumit i :
i = 0;
functie(++i) //va procesa i = 1 incrementandu-l initial
iar in cazul
i = 0
functie(i++) //va procesa i = 0 si apoi va avea loc incrementarea
My fault, sorry. 🙁
Exista o mica, mare diferenta intre instructiunea do-while si while. In cazul instructiunii while daca (,) conditia este falsa, nici una din instructiunile din acea bucla nu va fi executata, ceea ce in cazul do-while nu se intampla. De asta una se numeste bucla cu anterioara(while) si una bucla cu conditie posterioara(do-while). Daca vrei sa fie la fel trebuie sa pui un bloc cu toate instructiunile din bucla while inainte de verificarea conditiei.
Salut Mihai,
Am modificat si am facut o explicatie „fugara” asupra ideii.Multumim de observatie 😉
Cosmina, cum pot sa dau si eu de tine sa-mi explici mai detaliat ( daca vrei, desigur), sa-ti pun cateva intrebari pt ca sunt in al doilea an de liceu la mate-info si nu pricep mare lucru la informatica…profesorul de la clasa explica mult prea repede si neclar si chiar nu vreau sa pierd notiunile de baza…Am vrut sa o las balta si sa ma transfer la un moment dat insa mi-am dat seama ca nu trebuie sa fac asta si ca problema mea se poate rezolva. Daca ai putea sa ma ajuti astept mesajul tau, daca nu se poate e ok. Multumesc anticipat 🙂
Buna Alexandra,
Cosmina nu se mai ocupa de informatica de ceva vreme, e foarte putin probabil sa-ti raspunda. Totusi, daca ai nevoie de ajutor inregistreaza pe http://www.worldit.info/forum si pune intrebarile cu incredere dupa ce te prezinti. Cu siguranta vei gasi pe cineva care iti sara in ajutor. 🙂
Oki…multumesc 🙂
tot e zaibisi ! in fond deci sunt de acord cu parerile voastre , insa eu mam zaibit sa tot fac un program … si stiti inca ceva , eu cautam ceva de genul unui tabel in care scrie instructiunea intr-o rubrica , in alta ce face ea , rezultatul , si tot asa ….
foarte clar si bine explicat nu am absolut nimic de comentat aceasi materie la informatica cum imi explica mie la scoala
vai va multumesc celor ce ati facut acest site absolut fantastic care ma ajutat foarte mult la acest proiect
Cosmina a uitat să specifice că, la instrucţiunea switch se foloseşte şi un break astfel:
a=3;
switch (a)
{
case 1: cout<<”a este egal cu 1″;break;
case 2: cout<<”a este egal cu 2″;break;
case 3: cout<<”a este egal cu 3″;break;
default: cout<<”a este mai mare decat 3″;break;
}
În cazul default, acesta nu mai este necesar. Dacă nu este folosită şi comanda break, toate instrucţiunile sunt executate, indiferent de valoarea de adevăr returnată, deci, în exemplul de mai sus s-ar afişa (fără break): a este egal cu 1a este egal cu 2a este egal cu 3a este mai mare decat 3.
Acest lucru poate fi şi util. În exemplul următor, o valoare (reprezentând valoarea numerică a unei luni) este citită de la tastatură şi se va afişa anotimpul din care face parte acea lună:
cin >> l;
switch (l)
{
case 12:
case 1:
case 2: cout << "iarna" << endl; break;
case 3:
case 4:
case 5: cout << "primavara" << endl; break;
case 6:
case 7:
case 8: cout << "vara" << endl; break;
case 9:
case 10:
case 11: cout << "toamna" << endl; break;
default: cout << "introduceti o valoare intre 1 si 12" << endl;
// pentru cazul default break-ul este optional
}