Оператор цикла
Оборудование:Персональный компьютер, компилятор языка С#.
Цельработы: Ознакомиться с операторами цикла и научиться применять их в С#-программах.
Циклическаяуправляющая структура применяется для организации многократного выполнениянекоторого оператора. Оператор цикла включает и. Заголовок определяет количество повторений цикла, а тело — повторяемые операторы.
В C реализованотри вида оператора цикла.
(1)Цикл whilewhile
Условие- это логическое выражение булевского типа.
Телоцикла — это оператор, или последовательность операторов, заключенная воператорные скобки { }. Алгоритмвыполнения цикла while
1.Вычисляется значение условия.
2.Если условие истинно, то выполняются операторы тела цикла и повторяется шаг 1.
3. Если условие ложно, то циклзавершается и происходит переход к следующему за while оператору.
(2)Цикл do while
do{
}
while ();
Условие- это выражение булевского типа.
Телоцикла — это оператор, или последовательность операторов, разделенная символом";".Алгоритм выполнения цикла dowhile
1.Выполняются операторы тела цикла.
2.Вычисляется значение условия.
3.Если условие ложно, то повторяется шаг 1.
4.Если условие ложно, то цикл завершается и происходит переход к следующему за do оператору.
Замечания.
1.Оператор do while, в отличии отоператора while, обязательно выполнится по крайней мере один раз.
2.Выйти из цикла можно минуя вычисление условия с помощью оператора go, однакоэто не соответствует принципам структурного программирования.
3.Если операторы тела цикла не влияют на значение условия и условие истинно передвыполнением цикла while и после выполнения цикла do while, то циклбудет выполняться бесконечно (эффект «зацикливания»).
(3)Оператор for
Операторfor — это наиболее общий способ организации цикла. Он имеет следующий формат:
for( выражение 1; выражение 2; выражение 3 ) тело
Выражение1 обычно используется для установления начального значения переменных,управляющих циклом. Выражение 2 — это выражение, определяющее условие, прикотором тело цикла будет выполняться. Выражение 3 определяет изменениепеременных, управляющих циклом после каждого выполнения тела цикла.
Схемавыполнения оператора for:
1.Вычисляется выражение 1.
2.Вычисляется выражение 2.
3.Если значения выражения 2 отлично от нуля (истина), выполняется тело цикла,вычисляется выражение 3 и осуществляется переход к пункту 2, если выражение 2равно нулю (ложь), то управление передается на оператор, следующий заоператором for.
Существенното, что проверка условия всегда выполняется в начале цикла. Это значит, чтотело цикла может ни разу не выполниться, если условие выполнения сразу будетложным.
Пример:
int main()
{ int i,b;
for (i=1; i
b=i*i;
return 0;
}
Вэтом примере вычисляются квадраты чисел от 1 до 9.
Другимвариантом использования оператора for является бесконечный цикл. Дляорганизации такого цикла можно использовать пустое условное выражение, а длявыхода из цикла обычно используют дополнительное условие и оператор break.
Пример:
for(;;)
{...
…break;
…}
Таккак согласно синтаксису языка С# оператор может быть пустым, тело оператора forтакже может быть пустым. Такая форма оператора может быть использована дляорганизации поиска.
Пример:
for(i=0; t[i]
Вданном примере переменная цикла i принимает значение номера первого элементамассива t, значение которого больше 10. Типы параметра цикла, начального иконечного значений должны быть совместимы. Допускается любой скалярной типкроме вещественного, т.е. любой порядковый тип. Порядок, установленный намножестве значений таких типов, позволяет для любого значения определитьследующее за ним и предыдущее.
Телоцикла — это оператор, или последовательность операторов, заключенная воператорные скобки { }.Замечания
1.Цикл for целесообразно использовать в тех случаях, когдазаранее известно количество повторений цикла.
2.Значение параметра цикла нельзя изменять внутри тела цикла и следует считатьэто значение неопределенным при выходе из цикла.
3.Выйти из цикла можно преждевременно с помощью оператора goto, однако это несоответствует принципам структурного программирования.
Лабораторнаяработа 3 включает 4 задания.
1.Обработка последовательностей значений.
При обработке последовательности ее элементы не запоминаются,а обрабатываются непосредственно после ввода.
Данынатуральное число n и целые числа A1,A2,...,An. Выяснить, какое числовстретится в последовательности раньше положительное или отрицательное. Есливсе члены равны нулю, то сообщить об этом.
Рассмотрим код процедурыMain()
string N, A;
int n, a, i;
Console.WriteLine(«Введитеn»);
N = Console.ReadLine();
n = Convert.ToInt32(N);
i = 0; a = 0;
while ((a == 0) && (i
{
Console.WriteLine(«Введитеa»);
A = Console.ReadLine();
a = Convert.ToInt32(A);
i++;
}
if (a == 0)
Console.WriteLine(«Все элементы равны 0»);
else
if (a
Console.WriteLine(«Первыйне нулевой элемент отрицательный»);
else
Console.WriteLine(«Первыйне нулевой элемент положительный»);
Console.ReadLine();
2. Распечатка в виде таблицы значениязаданной функции.
Вычислитьзначения функции: /> дляа=1,1.1,1.2,...,1+0.1n и распечатать в виде таблицы значений с 2 знаками последесятичной точки.
Рассмотримкод процедуры Main():
string N;
double a, f;
inti, n;
Console.WriteLine(«Введитеколичество элементов»);
N = Console.ReadLine();
n = Convert.ToInt32(N);
a = 1;
Console.WriteLine("********************************");
f = ((a — 3) * a + 2) / Math.Sqrt(2 * a * a * a — 1);
Console.WriteLine("* {0} * {1} ", a, f);
a = a + 0.1;
for (i = 1; i
{
f = ((a — 3) * a + 2) / Math.Sqrt(2 * a * a * a — 1);
Console.WriteLine("* {0} * {1} ", a, f);
a = a + 0.1;
}
Console.WriteLine("********************************");
Console.ReadLine();
3.Вычисление суммы (произведения) заданного числа слагаемых (сомножителей),каждое из которых есть функция от своего индекса (номера).
Длязаданных действительного x и целого n (n>0) вычислить
S = x- />
Рассмотримкод процедуры Main():
string N, X;
double x, s, h, f;
intn, i;
Console.WriteLine(«Введитеколичество элементов»);
N = Console.ReadLine();
n = Convert.ToInt32(N);
Console.WriteLine(«Введитезначение x»);
X = Console.ReadLine();
x = Convert.ToDouble(X);
s = x;
h = 1;
f = 1;
for(i = 0; i
{
h = -h*x*x;
f = f*(2*n)*(2*n+1);
s = s + h /f;
}
Console.WriteLine(«Summa = {0}»,s);
Console.ReadLine();
Обратитевнимание, что на каждом шаге очередное слагаемое вычисляется с использованиемзначения предыдущего слагаемого. Это полезный прием при вычислении значенийтипа xn,(-1)n, (sin x)n, sin xn ит.д.
4. Задание на итерационный цикл с заранее неизвестнымколичеством шагов. Реализовать метод Ньютона нахождения приближения к корнюстепени k из действительного неотрицательного x.
Пустьy0 — начальное приближение к корню. Будем последовательно получать значения:
y1=y0-(y0k — x)/(k*y0k-1),
y2=y1-(y1k — x)/(k*y1k-1),
y3=y2-(y2k — x)/(k*y2k-1) и т.д.
Процесс будем продолжать до тех пор, пока модуль разностидвух последовательных приближений больше некоторого заданного e. Полученноезначение будет приближением к корню степени k из x с точностью e. Заметим, чтона каждом шаге нам нужны только два последних приближения. Рассмотрим кодфункции Main():
string K, X, EPS;
double x, d = 1, y, eps;
int k;
Console.WriteLine(«Введите степень»);
K = Console.ReadLine();
k = Convert.ToInt32(K);
Console.WriteLine(«Введите значение первогоэлемента»);
X = Console.ReadLine();
x = Convert.ToDouble(X);
Console.WriteLine(«Введитезначение эпсилент»);
EPS = Console.ReadLine();
eps = Convert.ToDouble(EPS);
y = x;
while (Math.Abs(d)>eps)
{
d=(x/Math.Exp((k-1)*Math.Log10(y))-y)/k;
y=y+d;
}
Console.WriteLine(«Приближение к корню равно {0}», d);
Console.ReadLine();
Упражнения для контрольной работы № 2
Вариант 1
1.Даны целые числа а1,..., аn,an+1,...; а1>0, среди а2, а3,… есть хотя бы одноотрицательное. Пусть а1,..., аn члены предшествующие первому отрицательному.Получить min(a1+a2,a2+a3,...,an-1+an).
2.Дано натуральное число n.Вычислить сумму и распечатать
S=/>
3.Даны действительные числа а и b (a
4.Вычислить сумму ряда /> и распечатать.Вычисления прекращаются при условии />
Вариант 2
1.Даны натуральные числа n, a1, ..., an.Определитьколичество членов ак последовательности а1, ..., аn,являющихся квадратами четных чисел.
2.Даны натуральное число n, действительное — х. Вычислить:
/>
3.Получить значения функции Z и распечатать в виде колонки Xi, Zi
Z=A sin2X + cos(Ax)2; A=ex + 2,5*10-3
Хизменяется в интервале [X0,Xn] с шагом h=0,05
X0=- π
Xn=/>
4.Вычислить значение суммы и распечатать :
/>, где /> (i=1,...,n)
Вычисленияпрекращаются при Ui
Вариант 3
1. Даны целые числа а1,..., а50.Получитьсумму тех чисел данной последовательности, которые удовлетворяют условию />
2.Даны натуральное n, действительное х. Вычислить сумму и распечатать:
/>
3.Вычислить значения функции и распечатать в виде таблицы:
/>
Вычислениявыполнить для 11 значений Х, равноотстоящих друг от друга
/>
(i=1,...,11)
x1=2
4.Дано положительное число е, последовательность {an} задана формулойобщего вида:
An=/>)
Написать программу, определяющую первый членпоследовательности, для которого выполняется неравенство
/>
Вариант4
1.Дано натуральное число n. Вычислить произведение первых n сомножителей ираспечатать:
/>
2.Вычислитьсумму и распечатать для данного натурального n:
S=/>
3.Написать программу вычисления функции. Распечатать в виде таблицы xi,yi.
Y=/>/> arctg(e-x)
длях изменяющегося в интервале [-3,-2], если xi+1-xi=0,1(i=1,2,...)
4.Вычислить значение суммы и распечатать для действительного х
S=/>
Значениеn определяется по условию /> e=10-4
Вариант5.
1.Даны целые числа a,n,x1,...,xn (n>0). Определить какимпо счету в последовательности x1,...,x член равный а. Если такогочлена нет, то ответом должно быть число 0.
2.Вычислить сумму и распечатать для данного натурального n
S=/>
3.Вычислить значение функции и распечатать в виде таблицы xi, yi:
Y=e-x(cosx+1)
значенияаргумента принадлежит интервалу [0,1]xi+1-xi=0,1
4.Вычислить значение суммы и распечатать S и n
/>
/>
значениеn определяется из условия un
Вариант 6
1.Даны натуральное число n, действительные числа a1,...,an.Найти длину наименьшего отрезка числовой оси, содержащего числа а1,..., аn.
2.Вычислить для известного натурального n и распечатать
S=/>
3.Вычислить значение функции Z и распечатать в виде таблицы xi, yi,zi:
/>
Значения функции Z вычисляются для точек x, принадлежащихинтервалу [-1,5; 1,5], лежащих на прямой x=y. Вычисления выполняются для точекx, равноотстоящих друг от друга на 0,25.
4.Вычислить сумму для действительного x и распечатать:
S=/>
nопределяется по условию/>
Вариант 7
1.Рассматривается последовательность a1,...,a300
a1=0,01
ak=sin(k+ak-1)
k=2,...,300
Требуетсяопределить сколько членов последовательности с номерами 1,3,9,27,… имеетзначение меньше 0,5.
2. Вычислить сумму и распечатать для данного натурального n:
/>
3.Вычислить сумму значений функции yi и распечатать />
yi=0,723xi2-Vxi2+V7 cosxi
длях1=5,234
х2=1,92
х3=0,367
х4=1,00
4.Вычислить сумму ряда
Y=sh
/>
Считать,что требуемая точность достигнута, если очередное слагаемое по модулю меньше E. E=10-3
Вариант 8
1.Даны целые числа a1,a2,… Известно, что а1>0и что среди а2, а3,… есть хотя бы одно отрицательноечисло. Пусть а1,..., аn члены одной последовательности,предшествующие первому отрицательному члену. Получить количество четных среди а1,..., аn.
2.Вычислить сумму и распечатать для натурального n и действительного x:
S=/>
3.Вычислить значения функции и распечатать в виде таблицы xi,yi,вычислить значение суммы и распечатать:
/>
значениеxi вычисляется из условия, что x1=-0,01 h=0,15
4.Вычислить сумму ряда и распечатать:
y=cosx=1-/>
Считать,что требуемая точность достигнута, если
/>
/>
Вариант9
1.Даны натуральное число n, действительные числа y1,...,yn;z = yi при />
z =2 в противном случае
Найтиmin(/>)
2.Дано натуральное n и действительное x, вычислить сумму и распечатать:
S=/>
3.Даны действительные числа a и b (a
xi=a+ih
(i=0,1,...,n)
h=(b-a)/n
(a=-π,b= π,n=50)
4.Вычислить сумму ряда и распечатать. Действительное х задано (x >/>)
S=lnx=/>
nопределяется по условию
/>
Вариант10
1.Даны целые числа с1,..., с45. Имеется ли впоследовательности два идущих подряд нулевых члена. Распечатать их номера илиответ «не имеются».
2.Дано натуральное N. Вычислить произведение первых p сомножителей:
/>
3.Даны действительные числа а и b (a определена на [a,b];
xi=a+ih;(a=0, b=2π, n=50);
/>
4.Вычислить сумму ряда S=/>
Значениеn определяется по условию /> .Вычисления выполнить для действительного х и/>.
Вариант11
1.Даны натуральное число n, действительные числа x1,...,xn.В последовательности x1,...,xn все члены меньшие двухзаменить нулями. Получить сумму членов принадлежащих отрезку [3,7], а такжечисло таких членов.
2.Дано натуральное n и действительное x. Вычислить произведение и распечатать
/>
3.Вычислить значения функции и распечатать в виде таблицы xi, yi,zi; Z=X+4Y.
/>
Вычислитьдля Х принадлежащего интервалу [2,8]xi+1=xi+/>x
/>x=0,5
4.Вычислить сумму ряда и распечатать
/>
Считать,что требуемая точность достигнута, если
/>
/>
Вариант12
1.Даны натуральное число n, действительные числа a1,...,an.Получить /> и /> и распечатать.
2.Дано натуральное n и действительное х, вычислить сумму ряда и распечатать
/>
3.Вычислитьзначения функции и распечатать в виде таблицы xi, yi 1
/>
x1=-1
xi+1-xi=0,05
i=0,1,...,7
4.Вычислить сумму ряда и распечатать для x=0,4
/> n определяетсяпо условию
/>/>
Вариант13
1.Даныцелые числа a1,a2,… Известно, что а1 > 0и что среди а2, а3,… есть хотя бы одно отрицательноечисло. Пусть а1,..., аn, предшествующие отрицательномучислу. Получить max(a12,...,an2) ираспечатать.
2.Вычислить сумму ряда для вещественного х и распечатать
/>
3.Вычислить значения функции и распечатать в виде таблицы xi, yi:
/> для равноотстоящих значений х винтервале [0; 1,5]/>x=0,1
4.Вычислитьсумму ряда и распечатать />
nопределяется из условия
/>
/>
Вариант 14
1.Дано натуральное число n и числа b0=1, b1=1, bk=k2bk-1 + bk-2 k=2,3,...,n. Вычислить bn ираспечатать.
2. Даны натуральное n и действительное х.Вычислить сумму и распечатать:
/>
3.Вычислить значения функции и распечатать в виде таблицы xi, yi:
/>
xпринадлежит отрезку [-3, -2] и xi+1 — xi = 0,1
4.Вычислить сумму ряда и распечатать S с точностью e (e=10-5).
/>
Заданнаяточность считается достигнутой при условии />
Вариант 15
1.Дано натуральное число n и числа
a0=1,/>
Вычислитьпроизведение /> и распечатать .
2.Вычислить сумму и распечатать для данного натурального n.
/>
3.Вычислить значение функции и распечатать в виде таблицы xi, yi:
/>/> если x>1
x*ln x если x
аргументх изменяется от значения х0= 0,3 хi+1 — xi =0,2 i=0,1,...,6 Вычислить у для семи значений аргумента и распечатать
/>
4.Вычислить произведение с точностью e = 10-5 и распечатать P и n
/>
/>
точностьсчитается достигнутой, когда
/>
Вопросы
1.Приведите конструкцию и алгоритм работы оператора while
2.Приведите конструкцию и алгоритм работы оператора do while
3.Приведите конструкцию и алгоритм работы оператора for
4.Чем отличие циклов с постусловием от циклов спредусловием. Приведите примеры.