Цикл із постумовою do
Цикл з постумовою має вигляд:
Do оператор while вираз;
Спочатку виконується простий чи складовий оператор, утворює тіло циклу, та був обчислюється вираз (воно має мати тип bool). Якщо вираз істинний, тіло циклу виконується ще раз і перевірка повторюється. Цикл завершується, коли вираз стане рівним false або в тілі циклу буде виконано будь-який оператор передачі управління.
Цей вид циклу застосовується у тих випадках, коли тіло циклу необхідно обов'язково виконати хоча б один раз, наприклад, якщо в циклі вводяться дані та виконується їхня перевірка. Якщо ж такої необхідності немає, краще користуватися циклом з передумовою.
Приклад програми з оператором циклуdowhile
Console.WriteLine("Купи слоника, а?");
answer = (char) Console.Read();
while (answer! = 'y');
Розглянемо ще один приклад застосування циклу з постумовою - програму, що визначає корінь рівняння cos(x) =xметодом поділу навпіл з точністю 0,0001.
Вихідні дані для цього завдання - точність, результат - число, що є коренем рівняння. Обидва значення мають речовий тип. Суть методу поділу навпіл дуже проста. Задається інтервал, у якому є рівно один корінь (отже, кінцях цього інтервалу функція має значення різних символів). Обчислюється значення функції у середині цього інтервалу. Якщо воно того ж знака, що й значення на лівому кінці інтервалу, значить корінь знаходиться в правій половині інтервалу, інакше — в лівій. Процес повторюється для знайденої половини інтервалу до того часу, поки його довжина стане менше заданої точності.
У наведеній далі програмі вихідний інтервал заданий за допомогою констант, значення яких взяті зграфік функції. Для рівнянь, що мають кілька коренів, можна написати додаткову програму, яка визначає (шляхом обчислення та аналізу таблиці значень функції) інтервали, що містять рівно один корінь.
//Обчислення кореня нелінійного рівняння
double x, left = 0, right = 1;
x = (left + right) / 2;
if ((Math.Cos(x) - x) * (Math.Cos(left) - left) 10; i++, j--).
Простий або складовийоператорявляє собою тіло циклу. Будь-яка з частин оператора for може бути опущена (але крапки з комою треба залишити на своїх місцях!).
Наприклад обчислимо суму чисел від 1 до 100:
for ( int i = 1; i = 0 & x = 10 ) у = 2 * t;
Будь-який цикл while може бути приведений до еквівалентного йому циклу for і навпаки.
Наприклад, два наступні цикли еквівалентні.