17448

Циклы с условием

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторная работа № 9 Циклы с условием 9.1. Циклы Do While...Loop Есть множество операций которые нужно повторять пока чтото не произойдет. Это чтото представляет собой условие прекращения процесса. Код в цикле с неопределенным количеством повторений выполняется неиз...

Русский

2013-07-01

129.61 KB

7 чел.

Лабораторная работа № 9

Циклы с условием

9.1. Циклы Do While...Loop

Есть множество операций, которые нужно повторять, пока что-то не произойдет. Это «что-то» представляет собой условие прекращения процесса. Код в цикле с неопределенным количеством повторений выполняется неизвестное заранее число раз. Он перестает выполняться, когда выполняется (или перестает выполняться) какое-то условие. Есть два вида таких циклов: do while и do until. Цикл do while выполняется, пока выполняется условие. Цикл do until выполняется до тех пор, пока не выполнится условие. Используя циклы с неопределенным числом повторений, нужно уметь выбирать требуемый вид.

Цикл Do While...Loop выполняет блок кода раз за разом, пока выполняется заданное условие. Как только условие перестает выполняться, выполнение цикла завершается. Условие, управляющее циклом Do While...Loop, является его частью. Вот синтаксис цикла Do While... Loop в Visual Basic.NET:

Do While (Условие)

Последовательность операторов

Loop

Обратите внимание на то, что Do, While и Loop — это ключевые слова. Они выделяются синим цветом. Условие заключено в скобки. Условием может быть любое булево выражение, результатом вычисления которого является True или False, например X < 4. Код, который вы хотите выполнить в цикле, помещается между операторами Do While и Loop. В начале каждого выполнения цикла проверяется условие. Если оно выполняется, то код в цикле выполняется. Если условие не выполняется, начинает выполняться код после цикла.

Теперь мы покажем вам пример цикла Do While... Loop. Создайте новое приложение Windows и назовите его «Do-While-Loop». Поместите на форму кнопку. Выполните по кнопке двойной щелчок, чтобы отредактировать обработчик ее нажатия. Вставьте в обработчик следующий код:

Dim WhileValue As Integer

WhileValue = 0

Do While (WhileValue < 2)

MessageBox.Show(WhileValue)

WhileValue = WhileValue + 1

Loop

Постройте и запустите проект. Нажмите кнопку на форме. Появится окно сообщения с числом 0. Нажмите кнопку ОК. Появится новое окно сообщения с числом 1. Нажмите кнопку ОК. Вы вернулись к форме. Больше окон сообщений не появится.

Как работает этот код? Мы объявили переменную WhileValue. Изначально ей присвоено значение 0. При каждом выполнении цикла значение WhileValue увеличивается на 1. В начале цикла оператор Do While проверяет, выполняется ли условие WhileValue < 2. Если да, то выводится окно сообщения и значение WhileValue увеличивается. Если нет, выполнение цикла завершается. Цикл выполнится дважды, прежде чем условие перестанет выполняться. Первый раз в окне сообщения отобразится значение 0. Во второй раз — 1. При третьем выполнении оператора WhileValue = 2. Условие 2 < 2 не выполняется. Цикл завершается, и окно сообщения не появляется.

Задания для самостоятельного выполнения

9.1. В системе программирования Visual Basic .NЕТ создать проект «Do-While-Loop», описанный в параграфе.

9.2. Пошаговое выполнение цикла Do While...Loop

Давайте воспользуемся отладочными инструментами Visual Studio .NET и отследим шаг за шагом выполнение цикла в программе «Do-While-Loop».

1. В окне Код (Code) установите точку останова на операторе Do While.

2. Запустите проект. Нажмите кнопку на форме. Код выполнится до точки останова и будет подсвечена строка с этой точкой.

3. Нажмите клавишу {F11}, что6ы выполнить подсвеченную строку кода.

Do While (WhileValue < 2)

Подведите курсор к переменной WhileVaiue. Ее значение равно 0.

