Operatorii ciclului în C

Operatorii ciclului în C

Un ciclu este un bloc de cod care trebuie să fie repetată de mai multe ori pentru a rezolva problema.

Fiecare ciclu este format din

  • unitate de ciclu de testare condiții de repetiție
  • iteratie


Bucla este executat atât timp cât condițiile de testare unitare returneaza true.
Corpul buclei conține o secvență de operații care se efectuează în cazul ciclului adevărat condiție repetiție. După ultima operație a corpului buclei este executat din nou operațiunea de a verifica starea de repetare a ciclului. Dacă această condiție nu este îndeplinită, operația va fi efectuată în picioare imediat după ciclul în codul programului.

În C, următoarele tipuri de cicluri:

  • în timp ce - ciclul cu condiție prealabilă;
  • do. în timp ce - ciclul cu postconditie;
  • pentru - ciclul parametric (un ciclu cu un număr predeterminat de repetiții).

Ciclul în timp ce condiție prealabilă

forma generală


În cazul în care condiția este îndeplinită (expresia, verifică starea. Nu este zero), atunci BlokOperatsy. închise în acolade, atunci starea este testat din nou.
Secvența de acțiuni, constând în verificarea condițiilor de executare și BlokaOperatsy. repetă atâta timp cât expresia este testată condiția. Este fals (zero). Astfel, există o cale de ieșire a ciclului, iar operația este realizată, în picioare, după ce operatorul ciclu.

Exemplu de Cu. Se calculează suma numerelor de la 1 la k introduse

#define _CRT_SECURE_NO_WARNINGS // posibilitatea de a folosi scanf
#include
int main k () int; // declara o tastă variabilă număr întreg
int i = 1;
int sum = 0; // valoarea inițială a sumei este 0
printf ( "k =");
scanf ( "". k); // introduceti valoarea variabilei k
în timp ce (i <= k) // пока i меньше или равно k
suma = suma + i; // adaugă la suma valorii I
i ++; // incrementare i de 1
>
printf ( "sum = \ n" sum.); // afiseaza valoarea sumei
getchar (); getchar ();
return 0;
>


rezultatul execuției

În construcția buclei în timp. acesta trebuie să permită proiectarea, modificarea valorii expresiei de test, astfel încât, în cele din urmă a fost fals (zero). In caz contrar, bucla va fi infinit (buclă infinită).

EXEMPLUL buclă fără sfârșit

în timp ce - bucla cu o condiție prealabilă, astfel încât este posibil ca organismul bucla nu este niciodată nu va fi îndeplinită dacă în momentul primei condiții test de verificare este falsă.

De exemplu, dacă în codul programului de mai sus introduce k = -1, atunci vom obține rezultatul

Ciclul cu postconditie face. în timp ce

forma generală

do BlokOperatsy;
> În timp ce (Condiții);


do buclă. în timp ce - acest ciclu cu postconditie, unde adevărul expresiei, verifică condiția este verificată după operațiile unitare. închise în paranteze. corpul este executat atâta timp cât expresia este testată condiția. Este fals, care este, ciclul corpului cu postconditie este executat cel puțin o dată.

Utilizați bucla do. în timp ce mai bine atunci când ar trebui să fie efectuate cel puțin o iterație, sau atunci când inițializarea obiectelor implicate în verificarea condițiilor se întâmplă în interiorul corpului buclei.

Exemplu de Cu. Verificați dacă utilizatorul introduce un număr de la 0 la 10

#define _CRT_SECURE_NO_WARNINGS // posibilitatea de a folosi scanf
#include
#include // pentru a utiliza sistemul ()
int principal num () int; // declararea unei variabile întreg pentru numărul de
sistem ( "chcp 1251"); // porniți limba română în consolă
sistem ( "cls"); // goli ecranul
do printf ( "Introduceți un număr de la 0 la 10"); // utilizator promptă
scanf ( "". num); // numărul de intrare
> În timp ce ((num <0) || (num> 10)); // repeta ciclul pana num<0 или num>10
printf ( "Ați introdus un număr." Num.); // afișa num valoarea introdusă - la 0 la 10
getchar (); getchar ();
return 0;
>

Ciclul parametrice

forma generală

pentru (initializare; Conditii de modificare)
BlokOperatsy;
>

