Лекция Операторы цикла Операторы цикла используются для вычислений, повторяющихся многократно. В с# имеется четыре вида циклов: цикл с предусловием




Скачати 76.34 Kb.
НазваЛекция Операторы цикла Операторы цикла используются для вычислений, повторяющихся многократно. В с# имеется четыре вида циклов: цикл с предусловием
Дата конвертації19.09.2014
Розмір76.34 Kb.
ТипЛекция
mir.zavantag.com > Информатика > Лекция
Лекция 6. Операторы цикла
Операторы цикла используются для вычислений, повторяющихся многократно. В С# имеется четыре вида циклов: цикл с предусловием while, цикл с постусловием do while, цикл с параметром for и цикл перебора foreach. Каждый из них состоит из определенной последовательности операторов.

Блок, ради выполнения которого и организуется цикл, называется телом цикла. Остальные операторы служат для управления процессом повторения вычислений: это начальные установки, проверка условия продолжения цикла и модификация параметра цикла. Один проход цикла называется итерацией. Начальные установки служат для того, чтобы до входа в цикл задать значения переменных, которые в нем используются.

Проверка условия продолжения цикла выполняется на каждой итерации либо до тела цикла (тогда говорят о цикле с предусловием), либо после тела цикла (цикл с постусловием). Разница между ними состоит в том, что тело цикла с постусловием всегда выполняется хотя бы один раз, после чего проверяется, надо ли его выполнять еще раз. Проверка необходимости выполнения цикла с предусловием делается до тела цикла, поэтому возможно, что он не выполнится ни разу.

Параметром цикла называется переменная, которая используется при проверке условия продолжения цикла и принудительно изменяется на каждой итерации, причем, как правило, на одну и ту же величину. Если параметр цикла целочисленный, он называется счетчиком цикла. Количество повторений такого цикла можно определить заранее. Параметр есть не у всякого цикла. В так называемом итеративном цикле условие продолжения содержит переменные, значения которых изменяются в цикле по рекуррентным формулам.

Цикл завершается, если условие его продолжения не выполняется. Возможно принудительное завершение как текущей итерации, так и цикла в целом. Для этого служат операторы break, continue, return и goto. Передавать управление извне внутрь цикла запре­щается (при этом возникает ошибка компиляции).

^ Цикл с предусловием while

Формат оператора прост:

while ( выражение ) оператор

Выражение должно быть логического типа. Например, это может быть операция отношения или просто логическая переменная. Если результат вычисления выражения равен true, выполняется простой или составной оператор (блок). Эти действия повторяются до того момента, пока результатом выражения не станет значение false. После окончания цикла управление передается на следующий за ним оператор.

Рекуррентной называется формула, в которой новое значение переменной вычисляется с использованием ее предыдущего значения.

Выражение вычисляется перед каждой итерацией цикла. Если при первой проверке выражение равно false, цикл while не выполнится ни разу.
Если в теле цикла необходимо выполнить более одного оператора, необходимо заключить их в блок с помощью фигурных скобок.
^ Пример программы с оператором цикла while

В качестве примера рассмотрим программу, выводящую для аргумента х, изме­няющегося в заданных пределах с заданным шагом, таблицу значений следующей функции:



Назовем начальное значение аргумента Хn, конечное значение аргумента — Хк, шаг изменения аргумента — dX и параметр t. Все величины вещественные. Программа должна выводить таблицу, состоящую из двух столбцов: значений аргумента и соответствующих им значений функции.

Опишем алгоритм в словесной форме:

1. Взять первое значение аргумента.

2. Определить, какому из интервалов оно принадлежит, и вычислить значение функции по соответствующей формуле.

3. Вывести строку таблицы.

4. Перейти к следующему значению аргумента.

5. Если оно не превышает конечное значение, повторить шаги 2-4, иначе закончить. Шаги 2-4 повторяются многократно, поэтому для их выполнения надо организовать цикл. Обратите внимание на то, что условие продолжения цикла записано в его заголовке и проверяется до входа в цикл. Таким образом, если задать конечное значение аргумента, меньшее начального, даже при отрицательном шаге цикл не будет выполнен ни разу.

//ТЕКСТ ПРОГРАММЫ *

using System;

namespace ConsoleApplication1