4. Нажмите клавишу {F11}, чтобы выполнить подсвеченную строку кода. MessageBox.Show(WhileValue)

Появится окно сообщения с цифрой 0. Нажмите кнопку ОК.

5. Нажмите клавишу {F11}, что6ы выполнить подсвеченную строку кода.

WhileValue = WhileValue + 1

Значение WhileValue увеличится на 1.

6. Нажмите клавишу {F11}, что6ы выполнить подсвеченную строку кода.

Loop

Цикл выполнится еще раз.

7. Нажмите клавишу {F11}, чтобы выполнить подсвеченную строку кода.

Do While (WhileValue < 2)

Подведите курсор к переменной WhileVa1ue. Теперь ее значение равно 1.

8. Нажмите клавишу {F11}, чтобы выполнить подсвеченную строку кода. MessageBox.Show(WhileValue)

Появится окно сообщения с цифрой 1. Нажмите кнопку ОК.

9. Нажмите клавишу {F11}, чтобы выполнить подсвеченную строку кода.

WhileValue = WhileValue + 1

Значение While Value увеличится еще на 1.

10. Нажмите клавишу {F11}, чтобы выполнить подсвеченную строку кода.

Loop

Цикл начнет выполняться снова.

11. Нажмите клавишу {F11}, чтобы выполнить подсвеченную строку кода.

Do While (WhileValue < 2)

Подведите курсор к переменной WhileVa1ue. Ее значение равно 2. Условие WhileValue < 2 перестало выполняться, поэтому выполнение цикла завершается. Окно сообщения больше не появляется, и значение WhileValue не увеличивается.

12. Нажмите клавишу {F11}, чтобы выполнить подсвеченную строку кода.

End Sub

Выполнение обработчика завершается. Снова отображается форма.

 Задания для самостоятельного выполнения

9.2. В системе программирования Visual Basic .NЕТ создать проект «Do-While-Loop». Провести пошаговое выполнение проекта так, как это описано в параграфе.

9.3. Циклы Do Until...Loop

Цикл Do UntilLoop выполняет блок операторов кода, пока какое-то условие не станет истинным. Это условие может быть любым булевым выражением, результатом вычисления которого будет True или False. Вот синтаксис цикла Do Until…Loop в Visual Basic .NET:

Do Until (Условие)

Последовательность операторов

Loop

Слова Do, Until и Loop - ключевые. Они выделены синим цветом. Истинность условия проверяется в начале выполнения цикла. Если условие ложно, то выполняется код в цикле. Когда условие в операторе Do Until становится истинным, цикл завершается.

Создайте новое приложение Windows и назовите его «Do-Until-Loop». Поместите кнопку на форму. Выполните двойной щелчок по этой кнопке, чтобы отредактировать обработчик ее нажатия. Добавьте в обработчик следующий код:

Dim UntilValue As Integer

UntilValue = 0

Do Until (UntilValue > 1)

MessageBox.Show(UntilValue)

UntilValue = UntilValue + 1

Loop

Постройте и запустите проект. Нажмите кнопку. Появится окно сообщения с цифрой 0. Нажмите OK. Появится окно сообщения с цифрой 1. Нажмите OK. Выполнение цикла закончится, и снова появится форма.

Как работает цикл Do Until…Loop? Сначала мы объявили переменную Unti1Value и проинициализировали ее значением 0. Значение переменной UntilValue используется в условии, чтобы определить, должен ли цикл выполняться снова. При каждом выполнении цикла значение переменной UntilValue увеличивается на 1. В операторе Do Until содержится оператор сравнения, проверяющий, больше ли значение UntilValue, чем 1. При первой проверке значение UntilValue равно 0. Условие ложно, и выполняется код внутри цикла. Выводится окно сообщения. и значение UntilValue увеличивается на 1. При второй проверке значение UntilValue равно 1. Условие по-прежнему ложно, и код в цикле выполняется еще раз. Но при третьей проверке значение UntilValue равно 2. Условие ложно (2 > 1). и выполнение цикла заканчивается.

