
- •Операторы цикла
- •Инструкция goto
- •Инструкция for
- •Использование нескольких управляющих переменных цикла
- •Использование переменных цикла c любым шагом их изменения
- •Инструкция while. . Цикл с предусловием
- •Инструкция do - while Цикл с постусловием
- •Накопление сумм и произведений
- •Безусловные переходы
- •Инструкция foreach
Инструкция do - while Цикл с постусловием
Цикл с инструкциейdo . . while используется в том случае, если последовательность действий надо выполнить несколько раз, причем количество повторений заранее не известно и может быть определено во время работы программы.
Относится к итерационнымпроцессам.
В этом виде цикла условие стоит после тела цикла, поэтому этот цикл называют с постусловием. Тело цикла повторяется, пока выполняется условие. Тело цикла первый раз выполняется без проверки условия. Выход из цикла при не выполнении условия.
Эта
циклическая инструкция работает по
принципу: «Повторить — пока выполняется
условие».
Ее синтаксис выглядит следующим образом:
do
{
Инструкции тела цикла;
}
while (Условие);
Пример. Программа использует цикл, в котором в консоль выводится последовательность чисел.
static
void Main(string[] args)
{
int i = 0;
do
{
Console.WriteLine("i = {0} ", i);
i = i + 1;
}
while (i < 10);
Console.ReadKey();
}
Инструкция do…while выполняется следующим образом:
Сначала выполняются находящиеся между do…while инструкции тела цикла.
Затем вычисляется значение выражения условия.
Если значение выражения условия истинно (True), то инструкции тела цикла выполняются еще раз.
Если значение выражения условия ложно (False), то выполнение цикла прекращается и выполняется следующий оператор, предусмотренный ходом выполнения программы.
Цикл do…while используется для организации приближенных вычислений с заданной точностью, задач поиска и обработки данных в массиве или в файле.
Задача7.
Вычислить наибольшее положительное
целое число n,
удовлетворяющее условию: 3n5
- 690n
7.
static void Main(string[] args)
{
int n = 1;
do n = n + 1;
while (3 * Math.Pow(n, 5) - 690 * n <= 7);
Console.WriteLine("n = {0 } ", n - 1);
Console.ReadKey();
}
Задача8. Написать программу, вычисляющую сумму и среднее арифметическое последовательности положительных чисел, которые вводятся с клавиатуры.
static
void Main(string[] args)
{
int s = 0, a = 0, n = 0; double m;
Console.WriteLine("Введите положительные числа");
Console.WriteLine("Для выхода из цикла введите 0");
do
{
s = s + a;
Console.Write(">> ");
a = Convert.ToInt16(Console.ReadLine());
n = n + 1;
}
while (a > 0);
n = n - 1;
Console.WriteLine("n = {0} ", n);
Console.WriteLine("s = {0} ", s);
m = s / n;
Console.WriteLine("m = {0,5:f} ", m);
Console.ReadKey();
}
Накопление сумм и произведений
Задача9. Написать программу вычисляющую сумму и произведение чисел от 1 до 10.
Рассмотрим процесс накопления Sсуммы иPпроизведения чисел от 1 до 10.
Накопление
суммы Накопление
произведения
Блок схема и программа накопления SиP:
static void Main(string[] args)
{
int s, p, i;
s = 0;
p = 1;
for (i = 1; i <= 10; i++)
{
s = s + i;
p = p * i;
}
Console.WriteLine("Сумма 10 чисел=" + s);
Console.WriteLine();
Console.WriteLine("Произведение 10 чисел=" + p);
Console.ReadKey();
}
Программные блоки не снижают динамику выполнения программ. Наоборот, их наличие позволяет в одном цикле вычислить как сумму, так и произведение.
Для вывода всех частичных сумм и произведений их вычисления надо поместить в блок тело цикла.
static void Main(string[] args)
{
int s, p, i;
s = 0;
p = 1;
for (i = 1; i <= 10; i++)
{
s = s + i;
Console.WriteLine("Сумма "+ i + " чисел=" + s);
p = p * i;
Console.WriteLine("Произведение " + i +
" чисел=" + p);
Console.WriteLine();
}
Console.ReadKey();
}
Задача10. Написать программу вычисляющую сумму членов ряда:
t=sin(x*1)+ sin(x*2)+ sin(x*3)+ sin(x*4)+ sin(x*5)
t0 = 0
t1 = t0 + sin(x*1)
t2 = t1 + sin(x*2)
t3 = t2 + sin(x*3)
t4 = t3 + sin(x*4)
t5 = t4 + sin(x*5)
static void Main(string[] args)
{
int n; double x = 0.5, t=0;
for (n = 1; n <= 5; n++)
t =t + Math.Sin(x*n);
Console.WriteLine("Сумма членов ряда = {0:#.###}", t );
Console.ReadKey();
}
Задача11. Написать программу вычисляющую произведение членов ряда:
v=cos2(x*2)
* cos2(x*3)
* cos2(x*4)
* cos2(x*5)
* cos2(x*6)
v0
=
1
v1 = v0 * cos2(x*2)
v2 = v1 * cos2(x*3)
v3 = v2 * cos2(x*4)
v4 = v3 * cos2(x*5)
v5 = v4 * cos2(x*6)
static void Main(string[] args)
{
int k; double x = 0.5, v=1;
for (k = 2; k <= 6; k++)
v = v * Math.Pow(Math.Cos(x*k),2);
Console.WriteLine("Произведение членов ряда = {0:#.######}", v);
Console.ReadKey();
}
Задача12. Написать программу
вычисляющую функцию:
W=12*(1
+ 2 + 3
+ 4 + 5 + 6 + 7+ 8)*
22*(1
+ 2 + 3
+ 4 + 5 + 6 + 7+ 8)*
32*(1
+ 2 + 3
+ 4 + 5 + 6 + 7+ 8)*
42*(1
+ 2 + 3
+ 4 + 5 + 6 + 7+ 8)*
52*(1
+ 2 + 3
+ 4 + 5 + 6 + 7+ 8)*
static void Main(string[] args)
{
int a=1,b=1,s=0,w=1;
for (a = 1; a <= 5; a++)
{
s=0;
for (b = 1; b <= 8; b++)
s = s + a*a * b;
w = w * s;
}
Console.WriteLine("w = {0}", w);
Console.ReadKey();
}