Sunteți pe pagina 1din 8

Programarea Calculatoarelor - Limbaje

Lucrarea 06. Aplicații C cu instrucțiuni

O1. Cunoașterea instrucțiunilor de bază ale limbajului C


Obiective O2. Utilizarea acestor instrucțiuni pentru a controla uxul programului
O3. Utilizarea instrucțiunilor în funcții pentru crearea de programe mai
complexe

INTRODUCERE
Instrucțiunile (en. statements) reprezintă pașii efectuați de un program. Fiecare instrucțiune
este un pas computațional ce are un anumit efect colateral (side-effect): modi carea stării progra-
mului.
Controlul uxului ( ow control) este ordinea de execuție a intrucțiunilor. Dacă nu sunt in-
strucțiuni repetitive sau de salt, programul se execută secvențial.
Domeniul (namespace) de de niție a unei variabile este zona din program în care o variabilă
rămâne de nită. Domeniul de valabilitate al variabilelor declarate este limitat la bloc . Timpul de
viață al unei varibile este dat de durata de execuție a blocului Dacă anumiți identi catori au fost
declarați anterior, atunci declarația anterioară este salvată pe durata blocului, după care îşi reia
sensul său la ieșirea din bloc.

INSTRUCȚIUNEA IF
if(expresie){
set_instr1;
}
[else{
set_instr2;
}]

expresie are o valoare de tip scalar. Dacă expresie are valoare nenulă (adevarată) se execută
instr1, altfel se execută instr2. Ramura else poate să lipsească! Acoladele pot să lipsească atunci
când e o singură instrucțiune executată! !!!
Doar o ramură este executată. La nal se trece la execuția instrucțiunii ce urmează după if-else,
cu excepția instrucțiunilor if-else ce conțin instrucțiunile break, continue sau goto.

INSTRUCȚIUNEA SWITCH
switch(expresie)
{
case const1 :
set_instructiuni1;
[break];
case const2 :
set_instructiuni2;
[break;]
...
! Adriana Stan, Ligia Chiorean, Mircea Vaida # Programarea Calculatoarelor - Limbaje
fl
fi
fl
fi
fi


fl
fi
fi
[default:]
set_instructiuni
//[break;]
}

Permite selecția multiplă dacă aceasta e controlată de valoarea unei singure expresii. expresie
are o valoare întreagă sau constantă. Nu poate oat, double sau de tip structurat. const sunt
constante cu valori distincte ale rezultatului expresiei. break determină ieșirea din instrucțiunea
switch. Absența instrucțiunii break alterează funcționarea switch. Pot exista oricâte ramuri case.
Ramura default se execută dacă nu s-a intrat pe nici o ramură de case și poate să lipsească!!

INSTRUCȚIUNEA FOR
for (initializare; verificare; actualizare){
instructiuni;
}

Este o instrucțiune repetitivă condiționată anterior și număr x de repetări


initializare - se execută o singură dată la intrarea în bucla și reprezintă inițializarea contorului
veri care - este expresia de veri care la începutul ecărei bucle repetitive. Dacă este nenulă se
execută bucla, altfel se iese din buclă.
actualizare - se execută la sfârșitul ecărei bucle și reprezintă modul de actualizare al contorului
buclei.
Oricare dintre cele trei expresii (initializarea, veri care, actualizare) pot să lipsească:
for (;;){
instructiuni;
}
Dar este o bucla in nită. Separatorii ; sunt necesari!!

INSTRUCȚIUNEA WHILE
while (expresie){
instructiuni;
}

Instrucțiune repetitivă condiționată anterior și număr necunoscut de repetări. Se execută atât


timp cât expresie este nenulă. De obicei valoarea expresiei este modi cată în blocul de instrucțiu-
ni. Se poate execută de un in nit de ori (buclă in nită - while(1) sau while ()) sau niciodată (while
(0)).

INSTRUCȚIUNEA DO...WHILE

do {
set_instructiuni
} while (expresie)

Instrucțiune repetitivă condiționată posterior și număr necunoscut de pași. Setul de instructiuni


se execută cel puțin o dată. Este folosită atunci când nu avem o valoare inițială pentru expresie.

! Adriana Stan, Ligia Chiorean, Mircea Vaida $ Programarea Calculatoarelor - Limbaje


fi
fi
fi
fi
fi

fi
fi

fi
fi
fl
fi
fi
INSTRUCȚIUNEA BREAK
break;

Se folosește: în instrucțiunea switch pentru a marca încheierea unei ramuri case și ieșirea din
instrucțiune; în instrucțiuni repetitive pentru ieșiri forțate, indiferent de valoare condiției.
NOTĂ: în cazul instrucțiunilor imbricate, break forțează ieșirea doar din bucla curentă, nu și cea
externă.

INSTRUCȚIUNEA CONTINUE
continue

Se foloseşte în instrucțiunile repetitive pentru întreruperea iterației curente după care:


- pentru while şi do-while se continuă cu testarea condiției de repetare;
- pentru for se continuă cu evaluarea expresiei de actualizare şi apoi a expresiei de validare.

INSTRUCȚIUNEA RETURN
return;
return (expresie);

Termină execuția unei funcții şi dă controlul funcției apelante. Poate să apară oriunde în blocul
unei funcții. Funcțiile ce returnează o valoare trebuie să includă neapărat instrucțiunea return. ex-
presie trebuie să aibă tipul declarat în prototipul funcției. Valoarea expresiei (cu unele conversii im-
plicite) este transmisă funcției apelante. Funcția apelantă poate neglija rezultatul returnat de
funcția apelată.