Задания для самостоятельного выполнения

9.3 В системе программирования Visual Basic .NЕТ создать проект «Do-Until-Loop», описанный в параграфе.

9.4 Проекты с использованием Do...Loop

А теперь давайте разберем примеры с циклами Do WhileLoop и Do Untilloop, в которых попользуются булевы выражения, не зависящие напрямую от значения переменной счетчика. Первый пример использует цикл Do WhileLoop с булевым выражением. проверяющим, больше ли значение переменной нуля или равно ему. Если значение переменной станет меньше нуля, выполнение цикла завершится.

Создайте новое приложение Windows и наловите его «Do-While-Loop-2». Поместите на форму кнопку. Измените значение свойства Text этой кнопки на Вычислить. Выполните двойной щелчок по ней. чтобы отредактировать обработчик ее нажатия. Добавьте в него следующий код:

Dim Index As Integer = 0

Dim Controller As Integer = 167

Do While (Controller >= 0)

Index = Index + 1

Controller = Controller – (23 * Index)

Loop

MessageBox.Show (Controller)

Постройте и запустите проект «Do-While Loop-2». Нажмите кнопку с надписью Вычислить. Появится окно сообщения с числом -63. Как этот код работает? Мы объявили две целочисленные переменные Index и Controller и задали их начальные значения. Значение переменной Index увеличивается на 1 при каждом выполнении цикла. При каждом выполнении цикла для переменной Controller вычисляется новое значение — по более сложной формуле. Эго значение вычисляется путем умножения значения Index на 23 и вычитания результата умножения из старого значения переменной Controller. При каждом выполнении цикла значение перемен ной Controller будет уменьшаться. Сложно навскидку сказать, сколько раз цикл выполнится, прежде чем значение переменной Controller станет меньше 0. и цикл завершится. Но это ничего не значит, поскольку для булева выражения важно значение только переменной Controller, а не переменной Index.

Во втором примере мы используем цикл Do While…Loop с булевым выражением, которое проверяет. выбран ли переключатель RadioButton3. При каждом выполнении цикла выбирается новый переключатель.

В проекте «Do-While-Loop-2» добавьте на форму еще одну кнопку. Измените значение свойства Text этой кнопки на While. Добавьте на форму три переключателя. Выполните двойной щелчок по новой кнопке, чтобы отредактировать обработчик ее нажатия. Добавьте в обработчик такой код:

Dim Index As Integer = 0

RadioButtonl.Checked=True

Do While (RadioButton3.Checkod = False)

Index = Index + 1

If Index = 1 Then

RadioButton 1.Checked=True

End If

If Index = 2 Then

RadioButton2.Checked=True

End If

If Index = 3 Then

RadioButton3.Checked=True

End If

Loop

MessageBox.Show (Index)

Постройте и запустите приложение. Обратите внимание на то. что выбрана позиция переключателя RadioButtonl. Нажмите кнопку с надписью While. Код выберет позицию переключателя RadioButton3, и в окне сообщения будет выведено значение переменной Index. Если у вас очень хорошая реакция или очень старый компьютер, вы можете заметить, как на мгновение была выбрана позиция переключателя RadioButton2.

Вот что происходит. Мы объявляем переменную Index, чтобы отслеживать, сколько раз выполнится код в цикле. Однако эта переменная не используется в булевом выражении, управляющем циклом Do While…Loop. Вместо этого Index используется для перебора переключателей. Булево выражение в цикле Do While…Loop проверяет, выбран ли переключатель RadioButton3. Как только условие RadioButton3.Checked = True выполняется, цикл завершается.

В третьем примере мы используем оператор Do Until…Loop. Булево выражение сравнивает значение свойства Text текстового поля со значением строковой переменной, которое изменяется с каждой итерацией цикла. Добавьте текстовое поле на форму проекта «Do-Until-Loop-2». Оставьте значение TextBoxl свойства Техt, текстового поля. Добавьте на форму кнопку и измените значение свойства Text этой кнопки на Сравнить тексты. Выполните двойной щелчок по новой кнопке, чтобы отредактировать обработчик ее нажатия. Добавьте в обработчик следующий код:

