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», описанный в параграфе.


 

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

20202. Промышленная экология. Промышленное производство и его воздействие на окружающую среду 47.5 KB
  Протяжённость тропосферы 710 километров на полюсах и 1618 километров по экватору. Протяжённость стратосферы примерно 40 километров. До высоты 30 километров температура стратосферы примерно –50оС а затем начинает расти и на высоте 50 километров составляет 10оС. Это связано с наличием в стратосфере озонового слоя расположенного на высоте 2540 километров.
20203. Загрязнение гидросферы 87 KB
  Пресная вода составляет только 25 от всех запасов воды. Примерно 70 пресной воды содержится в ледниках. Ежегодно люди расходуют около 3000 км3 воды из них 150 км3 безвозвратно. Больше всего воды потребляет сельское хозяйство.
20204. Стандартизация и охрана окружающей природной среды 31 KB
  ПДКрз – это концентрация которая при ежедневной работе в течение всего рабочего стажа не может вызвать заболевания или отклонения в состоянии здоровья в процессе работы или в отдаленные сроки жизни настоящего и последующего поколения. ПДКав – это максимальная концентрация примеси в атмосфере отнесенная к определению времени усреднено значение которой при периодическом воздействии или на протяжении всей жизни человека не оказывая на него вредного влияния включая отдаленные последствия. Это концентрация присутствие которой допустимо не...
20205. Расчёт предельно допустимого выброса вредного вещества в атмосферу 145 KB
  Нарисуем график зависимости концентрации загрязняющего вещества по оси факела выброса от расстояния до источника выброса. Расчёт предельно допустимого выброса состоит из нескольких частей и первая часть – расчёт максимальной приземной концентрации. Все формулы даются для двух вариантов: горячего выброса и холодного выброса.
20206. Контроль загрязнения почв 38 KB
  Кроме ПДК в номенклатуру санитарного состояния почв входят показатели: Общее количество аммонийного азота. Общее количество нитратного азота. Общее количество хлоридов. Общее количество пестицидов.
20207. ИССЛЕДОЛВАНИЕ ДИФФЕРЕНЦИАЛЬНЫХ СИСТЕМ 96 KB
  Для получения равноплечной дифференциальной системы соединяются дужками гнезда 10 16 при этом коэффициенты трансформации равны: Для получения неравноплечной дифференциальной системы соединяются дужками гнезда 10 16 при этом коэффициент трансформации равны Резисторная дифференциальная схема состоит из четырех резистров по 600 Ом образующих равноплечный мост рис. Для этого соединить дужкой гнезда 11 16 а к гнездам ГЕН 23 27 подключить измерительный генератор с частотой...
20208. ИЗУЧЕНИЕ ОКОНЕЧНОЙ АППАРАТУРЫ СИСТЕМЫ ПЕРЕДАЧИ К - 60П 148.5 KB
  Шестидесятиканальная система передачи на транзисторах К 60П предназначена для уплотнения симметричного кабеля диаметром жил 12мм в спектре частот 12 252 кГц. Работой устройств АРУ управляют токи контрольных частот: 16кГц наклонная 112 кГц криволинейная 248 кГц плоская. Индивидуальное преобразование спектра частот 03 34 кГц каждого из 12 каналов тональной частоты осуществляется соответственно с помощью одной из несущих частот: 108; 104; ; 64 кГц. В результате этого преобразования образуется спектр стандартной первичной...
20209. ИЗУЧЕНИЕ КОДИРУЮЩЕГО УСТРОЙСТВА 33 KB
  Сигнал на выходе компаратора зависит от соотношения Iвх и Iэт если Iвх Iэт на выходе компаратора логическая 1 . Если Iвх Iэт на выходе компаратора логический 0 . Сигнал строб 1 формирует импульс кодовой группы а сигнал строб 2 в зависимости от решения компаратора оставляет эталонный ток включенным до конца кодирования отсчета если Iвх Iэт или выключает эталонный ток данного разряда если Iвх Iэт. Наименование импульсов Амплитуда Примечание ТИ Строб 1 Строб 2 РИ 2вых Iэт 23 = 8 Iэт 22 = 4 Iэт 21 = 2 Iэт 20 = 1...
20210. ИССЛЕДОВАНИЕ РЕГЕНЕРАТОРА ЦСП 35 KB
  Подключить шнуры питания макета и измерительные приборы к розеткам сеть 220В . Включить тумблеры питания настроить измерительные приборы. Исследовать работу датчика кодовых групп ДКГ: поставить на макете ключ 1 в положение РУЧ при этом работой ДКГ можно управлять вручную кнопкой при помощи ручного датчика импульсов РДИ для контроля состояния комбинации кодовой группы используются светодиоды; при помощи шнуров подключить 1ый вход осциллографа к выходу ДКГ и настроить осциллограф на неподвижное изображение импульсов на экране для этого...