Оператор цикла 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
⇑