pentru - ciclul parametric (un ciclu cu un număr fix de repetiții). Pentru organizarea unui astfel de ciclu este necesar să se efectueze trei operațiuni:

  • Inițializarea - atribuire parametru buclă valoarea inițială;
  • Stare - verifica starea buclă de repetiție, de cele mai multe ori - o comparație a parametrului cu o anumită valoare limită;
  • Modificarea - schimba setarea pentru următoarea trecere a corpului buclei.


Aceste trei operații sunt scrise în paranteze și separate prin virgulă; ;. De obicei, parametrul ciclu este o variabilă întreg.
Inițializare parametrul se efectuează o singură dată - când pentru ciclul începe execuție.
Verificați ciclul de repetiție Starea se efectuează înainte de fiecare execuție a corpului buclei posibil. Atunci când expresia verifică starea devine falsă (zero), bucla se termină. modificarea parametrilor se realizează la sfârșitul fiecărui ciclu de execuție a corpului. Parametrul poate atât crește și descrește.

Exemplu de Cu. Se calculează suma numerelor de la 1 la k introduse

#define _CRT_SECURE_NO_WARNINGS // posibilitatea de a folosi scanf
#include
int main k () int; // declara o tastă variabilă număr întreg
int sum = 0; // valoarea inițială a sumei este 0
printf ( "k =");
scanf ( "". k); // introduceti valoarea variabilei k
pentru (int i = 1; i<=k; i++) // цикл для переменной i от 1 до k с шагом 1
suma = suma + i; // adaugă la suma valorii I
>
printf ( "sum = \ n" sum.); // afiseaza valoarea sumei
getchar (); getchar ();
return 0;
>

rezultatul execuției

Înregistrarea pentru bucla poate omite una sau mai multe expresii, dar nu se poate omite separarea și virgulă cele trei componente ale ciclului.
Codul exemplul anterior poate fi scris ca

#define _CRT_SECURE_NO_WARNINGS // posibilitatea de a folosi scanf
#include
int main k () int; // declara o tastă variabilă număr întreg
int sum = 0; // valoarea inițială a sumei este 0
printf ( "k =");
scanf ( "". k); // introduceti valoarea variabilei k
int i = 1;
pentru (; i<=k; i++) // цикл для переменной i от 1 до k с шагом 1
suma = suma + i; // adaugă la suma valorii I
>
printf ( "sum = \ n" sum.); // afiseaza valoarea sumei
getchar (); getchar ();
return 0;
>

Parametrii sunt în ceea ce privește ciclul titlu poate fi modificat în timpul funcționării în corpul buclei, de ex

#define _CRT_SECURE_NO_WARNINGS // posibilitatea de a folosi scanf
#include
int main k () int; // declara o tastă variabilă număr întreg
int sum = 0; // valoarea inițială a sumei este 0
printf ( "k =");
scanf ( "". k); // introduceti valoarea variabilei k
pentru (int i = 1; i<=k; ) // цикл для переменной i от 1 до k с шагом 1
suma = suma + i; // adaugă la suma valorii I
i ++; // adaugă 1 la valoarea i

>
printf ( "sum = \ n" sum.); // afiseaza valoarea sumei
getchar (); getchar ();
return 0;
>

Ciclul poate folosi virgula operație -, - pentru a separa mai multe expresii. Acest lucru face posibil să se includă în caietul de sarcini al ciclului câteva inițializarea sau declarații corective. Expresiile la care operațiunea se aplică virgula. vor fi evaluate de la stânga la dreapta.

#define _CRT_SECURE_NO_WARNINGS // posibilitatea de a folosi scanf
#include
int main k () int; // declara o tastă variabilă număr întreg
printf ( "k =");
scanf ( "". k); // introduceti valoarea variabilei k
pentru (int i = 1, j = 2; i<=k; i++, j+=2) // цикл для переменных
printf ( "i = j = \ n .." i, j.); // imprima valoarea i și j
>
getchar (); getchar ();
return 0;
>

bucle imbricate

În C, permis bucle imbricate, adică, atunci când un ciclu este într-o altă:

