Algoritmusok ágyazott hurkok

Térjünk vissza a blokk diagram látható. 6. A téma az ő ciklus blokk által reprezentált 4. Az szerepet játszott a változó az i ciklusszámláló, amelynek meg kell változtatni a ciklus 1 és N. lépés óta nincs megadva, az alapértelmezett azt jelentette, hogy 1. A hurok test formáját 5 és 6 blokkok.

Amint a 7. ábrán a ciklus egy fejlécet és egy test. Minden ciklus szükségszerűen saját számlálója.

Ábra. 8, ami azt mutatja, a szerkezetét és paramétereit egy fejléc ciklus, elvégzi a szerepe a számláló i változó. Bent a fejléc számláló, és miután a „=” szimbólum egy vessző jelzi, kezdeti és végső értékei a számláló és változása pitch (ábra. 8. szerepüket változó j, k, l -kal). Ha az érték a lépésben L = l, akkor el is hagyható.

7. ábra. A szerkezet a ciklus. 8. ábra. A szerkezet a ciklus fejlécében

Bent a fejléc számláló kezdeti beállítása i = j. Ezután a blokkokat alkotó hurok testet. Feidolgozőblokk hurkon belül készül az óramutató járásával megegyező irányban. Ennek eredményeként az első A ciklus végrehajtása test ismét kontroll át a fejlécet. Itt az aktuális számláló értékét lépésben adjuk hozzá. Most, ha az új számláló értéke nem haladja meg a határértékeket (.. Azaz, már nem volt a végső érték egy pozitív lépés, vagy kevesebb, mint a végső érték - negatív lépés), majd ismét végre a ciklus törzse után visszatér a címet a számláló hozzáadott lépés . Így a ciklus kerül végrehajtásra, amíg a számláló értéke egy nem haladja meg az előírt határértéket. A korlát leküzdése, akkor kilép a hurok, és a vezérlés visszakerül blokkolni után következő ciklusban.

Közvetlenül azután, hogy belépett a ciklusváltozó i, hogy a kezdeti érték i = 1 Ezután az 5 blokk, egy csekket pozitivitás az első elem a tömb Z (azaz. A. I = 1). Ha ez az elem valóban pozitív, akkor a B blokk akkor hozzá kell adni az S változó, ami után vissza fog térni a fejléc ciklust. Ha ez nem pozitív (azaz. E. Nulla vagy negatív), akkor ugrik közvetlenül a fejléc ciklus, megkerülve az összegző egység 6.

A második körben a i ciklusszámláló cím nőtt 1 és egyenlővé válik 2. Most, amikor egy új A ciklus végrehajtása test a blokkban ellenőrizzük 5 pozitivitás második eleme a tömb Z, és ha az pozitív, ez hozzáadódik az összeg, és így tovább. D. Utolsó szer a hurok test fut, ha i = N. ha ezt az értéket a számláló van jelölve az utolsó eleme a tömb. Végül, az i értéket veszi N + 1 ciklus fejléc. Ez az érték meghaladja az előírt határértéket, ezért kilép a hurok, és adja át vezérlőegység 7. Ebben az egységben jeleníti meg a kumulált és az algoritmus befejezi a munkát.

Gyakran előfordul, hogy az algoritmikus megoldás a probléma, hogy létre kell hozni egy hurkot, amely tartalmazza a testében egy másik ciklus. Az ilyen beágyazott hurok olyan struktúrák egymásba ágyazott hurkok. Az, hogy a fészkelő ciklus, amikor a test a belső hurok tartalmaz más ciklusokkal lehet elég nagy. Ez a sorrend határozza meg olyan módszer, amely révén érhető el a megoldást a problémára. Például a feldolgozó a egydimenziós tömbök, mint a szabály, akkor lehet építeni egy algoritmikus rendszer nélkül beruházások ciklus. Ugyanakkor bizonyos esetekben a megoldás az ilyen problémákra nem nélkülözheti ágyazott hurkok.

Algoritmusok ágyazott hurkok

9. ábra. rendezési algoritmusnak tömb

