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

Оборудование: Персональный компьютер, компилятор языка С#.


Цель работы: Ознакомиться с операторами цикла и научиться применять их в С#-программах.


Циклическая управляющая структура применяется для организации многократного выполнения некоторого оператора. Оператор цикла включает <заголовок цикла> и <тело цикла>. Заголовок определяет количество повторений цикла, а тело - повторяемые операторы.


В C реализовано три вида оператора цикла.


(1) Цикл while


while<условие>

<тело цикла>


Условие - это логическое выражение булевского типа.


Тело цикла - это оператор, или последовательность операторов, заключенная в операторные скобки { }.Алгоритм выполнения цикла while


1. Вычисляется значение условия.


2. Если условие истинно, то выполняются операторы тела цикла и повторяется шаг 1.


3. Если условие ложно, то цикл завершается и происходит переход к следующему за whileоператору.


(2) Циклdo while


do{


<телоцикла>


}


while(<условие>);


Условие - это выражение булевского типа.


Тело цикла - это оператор, или последовательность операторов, разделенная символом ";".


Алгоритм выполнения цикла do while

1. Выполняются операторы тела цикла.


2. Вычисляется значение условия.


3. Если условие ложно, то повторяется шаг 1.


4. Если условие ложно, то цикл завершается и происходит переход к следующему за do оператору.


Замечания.


1. Оператор dowhile, в отличии от оператора while, обязательно выполнится по крайней мере один раз.


2. Выйти из цикла можно минуя вычисление условия с помощью оператора go, однако это не соответствует принципам структурного программирования.


3. Если операторы тела цикла не влияют на значение условия и условие истинно перед выполнением цикла while и после выполнения цикла dowhile, то цикл будет выполняться бесконечно (эффект "зацикливания").


(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<10; i++)


b=i*i;


return 0;


}


В этом примере вычисляются квадраты чисел от 1 до 9.


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


Пример:


for (;;)


{ ...


... break;


... }


Так как согласно синтаксису языка С# оператор может быть пустым, тело оператора for также может быть пустым. Такая форма оператора может быть использована для организации поиска.


Пример:


for (i=0; t[i]<10 ; 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 < n))


{


Console.WriteLine("Введите a");


A = Console.ReadLine();


a = Convert.ToInt32(A);


i++;


}


if (a == 0)


Console.WriteLine("Всеэлементыравны 0");


else


if (a < 0)


Console.WriteLine("Первый не нулевой элемент отрицательный");


else


Console.WriteLine("Первый не нулевой элемент положительный");


Console.ReadLine();


2. Распечатка в виде таблицы значения заданной функции.


Вычислить значения функции: для а=1,1.1,1.2,...,1+0.1n и распечатать в виде таблицы значений с 2 знаками после десятичной точки.


Рассмотрим код процедуры Main():


string N;


double a, f;


int i, 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 < n + 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;


int n, 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 < n; 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<b), натуральное n, функция y=x+cos x, определенная на отрезке [a,b]. Для значений аргумента xi


=a+ih (i=0,1,...,n), h=(b-a)/n Вычислить значение функции yi
=xi
+cos xi
. Вывести xi
,yi
в виде колонки для значений (a=-π ,b=π, n=50).n 1


4. Вычислить сумму ряда и распечатать. Вычисления прекращаются при условии


Вариант 2


1. Даны натуральные числа n, a1
, ..., an
.Определить количество членов ак
последовательности а1
, ..., аn
, являющихся квадратами четных чисел.


2. Даны натуральное число n , действительное - х. Вычислить:



3. Получить значения функции Z и распечатать в виде колонки Xi
, Zi


Z=A sin2
X + cos(Ax)2
; A=ex
+ 2,5*10-3


Х изменяется в интервале [X0
,Xn
] с шагом h=0,05


X0
=- π


Xn
=


4. Вычислить значение суммы и распечатать :


,где (i=1,...,n)


Вычисления прекращаются при Ui
<=E, E=10-5


Вариант 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
(cos x+1)


значения аргумента принадлежит интервалу [0,1]xi+1
-xi
=0,1


4. Вычислить значение суммы и распечатать S и n




значение n определяется из условия un
<=0,0001


Вариант 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,723xi
2
-Vxi
2
+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=cos x=1-


Считать, что требуемая точность достигнута, если




Вариант 9


1. Даны натуральное число n, действительные числа y1
,...,yn
; z = yi
при


z = 2 в противном случае


Найти min()


2. Дано натуральное n и действительное x, вычислить сумму и распечатать:


S=


3. Даны действительные числа a и b (a<b), натуральное n. Вычислить значение функции y и распечатать в виде таблицы xi
yi
. y=sinx +cos2x, область определения функции [a,b].


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<b), натуральное n. Вычислить функцию и распечатать в виде таблицы xi
, yi
. Функция определена на [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(a1
2
,...,an
2
) и распечатать.


2. Вычислить сумму ряда для вещественного х и распечатать



3. Вычислить значения функции и распечатать в виде таблицы xi
, yi
:


для равноотстоящих значений х в интервале [0 ; 1,5]x=0,1


4.Вычислить сумму ряда и распечатать


n определяется из условия




Вариант 14


1. Дано натуральное число n и числа b0
=1, b1
=1, bk
=k2
bk-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*lnx если x<=1


аргумент х изменяется от значения х0
= 0,3 хi+1
- xi
= 0,2 i=0,1,...,6 Вычислить у для семи значений аргумента и распечатать



4. Вычислить произведение с точностью e = 10-5
и распечатать P и n




точность считается достигнутой, когда



Вопросы


1.Приведите конструкцию и алгоритм работы оператора while


2.Приведите конструкцию и алгоритм работы оператора dowhile


3.Приведите конструкцию и алгоритм работы оператора for


4.Чем отличие циклов с постусловием от циклов с предусловием. Приведите примеры.

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Оператор цикла

Слов:2384
Символов:21301
Размер:41.60 Кб.