C
Studiul instructiunilor de ciclare in limbajul cLUCRARE DE LABORATOR NR. 1 STUDIUL INSTRUCTIUNILOR DE CICLARE IN LIMBAJUL C (pentru evitarea instructiunii goto ) In aceasta lucrare se vor studia urmatoarele instructiuni: -Instructiunea goto -Instructiunea for -Instructiunea do-while -Instructiunea while -Instructiunea continue -Instructiunea break 2. BREVIAR TEORETIC 2.1. Instructiunea goto Sintaxa: goto eticheta; Exemplu: a=0; start: printf(”%dn”,a); a++; if(a<10) goto start; 2.2. Instructiunea for Sintaxa: for(<expr1: initializarea variabilelor de control ale ciclului>; <expr2: testul de continuare a ciclului>; <expr3: actualizarea variabilelor de control ale ciclului>) Observatii: - INAINTE de prima iteratie se evalueaza expr1. - DUPA fiecare iteratie pe bucla, este evaluata expr3. - Toate cele 3 expresii sunt optionale. - Repetarea la infinit a unui grup de instructiuni se face astfel: for(;;) Exemplu: for(i=0;i<=10;i++) printf('nPatratul lui %d este %d',i,i*i); 2.3. Instructiunea do-while Sintaxa: dowhile(expresie_conditie); Descriere: Grupul de instructiuni este executat repetitiv, cat timp valoarea expresiei ramane diferita de zero (ramane adevarata). Expresia de test este evaluata DUPA fiecare executie a grupului de instructiuni. Exemplu: dowhile(nr<=0); 2.4. Instructiunea while Sintaxa: while(expresie_conditie)//end while Descriere: Grupul de instructiuni se executa repetat, cat timp valoarea expresiei ramane diferita de 0 (ramane adevarata). Expresia de test este evaluata INAINTE de fiecare executie a grupului de instructiuni.
Exemplu: stop=0; while(!stop) 2.5. Instructiunea continue Sintaxa: continue; Descriere: Determina, in iteratia curenta, saltul la sfarsitul secventei de instructiuni ce formeaza corpul unui ciclu (for, do-while, while) si reluarea ciclului cu iteratia urmatoare (daca mai sunt iteratii de facut). Exemplu: for(i=1;i<=10;i++) 2.6. Instructiunea break Sintaxa: break; Descriere: Realizeaza iesirea fortata in afara ciclului curent ( for, do-while, while). Exemplu: for(;;) 3. DESFASURAREA LUCRARII Se vor edita si apoi executa programele descrise in continuare. La fiecare program se vor opera modificarile precizate in tema asociata programului. Programul 1 Sa se calculeaze maximul a N numere intregi citite de la tastatura.(N>=2). Se va folosi instructiunea goto. Listingul programului#include <stdio.h> #include <conio.h> void main(void) TemaSa se afiseze pe langa maxim si minimul dintre cele N numere. Programul 2 Sa se calculeaze maximul a N numere intregi citite de la tastatura. Se va folosi instructiunea goto. Listingul programului#include <stdio.h> #include <conio.h> void main(void) printf('Maximul dintre numerele tastate este %d .',maxim); getch( ); TemaSa se afiseze pe langa maxim si minimul dintre cele N numere. Programul 3 Sa se rezolve in multimea numerelor naturale ecuatia: x*y*z=45 . Listingul programului#include <stdio.h> #include <conio.h> void main(void) Tema-Rescrieti programul folosind instructiunea goto in loc de for. . Programul 4 Se repeta de 10 ori urmatoarea secventa: se citeste un numar natural a si i se vor afisa toti divizorii. Rezolvare #include <stdio.h> #include <conio.h> void main(void) Programul 5 Sa se scrie programul prin care se repeta citirea de la tastatura a 3 numere intregi a,b si c, pana cand toate cele 3 numere sunt distincte. Rezolvare #include <stdio.h> #include <conio.h> void main(void) printf('Cele 3 numere distincte sunt: %d, %d, %d.',a,b,c); Programul 6 Fie polinomul P(x)=ax2+b*x+c, in care a,b si c sunt 3 numere reale citite de la tastatura. Se citeste de asemenea un numar real x0. Sa se calculeze si afiseze valorile lui P(x) in 20 de puncte, plecand de la punctul x0 si apoi crescand cu un pas de 0.5 pentru calcularea punctului urmator. (Deci punctele vor fi: x0, x0+0.5, x0+2*0.5, x0+3*0.5, etc.) Rezolvare #include <stdio.h> #include <conio.h> void main(void) getch(); Programul 7 Se citesc de la tastatura doua numere naturale N1 si N2 (cu N2 > N1). Sa se calculeze si afiseze suma numerelor impare cuprinse intre N1 si N2. Exemplu: pentru N1=4 si N2=13 suma de calculat este: S=5+7+9+11+13. Rezolvare #include <stdio.h> #include <conio.h> void main(void) Programul 8 Se citeste un numar natural N de la tastatura. Sa se afiseze toti divizorii acestui numar. Rezolvare #include <stdio.h> #include <conio.h> void main(void) Probleme propuse 1. Se citeste un numar natural N de la tastatura. Sa se afiseze cel mai mic divizor diferit de 1 al numarului N. Exemplu: daca N=77, se va afisa drept rezultat numarul 7. 2. Sa se transpuna in limbajul C urmatoarea secventa de instructiuni, descrisa in pseudocod: SE REPETA se citeste a SE REPETA se citeste b PANA CAND b>100 PANA CAND a+b > 500 r Aceasta secventa va fi codata in limbajul C in trei variante: folosind instructiunea goto, folosind instructiunea do..while cat si folosind instructiunea for(;;) ..
|