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


 

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

189. Разработка автономной системы энергоснабжения от солнечных модулей на основе структур с переключаемыми конденсаторами 702.58 KB
  Схемы преобразования постоянного напряжения. Устройства на основе конденсаторных преобразователей с переменной структурой. Повышающие преобразователи, регулировка выходного напряжения. Амплитуда тока через зарядные ключи.
190. Средства анализа данных 803 KB
  Формирование в блокноте осмысленной информации, использование программных возможностей WinHex. Обработка данных в программном пакете Математика и проверка суммы вероятностей элементов списка. Расчет величины информационной энтропии.
191. Общие понятия и аксиомы кинетики. Простейшие действия с силами и системами сил 793.3 KB
  Аналитическое создание вектора силы тока. Движение материальной точки по параболе. Условия движения плоскопараллельного тела, его поступательное, равномерное и прямолинейное движение.
192. Финансовое планирование в коммерческой организации 436.5 KB
  Цели, задачи, принципы и этапы финансового планирования. Классификация финансовых планов. Особенности бюджетирования: сущность, функции, виды. Миссия и сущность стратегии финансового планирования организации.
193. Реализация игры жизнь 276 KB
  Установка начальных значений ячеек сетки, анализ поведения различных комбинаций клеток на доске в математический игре Жизнь. Хранение значений клеток методом использования двумерного массива и заполнение его соответственными комбинациями.
194. Автоматизированные системы управления технологическими процессами 257.5 KB
  Изучение функционирования программы Electronics Workbench для приобретения навыков по исследованию электрических схем с помощью виртуальных электроизмерительных приборов. Снятие нагрузочных характеристик с помощью амперметра и вольтметра.
195. Расчет устойчивости естественных откосов 187 KB
  Метод круглоцилиндрической поверхности скольжения. Метод горизонтальных сил и расчет устойчивости склона. Определённые возможности появления и степени распространения активных (движущихся) оползней при инженерно–геологических условиях и действующих нагрузках.
196. Контроль качества и определение свойств материалов 777 KB
  Кратковременное механическое растяжение, типичные графические зависимости напряжения от деформации. Методы определения теплопроводности, температуропроводности и теплоемкости. Методы определения электрических свойств.
197. Определение договорной цены и расчет эффективности строительства 620.5 KB
  Расчет сметной стоимости строящегося здания по заданному аналогу. Сводная ведомость стоимости работ выполненных по объекту. Определение сметной стоимости на благоустройство территории (дороги и тротуары).