Megjegyezzük, hogy az összes beágyazott hurok, egy külső, számlálók kell egy másik nevet. Kívül ezek a ciklusok számlálók lehet használni, mint a rendszeres változók vagy számlálók más ciklusban.

Példa 1. Tekintsünk egy egydimenziós tömb rendezési feladatot Z hossza N. szűrő Array - azt jelenti, hogy gondoskodjon annak elemeit annak érdekében, növekvő vagy csökkenő.

Leírunk egy tömb rendezési módszert annak érdekében növekedés. Először egy átmennek a tömb meghatározása érdekében a legkisebb elem benne. Ezután a permutáció az elem az első. Következő végezzük egy második áthaladásra a tömb, kezdve a második elem. Talált legkisebb elemet átrendeződik, hogy a második, és így tovább. D. Miután a (N-1) -edik át a végrehajtása e műveletek lenne rendezve tömb.

A blokkdiagramja a rendezési algoritmus ábrán látható. 9. Ez áll 12 blokkokat. Elindítása után a blokk 2, és a tömb N Z változó töltve állandók. Ezután a 3 blokk állapotban van jelölve, hogy szükség van-e rendezni a tömböt.

Ez csökken fennállásának megállapításához több a tömb elemeinek, azaz a. K. Egy elem a tömb mindig rendezve. Ha ezt a tényt létre, akkor az algoritmus továbblép válogatás. rendezési eljárás lefut egy hurokban, amely egyesíti blokkok 4-10. A szervezet ennek ciklus tartalmaz egy másik hurok van, amelyet blokkok 6-8. Kinevezése világos lesz a következő elemzési algoritmust.

Miután belépett a külső hurok a számlálót 1-be, hogy a mi a módszer egy első áthaladnak a tömbben.

Hivatkozni fogunk tenni 5-10 blokkok alkotó külső hurok teste. A blokk 5 két segédváltozókat V. és L. Ezek közül az első az, hogy rögzítse a legkisebb elemet, és a második - tárolja a index. Mivel i = 1, akkor az első lépésben, az blokk 5 V értéket veszi fel az első elem, és az L értéke 1. Ezután a belső hurok által alkotott blokk 6-8, ahol ez meg fogja változtatni a számláló j 2 és N, egymást követően összehasonlítja a mindenkori Z elemeit a tömb a változó érték V. ebben az esetben minden alkalommal található kisebb, mint az elem v, V értéket helyébe a elem értékét, és a variábilis L lesz meghatározva az index. Magától értetődik, hogy miután a belső hurok változtatható V fog tartalmazni az értéke egyenlő a legkisebb elemet, és az L - az index ennek az elemnek. Az egység 9 továbbá megvizsgálja, hogy a legkisebb elem az első tömb elem. Ha nem, akkor a 10 blokkban helyett a legkisebb elem (száma L) van írva az első (azaz az első menetben, hogy L = 1 ..), és az a hely az első tag - a legkisebb (ez egyenlő V). Ezt követően, a vezérlés visszatér a ciklus fejléc a külső blokk 4. egyenlő lesz a számláló értékét i = 2.

Aztán megint végre a testét, de ezúttal az új számláló értékét i. Most keresztül blokkok 5-10 legkisebb eleme a tömb keresett, kezdve a 2-es szám Ezután 9-10 blokk megy végbe a második tömb, és így tovább. D. Ha a külső hurok végrehajtódik (N-1) -szer a tömb rendezve.

A 12. rovatban a rendezett tömb lesz látható 13 blokk, és az algoritmus befejezi munkáját.

Algoritmusok ágyazott hurkok gyakran használják megoldásában a kétdimenziós tömb feldolgozási feladatokat. Ilyen algoritmusok ciklus számláló használják manipuláció az index.

2. példa kap egy kétdimenziós négyzetes elrendezés Z, amely a nitrogén- sorból és n oszlopból. Meg kell találni a számtani középértékét S és negatív elemeket cserélni pozitív szekunder diagonális elemei a tömb számtani közép S.

Algoritmusok ágyazott hurkok

Ábra. 10. A folyamatábra

