17446

Ветвление: полная форма

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

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

Лабораторная работа № 7 Ветвление: полная форма 7.1. Вложенные операторы lf...Then Внутрь оператора If_Then можно поместить еще один оператор If_Then. Второй оператор If_Then будет выполняться только если условие в первом выполняется. Второй оператор находится внутри первого. Гово...

Русский

2013-07-01

108.89 KB

2 чел.

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

Ветвление: полная форма

7.1. Вложенные операторы lf...Then

Внутрь оператора If_Then можно поместить еще один оператор If_Then. Второй оператор If_Then будет выполняться, только если условие в первом выполняется. Второй оператор находится внутри первого. Говорят, что оператор If_Then вложен внутрь другого оператора.

Создайте новое приложение Windows и назовите его «Флажки». Добавьте на форму два флажка и кнопку. Измените значение свойства Text кнопки на Флажки установлены?. Выполните двойной щелчок по кнопке, чтобы отредактировать обработчик ее нажатия. Добавьте в обработчик следующий код:

If CheckBoxl.Checked = True Then

If CheckBox2.Cheeked = True Then

MessageBox.Show(“Оба флажкa установлены”)

End If 

End If

Постройте и запустите приложение. Установите первый флажок и нажмите кнопку с надписью Флажки установлены?. Что произойдет? Ничего. Теперь установите второй флажок и снова нажмите кнопку с надписью Флажки установлены?. На этот раз появится окно с сообщением «Оба флажка установлены.» Как видите, в первой строке кода есть условие:

If CheckBoxl.Checked = True Then

За этим условием идет оператор, который будет выполняться, только если выполняется условие. Это еще один оператор If_Then, вложенный в первый. Во вложенном операторе If_Then есть свое условие:

If CheckBох2.Checked = True Then

В этот оператор вложен следующий:

MessageBox.Show(“Оба флажка установлены.”)

Так что же происходит? Если условие в первом операторе выполняется (флажок CheckBoxl установлен), то выполняется вложенный оператор. Это еще один оператор If...Then. Если условие во втором операторе тоже выполняется (флажок CheckBox2 установлен), выполняется следующий вложенный оператор, и на экран выводится окно сообщения. Оба условия должны выполняться, иначе окно сообщения не будет выводиться. И CheckBox1, и CheckBох2 должны быть установлены.

Обратите внимание на то, что End If для первого оператора If...Then идет после End If для второго If...Then. С помощью вложения можно совмещать множество операторов If...Then, чтобы какой-то код выполнялся только при выполнении всех условий.

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

7.1. В системе программирования Visual Basic .NET создать проект «Флажки», описанный в параграфе.

7.2. Противоположные условия

До сих пор действия в условном операторе выполнялись при выполнении условия. Если условие не выполнялось, ничего не происходило. А что, если нам нужно выполнить какие-то действия и в том случае, если условие не выполняется?

Ну, во-первых, можно написать еще один оператор If...Then с противоположным условием и поместить в него нужные строки кода. Давайте попробуем!

Создайте новое приложение Windows и назовите его «IfThenOtherwise». Добавьте на форму два флажка и кнопку. Измените значение свойства Text кнопки на If Then. Поместите в обработчик ее нажатия следующий код:

If CheckBoxl.Checked = True Then

Form.ActiveForm.BackColor = System.Drawing. Color.Red

End If

If CheckBoxl.Checked = False Then

Form.ActiveForm.BackColor = System.Drawing. Color.Blue

End If

Постройте и запустите проект. Нажмите кнопку с надписью If Then. Форма станет синей. Установите флажок CheckBoxl и еще раз нажмите кнопку с надписью If Then. Форма станет красной.

Как работает этот код? В первом операторе If...Then условие проверяет, установлен ли флажок: CheckBoxl .Checked = True. Если условие выполняется, то цвет фона (BackColor) формы изменяется на красный. Второй оператор If...Then содержит условие, проверяющее, сброшен ли флажок: CheckBoxl.Checked = False (противоположное условие). Если это условие выполняется, то цвет фона формы меняется на синий. Да, в коде есть повторения, но он работает! Его недостаток — присутствие двух почти одинаковых операторов. Такой подход отнимает лишнее время и может стать причиной ошибок.

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

