Контрольная работа: Оператор цикла
Название: Оператор цикла Раздел: Рефераты по информатике, программированию Тип: контрольная работа |
Оборудование: Персональный компьютер, компилятор языка С#. Цель работы: Ознакомиться с операторами цикла и научиться применять их в С#-программах. Циклическая управляющая структура применяется для организации многократного выполнения некоторого оператора. Оператор цикла включает <заголовок цикла> и <тело цикла>. Заголовок определяет количество повторений цикла, а тело - повторяемые операторы. В C реализовано три вида оператора цикла. (1) Цикл while while<условие><тело цикла> Условие - это логическое выражение булевского типа. Тело цикла - это оператор, или последовательность операторов, заключенная в операторные скобки { }.Алгоритм выполнения цикла while 1. Вычисляется значение условия. 2. Если условие истинно, то выполняются операторы тела цикла и повторяется шаг 1. 3. Если условие ложно, то цикл завершается и происходит переход к следующему за whileоператору. (2) Циклdo while do{ <телоцикла> } while(<условие>); Условие - это выражение булевского типа. Тело цикла - это оператор, или последовательность операторов, разделенная символом ";". Алгоритм выполнения цикла do while1. Выполняются операторы тела цикла. 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. Распечатка в виде таблицы значения заданной функции. Вычислить значения функции: Рассмотрим код процедуры 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, в = 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. Вычислить значение суммы и распечатать :
Вычисления прекращаются при 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= для х изменяющегося в интервале [-3,-2], если xi+1 -xi =0,1 (i=1,2,...) 4. Вычислить значение суммы и распечатать для действительного х S= Значение n определяется по условию Вариант 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
. Функция 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
+
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
Вариант 13 1.Даны целые числа a1 ,a2 ,... Известно, что а1 > 0 и что среди а2 ,а3 ,... есть хотя бы одно отрицательное число. Пусть а1 ,...,аn , предшествующие отрицательному числу. Получить max(a1 2 ,...,an 2 ) и распечатать. 2. Вычислить сумму ряда для вещественного х и распечатать 3. Вычислить значения функции и распечатать в виде таблицы xi , yi :
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*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.Чем отличие циклов с постусловием от циклов с предусловием. Приведите примеры. |