pentru (i = 0; i<
pentru (j = 0; j ; // operații bloc Tsikla2
>
// operații Tsikla1 bloc;
>

Exemplu. Ieșire de la 0 până la 99, cu 10 în fiecare rând

#define _CRT_SECURE_NO_WARNINGS // posibilitatea de a folosi scanf
#include
int main () pentru (int i = 0; i<10; i++) // цикл для десятков
<
pentru (int j = 0; j <10; j++) // цикл для единиц
printf ( "% 2d" i * 10 + j.); // afișează numărul calculat (2 familiaritate) și spațiul
>
printf ( "\ n"); // pentru a traduce linia buclă exterioară
>
getchar (); // scanf () este utilizat,
return 0; // astfel încât consola poate deține getchar singur apel ()
>

Recomandări privind ciclul de selecție

La alegerea unui ciclu este necesar pentru a evalua necesitatea de a verifica condițiile la intrarea în ciclul sau la sfârșitul ciclului.
Ciclul cu postconditie utilizate în mod convenabil, în cazul în care condițiile necesare pentru a verifica dacă valoarea calculată a expresiei, care apoi va fi luată în buclă (vezi. Exemplul de mai sus numărul de intrare de la 0 la 10).
C ciclu condiție este utilizată în cazul în care toate variabilele implicate în exprimarea, condiția este testată, pre-inițializat, dar numărul exact de iterații de buclă nu este cunoscută sau suspectată modificarea dificilă a variabilelor implicate în formarea condițiilor pentru repetarea ciclului.
În cazul în care ciclul este proiectat pentru a lucra cu un parametru pentru care se cunoaște dinainte numărul de repetiții și schimbarea pas, mai preferat este ciclul parametric. Este foarte convenabil de a folosi ciclul parametric atunci când se lucrează cu matrice pentru a itera prin elementele.

Operatorii de întrerupere și să continue ciclul de pauză și continuă

Corpul buclei, puteți utiliza orice întrerupere operatorii de ciclu - pauză și să continue ciclul - continuă.

Declarația pauză pentru a ieși din bucla fără a finaliza aceasta.
continua declarație vă permite să săriți peste operatorii iteratie și pentru a începe o nouă iterație.

Exemplu de Cu. Producția de 0-99 sub diagonala principală

#define _CRT_SECURE_NO_WARNINGS // posibilitatea de a folosi scanf
#include
int main () pentru (int i = 0; i<10; i++) // цикл для десятков
<
pentru (int j = 0; j <10; j++) // цикл для единиц
dacă (j> i) // dacă numărul este mai mare decât numărul de unități între zeci
pauză; // ieși din bucla interioară și trece la o nouă linie
printf ( "% 2d" i * 10 + j.); // afișează numărul calculat (2 familiaritate) și spațiul
>
printf ( "\ n"); // pentru a traduce linia buclă exterioară
>
getchar (); // scanf () este utilizat,
return 0; // astfel încât consola poate deține getchar singur apel ()
>

Exemplu de Cu. Producția de 0-99, cu excepția numărului care se termină în 5 sau 8

#define _CRT_SECURE_NO_WARNINGS // posibilitatea de a folosi scanf
#include
int main () pentru (int i = 0; i<10; i++) // цикл для десятков
<
pentru (int j = 0; j <10; j++) // цикл для единиц
if ((j == 5) || (j == 8)) // dacă numărul de unități egale în număr este de 5 sau 8,
continua; // trece la următoarea iterație a buclei
printf ( "% 2d" i * 10 + j.); // afișează numărul calculat (2 familiaritate) și spațiul
>
printf ( "\ n"); // pentru a traduce linia buclă exterioară
>
getchar (); // scanf () este utilizat,
return 0; // astfel încât consola poate deține getchar singur apel ()
>

În cazul în care imbricate acțiunilor operatorului buclele rupe și continuă se aplică numai la structura cel mai interior în care sunt conținute.

salt necondiționat declarație Goto

forma generală

Eticheta goto;
.
Mark. operațiune;

Exemplu de Cu. Ieșire toate numere întregi de la 0 la 5.

#define _CRT_SECURE_NO_WARNINGS // posibilitatea de a folosi scanf
#include
int main () int k = 5;
M1: dacă (k <0) // если k<0,
Goto M2; // trece la marcajul M2 (ieșirea din program)
printf (k "".); // imprima valoarea k
k--; // decrementare k de 1
Goto M1; // treci pentru a marca M1 (se repetă operația de mai sus)
M2: getchar ();
return 0;
>

Utilizarea declarației Goto în programele C, fără necesitate extremă nu este recomandată, deoarece aceasta poate duce la o serie de erori legate de lizibilitatea slabă a codului de program. Utilizarea operatorilor de ciclu permite eliminarea practic nevoia de a utiliza instrucțiunea goto.

articole similare