7.2. В системе программирования Visual Basic .NET создать проект «IfThenOtherwise», описанный в параграфе.

7.3. Оператор lf...Then...Else

В языке Visual Basic .NET есть альтернативная возможность, избавляющая от необходимости повторять строки кода и упрощающая его понимание. Эта альтернатива — оператор If...Then...Else. Этот оператор требует только одного условия, но позволяет выбирать, какие операторы выполнять при выполнении условия, а какие — при невыполнении. Оператор If...Then..Else используется вместо двух одинаковых операторов If...Then с противоположными условиями. Вот его синтаксис:

If Условие Then

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

Else

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

End If

Как работает этот код? Сначала проверяется условие. Если оно выполняется, то выполняется Последовательность операторов 1. В противном случае выполняется Последовательность операторов 2.

Создадим программу «If-Then-Else» с помощью оператора If...Then...Else и докажем, что она работает точно так же, как и с двумя отдельными операторами If...Then с противоположными условиями.

Добавьте на форму еще одну кнопку. Измените значение ее свойства Text на If-Then-Else. В обработчик ее нажатия введите следующий код:

If CheckBoxl.Checked = True Then

Form.ActiveForm.BackColor = System. Drawing. Color.Red

Else

Form.ActiveForm.BackColor = System.Drawing. Color.Blue

End If

Постройте и запустите проект. Нажмите кнопку с надписью If Then Else. Форма станет синей. Установите флажок CheckBoxl и еще раз нажмите кнопку с надписью If Then Else. Форма станет красной. Программа делает с помощью одного оператора то же самое, что раньше делала с помощью двух. Код проверяет, выполняется ли условие CheckBoxl .Checked = True. Если да, то выполняется первый оператор и форма становится красной. В противном случае выполняется второй оператор и форма становится синей.

Давайте разберем еще один пример с If...Then... Else. Создадим программу «If-Then-Else-2», поместив в каждую часть оператора If...Then...Else не по одному оператору, а по несколько. В операторе If...Then...Else после If...Then и Else можно размещать сколько угодно строк кода.

Введите код обработчика нажатия кнопки Buttonl:

If CheckBoxl.Checked = True Then

Form.ActiveForm.BackColor = System.Drawing. Color.Red