Dim MatchText As String = “ ”

Dim Index As Integer = 0

Do Until (MatchText = TextBoxl.Text)

Index = Index + 1

If Index = 2 Then 

MatchText = “Text”

End If

If Index = 3 Then 

MatchText = “Boxl”

End If

If Index = 4 Then

MatchText = “TextBoxl”

End If

Loop

MessageBox.Show (“ При значении счетчика “ & Index & “тексты равны”)

Постройте и запустите приложение. Нажмите кнопку с надписью Сравнить тексты. В появившемся окне сообщения будет показано значение переменной Index, при котором тексты совпали.

В коде используется оператор Do Until…Loop. Переменная Index используется только для определения значения переменной MatchText. Булево выражение сравнивает значение переменной MatchText и значение свойства Text текстового поля TextBoxl. При четвертом выполнении кода в цикле значение Index будет равно 4. и MatchText = “ТехtBox1”. Булево выражение станет истинным, поскольку “TextBoxl” = “TextBoxl”, и выполнение цикла завершится.

А что. если свойству Text текстового поля TextBoxl присвоить значение Текст? Сможете ли вы добавить в код еще один оператор If…Then, чтобы код все равно работал?

Задания для самостоятельного выполнения

9.4. В системе программирования Visual Basic .NET создать проект «Do-While-Loop-2», описанный и параграфе.

9.5. В системе программирования Visual Basic .NET создать проект «Do-Until-Loop-2», описанный в параграфе.

9.5. Циклы с постусловием

В предыдущих параграфах циклы Do While…Loop и Do Until…Loop использовались с предусловием, т. е. условие располагалось в начале цикла. Однако можно использовать циклы Do WhileLoop и Do LoopUntil и с постусловием, т. е. чтобы условие располагалось в конце цикла. В таких циклах операторы внутри циклов будут всегда выполняться хотя бы один раз. Потом будет проверяться выполнение условия. Вот пример оператора Do…Loop While с постусловием:

Dim WhileValue As Integer

WhileValue = 0

Do

MessageBox.Show(WhileValue)

WhileValue - WhileValue + 1

Loop While (WhileValue < 2)

А вот пример оператора DoLoop Until:

Dim UntilValue As Integer

UntilValue = 0

Do

MessageBox.Show(UntilValue)

UntilValue = UntilValue + 1

Loop Until (UntilValue > 1)

Операторы от Do и до Loop выполнятся как минимум один раз. Затем будет проверено выполнение условия, чтобы определить, должен ли цикл выполняться еще раз.

Задания для самостоятельного выполнения

9.6. В системе программирования Visual Basic .NЕТ создать проект «Циклы с постусловием», описанный в параграфе.

9.6 Циклы в J# и C#

Давайте посмотрим на циклы с неопределенным количеством повторений в C# и J#.

Циклы в языке С#. На C# можно написать код, делающий то же, что и операторы Do While…Loop и Do…Loop While в Visual Basic .NET. В C# нет эквивалентов операторам Do Until…Loop или Do…Loop Until.

Вот как написать такой цикл (while и loop записываются строчными буквами) на С#. Здесь условие проверяется в начале выполнения цикла:

int WhileValue=0;

While (WhileValue<5)

{

MessageBox. Show(WhileValue.ToString ()) ;

WhileValue=WhileValue + 1;

}

А вот код на C# для цикла dowhile loop (do, while и loop записываются строчными буквами), истинность условия в котором проверяется после выполнения кода в цикле:

int WhileValoe=0;

do

{

MessageBox.Show (WhileValue.ToString ()) ;

WhileValue=WhileValue + 1;

}

while (WhileValue<5) ;

