- •1 Понятие цикла. Виды циклических структур
- •2 Оператор цикла с предусловием
- •While (логическое выражение) оператор
- •3 Оператор цикла с постусловием
- •Do оператор while (логическое выражение)
- •4 Задания для самостоятельной работы:
- •5 Оператор цикла с параметром
- •For (инициализация; логическое выражение; модификации) оператор;
- •6 Индивидуальные задания
3 Оператор цикла с постусловием
Формат оператора do:
Do оператор while (логическое выражение)
где: do, while – служебные лексемы; логическое выражение – это выражение типа bool; оператор – один любой оператор языка (тело цикла).
Суть работы оператора: сначала выполняется оператор (тело цикла), затем вычисляется значение логического выражения, если оно true, то снова выполняется тело цикла и т.д.; как только значение логического выражения становится false оператор цикла заканчивает свою работу.
Примечание 2: если по условию задачи в теле цикла требуется выполнить два и более операторов, то их необходимо заключить в блок, т.е. в фигурные скобки.
Пример 3. Написать программу, вычисляющую факториал натурального числа n, введенного с клавиатуры.
Примечание 3: факториал числа n – произведение всех натуральных чисел, предшествующих данному n, включая само число n, т.е.:
Представим программу, реализующую алгоритм решения данной задачи. Самостоятельно сформировать комментарии к программе.
static void Main(string[] args)
{
Console.WriteLine("Введите значение n");
string s = Console.ReadLine();
int i = 1, n = Convert.ToInt32(s);
long f = 1;
do
{
f *= i;
i += 1;
} while (i <= n);
Console.WriteLine("Значение {0}! = {1}", n, f);
}
4 Задания для самостоятельной работы:
Вычислить:
|
где начальные значения а=0,14х, а шаг ∆а=0,22. |
Вычислить:
|
|
|
5 Оператор цикла с параметром
Формат оператора for:
For (инициализация; логическое выражение; модификации) оператор;
где: for – служебная лексема; инициализация – часть оператора цикла, предназначенная для объявления переменных цикла и присваивания им начальных значений (может быть инициализировано несколько переменных, разделенных запятой), логическое выражение – это выражение типа bool; модификации – часть оператора цикла, предназначенная для описания операций (операторов) изменения параметров цикла (несколько операторов отделяются запятой), оператор – один любой оператор языка (тело цикла).
Суть работы оператора: сначала присваиваются начальные значения переменным (происходит инициализация), затем вычисляется значение логического выражения, если оно true, то выполняется оператор (тело цикла), затем происходит изменение параметров цикла, описанное в части модификации и снова вычисляется значение логического выражения, если оно true, то опять выполняется тело цикла и т.д.; как только значение логического выражения становится false оператор цикла заканчивает свою работу.
Примечание 4: если по условию задачи в теле цикла требуется выполнить два и более операторов, то их необходимо заключить в блок, т.е. в фигурные скобки.
Примечание 5: цикл с параметром реализуется также как цикл с предусловием, т.е. тело цикла выполняется пока истинно логическое выражение.
Рассмотрим использование данного оператора при решении задачи Пример 3. Представим программу, реализующую алгоритм решения данной задачи (см. Примечание 3). Программа стала значительно короче. Самостоятельно сформировать комментарии к программе.
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите значение n"); //1
string s = Console.ReadLine(); //2
int n = Convert.ToInt32(s); //3
long f = 1; //4
for (int i = 1; i <= n; i +=1 ) f *= i; //5
Console.WriteLine("Значение {0}! = {1}", n, f);//6
}
}
}
Пример 3. Рассмотрим решение задачи (п. 4 наст. лабораторной работы, задание 3б). Написать программу, вычисляющую произведение выражений для параметра k, изменяющегося от 1 до натурального числа n.
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите натуральное число n");
string s1, s = Console.ReadLine();
int n = Convert.ToInt32(s);
Console.WriteLine("Введите вещественное число x");
s1 = Console.ReadLine();
double x = Convert.ToDouble(s1), p = 1;
long f = 1;
for (int k = 1; k <= n; k += 1) { f *= k; p *= (1 + Math.Sin(k * x) / f); };
Console.WriteLine("Значение произведения = {0}", p);
}
}
}

.
.
причём, если tgδ-x>0, то ∆δ=0,05, иначе
∆δ=0,1 х=0,416.