Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП - lab2.doc
Скачиваний:
1
Добавлен:
07.09.2019
Размер:
1.08 Mб
Скачать

Лабораторная работа №2

Операторы цикла

Операторы цикла используются для вычислений, повторяющихся многократно. В C# имеется четыре вида циклов: цикл с предусловием while, цикл с постусловием dowhile, цикл с параметром for и цикл перебора foreach. Каждый из них состоит из определенной последовательности операторов.

Блок, ради выполнения которого и организуется цикл, называется телом цикла. Остальные операторы служат для управления процессом повторения вычислений: это начальные установки, проверка условия продолжения цикла и модификация параметра цикла (рис. 2.1). Один проход цикла называется итерацией.

Начальные установки служат для того, чтобы до входа в цикл задать значения переменных, которые в нем используются.

Проверка условия продолжения цикла выполняется на каждой итерации либо до тела цикла (тогда говорят о цикле с предусловием, схема которого показана на рис. 1, a), либо после тела цикла (цикл с постусловием, рис. 1, b). Разница между ними состоит в том, что тело цикла с постусловием всегда выполняется хотя бы один раз, после чего проверяется, надо ли его выполнять еще раз. Проверка необходимости выполнения цикла с предусловием делается до тела цикла, поэтому возможно, что он не выполнится ни разу.

a) b)

Рисунок 2.1 – Структурные схемы операторов цикла

Параметром цикла называется переменная, которая используется при проверке условия продолжения цикла и принудительно изменяется на каждой итерации, причем, как правило, на одну и ту же величину. Если параметр цикла целочисленный, он называется счетчиком цикла. Количество повторений такого цикла можно определить заранее. Параметр есть не у всякого цикла. В так называемом итеративном цикле условие продолжения содержит переменные, значения которых изменяются в цикле по рекуррентным формулам.

Цикл завершается, если условие его продолжения не выполняется. Возможно принудительное завершение, как текущей итерации, так и цикла в целом. Для этого служат операторы break, continue, return и goto. Передавать управление извне внутрь цикла запрещается (при этом возникает ошибка компиляции).

Цикл предусловием while

Формат оператора прост:

while ( выражение ) оператор

Выражение должно быть логического типа. Например, это может быть операция отношения или просто логическая переменная. Если результат вычисления выражения равен true, выполняется простой или составной оператор (блок). Эти действия повторяются до того момента, пока результатом выражения не станет значение false. После окончания цикла управление передается на следующий за ним оператор. Выражение вычисляется перед каждой итерацией цикла. Если при первой проверке выражение равно false, цикл не выполнится ни разу.

В качестве примера 1 рассмотрим программу, выводящую для аргумента x, изменяющегося в заданных пределах с заданным шагом, таблицу значений следующей функции:

Назовем начальное значение аргумента Xn, конечное значение аргумента Xk, шаг изменения аргумента dX и параметр t. Все величины вещественные. Программа должна выводить таблицу, состоящую из двух столбцов: значений аргумента и соответствующих им значений функции.

Опишем алгоритм в словесной форме:

1. Взять первое значение аргумента.

2. Определить, какому из интервалов оно принадлежит, и вычислить значение функции по соответствующей формуле.

3. Вывести строку таблицы.

4. Перейти к следующему значению аргумента.

5. Если оно не превышает конечное значение, повторить шаги 2,4,

иначе закончить.

Шаги 2, 4 повторяются многократно, поэтому для их выполнения надо организовать цикл. Текст программы приведен в листинге 4.3. Строки программы помечены соответствующими номерами шагов алгоритма. Обратите внимание на то, что условие продолжения цикла записано в его заголовке и проверяется до входа в цикл. Таким образом, если задать конечное значение аргумента, меньшее начального, даже при отрицательном шаге цикл не будет выполнен ни разу.

Листинг 2.1 – Таблица значений функции, полученная с помощью цикла while

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace lab2

{

class Program

{

static void Main(string[] args)

{

Console.Write("Таблица значений функции, полученная с помощью цикла while\n");

double Xn = -2.0, Xk = 12.0, dX = 2.0, t = 2.0, y;

Console.WriteLine("| x | y |"); // заголовок таблицы

double x = Xn; //1

while (x <= Xk) //5

{

y = t; //2

if (x >= 0 && x < 10) //2

y = t * x; //2

else if (x >= 10) //2

y = 2 * t; //2

Console.WriteLine("| {0,6} | {1, 6} |", x, y); //3

x += dX; //4

}

}

}

}

Рисунок 2.2 – Результат выполнения примера 1