bucle imbricate - studopediya
În cazul în care corpul ciclului este o structură ciclică, astfel de cicluri sunt numite imbricată sau complexe. Inel conținând un ciclu diferit, numit extern. Buclă conținută în corpul unui alt ciclu, numit intern.
Inelele interioare și exterioare pot fi oricare dintre cele trei tipuri considerate: Cicluri de cicluri ale parametrilor cu o condiție, un cicluri postconditie. La construirea bucle imbricate necesare pentru a se conforma cu următoarele condiții suplimentare: toți operatorii bucla interioară trebuie să se afle complet în corpul buclei exterioare, ciclurile, în orice caz, nu poate fi traversat.
cicluri compuse în mod condiționat împărțit în niveluri cuiburi. Mai jos este structura de bucle imbricate cu un parametru, pentru care: inelul exterior 1 are nivelul 0, ciclul intern 2 - nivel 1, inelul interior 3 - Nivelul 2.
Posibile cicluri de adâncime cuiburi (număr de niveluri) este limitată de capacitatea de memorie disponibilă a unui calculator. Rețineți că bucla 2 este extern ciclul 3 și intern pentru ciclul 1. Parametrii de ciclu la niveluri diferite nu se schimbă în mod simultan. Inițial, toate valorile schimba ciclurile parametrilor de buclă cu cele mai profunde valori fixe ale parametrilor cu un nivel inferior - un ciclu de schimbare 3. Apoi, într-o valoare etapă a următorului nivel (ciclul 2) și din nou buclă internă complet realizată, etc atâta timp .. cicluri pana cand parametrii de toate nivelurile nu vor primi toate valorile necesare. Astfel, în cazul în care într-un ciclu complex cu numărul k cuiburi de repetiții ale ciclurilor în fiecare nivel este egal cu N0. N1. ..., Nk, respectiv, numărul total de iterații ale corpului buclei interioare este:
Figura 3 - Schema de algoritm nested bucle
Fig. 3 reprezintă un parametru de ciclu. Dar toate cele de mai sus se aplică și în acele cazuri în care organizarea ciclurilor utilizate de către alte structuri ciclice: buclă cu un ciclu de condiție prealabilă sau postconditie.
Să considerăm o anumită sarcină, necesitând pentru buclele lor de organizare soluție imbricate. Această sarcină este sarcina tabelării funcțiilor de mai multe variabile.
Exemplul 3. Algoritmul Construct si de a scrie un program pentru a calcula valorile z funcția = cos x + y, unde x = xn (HX) xk și = yn y (hy) yk. Argumentele funcției x, y - numere reale.
Pentru a determina valorile z pentru toate diferitele perechi (x, y), procesul de calcul necesară pentru a aranja după cum urmează. Inițial, o valoare fixă a unuia dintre argumentele, de exemplu la x = x0, calculează valorile z pentru toate set y: yn. yn + hy. ..., yn. Apoi, modificarea valorii lui x cu x + HX, din nou, du-te la un ciclu complet de variabila y. Acestea deystviyapovtorit toate x dat: xn. xn + hx. ..., xn. La implementarea acestui algoritm necesită bucle de structură imbricată: bucla externă - pentru a modifica valorile variabilei x și bucla interioară - pentru a schimba valoarea variabila y. Mai mult decât atât, în această problemă buclele interioare și exterioare pot fi inversate, cu schimbarea doar succesiunea argumentelor în funcțiile de calcul. Ca buclele interioare și exterioare pot fi utilizate cu ciclurile de parametri, cicluri cu condiție prealabilă sau postconditie.
Figura 4 - schema de algoritm Exemplul 3
Algoritmul pentru a rezolva această problemă, a făcut folosind parametrul ciclu este prezentat în Fig. 4. Programul care corespunde acestui algoritm este prezentat în Listarea 3.
static void Main (string [] args)
double xn, xk, hx, yn, yk, hy, z;
Console.Write ( "Enter xn");
Console.Write ( "Enter XK");
Console.Write ( "Enter HX");
Console.Write ( "Enter yn");
Console.Write ( "Enter YK");
Console.Write ( "Enter HY");
pentru (double x = xn; x <= xk; x += hx) // Внешний цикл
pentru (double = yn y; y <= yk; y += hy) // Внутрений цикл
Console.WriteLine ( "x =" + x + "y =" + y + "z =" + z);
EXEMPLU 4.Vychislit cu o funcție e valoarea de eroare y = cos (x), folosind cos de descompunere x într-un rând, pentru valorile lui x = xn (HX) xk.
Se calculează valoarea cos funcției x poate fi prin extinderea acestuia în următoarea ordine:
Figura 5 - Schema 4 algoritm de ex
Sarcina y calcul = cos x pentru o valoare fixă de x a fost discutată în exemplul 1. în acest caz, suma seriei S trebuie calculată pentru fiecare valoare a lui x în intervalul [xn. xk]. Prin urmare, este necesar să se utilizeze o structură de bucle imbricate. Așa cum se arată în Schema algoritmului (Figura 5.), exterior bucla - bucla pentru a modifica valorile x (un ciclu precondiție). Bucla interioară - ciclu pentru calcularea sumelor de o valoare fixă de x, cu un calcul de eroare e (ca un ciclu precondiție).
Toate cele de mai sus este implementată în programul corespunzător schemei algoritmului.
În acest caz, suma seriei S trebuie calculată pentru fiecare valoare a lui x în intervalul [xn. xk]. Prin urmare, este necesar să se utilizeze o structură de bucle imbricate. Așa cum se arată în buclă exterioară Schema algoritmului - bucla pentru a modifica valorile x (un ciclu precondiție). Bucla interioară - ciclu pentru calcularea sumelor de o valoare fixă de x, cu un calcul de eroare e (ca un ciclu precondiție).
Corectitudinea programului este evaluată prin compararea cu valoarea s = cos valoarea calculată folosind formula y (x).
Programul corespunzător este prezentat în Listarea 4.
static void Main (string [] args)
double xn, xk, hx, eps, s, t, y, f;