Операторы цикла
Лекция 6
Алгоритмы решения многих задач являются циклическими, т.е. для достижения результата определенная последовательность действий должна быть выполнена несколько раз. Циклом называется группа инструкций, повторяющихся многократно с разными данными. Например, программа контроля знаний. Для циклов применяются инструкции: goto, for, while, do while.
Инструкция goto в первых языках программирования была основой для реализации циклов и многократных переходов, вследствие чего возникала запутанность кода программы. Опытные программисты стараются ее не использовать, но для того, чтобы узнать все возможности языка, рассмотрим и ее.
Инструкция goto используется следующим образом:
В коде программы создается метка с именем (например, M).
Организуется переход на эту метку инструкцией goto M.
Имя метки M в коде обязательно должно заканчиваться двоеточием (:). Оно указывает на точку в программе, с которой будет выполняться программа после использования инструкции goto.
Обычно инструкция goto привязывается к условию.
Пример. Используя цикл (метка M - начало), написать программу, в которой в консоль выводится последовательность чисел.
public static int Main()
{
int i = 0;
M: Console.WriteLine("i= {0} ", i);
i = i + 1;
if (i < 10) goto M;
Console.ReadKey();
}
}
Решение циклических задач можно организовать на основе структуры ветвление или с помощью инструкций циклов.
Задача1. Вычислить на ЭВМ значения функций
при а=1.3, b=1.29, t = [ 0.1… 2.2], t изменяется в диапазоне от 0.1 до 2.2 с шагом h=0.3.
Организовать вывод значений аргумента и вычисленного значения функции в виде таблицы с заголовком.
static void Main(string[] args)
{
double tn = 0.1, tk = 2.2, h = 0.3, t=0.1, x, s;
const double a = 1.3, b = 1.29;
Console.WriteLine("Таблица расчета функции s");
Console.WriteLine();
t = tn;
M: x = a * t;
if (x < 1) s = x + b;
else if (x == 1) s = Math.Cos(x);
else s=Math.Exp(x)*Math.Cos(x);
Console.WriteLine(" *********************** ");
Console.WriteLine(" * x= {0,4} * s= {1,6:f} *",x,s);
t=t+h;
if (t<=tk) goto M;
Console.WriteLine(" *********************** ");
Console.ReadKey();
}