Оператор циклу while. Загальна форма. Приклади рішення задач
Зміст
- 1. Призначення оператора циклу while. Загальна форма. Особливості використання
- 2. Поняття вкладених циклів while
- 3. Схема оператора циклу while
- 4. Приклади розв’язку задач з оператором циклу while
- 5. Приклади розв’язку задач, в яких оператор while є вкладеним
- Зв’язані теми
Пошук на інших ресурсах:
1. Призначення оператора циклу while. Загальна форма. Особливості використання
Оператор циклу while призначений для організації циклічного процесу, в якому кожна наступна ітерація визначається на основі істинності наперед заданої умови. Оператор циклу while ще називають оператором циклу з передумовою.
Загальна форма оператора циклу while має такий вигляд:
while (умова) оператор;
тут
- умова – деяка умова згідно синтаксису мови C#. Інструкція оператор виконується до тих пір, поки значення умова = true. Як тільки значення умова стає рівним false, то циклічний процес припиняється і виконуються наступні після while оператори;
- оператор – один або декілька операторів. Якщо у циклі while потрібно виконати декілька операторів одночасно, то ці оператори беруться у фігурні дужки { }.
Тіло циклу (оператор) виконується, поки значення умова є істинним (true). Оператор циклу повинен бути організований таким чином, щоб в кінцевому випадку значення умови стало рівним false. Інакше, програма “зависне”, тому що вийде вічний цикл.
Загальна форма оператора циклу while, в якому виконуються декілька (два і більше) операторів має наступний вигляд
while (умова)
{
оператор1;
оператор2;
...
операторN;
}
⇑
2. Поняття вкладених циклів while
Цикл while може бути вкладеним в інші конструкції. Цими конструкціями можуть бути:
- цикли for, while, do…while;
- оператор умовного переходу if;
- оператор вибору switch.
Кількість рівнів вкладення, в яких може використовуватись цикл while, є необмеженою.
⇑
3. Схема оператора циклу while
На рисунку 1 зображена схема оператора while. Як видно зі схеми, спочатку відбувається перевірка умови. Якщо значення умови рівне True, то виконується тіло циклу. Вихід з циклічного процесу відбувається у випадку, якщо значення умови стає рівне False.
Рисунок 1. Схема оператора циклу while
⇑
4. Приклади розв’язку задач з оператором циклу while
4.1. Виведення результатів обчислення в циклі
Умова задачі. Одержати таблицю температур за Цельсієм tc від -50 до +50 градусів та їх еквівалентів за шкалою Фаренгейта tf, використовуючи співвідношення
Розв’язок. Текст програми розв’язку даної задачі для додатку типу Console Application, з використанням циклу while наступний
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication3 { class Program { static void Main(string[] args) { // шкала температур Цельсій => Фаренгейт int tc; // поточне значення температури за Цельсієм double tf; // значення температури за Фаренгейтом tc = -50; Console.WriteLine("Шкала температур: Цельсій - Фаренгейт"); while (tc <= 50) { tf = 9.0 / 5.0 * tc + 32; tc++; Console.WriteLine("{0} C => {1} F", tc, tf); } } } }
⇑
4.2. Рекурентні алгоритми. Обчислення n-го члена послідовності
Умова задачі. Визначити n-й член числової послідовності (n>2):
xn=xn–1 + xn–2; x0 = x1 = 1
Розв’язок.
Текст програми рішення даної задачі наступний:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication3 { class Program { static void Main(string[] args) { // обчислення n-го члена послідовності int n; // n>2 int x0, x1, x2; int i; // ввести значення n Console.Write("n = "); n = Convert.ToInt32(Console.ReadLine()); // початкові присвоєння x0 = x1 = 1; x2 = x0 + x1; i = 1; while (i <= n - 3) // обчислення { x0 = x1; x1 = x2; x2 = x0 + x1; i++; } Console.WriteLine("{0} ", x2); } } }
У результаті виконання вищенаведеного коду буде отримано наступний результат
n = 7 13
⇑
4.3. Обчислити значення числа π з заданою точністю
Умова задачі. Обчислити значення числа π, використовуючи формулу:
Визначити, яку кількість доданків потрібно для визначення числа π з точністю 7 знаків після коми.
Розв’язок. Для розв’язку подібних задач цикл while підходить якнайкраще. Програмний код розв’язку задачі для додатку типу Console Application наведено нижче
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication3 { class Program { static void Main(string[] args) { // обчислити значення числа Пі double pi; // результат int denom; // знаменник int sign; // змінна, що змінює знак числа + на -, і навпаки double t; // додаткова змінна - поточна точність const double eps = 0.0000001; // точність 7 знаків після коми int k; // кількість доданків для отримання заданої точності // початкові приготування k = 0; pi = 0; denom = 1; sign = 1; t = 1.0 / denom * sign; // цикл while - обчислення while (t > eps) { pi = pi + 4 * t * sign; sign = -sign; // змінити знак denom += 2; // змінити знаменник t = 1.0 / denom; k++; // збільшити на 1 кількість доданків } // вивід результату Console.WriteLine("Pi = {0}", pi); Console.WriteLine("k = {0}", k); } } }
У результаті виконання вищенаведеного коду буде отримано наступний результат
Pi = 3.14159245358978 k = 5000000
⇑
5. Приклади розв’язку задач, в яких оператор while є вкладеним
5.1. Цикл while є вкладеним в оператор вибору switch
У прикладі цикл while є вкладеним в оператор вибору switch. В залежності від значення змінної a, вибирається відповідний варіант знаходження суми:
- якщо a=1, то обчислюється s = 5+10+…+100;
- якщо a=2, то обчислюється s = 5+10+…+20;
- якщо a=3, то обчислюється s = 5+10;
- інакше обчислюється s=100.
Програмний код додатку типу Console Application, який розв’язує дану задачу наведено нижче.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication3 { class Program { static void Main(string[] args) { int a; int s = 0; int i; a = 7; // вибір алгоритму рішення задачі в залежності від значення a switch (a) { case 1: i = 0; while (i < 100) { i = i + 5; s = s + i; } break; case 2: i = 0; while (i < 20) { i = i + 5; s = s + i; } break; case 3: i = 0; while (i < 10) { i = i + 5; s = s + i; } break; default: s = 100; break; } Console.WriteLine("s = {0}", s); } } }
У результаті виконання вищенаведеного коду, на екран буде виведено наступний результат:
s = 100
⇑
5.2. Цикл while є вкладеним в операторі циклу for
Умова задачі. Знайти кількість дільників кожного з цілих чисел від 120 до 140.
Розв’язок. Нижче наведено програмний код, який розв’язує дану задачу для додатку типу Console Application:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication3 { class Program { static void Main(string[] args) { // кількість дільників кожного з цілих чисел від 120 до 140 int i; int up; int t; int k; for (i = 120; i <= 140; i++) { // визначити максимально-допустиме значення дільника up = i / 2; k = 0; // кількість дільників t = 1; while (t <= up) // вкладений цикл while { if (i % t == 0) // визначення, чи дільник, чи не дільник k++; t++; } // Вивести на екран дільник Console.WriteLine("{0}: k = {1}", i, k); } } } }
У результаті виконання вищенаведеного коду, буде виведено наступний результат
120: k = 15 121: k = 2 122: k = 3 123: k = 3 124: k = 5 125: k = 3 126: k = 11 127: k = 1 128: k = 7 129: k = 3 130: k = 7 131: k = 1 132: k = 11 133: k = 3 134: k = 3 135: k = 7 136: k = 7 137: k = 1 138: k = 7 139: k = 1 140: k = 11
⇑
Зв’язані теми
- Оператор умовного переходу if. Повна та скорочена форми. Конструкція if-else-if
- Оператор вибору switch. Вкладені оператори switch
⇑