Циклічні обчислювальні процеси - студопедія
Більшість завдань, що вирішуються в інженерній практиці, мають циклічну структуру. Циклічний обчислювальний процес - це процес, в якому передбачено неодноразове виконання однієї і тієї ж послідовності дій при різних значеннях вхідних в них величин.
Багаторазово повторювані ділянки називають циклами. Циклічна структура дозволяє істотно скоротити обсяг алгоритму і програми. Мінлива алгоритму, яка при кожному виконанні циклу приймає нове значення, називається параметром циклу.
Для організації циклу необхідно: задати початкове значення параметра циклу; задати зміна значення параметра перед кожним новим повторенням циклу і перевірку умов закінчення повторень і перехід до початку циклу, якщо повторення не закінчені.
Існують різні типи циклів. Тип визначається за способом контролю закінчення. Для інженерних задач найбільш характерний тип арифметичній прогресії. У цих циклах параметр змінюється від заданого початкового до заданого кінцевого значення, отримуючи при кожному виконанні циклу постійне збільшення (цикл з відомим числом ітерацій).
Якщо в циклі змінюється проста змінна, то параметром циклу є ця змінна. Для змінних з індексом (масивів) параметром циклу є індекс змінної.
У контрольному завданні №3 представлені завдання циклічної структури типу арифметичної прогресії.
Розглянемо найбільш типові алгоритми циклічної структури.
Приклад 4. Заданий масив на ім'я А, що складається з 20 елементів, Ai. i = 1. 20. Скласти схему обчислення суми і твори елементів цього масиву.
При обчисленні суми використовується прийом накопичення - нове доданок додається до суми попередніх. При виконанні при кожному циклі потрібно накопичувати суму, додаючи чергове доданок до цієї суми. Для цього необхідно перед циклом задати початкове значення суми рівне 0. В даному прикладі параметром циклу буде індекс i, який змінюється від 1 до 20 з кроком рівним 1.
Той же прийом використовується і при накопиченні твори. В алгоритмічних мовах Фортран і Бейсик, якщо змінна не визначена, то їй присвоюється значення 0, отже, твір значень функції обчислюватися не буде, тому перед циклом задається початкове значення твори, рівне 1. Всередині циклу обчислюється черговий співмножник і множиться на добуток.
У відповідності зі змістом описуваних величин вибираємо ім'я змінних: для суми - S, твори - P.
Схема обчислення буде складатися з наступних символів дій.
3. Процес. Змінним S і P задаються початкові значення S = 0, P = 1.
4. Початок циклу. Вказується параметри циклу: початкове і кінцеве значення параметра i і крок циклу, рівний 1.
5. Процес. Відбувається накопичення суми S і твори P.
6. Кінець циклу по параметру i. Цикл, тобто обчислення S і P виконується до тих пір, поки параметр i менше або дорівнює кінцевому значенню. Як тільки параметр буде більше кінцевого значення, то цикл закінчується і наступним буде виконуватися друк результатів.
7. Документ. який виводить на друк обчислені суму S і твір P.
Схема обчислення представлена на рис. 4.

Мал. 4. Схема обчислення суми і твори елементів масиву.
Приклад 5. Заданий масив на ім'я Х. складається з 10 елементів, Хj. j = 1. 10. Скласти схему обчислення добутку позитивних елементів цього масиву.
Для обчислення добутку використовуємо прийом накопичення, який був докладно описаний вище. Але в даному прикладі обчислюється твір тільки позитивних елементів, тому всередині циклу потрібно виконати перевірку чергового елемента массіваХj на знак. Якщо елемент позитивний, то він множиться на твір, якщо немає - то він не розглядається.
Параметром циклу буде індекс j, який змінюється від 1 до 10 з кроком рівним 1. Зміну твори позначимо через P.
Схема обчислення буде складатися з наступних символів дій.
2. Введення масиву Хj, j = 1. 10.
3. Процес. Змінної P задається початкове значення рівне 1.
4. Початок циклу. Вказується початкове і кінцеве значення параметра циклу j і крок циклу.
5. Рішення. Черговий елемент масиву перевіряється на знак. Хj> 0?
6. Процес. обчислює твір P = P * Хj
7. Кінець циклу по параметру j. Цикл виконується до тих пір, поки параметр j менше або дорівнює кінцевому значенню, інакше цикл буде закінчений і наступним буде виконуватися Документ.
8. Документ. виводить на друк обчислене твір Р.
Схема обчислення представлена на рис. 5.