MessageBox.Show(“I'm red.”)

TextBox1.Text = “I'm red.”

Else

Form.ActiveForm.BackColor = System.Drawing. Color.Blue

MessageBox.Show(“I'm blue.”)

TextBox1.Text = "I’m blue.”

End If

Постройте и запустите проект. Нажмите кнопку с надписью If Then Else, а затем установите флажок CheckBoxl и еще раз нажмите кнопку с надписью If-Then Else.

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

7.3. В системе программирования Visual Basic .NET создать проект «If-Then-Else», описанный в параграфе.

7.4. В системе программирования Visual Basic .NET создать проект «If-Then-Else-2», описанный в параграфе.

7.4. Пошаговое выполнение If

А теперь воспользуемся отладочными средствами Visual Studio .NET и пошагово выполним код в операторе If...Then...Else. Таким образом, мы сможем увидеть, как он выполняется внутри программы.

Создайте новое приложение Windows и назовите его «Step-In-If». Поместите на форму одну кнопку и один флажок. Установите для свойства Checked флажка значение True. Когда приложение запустится, флажок будет установлен. Выполните двойной щелчок по кнопке, чтобы отредактировать обработчик ее нажатия. Добавьте в обработчик следующий код:

Dim MyValue As Integer

MyValue = 1

If CheckBoxl.Checked = True Then

MyValue = 2

Else

MyValue = 3

End If

1. Установите точку останова в первой строке кода (MyValue = 1), щелкнув правой кнопкой по этой строке и выбрав из контекстного меню пункт Вставить точку останова (Insert Breakpoint).

2. Постройте и запустите проект. Когда откроется форма, нажмите кнопку. Код выполнится до строки с точкой останова.

3. Нажмите клавишу {F11}, чтобы выполнить текущую строку кода MyValue = 1. Подсветится следующая строка.

4. Еще раз нажмите клавишу {F11}, чтобы выполнить строку кода

If CheckBoxl.Checked = True Then Поскольку флажок CheckBoxl установлен, будет подсвечена следующая строка кода — MyValue = 2.

5. Нажмите клавишу {F11}, чтобы выполнить строку кода MyValue = 2. Будет подсвечена строка End If.

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

End If

Будет подсвечена следующая строка.

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

End Sub

Опять появится форма.

8. Сбросьте флажок CheckBoxl и нажмите кнопку. Повторите пошаговое выполнение оператора, нажимая клавишу {F11} и наблюдая, какие строки кода будут подсвечиваться и выполняться. На этот раз выполнится оператор после Else, т. е. строка MyValue = 3.

Вот и все! Теперь вы видели, как выполняется оператор If...Then...Else при работе программы!

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

7.6. В системе программирования Visual Basic .NET создать проект «Step-In-If». Провести пошаговое выполнение проекта так, как это описано в параграфе.

7.5. Операторы If в C# и J#

В языках C# и J# есть условные операторы, работающие точно так же,. как If...Then и If...Then...Else в языке Visual Basic .NET. Но их синтаксис немного другой. Вот пример из С#:

int MyAge;

MyAge=18;

if (MyAge==18)

{

MessageBox.Show(“I am 18.”);

MessageBox.Show(“I am still 18.”);

}

Сначала мы объявляем целочисленную переменную MуАgе и присваиваем ей начальное значение. Затем мы начинаем условный оператор с ключевого слова if — обратите внимание, что все буквы в нем строчные. За этим словом идет условие МуАgе==18. Условие помещено в скобках. Вы. наверное, обратили внимание на два знака «равно» подряд. В языке C# так обозначается операция сравнения (в Visual Basic .NET она обозначается одним знаком). Операторы, которые должны выполняться при выполнении условия, помещены в фигурные скобки – {   }.

Чтобы код было удобнее читать, некоторые программисты помещают фигурные скобки в отдельных строках. Заметьте, что каждый оператор заканчивается точкой с запятой. Кроме того, ключевое слово Then вообще не используется!

Код на языке J# будет точно таким же, как и на С#.

Давайте разберем оператор If...Then...Else на языке С#. Посмотрите, что есть общего между этими операторами в C# и Visual Basic .NET и чем они отличаются.

int MyAge;

МуАде=18;

if (MyAge==18)

{

MessageBox.Show(“I am 18.”);

MessageBox.Show(“I am still 18.”);

}

else

{

MessageBox.Show(“I am 19.”);

MessageBox.Show(“I am still 16.”);

}

Условие снова помещено в скобки. Заметьте, что на этот раз здесь два блока операторов — один после условия и один после else. Каждый блок помещен в фигурные скобки. Заметьте, что каждый оператор заканчивается точкой с запятой. Ключевое слово Then не используется.

В J# синтаксис оператора If...Then..Else точно такой же, как и в С#.

7.6. Булевы операции и операции сравнения в C# и J#

Вы должны знать еще кое-что о различиях между языком Visual Basic .NET и языками C# и J# при использовании операторов If...Then и If...Then..Else. Во-первых, булевы операции обозначаются по другому. Вместо And, Or и Not, C# и J# используют &&, | | и !:

Булева операция

Visual Basic.NET

С#

J#

И

And

&&

&&

Или

Or

| |

| |

Не

Not

!

!

Ялык С#. Вот пример использования булевых операторов И (&&) и Не (!) в С#:

bool isBilled=true;

bool isLate=false;

bool isDone;

isDone = isBilled && !isLate;

MessageBox.Show(isDone.ToString());

Обратите внимание на ключевые слова bool (тип Boolean), true и false — они все набраны строчными буквами. Переменные isBilled, isLate и isDone объявлены как bool (тип Boolean). Обратите внимание на операцию И (&&) и операцию Не (!) в С#. Поскольку C# и J# не выполняют автоматических преобразований значений различных типов в строковые, используется метод ToString.

Язык J#. Вот такой же код на J#:

boolean isBilled=true;

boolean isLate=false;

boolean isDone;

isDone=isBilled u&& ! JisLate;

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

Код выглядит почти так же, как код на С#, но есть и некоторые отличия. Обратите внимание на то, как объявляется переменная boolean (тип Boolean). Все переменные — isBilled, isLate и isDone — объявлены как boolean. В коде на J# также по-другому указывается преобразование значения типа Boolean в строку — с помощью метода System.Convert.ToString.

Некоторые операции сравнения в языках C# и J# обозначаются не так, как в Visual Basic .NET. Вы уже видели, что проверка равенства обозначается == вместо =. Кроме того, проверка неравенства в C# и J# обозначается != вместо <>. Вот таблица с обозначениями операций сравнения:

Операция сравнения

Visual Basic.NET

С#

J#

Равно

=

==

==

Больше чем

>

>

>

Меньше чем

<

<

<

Больше или равно

>=

>=

>=

Меньше или равно

<=

<=

<=

Не равно

<>

!=

!=

Посмотрите на код на языках J# или С#, который использует оператор сравнения «не равно»:

int MyAge;

MуАgе=18;

if (MyAge!=l9)

{

MessageBox.Show(“I am not 19.”);

}

Когда выполняется этот код, выводится окно с сообщением «I am not 19.».

Как видите, различий между операторами If...Then и If...Then...Else в Visual Basic .NET и C# или J# немало, но есть и общие черты! Эти операторы делают то же самое, просто записываются по-другому.


 

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

63901. Стереотипная идентификация: восприятие представителей различных национальностей за границей 20.83 KB
  В первом вопросе предлагалось выбрать от 1 до 3 вариантов ответа в случае подтверждения факта общения с представителями какой либо из 3 национальностей китайцы корейцы японцы и отметить период знакомства указать в 10 летнем периоде или выбрать пункт никогда не сталкивался.
63902. Эмоциональные реакции, маркирующие трансгрессивный переход 36 KB
  Случается ли в бытии человека такая настроенность которая подводит его к самому Ничто и отвечает Ужас приоткрывает Ничто Но действительно ли это настроенность подводит человека к Ничто или всё же ситуация столкновения с Ничто вызывает эту настроенность Мы всё же возьмём ужас...
63903. Трансгрессия глобальной системы международно-правового регулирования 65.5 KB
  Основой глобального права может быть только международное право которое уже приобрело некоторые черты универсального регулятора. Глобализация это состояние мировой экономической системы охватывающей весь спектр человеческой деятельности происходящей от углубленной...
63904. Экономические условия трансформации социокультурного пространства. Доверие в экономике: миф или реальность 63 KB
  Выделяя общественные индивидуальные и самобытные отношения автор рассматривает доверие как феномен изначально характерный для индивидуальных отношений. Однако сегодня доверие становится неотъемлемой частью экономики так как с одной стороны наличие доверия...
63905. Эгоизм как общественная проблема в период социально-культурных трансформаций 25.51 KB
  Проблема эгоистичного устройства общества стояла перед человечеством с возникновением первых цивилизаций. Для нашего рассуждения мы выбирали именно эти произведения так как они относятся к одной и той же эпохе описывают одну и ту же социальную реальность...
63906. Гендерные стереотипы в трансформационном аспекте 44 KB
  Стереотипы плотно окутали общество они сопровождают нас во всех сферах нашей жизни и представляют собой более или менее непротиворечивую картину мира. Так уж сложилось что такие стереотипы в обществе существовали и будут существовать всегда.
63907. Теоретико-методологические проблемы социального контроля 16.08 KB
  Для современной России изучение социального контроля и его различных интерпретаций в социологическом знании является насущной задачей в силу ряда причин: страна находится на стадии трансформации складывается ряд новых структур функционирование которых невозможно обеспечить...
63908. Экстремизм в молодежной среде: региональный аспект 48 KB
  По национальному составу: большинство респондентов 663 идентифицируют себя с русскими 87 респондентов указали что являются бурятами 14 татарами. Выявлено следующее: 45 респондентов считают что знаю что такое экстремизм еще 415 полагают что знаю но не уверены правильно ли.
63909. Межпоколенческая преемственность и социокультурный раскол в современной России 45.5 KB
  На мой взгляд эта фраза как бы подчеркивает то что одно поколение не способно перенять все ценности взгляды правила другого поколения. Как правило между поколениями есть возрастная разница в 2025 лет. Ведь несмотря на то что преемственность между поколениями не бывает...