Цикли з невідомим числом повторень - студопедія

При вирішенні деяких завдань може виникнути ситуація, коли неможливо заздалегідь визначити кількість повторень обчислень. У таких випадках мова йде про циклах з невідомим числом повторень.

У циклах з невідомим числом повторень обчислювальний процес завершується при виконанні деякої додаткової умови. Значення параметра циклу вже не задається у вигляді діапазону, а тільки вказується його початкове значення і крок зміни. Проте, організація циклу виконується за стандартною методикою, зазначеної в п. 4.1. Відмінність полягає в тому, що не будь-який тип циклічного обчислювального процесу можна використовувати. Тип циклу визначається відповідно до заданого додатковою умовою завершення обчислень. Це однозначно виключає можливість використання циклу «Для» на основі блоку модифікації. Для визначення кількості кроків повторення циклу необхідно організувати лічильник.

Приклад 4.3. Скласти блок-схему алгоритму, що обчислює значення функції у = ln (1 + 0.2 # 8729; x). при різних значеннях параметра х. мінливого від xn ≤ 3 з кроком hx = -2. При цьому обчислювати у доти, поки вираз під знаком логарифма залишається більше 0. Визначити кількість (k) обчислених значень y.

Перед рішенням завдання необхідно визначити тип циклу, який буде використовуватися. Обчислюється вираз містить «аномалію» (значення під знаком логарифма повинно бути більше 0), яка в той же час є умовою завершення обчислень. Іншими словами, необхідно спочатку перевірити можливість обчислення значення у. а тільки потім обчислювати його. Тому в даному випадку для організації обчислювального процесу можна використовувати тільки цикл з передумовою (рис. 4.3).

В якості вихідних даних вводяться значення змінних хn, hx (блок 2). У блоці 3 задаються початкові значення для параметра циклу x і лічильника кількості повторень циклу k. Після цього, в блоці 4 одночасно перевіряються умова продовження циклу і можлива «аномалія» (вираз під знаком логарифма повинно бути більше 0). У тілі циклу для поточного значення х обчислюється і виводиться відповідне значення у (блоки 5-6), а також збільшується значення лічильника обчислених у (блок 7). В кінці тіла циклу виконується перехід до наступного значення параметра циклу х (блок 8). Цикл працює до тих пір, поки під знаком логарифма чи не з'явиться вираз ≤ 0. Після виходу з циклу в блоці 9 виводиться змінна k - кількість обчислених значень у.

Результати покрокового виконання циклу в алгоритмі, наведеному на рис. 4.3, представлені в таблиці 4.3.

Таблиця 4.3. Покрокове виконання циклу

Поточне значення х (на початку циклу)

Рішення деяких задач вимагає виконання перебору значень не однієї, а кількох величин одночасно. У цьому випадку мова йде про застосування вкладених циклів. кожен з яких організовується за стандартним принципом (може бути будь-якого з трьох типів) і здійснює перебір тільки одного параметра. При цьому перший цикл називається зовнішнім, а вкладені в нього - внутрішніми. Причому один і той же цикл може бути зовнішнім по відношенню до одного і внутрішнім по відношенню до іншого циклу. Межі внутрішнього циклу не можуть виходити за межі зовнішнього по відношенню до нього циклу.

Для кожного значення параметра зовнішнього циклу відбувається перебір всіх можливих значень параметра внутрішнього циклу. Іншими словами, завжди виконується в першу чергу самий внутрішній цикл. Така організація циклів дає можливість перебрати значення їх параметрів у всіх можливих комбінаціях.

Приклад 4.4. Скласти блок-схему алгоритму, що обчислює значення функції у = a - 2 # 8729; b. для всіх можливих комбінацій значень параметрів a і b. що належать інтервалам 0 ≤ a ≤ 2, ha = 1 і -2 ≤ b ≤ 2. hb = 2, відповідно. Визначити середнє арифметичне (S) обчислених значень y.

Для вирішення поставленого завдання необхідно організувати два вкладених циклу по перебору параметровa і b. При цьому кожен цикл є циклом з відомим числом повторень, т. К. Заздалегідь можна обчислити кількість значень a із заданого інтервалу (Na =] (2 - 0) / 1 [+ 1 = 3) і кількість значень b із заданого інтервалу (Nb =] (2 - (-2)) / 2 [+ 1 = 3), а отже і загальна кількість обчислених значень y (N = Na × Nb). Значить, для організації циклів можна використовувати будь-який з трьох стандартних типів.

Крім цього y одночасно залежить від двох параметрів a і b. тому не має принципового значення з якого параметру робити зовнішній цикл, а з якого - внутрішній (зовнішнім може бути цикл по параметру a. а внутрішнім - по параметру b. і навпаки). У разі ж якщо одна з обчислюваних величин залежить тільки від одного параметра, то цикл за цим параметром раціонально зробити зовнішнім і обчислювати величини, що залежать тільки від цього параметра в зовнішньому циклі. Така організація дозволить уникнути багаторазового обчислення одних і тих же значень у внутрішньому циклі.

На малюнку 4.4 представлена ​​блок-схема алгоритму, в якій для вирішення поставленого завдання, використовується два вкладених циклу: зовнішній цикл з передумовою по параметру a і внутрішній цикл з умовою поста по параметру b.

Робота алгоритму починається з введення вихідних даних (блок 2), які представляють собою початкові, кінцеві значення і крок зміни параметрів a і b з заданих інтервалів. На етапі підготовки до виконання зовнішнього циклу (блок 3) параметру циклу a присвоюється початкове значення an. а також обнуляються змінні S і k. використовувані для зберігання суми і кількості обчислених значень y.

Тіло зовнішнього циклу з передумовою включає блоки 4-11. Якщо поточне значення a не виходить за праву межу інтервалу (блок 4), то відбувається виконання тіла зовнішнього циклу, яке включає в себе внутрішній цикл. У блоці 5 відбувається підготовка до виконання внутрішнього циклу, його параметру b присвоюється початкове значення bn.

Тіло внутрішнього циклу з умовою поста включає блоки 6-10. У блоці 6 обчислюється поточне значення y. а в блоці 7 відбувається висновок обчисленого y і відповідних йому значень a і b. У блоці 8 отримане значення у додається до суми S і збільшується значення лічильника обчислених у. Потім відбувається зміна параметра внутрішнього циклу b на значення кроку hb (блок 9) і виконується перевірка умови виходу з внутрішнього циклу (блок 10).

Якщо поточне значення b не перевищує кінцевого bk. то відбувається повернення на початок внутрішнього циклу і повторюється обчислення y при новому значенні b. У той же час значення параметра зовнішнього циклу a залишається незмінним. Таким чином, при одному значенні параметра зовнішнього циклу відбувається перебір всіх значень параметра внутрішнього циклу.

Після виходу з внутрішнього циклу в блоці 11 відбувається зміна параметра зовнішнього циклу a на значення кроку ha. Потім виконується перехід на початок циклу (блок 4) і повторюються описані вище дії, поки не завершить роботу зовнішній цикл. Після виходу з зовнішнього циклу в блоках 12-13 обчислюється і виводиться S - середнє арифметичне обчислених значень y.

Результати покрокового виконання циклів в алгоритмі, наведеному на рис. 4.4, представлені в таблиці 4.4.

Таблиця 4.4. Покрокове виконання алгоритму з вкладеними циклами

Поточне знач. a (на початку циклу)

Слід також звернути увагу на те, що початкове значення параметра внутрішнього циклу b необхідно ставити кожного разу перед початком виконання вкладеного циклу (блок 5), тобто всередині зовнішнього циклу. Якщо це буде зроблено одночасно із завданням початкового значення для параметра зовнішнього циклу a (блок 3), то внутрішній цикл виконається тільки при початковому значенні a. На цьому алгоритм завершить свою роботу і, отже, не будуть перебрані всі можливі комбінації значень a і b.

Схожі статті