Ciclul de contra - studopediya

pentru operatorul buclă

Este o prescurtare convenabil pentru un timp de tip buclă

Expresia e1 pentru a stabili condițiile inițiale ale buclei, e2 expresie oferă o condiții verificare de ieșire ale ciclului și exprimarea e3 modifică condițiile date de e1 exprimare. Oricare dintre expresiile e1, e2, e3 poate fi omisă. Dacă omis e2, atunci în mod implicit, în loc să-l substituie valoarea TRUE. De exemplu, ciclul de

cu e1 redus, e3 este echivalentă cu ciclul

toate expresiile echivalente în pămînt ciclul

și anume echivalent cu o buclă infinită. Acest ciclu poate fi întreruptă doar de ieșire explicite din acestea prin intermediul operatorilor pauză, Goto, returnare, conținute în corpul ciclului s.

În ciuda asemănarea cu ciclurile iterative pentru Pascal și Ada, sau cicluri iterative face Fortran sau PL / 1, limbajul C pentru bucla locală nu este copia lor semantică. Pentru bucla este limbajul C este mai frecventă decât pentru bucle, și de a face alte limbi. Spre deosebire de aceste cicluri, în general, numărul de iterații în bucla pentru limbajul C nu poate fi determinată înainte de efectuarea acestui ciclu.

Ciclul de alternativă și ciclul său în timp ce semantically aproape echivalente, dar, așa cum este indicat în funcțiune (Ritchie, D.M. 1980. Programming Language. - Manual de referință / ATT Bell Laboratories, Murray Hill, New Jersey 07974), nu sunt identice. De exemplu, ia în considerare în cazul în care operatorul s este o declarație sau declarație compus care conține declarația continuă să continue. Acțiunea operatorului este de a continua tranziția spre sfârșitul ciclului, care are implicații diferite pentru pentru buclă și echivalentul acesteia sub forma unei bucle în timp. În cazul ciclului de e3 expresie realizată pentru a calcula valoarea expresiei e2, în timp ce ciclul echivalent în timp ce e3 expresie omisă.

Flexibilitatea proiectării pentru - o consecință a metodei de utilizare a expresiilor în caietul de sarcini ciclu. Până în prezent, prima expresie este folosit pentru a inițializa contorul, iar al doilea - pentru a seta valoarea limită, iar al treilea - pentru a crește valoarea actuală a 1. Dar, în plus față de această caracteristică, există multe alte posibilități de aplicare a acesteia, dintre care nouă ne dau mai jos.

  1. Poate fi utilizat reduce operațiunea de numărare în ordine descrescătoare în locul contului în ordine crescătoare:
2. pentru (n = 10; n> 0; n -) 3. printf ( "\ n secunde.!", n); printf ( "Start \ n!");
  1. Opțional, scor câte doi zeci etc.:
5. pentru (n = 2; n<60;n=n+13);printf(".\n",n);
  1. Posibilitatea de a conta cu ajutorul simbolurilor, nu doar numere:
7. pentru (ch = 'a'; ch<='z';ch++)printf("Величина кода ASCII для %с равна ..\n",ch,ch);

Făcând acest lucru operatorul va imprima toate literele de la A la Z, împreună cu codurile lor ASCII. Această declarație funcționează, deoarece caracterele din memoria aparatului sunt plasate sub formă de numere, și, prin urmare, acest fragment este realizat prin utilizarea de numere întregi.

  1. Puteți verifica performanța unor condiții arbitrare, altele decât condițiile impuse de numărul de iterații. Luați în considerare exemplul programului de cuburi de masă de imprimare de numere întregi:
9. / * cuburi de masă * / 10.main () 11.

Acum, înlocuiți specificația

pentru (num = 1; num<=6; num++)

pentru (num = 1; num<6; num++)

Ar fi de dorit, în acest caz, dacă ne-am implicat mai mult în limitarea maxim de cuburi interval de numere, mai degrabă decât numărul de iterații.

  1. Este posibil să se facă valoarea unor valori crescute într-o geometric, mai degrabă decât în ​​progresie aritmetică, adică în loc de a adăuga o valoare fixă ​​pe fiecare ciclu pentru a efectua etapa de multiplicare:
16.for (x = 100,0; x<150.0; x=x*1.1)printf("Ваш долг теперь %3.2f.\n",x);

Această valoare fragment de program al variabilei x se înmulțește cu 1,1 la fiecare etapă a ciclului, care crește cu 10%. Rezultatul este după cum urmează:

Datoria ta este acum 100.00.Vash datoria este acum datoria 110.00.Vash este acum 121.00.Vash datoria este acum 133.10.Vash datoria este acum 146.41.
  1. O a treia expresie poate fi orice expresie bine formată. Oricare ar fi pe termen posibil să fi indicat, valoarea sa se va schimba cu fiecare iterație:
18.for (x = y = 1; y<=75; y=5*x++)printf("%10d %10d\n",x,y);

Vă rugăm să rețineți că specificația ciclului verifică valoarea y, în loc de x. In fiecare dintre cele trei expresii care controlează funcționarea pentru bucla poate fi folosit orice variabile.

In timp ce acest exemplu este corectă, ea nu poate servi ca o ilustrare a stilului de programare bun. Programul ar fi privit cu mult mai ușor de înțeles dacă nu am fi amestecat procesul de modificare a variabilei bucla cu calcule algebrice.

  1. Puteți omite chiar și una sau mai multe expresii, dar simbolurile nu pot fi omise „virgulă“. iteratie
20.for (;;)

va executa un număr infinit de ori, deoarece starea gol este considerat întotdeauna adevărat.

  1. Prima expresie nu trebuie să inițializa o variabilă. In schimb, de exemplu, ar fi printf declarație (). Este necesar doar să ne amintim că prima expresie este evaluată doar o singură dată, înainte de restul ciclului va fi efectuată.
23.for (printf ( "Monitorizați numărul \ n!") ;! Num = 6;) 24.scanf (, num ""); printf ( "Aceasta este exact ceea ce vreau \ n!");

În acest cod primul mesaj este scoasă la ieșire pentru imprimare o dată și apoi fiind numere de intrare primite până la numărul 6 nu este primit.

  1. Parametrii din expresiile care sunt în caietul de sarcini ciclu poate fi modificat în operațiile din corpul buclei. De exemplu, să presupunem că aveți o serie cu specificația de forma următoare:
pentru (n = 1; n<1000; n+t)

Și dacă programul nostru, după mai multe iterații determină că valoarea t este prea mică sau mare, în cazul în care declarația se poate schimba valoarea din interiorul buclei. Programul interactiv, utilizatorul poate schimba această setare în bucla.

Pentru a rezuma. În declarația pentru folosește trei expresii care controlează performanța bucla. Ele sunt separate prin simbolul „virgulă“. Expresia de inițializare este evaluată o singură dată înainte de a executa oricare dintre operatorii ciclului. În cazul în care expresia de test este adevărat, sau nu este egal cu zero, corpul este executat o singură dată. Se calculează apoi valoarea corectată a expresiei, iar valoarea expresiei de testat se determină din nou. pentru operator - o buclă cu o condiție prealabilă. Decizia cu privire la posibilitatea de a efectua încă o dată corpul buclei sau nu, adoptate înainte de trecerea acestuia. Prin urmare, se poate întâmpla ca organismul nu va fi niciodată împlinit. Operatorul definește un corp inelar poate fi atât de simplu și compozit.

Operațiunea „virgulă“ crește bucla de flexibilitate pentru, permițându-vă să includă în specificația sa initializarea câteva sau declarații corective.

articole similare