Циклы
Алгоритмы решения многих задач являются циклическими, т. е. для достижения результата определенная последовательность действий должна быть выполнена несколько раз.
Например, программа тестирования (проверки знаний) выводит вопрос, принимает ответ испытуемого, добавляет оценку за выбранный ответ к общей сумме баллов, затем повторяет это действие снова, до тех пор, пока испытуемый не ответит на все вопросы.
Другой пример. Для того чтобы найти фамилию человека в списке, надо проверить первую фамилию списка, затем вторую, третью и т. д. до тех пор, пока не будет найдена нужная фамилия или не будет достигнут конец списка.
Такие повторяющиеся действия называются циклами и реализуются в программе с использованием инструкций циклов:
- for
- while
- do while
Инструкция for
В общем виде инструкция for записывается так:
for ( инициализация; условие; управление )
{
// "тело" цикла
}
Где:
- Инициализация - инструкция инициализации цикла. Как правило, это инструкция объявления и инициализации счетчика циклов.
- Условие - условие выполнения инструкций цикла, в качестве одного из операндов которого обычно используют переменную-счетчик.
- Управление - инструкция, которая выполняется после выполнения инструкций цикла.
Примеры:
for (int i = 0; i < 5; i++)
{
Console.WriteLine("{0} Hello, World!",i);
}
for (int i = 5; i >=0; i--)
{
if (i !=0 )
Console.WriteLine("{0}", i);
else
Console.WriteLine("Старт!");
}
Выполняется инструкция for следующим образом (рис. 7.1). Сначала выполняется инструкция инициализации цикла. Затем вычисляется значение выражения условие и если оно равно true (условие истинно), то сначала выполняются инструкции тела цикла, затем - инструкция управление. После этого снова проверяется значение выражения условие и, если оно истинно, то тело цикла и инструкция управление выполняются еще раз. И так до тех пор, пока значение выражения условие равно true. Обратите внимание, что возможна ситуация, когда инструкции тела цикла не будут выполнены ни разу. Также возможна ситуация, когда инструкции тела цикла будут выполняться бесконечно (такую ситуацию называют зацикливанием).
В качестве примера использования инструкции for ниже приведена программа, которая выводит таблицу тригонометрических функций. В программе на основе информации о диапазоне и шаге изменения угла вычисляется количество строк таблицы и в качестве параметра цикла for используется переменная i – счетчик строк, которая изменяется от 0 до n-1, где n – количество строк в таблице. Обратите внимание, тригонометрические функции sin и cos принадлежат пространству имен Math. Этому же пространству принадлежит и константа PI, значение которой, как не трудно догадаться, равно числу Пи. Так же обратите внимание, параметр функций sin и cos, должен быть задан в радианах.
Листинг 7.1 Таблица тригонометрических функций
static void Main(string[] args)
{
double g = 0; // угол в градусах
double r = 0; // угол в радианах
double g1, g2; // диапазон изменения угла
double dg; // шаг изменения угла
double sn; // синус
double cs; // косинус
g1 = 0;
g2 = 360;
dg = 30;
int k = System.Convert.ToInt32((g2 - g1) / dg)+1;
Console.WriteLine("\n--------------------------");
Console.WriteLine("Град. Рад. Sin Cos");
Console.WriteLine("--------------------------");
g = g1;
for (int i = 0; i < k; i++)
{
r = Math.PI / 180 * g;
sn = Math.Sin(r);
cs = Math.Cos(r);
Console.WriteLine("{0,2} {1,6:n}{2,6:n}{3,6:n}{4,6:n}", i, g, r, sn, cs);
g += dg;
}
Console.WriteLine("--------------------------");
Console.Write("\n\nPress any key ...");
int ch = Console.Read();
}