{ class Class1

{ static void Main()

{

double Xn = -2, Xk = 12, dX = 2, t = 2, y:

Console.WriteLine( "| x | у |" ): // заголовок таблицы

double x = Xn;

while ( x <= Xk )

{

y = t;

if ( х >= 0 && х < 10 ) у = t * х;

if ( х >= 10 ) у = 2 * t;

Console.WriteLine( "| {0,6} | {1,6} |", x, у ); //задаваемая ширина поля //для вывода переменных

x += dX;

} }}

Параметром этого цикла, то есть переменной, управляющей его выполнением, является х. Блок модификации параметра цикла представлен оператором, выполняющимся оператором x += dX. Для перехода к следующему значению аргумента текущее значение наращивается на величину шага и заносится в ту же переменную.

Перед запуском программы проверяйте:

□ присвоено ли параметру цикла верное начальное значение;

□ изменяется ли параметр цикла на каждой итерации цикла;

□ верно ли записано условие продолжения цикла.

Распространенным приемом программирования является организация бесконеч­ного цикла с заголовком while (true) и принудительным выходом из тела цикла по выполнению какого-либо условия с помощью операторов передачи управления. Самым распространенным примером использования бесконечного цикла является пример организации меню программы.

using System;

namespace ConsoleApplication1

{ class Classl

{ static void Main()

{

string buf;

while ( true )

{

Console.WriteLine( "1 – пункт 1, 2 – пункт 2, 3 - выход" );

buf = Console.ReadLine();

switch ( buf )

{

case "1" : //Обработка первого пункта меню

break;

case "2" : // Обработка второго пункта меню

break;

case "3": return;

default : Console.WriteLine( "не попал по клавише!" ); break;

}} } . }}

^ Цикл с постусловием do

Цикл с постусловием имеет вид:

do оператор while выражение;

Сначала выполняется простой или составной оператор, образующий тело цикла, а затем вычисляется выражение (оно должно иметь тип bool). Если выражение истинно, тело цикла выполняется еще раз и проверка повторяется. Цикл завершается, когда выражение станет равным false или в теле цикла будет выполнен какой-либо оператор передачи управления.

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

^ Пример программы с оператором цикла do while

using System;

namespace ConsoleApplicationl

{ class Classl

{ static void Main()

{

char answer;

do

{

Console.WriteLine("Купи слоника, а?" );

answer = (char) Console.Read();

Console.ReadLine();

}

while ( answer != 'y' );

} } }

Рассмотрим еще один пример применения цикла с постусловием — программу, определяющую корень уравнения cos(x) = x методом деления пополам с точностью 0,0001.

Исходные данные для этой задачи — точность, результат — число, представляю­щее собой корень уравнения. Оба значения имеют вещественный тип. Суть метода деления пополам очень проста. Задается интервал, в котором есть ровно один корень (следовательно, на концах этого интервала функция имеет значения разных знаков). Вычисляется значение функции в середине этого интервала. Если оно того же знака, что и значение на левом конце интервала, значит, корень находится в правой половине интервала, иначе — в левой. Процесс повторяется для найденной половины интервала до тех пор, пока его длина не станет меньше заданной точности.

В приведенной далее программе исходный интервал задан с помощью констант, значения которых взяты из графика функции. Для уравнений, имеющих несколько корней, можно написать дополнительную программу, опре­деляющую (путем вычисления и анализа таблицы значений функции) интервалы, содержащие ровно один корень.

//Вычисление корня нелинейного уравнения

using System;

namespace ConsoleApplicationl

{ class Classl

{ static void Main()

{

double x, left = 0, right = 1;

do

{

x = ( left + right ) / 2;

if ( ( Math.Cos(x) - x ) * ( Math.Cos(left) - left ) < 0 )

right = x;

else left = x;

}

while ( Math.Abs( right - left ) < le-4 );

Console.WriteLine( "Корень равен " + x );

} } }

^ Цикл с параметром for

Цикл с параметром имеет следующий формат:

for ( инициализация; выражение; модификации ) оператор;

Инициализация служит для объявления величин, используемых в цикле, и при­своения им начальных значений. В этой части можно записать несколько операторов, разделенных запятой, например:

for ( int i = 0, j = 20; ..

int k, m;

for ( k = 1, m = 0; ...

Областью действия переменных, объявленных в части инициализации цикла, яв­ляется цикл. Инициализация выполняется один раз в начале исполнения цикла.

Выражение типа bool определяет условие выполнения цикла: если его результат равен true, цикл выполняется. Цикл с параметром реализован как цикл с предусловием.

Модификации выполняются после каждой итерации цикла и служат обычно для изменения параметров цикла. В части модификаций можно записать несколько операторов через запятую, например:

for ( int i = 0, j = 20; i < 5 && j > 10; i++, j-- ) ...

Простой или составной оператор представляет собой тело цикла. Любая из частей оператора for может быть опущена (но точки с запятой надо оставить на своих местах!).

Для примера вычислим сумму чисел от 1 до 100:

int s = 0;

for ( int i = 1; i <= 100; i++ ) s += i;

^ Пример программы с оператором цикла for

//смотри ТЕКСТ ПРОГРАММЫ * из примера с циклом while

using System;

namespace ConsoleApplicationl

{ class Classl

{ static void Main()

{

double Xn = -2, Xk = 12, dX = 2, t= 2, y;

Console.WriteLine( "| x | у |"; // заголовок таблицы

for ( double x = Xn; x <= Xk; x += dX )

{

y=t;

if ( x >= 0 && x < 10 ) у = t * x;

if ( х >= 10 ) у = 2 * t;

Console.WriteLine( "| {0,6} | {1,6} |", x, у ); } } } }

Любой цикл while может быть приведен к эквивалентному ему циклу for и наоборот.

Например, два следующих цикла эквивалентны.

Цикл for:

for ( bl; b2; bЗ ) оператор;

Цикл while:

b1;

while ( b2 )

{

оператор;

b3;

}

^ Цикл перебора foreach

Цикл foreach используется для просмотра всех объектов из некоторой группы данных, например массива, списка или другого контейнера. Он будет рассмотрен при изучении тем: Контейнеры, итераторы, массивы.
^ Рекомендации по выбору оператора цикла

Операторы цикла взаимозаменяемы, но можно привести некоторые рекомендации по выбору наилучшего в каждом конкретном случае.

Оператор do while обычно используют, когда цикл требуется обязательно выпол­нить хотя бы раз, например, если в цикле производится ввод данных.

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

Оператор for предпочтительнее в большинстве остальных случаев. Однозначно — для организации циклов со счетчиками, то есть с целочисленными переменными, которые изменяют свое значение при каждом проходе цикла регулярным образом (например, увеличиваются на 1).

Схожі:

Лекция Операторы цикла Операторы цикла используются для вычислений, повторяющихся многократно. В с# имеется четыре вида циклов: цикл с предусловием iconOverview глушение в 1 цикл глушение в 2 цикла Sheet 1: глушение в 1 цикл
Последовательность операций при глушении газопроявления в течение одного цикла циркуляции
Лекция Операторы цикла Операторы цикла используются для вычислений, повторяющихся многократно. В с# имеется четыре вида циклов: цикл с предусловием iconПостроение цикла деминга цель работы
Процедуру управления качеством Эдвард Деминг представил в виде замкнутой последовательности четырех действий цикла Деминга или "Принципа...
Лекция Операторы цикла Операторы цикла используются для вычислений, повторяющихся многократно. В с# имеется четыре вида циклов: цикл с предусловием iconВ аэробных условиях образовавшийся ацетил-СоА вступает в цикл Кребса....
СН3со ~ s-соА + 3Н2О + адф + Н3РО4 → нs-соА + 2СО2 + 4[Н2] + атф. Цикл Кребса проходит одинаково у животных и растений. Первая реакция...
Лекция Операторы цикла Операторы цикла используются для вычислений, повторяющихся многократно. В с# имеется четыре вида циклов: цикл с предусловием iconЛекция Линейные программы
Линейной называется программа, все операторы которой выполняются последовательно в том порядке, в котором они записаны. Простейшим...
Лекция Операторы цикла Операторы цикла используются для вычислений, повторяющихся многократно. В с# имеется четыре вида циклов: цикл с предусловием iconЛекция №6: медицинские реабилитационные программы «спортивного долголетия»
Цнс), «Гормональный баланс» (медицинская реабилитация дисгормональных нарушений, нормализация сексуальной активности, лечение нарушений...
Лекция Операторы цикла Операторы цикла используются для вычислений, повторяющихся многократно. В с# имеется четыре вида циклов: цикл с предусловием iconAnnotation
Тогда эта книга — для вас. Александра МадунцПредисловие,Лекция первая,Лекция вторая,Лекция третья,Лекция четвертая,Лекция пятая,Лекция...
Лекция Операторы цикла Операторы цикла используются для вычислений, повторяющихся многократно. В с# имеется четыре вида циклов: цикл с предусловием iconЭкономическая взаимозависимость проекта
Содержание работ на пред-, инвестиционной и эксплутационной стадиях проектного цикла
Лекция Операторы цикла Операторы цикла используются для вычислений, повторяющихся многократно. В с# имеется четыре вида циклов: цикл с предусловием iconАвтор: Вероника Мелан Из цикла серии рассказов «Город»
Копирование и последующее распространение текста (или отдельных его частей) запрещено автором. Роман предназначен для личного ознакомления....
Лекция Операторы цикла Операторы цикла используются для вычислений, повторяющихся многократно. В с# имеется четыре вида циклов: цикл с предусловием iconОткрывать или не открывать салон сотовой связи?
А они весьма чувствительны к цене. В условиях, когда клиент может без всяких последствий расторгнуть контракт и отреагировать на...
Лекция Операторы цикла Операторы цикла используются для вычислений, повторяющихся многократно. В с# имеется четыре вида циклов: цикл с предусловием iconИз цикла "Современные пьесы для тетра Но"
Поздний вечер. Больничная палата. Чуть в глубине сцены стоит кровать Аои. Слева большое окно, тяжелые шторы задернуты. Справа дверь....
Додайте кнопку на своєму сайті:
Школьные материалы


База даних захищена авторським правом © 2013
звернутися до адміністрації
mir.zavantag.com
Головна сторінка