1 / 12

Programare in limbajul C – Cursul 5 Instrucţiuni repetitive Prof. univ. dr. Constantin Popescu

Programare in limbajul C – Cursul 5 Instrucţiuni repetitive Prof. univ. dr. Constantin Popescu. Agenda. Instructiunea while Instructiunea for Instructiunea do-while Instructiunile break si continue. Instructiunea while (1). Sintaxa instructiunii while este:

finola
Download Presentation

Programare in limbajul C – Cursul 5 Instrucţiuni repetitive Prof. univ. dr. Constantin Popescu

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programare in limbajul C – Cursul 5Instrucţiuni repetitiveProf. univ. dr. Constantin Popescu

  2. Agenda • Instructiunea while • Instructiunea for • Instructiunea do-while • Instructiunile break si continue

  3. Instructiunea while (1) • Sintaxa instructiunii while este: while (expresie) instructiune • Efectul instructiunii while este: • Se evalueaza expresie • Daca expresie este falsa, while nu se executa (se trece la 5) • Daca expresie este adevarata (true), se executa instructiune • Se trece la pasul 1 • Se executa urmatoarea instructiune • Exemplu: tipărirea unui anumit număr de linii goale while(n > 0) { printf("\n"); n = n - 1; }

  4. Instructiunea while (2) • Exemplul de mai jos dublează numărul 2 (2, 4, 8, 16, …) şi tipăreşte numărul rezultat atâta timp cât numerele sunt mai mici decât 1000: #include <stdio.h> int main() { int x = 2; while(x < 1000) { printf("%d\n", x); x = x * 2; } return 0; }

  5. Instructiunea for (1) • Sintaxa instructiunii for este: for(expresie1 ; expresie2; expresie3) instructiune • expresie1, expresie2 siexpresie3 sunt expresii C. • Efectul instructiunii for este : • Se evalueazaexpresie1. In general este o instructiune de asiganre. • Se evalueazaexpresie2. In general este o expresie relationala. • Daca expresie2 este falsa, nu se executa for (se trece la 6.) • Daca expresie2 este adevarata, se executa instructiune • Se executa expresie3si se trece la pasul2. • Se executa urmatoarea instructiune

  6. Instructiunea for (2) • O modalitate de a scrie o buclă infinită în C este: for(;;) • Observatie: • for ( ; expresie ; ) instructiune; este echivalent cu while (expresie ) instructiune; • for (exp1; exp2; exp3) instructiune; este echivalent cu exp1; while(exp2) {instructiune; exp3; }

  7. Exemple: #include <stdio.h> int main () { int count,x,y; int ctd; for (count =1; count <=20; count++) printf ("%d\n", count); for (count = 100; count >0; count--) { x*=count; printf("count=%d x=%d\n", count,x); } for (count=0; count<1000; count += 5) y=y+count; /* initializare in afara lui for */ count = 1; for ( ; count < 1000; count++) printf("%d ", count); /* numai expresie2 in for */ count=1; ctd=1; for ( ; ctd; ) { printf("%d ", count); count++; ctd=count<1000; } for (x=0, y=100; x<y; x++, y--) { printf("%d %d\n", x,y); } return 0; } Instructiunea for (3)

  8. Instructiunea for (4) • Instructiuni for imbricate: • De exemplu: #include <stdio.h> int main( ) { int linii=10, coloane=20; int r, c; for ( r=linii ; r>0 ; r--) { for (c = coloane; c>0; c--) printf ("X"); printf ("\n"); } return 0; }

  9. Instructiunea do ... while (1) • Sintaxa instructiunii do-while este: do instructiunewhile (expresie); • Este asemanatoare cu instructiunea repeat until: • Intotdeauna se executa instructiune. • Efectul instructiunii do...while: • Se executa instructiune • Se evalueaza expresie • Daca expresie este true se trece la pasul 1 • Se executa urmatoarea instructiune

  10. #include <stdio.h> int get_menu_choice (void); main() { int choice; do { choice = get_menu_choice (); printf ("You chose %d\n",choice); } while(choice!=4); return 0; } /* functia get_menu_choice */ int get_menu_choice (void) { int selection = 0; do { printf ("\n"); printf ("\n1 - Add a Record "); printf ("\n2 - Change a Record "); printf ("\n3 - Delete a Record "); printf ("\n4 - Quit "); printf ("\n\nEnter a selection: "); scanf ("%d", &selection); } while ( selection<1 || selection>4); return selection; } Instructiunea do ... while (2)

  11. Instructiunile break si continue • Instructiunea break produce imediat iesirea din ciclu (bucla). • Este utila pentru iesirea din bucla in anumite conditii necontrolate de bucla. • De exemplu: for (x=0; x<10000; x++) { if ( x*x % 5==1) break; ... } • Executia buclei se termina daca x*x % 5 == 1 • Instructiunea continue produce imediat executarea urmatoarei iteratii a buclei: • De exemplu: for (x=0; x<10000; x++) { if (x*x % 5 == 1) continue; printf( "%d ", 1/ (x*x % 5 – 1) ); } • Nu se executa bucla atunci cind x*x % 5 == 1 (se evita impartirea la 0)

  12. Iată un program pentru tipărirea numerelor prime de la 1 la 100: #include <stdio.h> #include <math.h> int main(){ int i, j; printf("%d\n", 2); for(i = 3; i <= 100; i = i + 1){ for(j = 2; j < i; j = j + 1){ if(i % j == 0) break; if(j > sqrt(i)) { printf("%d\n", i); break; } } } return 0; } Exemplu de utilizare for si break

More Related