Мал. 5. Схема обчислення добутку позитивних елементів.
Приклад 6. Заданий масив Х, що складається з 20 елементів, Хi. i = 1. 20. Скласти схему обчислення суми і кількості позитивних елементів масиву.
Прийом обчислення суми S описаний в прикладі 4. той же прийом використовується і при обчисленні кількості елементів. Позначимо через k - накопичене кількість елементів. Таку змінну k називають лічильником. Перед входом в цикл k потрібно «почистити», тобто привласнити 0. І при кожному циклі збільшувати лічильник на 1.
В даному прикладі обчислюється сума і кількість тільки позитивних елементів, отже, всередині циклу потрібно зробити перевірку чергового елемента масиву Х i на знак, як це було зроблено в прикладі 5. Параметр циклу - індекс i, що змінюється від 1 до 20 з кроком 1.
Схема обчислення буде складатися з наступних символів дій.
3. Процес. Змінним S і K задаються початкові значення S = 0, K = 0.
4. Початок циклу. Задається початкове і кінцеве значення параметра i і крок циклу.
5. Рішення. Перевіряється позитивність чергового елемента масиву, тобто Хi> = 0?
6. Процес. Відбувається процес накопичення суми S і збільшення лічильника До на 1, тобто S = S + Xi. К = К + 1.
7. Кінець циклу по параметру i. Цикл повторюється до тих пір, поки параметр i менше або дорівнює 20. Якщо i більше, то наступним виконується Документ.
8. Документ. Друкуються значення S і К.
Схема обчислення представлена на рис.6
Приклад 7. Для масиву Х, описаного в прикладі 6, обчислити середнє арифметичне значення позитивних елементів.
Схема обчислення буде збігатися з попередньою до п.7. Кінець циклу.
Середнє арифметичне значення елементів - це сума цих елементів, поділена на їх кількість. Можливий такий набір даних, коли всі елементи масиву Xi мають негативне значення, тоді змінна, в якій зберігається значення кількості позитивних елементів масиву, прийме значення рівне нулю. Виникає ситуація поділу на нуль, а це системна помилка, через яку програма завершується аварійно. Для усунення поділу на нуль, перевіряється кількість цих елементів. І якщо кількість дорівнює нулю, то на друк виводиться повідомлення про це.
Позначимо середнє арифметичне значення позитивних елементів через змінну R. Схема обчислення, починаючи з п.8 складається з наступних дій.
8. Рішення. Перевірка числа елементів К = 0? Якщо Так - друк з повідомленням 'K = 0', якщо Ні - перехід на обчислення R.
9. Документ, в якому на друк виводиться повідомлення 'Позитивних елементів немає', і перехід до символу Зупинка.

Мал. 6. Схема обчислення суми і кількості позитивних елементів масиву.
10. Процес. Обчислюється R = S: K.
11. Документ, в якому друкується значення R.
Схема обчислення представлена на рис.7.
Якщо буде обчислюватися середнє арифметичне всіх елементів масиву, то в схемі не буде перевірки чергового елемента масиву на знак, тобто НЕ буде п.5 Рішення.
При обчисленні середнього арифметичного негативних елементів масиву в п.5 Рішення буде перевірка умови Хi <0? Остальные пункты останутся без изменения.
Приклад 8. Задані два масиви А i. i = 1, ..., 25 і В j. j = 1, ..., 30. Скласти схему обчислення позитивних елементів в кожному масиві. Визначити в якому масиві більше позитивних елементів.
Схема обчислення кількості позитивних елементів описана в прикладі 6. В даному прикладі потрібно обчислити кількість елементів в двох масивах А і В, що мають різні розмірності, тобто що містять різну кількість елементів. Тому потрібно організувати два циклу: перший для масиву А з параметром циклу i, другий для масиву В з параметром циклу j.

Рис.7. Схема обчислення середнього арифметичного значення позитивних елементів масиву.
Позначимо через КА-кількість позитивних елементів в масиві А, КВ-кількість позитивних елементів в масиві В.
Схема обчислення буде складатися з наступних дій.
3. Процес. "Обнулення" лічильників КА і КВ, тобто КА = 0, КВ = 0.
Пункти 4-7 організовують цикл з обробки масиву А, підраховуючи кількість позитивних елементів цього масиву. Структурно ці пункти збігаються з п.4-7 прикладу 7.
Пункти 8-11 організують цикл з обробки масиву В. Підраховується кількість позитивних елементів цього масиву. Структурно ці пункти збігаються з п.4-7 прикладу 7.
12. Документ. Друк КА і КВ.
13. Рішення. Перевірка, де більше позитивних елементів в масиві А і В. Або кількість елементів збігається? Якщо КА> КВ, то виконується п.14, якщо КА<КВ – то п.15, а если КА=КВ, то п.16.
14. Документ. Друк повідомлення 'В масиві А більше позитивних елементів'. Перехід на п.17. Зупинка.
15. Документ. Друк повідомлення 'В масиві В більше позитивних елементів'. Перехід на п.17. Зупинка.
16. Документ. Друк повідомлення 'Кількість елементів збігається'.
Схема обчислення представлена на рис.8
Приклад 9. Задано масив Yj. j = 1. 30. Знайти максимальний (найбільший) елемент цього масиву.
Знаходження максимального (найбільшого) елемента масиву виконується в циклі шляхом порівняння значення поточного елемента масиву з максимальним з усіх попередніх. При цьому якщо значення поточного елемента більше максимального з усіх попередніх, то максимуму присвоюється значення поточного елемента. Всередині циклу для вибору максимального значення використовується наступна формула.
Після закінчення циклу значення Ymax буде максимальним з усіх розглянутих значень Yj.
Для застосування зазначеної формули необхідно перед початком циклу задати початкове значення Ymax. Зазвичай в якості Ymax беруть дуже маленьке число. Тоді після першого виконання циклу Ymax прийме значення Y1. При другому виконанні циклу Ymax буде порівнюватися з Y2 і знаходиться найбільша з Y1 і Y2 і т.д.
Якщо вибирається максимальний елемент масиву, як в нашому прикладі, то в якості найбільшого значення Ymax береться значення першого елемента масиву, а в циклі пошук максимального елемента починається з другого елементу масиву.
Схема обчислення буде складатися з наступних дій.
2. Введення масиву Yj; j = 1. 30
3. Процес. Присвоєння початкового значення Ymax = Y1.
4. Початок циклу. Здається початкове і кінцеве значення параметра циклу j і крок циклу.
5. Рішення. Порівняння значення j-го елемента масиву і Ymax, т. Е. Yj> Ymax? Якщо значення Yj більше значення Ymax, то наступним буде виконуватися п. 6. Процес. Якщо - ні, то перехід на Кінець циклу.
6. Процес. Дамо Ymax значення j -го елемента
7. Кінець циклу по параметру j.
8. Документ. Друк Ymax.
Схема обчислень представлена на рис. 9.