A folyamatábra ábrán látható. 10. Ez áll 13 blokkokat. A 2. blokk az n változó és Z kitöltve a teljes tömb konstans. Blokkban 3, a működési változók S és a K van hozzárendelve a nulla értéket. A változtatható S először játszani a szerepét egy összeadó negatív elemek a tömbben, majd miután a felhalmozódása az összeg ez lesz az érték a számtani átlaga. A k változót a szükséges megszámoljuk a negatív elemeket a tömbben.

A blokkok 4-7 végezzük felhalmozódó mennyisége negatív elemek a tömbben.

Ezek a blokkok képezik a két beágyazott hurok, egy belső hurok, ahol a számláló j értéke a test a külső hurok i számlálót. Elemzése az e struktúrát.

Miután belépett a külső hurok 4 egység, a i változó értékét veszi i = 1. Továbbá, a test kerül végrehajtásra (blokkok 5-7), amely viszont, egy ciklus. Miután belépett a belső hurok a Block 5, a variábilis J értéket veszi J = 1. Ekkor, a blokk 6 ellenőrizzük a negatív elemeket a tömb Z, található az első sorban és első oszlop, azaz. Hogy. I = 1, és j = 1.

Ha ez negatív, akkor a blokkban 7 változó K 1-gyel növekszik, és az S adunk az értékét ezt az elemet. Ezt követően, a visszatérés következik az 5 blokknak, azaz. E. A fejléc a belső hurok. Itt, j 1-gyel növekszik egyenlővé válik J = 2, és a vezérlés a blokk 6. ellenőrizzük tagja Állandó még mindig ugyanaz az első sorban, de a második oszlopban (i = 1, j = 2). Ha ez negatív, akkor K ismét nőtt 1, és ez alkalommal a felhalmozott hozzáadott értéket S az elem, stb .. Amikor a belső hurok végrehajtódik teljesen, azaz változó j „fog futni” 1-től N, hogy a variábilis S felhalmozódott összegét az összes negatív a tömb elemeinek az első sor, és a K - számuk. Most vezérlés átkerül a 4 blokk, a külső hurok fejléc, ahol i egyenlő lesz i = 2 Itt ismét ki kell dolgozni a test, azaz a. E. Cycle 5-7. Ha ezt az összeget talált már negatív elemei az első tömb két sor és a K maradnak száma ezeket az elemeket. Amikor végre a teljes külső hurok, S egy állandó összegével egyenlő az összes negatív elemeket a tömb, és a K - számuk. Most, vezérlő blokkhoz kerül 8. Ha úgy tűnik, hogy vannak negatív a tömb elemeinek (K> 0), akkor a blokk 9 számított számtani átlaga az arány a elemek számuk. Az eredmény kerül, mint az azonos változó S. Megjegyzendő, hogy ha nem volt ellenőrző egység 8, lenne hiba történt a K = 0 (a tömbben nincsenek negatív elemet) a blokk 9 miatt nullával osztani. Ez a hiba vezetett, hogy összeomlik vége előtt a számítási algoritmus.

További végrehajtott blokkok 10-11, amely szintén hurkot képez. Ez magában foglalja a hőcserélő elemek járulékos számtani középértéke az átlós S (másodlagos átlós egyenes vonalú lánc sejtek közötti tartományban van a bal alsó, hogy a jobb felső sarokban a tömb). Felhívjuk figyelmét, hogy az i változó, amelyet korábban használt annak érdekében, hogy mentse a memória újra használható.

Nézzük a működését ebben a ciklusban. Amikor belép a 10 egység veszi számláló értéke i = 1. Ekkor, a blokk 11 ezen az értéken kiszámításra kerül oszlop index elem N - 1 + i = N. Tehát, az elem indexek (1, N) egyenlő S. A második fordulóban a ciklus i nőtt 1 és válik i = 2 akkor könnyen belátható, hogy most már az elem (2, N-1) egyenlő s és t. d. az utolsó körben elem ciklus (N, 1) kap az érték S, amely befejezi a változó értékek valamennyi elemét a másodlagos átlós számtani átlag S.

Végül a 12. rovatban a módosított tömb lesz látható 13 blokk, és az algoritmus befejezi a munkát.

Kapcsolódó cikkek