Циклы в языке J#. А теперь посмотрим на код на J#, который очень похож на код на С#. В J# нет эквивалентов операторам Do Until…Loop или Do…Loop Until из Visual Basic .NET. Вот как создается цикл (while и loop записываются строчными буквами) на J#. Здесь цикл проверяет истинность условия в начале выполнения:

int WhileValue=0;

while (WhileValue<5)

{

MessageBox.Show(System.Convert.ToString (WhileValue));

WhileValue= WhileValue +1;

}

Вот код на J# для цикла (do, while и loop записываются строчными буквами), проверяющего истинность условия после выполнения кода в цикле:

int WhileValue=0;

do

{

MessageBox.Show (System.Convert.ToStrinq(WhileValue));

WhileValue= WhileValue +1;

}

while (WhileValue<5);

9.7. Выход из циклов

Из циклов Do WhileLoop, Do UntilLoop, DoLoop While и DoLoop Until можно выйти с использованием оператора Exit Do. С помощью оператора If…Then проверяется истинность условия, управляющего выполнением оператора Exit Do. Если условие истинно, то выполняется оператор Exit Do и выполнение цикла завершается. Используйте Exit Do, если вы хотите завершить выполнение цикла до того, как его управляющее условие станет истинным (или ложным).

Давайте разберем пример выхода из цикла Do Until…Loop. Создайте новое приложение Windows и назовите его «Exit-Do». Поместите на форму кнопку. Выполните двойной щелчок по кнопке, чтобы отредактировать обработчик ее нажатия. Добавьте в обработчик следующий код:

Dim UntilValue As Integer

UntilValue = 0

Do Until (UntilValue > 10)

MessageBox.Show(UntilValue)

UntilValue = UntilValue + 1

If UntilValue = 5 Then 

Exit Do 

End If

Loop

MessageBox.Show(“Exit Value= “ & UntilValue)

Постройте и запустите проект. Нажмите кнопку на форме. При каждом выполнении цикла значение переменной UntilValue будет увеличиваться на 1 и эти значения будут выводиться в окнах сообщений. Закрывайте каждое окно сообщения нажатием кнопки ОК. Когда значение UntilValue достигнет 5, условие в операторе IfThen станет истинным. Будет выполнен оператор Exit Do. Выполнение цикла завершится, и начнет выполняться код за оператором Do UntilLoop. Этот код выведет на экран окно сообщения с текстом «Exit Value= 5». Нажмите в этом окне кнопку ОК. чтобы вернуться на форму.

Точно такой же оператор Exit Do можно использовать для выхода из циклов Do Whi1е…Loop до того, как управляющее условие станет ложным.

Задания для самостоятельного выполнения

9.7. В системе программирования Visual Basic .NЕТ создать проект «Exit-Do», описанный в параграфе.


 

А также другие работы, которые могут Вас заинтересовать

74424. Осевой цилиндр корня 39 KB
  В осевом цилиндре корня можно различать сложный радиальный проводящий пучок и паренхиму ткань периферическая часть которой в виде кольца клеток называется перициклом рис. Эти клетки удлиняются в радиальном направлении делятся тангентальными перегородками и образуют корнеродную дугу со слоями клеток функционирующими по тому же типу как в кончике корня. Заложение боковых корешков происходит весьма близко к конусу нарастания образующего их корня выход же их наружу на значительном расстоянии.
74425. Строение типичного зеленого листа 58 KB
  В пластинке листа уже с помощью лупы можно различить 4 группы тканей: 1 покровную кожицу или эпидермис; 2 основную питательную мезофилл1; 3 проводящую сосудистоволокнистые пучки жилки; 4 механическую придающую листу жесткость определяющую положение листа в пространстве. Эпидермис стебля переходит на черешок и пластинку листа. Местами преимущественно на нижней стороне листа в эпидермисе находятся устьица.