EXEMPLE
1. Domeniul de de niție a variabilelor

! Adriana Stan, Ligia Chiorean, Mircea Vaida % Programarea Calculatoarelor - Limbaje


fi


#include <stdio.h>
int main(void){
int i = 5;
printf("i inainte de instruc compusa: %d\n",i);
{
int i = 3;
printf("i in instructiunea compusa: %d\n", i);
i+=1;
printf("i incrementat in instruc compusa: %d\n",i);
}
printf("i la iesirea din instruc compusa: %d\n",i);
i += 1;
printf("i incrementat dupa instruc compusa: %d\n", i);
return 0;
}
2. Instrucțiune if imbricată

#include <stdio.h>
int main(void){
int a = 3, b =7, c=22, max = 0;
if (a>b)
if (a>c)
max = a;
else
max = c;
else if (b>c)
max = b;
else
max = c;
printf("Maximul este: %f",max);
return 0;
}
3. Instrucțiunea switch fără break

! Adriana Stan, Ligia Chiorean, Mircea Vaida & Programarea Calculatoarelor - Limbaje


#include <stdio>

int main(void){
int a = 2;
switch (a) {
case 1:
a = a+4;
break;
case 2:
a = a+3;
case 3:
a = a+2;
break;
}
printf("a este: %d",a);
}
4. Adună valorile date de la tastatură cu con rmarea continuării după ecare număr introdus

#include <stdio.h>

int main(void){
int c, suma=0;
char key;
do{
printf("Introduceti un numar: ");
scanf("%d",&c);
suma += c;
printf("Continuati ? (d/n) \n");
scanf(" %c", &key);
}
while (!((key == 'n')||(key=='N')));
printf("Suma numerelor introduse este %d\n", suma);
}
5. Determinare număr prim (fără optimizare)

! Adriana Stan, Ligia Chiorean, Mircea Vaida ' Programarea Calculatoarelor - Limbaje

fi

fi
#include <stdio.h>
int NrPrim(int);
int main(void){
int nr;
printf("\nIntroduceti un numar : ");
scanf("%d", &nr);
if(NrPrim(nr) > 0)
printf("\nNumarul %d este prim\n", nr);
else
printf("\nNumarul %d nu este prim\n", nr);
}

int NrPrim(int n){


// Funcţia returneaza +1 daca numarul n este prim sau -1 in caz
contrar
int i;
if(n <= 1)
return(-1);
if(n == 2)
return(1);
if(n % 2 ==0)
return(-1);
for(i=3; i<n; i+=2) {
if(n % i == 0)
return(-1);
}
return(1);
}
6. Buclă de așteptare

#include <stdio.h>

int main(void){
int contor = 100000;
while (contor--);
}
7. Exemplu instrucțiunea break

! Adriana Stan, Ligia Chiorean, Mircea Vaida ( Programarea Calculatoarelor - Limbaje




#include <stdio.h>

int main(void){
for (int i=0; i<5; i++){
if (i==3)
break;
for (int j=0; j<3; j++){
if (j == 2)
break;
printf("%d %d", i,j);
}
}
}
8. Exemplu instrucțiunea continue

#include <stdio.h>

int main(void){
int i = 10;
while (i>=0){
if (i%2){
i--;
continue;
}
printf("%d", i);
i--;
}

TEME
1. Se citesc trei numere de la tastatură (a, b şi c). Să se determine aria dreptunghiului ale cărui
laturi sunt a şi b şi veri caţi dacă diagonala dreptunghiului este egală cu c.
2. Să se scrie un program care veri că dacă un număr citit de la tastatură este pătrat perfect.

3. Să se scrie un program care calculeaza a la puterea n, unde a și n sunt citite de la consolă.

4. Să se scrie un program care citeşte de la tastatură o valoare întreagă şi calculează n! (n-facto-


rial).
5. Să se scrie un program care :
- determină cel mai mare număr prim mai mic decât numărul dat
- determină toate numerele prime mai mici decât numărul dat.
6. Să se scrie un program care determină cel mai mare divizor comun a doi întregi.

7. Să se scrie un program care determină toţi divizorii unui număr.

8. Să se scrie un program care determină câtul împărţirii a doi întregi folosind scăderi succesive.

! Adriana Stan, Ligia Chiorean, Mircea Vaida ) Programarea Calculatoarelor - Limbaje


fi
fi


9. Calculaţi produsul a două numere întregi folosind numărul corespunzător de adunări.

10. Să se scrie un program care determină numărul de cifre care compun un număr întreg citit de
la tastatură.
11. Să se scrie un program care citeşte de la tastatură n numere întregi. A şaţi toate numerele
impare din şir.
12. Să se citească un număr întreg n de la tastatură. Se citesc apoi numere reale, până când
suma lor depăşeşte valoarea lui n. Să se a şeze suma numerelor citite, cu o precizie de 2 zeci-
male şi numărul lor (câte s-au introdus).
13. Să se scrie un program care determină cmmmc a două numere citite de la tastatură.

14. Scrieţi un program care citeşte n numere întregi de la tastatură şi le a şează pe cele diviz-
ibile cu 3.
15. Să se scrie un program care citeşte de la tastatură un caracter, pe care îl a şează pe n rân-
duri, câte n caractere pe un rând.
16. Să se scrie o aplicaţie C în care se introduc de la tastatură numere întregi, până ce utiliza-
torul apasă tasta <Esc>. Să se determine şi să se a şeze media numerelor impare pozitive.

! Adriana Stan, Ligia Chiorean, Mircea Vaida * Programarea Calculatoarelor - Limbaje



fi

fi
fi
fi
fi

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