ПредишенСледващото

Нека се върнем към блок-схемата на фиг. 6. предмет на нейния цикъл е представено от блок 4. ролята променлива брояч контур I, което трябва да се променя в цикъл от 1 до N. Тъй стъпка не е посочено, по подразбиране, предназначени да 1. форма блокове линия на тялото 5 и 6.

Както се вижда от фиг.7, цикълът се състои от глава и тяло. Всеки цикъл е задължително разполага със собствен брояч.

Фиг. 8, която показва структурата и параметрите на глава цикъл, изпълнява ролята на брояч променливата аз. Вътре в брояча глава и след символът "=" запетая посочва началните и крайните стойности на брояча и промяна терена (на фиг. 8 изпълняват роля променливи J, K, L, съответно). Ако след това може да се пропусне стойността на стъпка л = л.

Фигура 7. Структурата на цикъла. Фигура 8. Структурата на заглавната част на цикъл

Вътре в брояча глава първоначално настроен на I = й. След това, на блоковете, които са тялото на цикъла. Обработка на блокове в рамките на цикъла се прави по посока на часовниковата стрелка. В резултат, след първото изпълнение на контрола линия тяло отново се прехвърля в заглавието. Тук се добавя текущата стойност на етапа на брояч. Сега, ако на новата стойност на брояча не надвишава границите (.. т.е. там вече не е окончателна стойност е положителна стъпка, или по-малко от крайната стойност - за отрицателна стъпка), а след това отново се извършва тялото на цикъла, след завръщането на заглавието на стъпка брояч на добавяне , Така че цикълът ще се изпълнява докато стойността брояч един няма да надвишава определения таван. След този срок се преодолее, ще излезете от примката и контрол се връща да блокира, че веднага следва цикъла.

Веднага след въвеждане променливата на цикъла и да се началната стойност на I = 1. След това в блок 5, проверка на позитивност на първия елемент на масива Z (напр. A. I = 1). Ако този елемент е наистина положителен, то тогава в блок B ще бъде добавен към променливата S, след което ще се върне в цикъла глава. Ако не е положителен (т.е.. Е. нула или отрицателни), тя ще скочи директно на цикъл глава, заобикаляйки сумиращата блок 6.

Във втория кръг на I заглавието линия брояч се увеличава с 1 и става равно на 2. Сега, когато нов изпълнение на тялото на цикъла в блока се проверява за 5 позитивност втори елемент на Z масив, и ако е положителен, то се добавя към сумата, и така нататък. D. Последна пъти тялото на цикъла се изпълнява когато = Н. ако тази стойност на брояча се проверява последния елемент на масива. Накрая, I се заглавието N + 1 цикъл на стойност. Тази стойност е над определения лимит, следователно, ще излезе от примката и да премине блок за управление 7. В този елемент показва натрупаната сума и алгоритъмът завърши работата.

Често алгоритмично решение на проблема, е необходимо да се създаде верига, която съдържа в тялото му още един цикъл. Такива вложени цикъла са структури вложени цикъла. Редът на цикъла гнездене, когато тялото на вътрешния цикъл съдържа и други цикли може да бъде доста голям. Тази цел се определя по метод, който се постига чрез решаването на проблема. Така например, в обработката на едномерни, като правило, е възможно да се изгради алгоритмична схема без инвестиции цикли. Въпреки това, в някои случаи, решението на тези проблеми не може без вложени цикъла.

Алгоритми с вложени цикъла

Фигура 9. сортиране алгоритъм масив

Имайте предвид, че всички вложени цикъла, включително външна, броячи, трябва да имат друго име. Извън тези цикли броячи могат да се използват като обикновени променливи или броячи на други цикли.

Пример 1. Да разгледаме едномерен масив сортиране задача Z дължина N. Филтър Array - означава да осигури неговите елементи за увеличаване или намаляване.

Ние описваме масив метод за сортиране по реда на растеж. Първо пас на масива, за да определи най-малкия елемент в него. На следващо място, пермутация на елемента с първата. Следваща се извършва второ преминаване през масива, като се започне с втория елемент. Намерено малкия елемент се прегрупира до втория и така нататък. Г. След (N-1) то преминава към изпълнението на тези операции ще бъдат сортирани масива.

Блокова схема на сортиране алгоритъм е показано на фиг. 9. Той се състои от 12 блока. След стартиране на блок 2 и масива на N променлива Z пълни константи. След това, в блок 3 условие се проверява за това дали трябва да се сортира масива.

Това се свежда до установяване на наличието на няколко елемента в масива, т.е.. К. Един единствен елемент на масива винаги се сортира. Ако се установи този факт, тогава алгоритъмът продължава към сортиране. сортиране процедура се извършва в една линия, която обединява блокове 4-10. Тялото на този цикъл съдържа още един контур, който се образува от блокове 6-8. Назначението му ще стане ясно от следния разбор алгоритъм.

След въвеждане на външния контур своя брояч и е 1, че в нашия метод включва първо преминаване през масива.