74426. Флоэма 39 KB
  При изучении формирования члеников ситовидной трубки можно видеть что сначала членик представляет живую тонкостенную клетку с протоплазмой ядром лейкопластами и центральной вакуолей через полость которой проходят тяжи протоплазмы. Клетка членик ситовидной трубки растет; замыкающие пленки пор при этом растягиваются утоньшаются; в них образуются мелкие перфорации; в остальной части клеточная оболочка значительно утолщается под микроскопом она сильно блестит. Денатурация протоплазмы обнаруживается тем что членики трубки уже не...
74427. Бесполое и половое размножение хвощей 29 KB
  Благодаря этим лентам споры обычно сцепляются в рыхлые комочки разносимые ветром из вскрывшихся спорангиев и заростки развивающиеся из спор бывают скучены группами. Раньше заростки хвощей считали раздельнополыми: одни более мелкие только с антеридиями другие более крупные только с архегониями. Однако в недавнее время у некоторых видов были обнаружены и обоеполые заростки. Возможно что они потенциально обоеполы у многих видов и что кажущаяся их однополость объясняется неодновременностью развития архегониев и антеридиев архегонии...
74428. ЧЕРЕДОВАНИЕ ПОЛОВОГО И БЕСПОЛОГО ПОКОЛЕНИЙ И СМЕНА ЯДЕРНЫХ ФАЗ 37.5 KB
  У большинства же зигота немедленно начинает делиться и образует новое растение или зародыш его; последний у семенных растений временно задерживается в дальнейшем развитии. У большинства оно способно размножаться вегетативно; кроме того у очень многих растений на нем или в нем образуются бесполым путем специальные клетки служащие для размножения носящие нередко различные названия и объединяемые под общим наименованием спор бесполого размножения. Каждый вид растений характеризуется определенным диплоидным и вдвое меньшим гаплоидным числом...
74429. Эпиблема (волосконосный слой) 31 KB
  На расстоянии 0110 мм обычно на расстоянии 123 мм от крайней точки корня клетки эпиблемы начинают образовывать корневые волоски. Корневые волоски многих травянистых растений длиннее чем у большинства древесных пород. При свободном росте при развитии корней в воде или во влажном воздухе волоски имеют форму цилиндра или конуса с закруглением на конце. Корневые волоски играют и механическую роль давая опору верхушке корня пробивающейся при росте между частицами почвы и способствуя заякориванию корневой системы в земле.
74430. Бесполое и половое размножение равноспоровых папоротников 31.5 KB
  Стенка спорангиев однослойная; содержимое их археспорий образует после редукционного деления клеточных ядер многочисленные темные споры служащие для бесполого размножения папоротников. Раскрывание созревших и начинающих подсыхать спорангиев происходит у громадного большинства папоротников при содействии группы клеток его стенок расположенных у многих кольцом и имеющих частичные утолщения...
74431. Бесполое и половое размножение разноспоровых, или водяных, папоротников 31.5 KB
  У некоторых разноспоровых папоротников а также других представителей высших споровых растений селагинелл изоэтеса произошла еще большая редукция мужских и женских заростков а также потеря и женским гаметофитом способности к фотосинтезу. У селагинелл близких к плаунам мега и микроспорофиллы собраны в колоски; мегаспоры прорастают в мегаспорангиях еще на материнском растении; у некоторых видов микроспоры переносятся на мегаспорофиллы и мегаспорангии где происходит оплодотворение начинается развитие зародыша и мегаспорангии отпадает...
74432. ПОЛОВОЕ РАЗМНОЖЕНИЕ СЕМЕННЫХ РАСТЕНИЙ 31 KB
  Для рассеивания распространения растения служат следовательно не споры как у типичных споровых растений а семена; бесполого размножения спорами нет чередование поколений выражено неясно и выявляется лишь путем сравнительноморфологических и цитологических исследований. Спорофиллы покрытосеменных растений тесно скученные на концах побегов и у большинства окруженные еще метаморфизированными верхушечными листьями образуют вместе с ними цветок; мы можем охарактеризовать его как укороченный побег листья которого метаморфизированы в связи с...