Референтен сега ще се правят от 5-10 блокове, представляващи външното тяло на цикъла. В блок 5 има две допълнителни променливи V и L. Първият от тях е да се определи най-малкия елемент, а вторият - за съхраняване на индекса. Тъй като аз = 1, тогава първото преминаване в блок 5 V приема стойността на първия елемент, и стойността L на 1. След това, вътрешният контур, образуван от блокове 6-8, където ще промени брояч J от 2 до N, последователно сравнява съответния Z елементи на масива с V. променливата стойност в този случай всеки път е намерена по-малък от елемент V, V стойност се заменя със стойността на елемента, и променливата L ще се определя индекса. Разбираемо е, че след вътрешния контур променлива V ще съдържа стойност, равна на най-малкия елемент, и L - индексът на този елемент. В блок 9 допълнителни проверява дали най-малкия елемент на първия елемент масив или не. Ако не, тогава в блок 10 на мястото на най-малкия елемент (неговия номер L) е написан първият (т.е. първото преминаване към L = 1 ..), както и мястото на първия елемент - най-малката (тя е равна на V). След това, управлението ще се върне към цикъл заглавието на външния блок 4. Това ще бъде равна на стойността брояч I = 2.

След това отново се извършва тялото му, но този път за новата стойност на брояча аз. Сега чрез блокове 5-10-малкия елемент на масива се търси, като се започне с броя 2. След това, в блок 9-10 то се провежда през втората масива, и така нататък. Г. Когато външния контур и се изпълнява (N-1) пъти на масива е сортиран.

В блок 12 на сортирани масива ще бъдат показани в блок 13 и алгоритъмът ще завърши работата си.

Алгоритми с вложени цикъла често се използват при решаване на двуизмерни задачи обработка масив. В такива алгоритми броячи цикъл се използват за манипулиране на индекса на масива.

Пример 2 е дадена двумерен квадратен масив Z, състояща се от N реда и N колони. Необходимо е да се намери на средната аритметична стойност на S и неговите отрицателни елементи заменят положителни вторични диагоналните елементи на аритметика на масива означава S.

Алгоритми с вложени цикъла

Фиг. 10. Схемата

Схемата, показана на Фиг. 10. Тя се състои от 13 блока. В блок 2 на променливата N и Z попълва цели константи масив. В блок 3, оперативни променливи S и K се дава стойността на нула. променлива S Първият ще играе ролята на ехидна отрицателни елементи в масива, а след това след натрупването на сумата, която ще отчита стойността на средната аритметична стойност. Променливата К е необходим за преброяване на броя на отрицателни елементи в масива.

В блокове 4-7 се извършва натрупване количество отрицателни елементи в масива.

Тези блокове образуват два вложени цикъла, вътрешен контур където брояч J е тялото на външния контур с брояч и. Анализирайте работата на тази структура.

След въвеждане на външна единица линия 4, променливата и се стойността I = 1. След това, тялото ще бъде изпълнена (блокове 5-7), което от своя страна, е един цикъл. След въвеждане на вътрешния контур в Блок 5, променливата J заема стойност J = 1. Тогава, в блок 6 се проверява за отрицателните елементи на Z масив, разположен в първия ред и първата колона, т.е.. За. I = 1 и J = 1.

Ако е отрицателен, тогава в блок 7 променливи увеличава К от 1, и S се добавя към стойността на този елемент. След връщане е да блокира 5, т.е.. Д. Към глава на вътрешния контур. Тук й се увеличава с 1 става равен J = 2 и контрол преминава към блок 6. се проверява член престояване още в същата първа линия, но във втората колона (I = 1, J = 2). Ако е отрицателен, тогава К отново се увеличи с 1, и от този момент натрупаната добавена стойност S на елемента и т.н. .. Когато вътрешния цикъл се изпълнява напълно, т.е. променлива й "ще работи" от 1 до N, на променливата S натрупаната сума от всички отрицателни елементи в масива на първия ред, и К - техния брой. Сега контролът се предава на блок 4, външният контур заглавието, където става равна на I = 2. Отново ще бъде изчислена тяло, т.е.. Е. цикъл 5-7. Когато тази стойност се намира вече отрицателни елементи от първия масив от два реда и К остане в броя на тези елементи. Когато изпълнен цялата външна линия, S е константа, равна на сумата от всички отрицателни елементи на масива, и К - броят им. Сега, контрол преминава към блок 8. Ако се окаже, че има отрицателни елементи в масива (К> 0), тогава в блок 9 се изчисляват като средната аритметична стойност на съотношението на елементите на техния брой. Резултатът се поставя като една и съща променлива S. Забележете, че ако не е имало проверка на единица 8, ще бъде допусната грешка при К = 0 (в масива са няма отрицателно елемент) в блока 9 поради разделянето на нула. Тази грешка доведе до срив преди края на алгоритъма за изчисление.

По-нататък, изпълнен блокове 10-11, което също образува примка. Тя включва елементи за обмен случайни на средната аритметична стойност на диагоналните S (вторичен диагонал праволинейна верига на клетки е в диапазона от долния ляв ъгъл до горния десен ъгъл на масива). Моля, обърнете внимание на факта, че променливата I, който е бил използван преди това, за да се спаси памет се използва отново.

Нека разгледаме действието на този цикъл. При влизане в блок 10 се брояч стойност I = 1. Тогава, в блок 11 на тази стойност се изчислява индекс колона точка N - 1 + I = Н. По този начин, елементът с индекси (1 N) става равна на S. Във втория кръг на цикъл и се увеличава с 1 и се превръща в I = 2. е лесно да се види, че сега елемент (2, М-1) става равна на S и т. д. на елемент цикъл последната обиколка (N, 1) получи стойност S, който изгражда промяна на стойностите всички елементи на вторичния диагонал средноаритметичните стойности S.

И накрая, в блок 12 модифицираната масива ще бъдат показани в блок 13 и алгоритъмът завърши работата.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!