Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_1 / Элементы программирования - методичка.doc
Скачиваний:
60
Добавлен:
06.03.2016
Размер:
449.02 Кб
Скачать

Операторы выбора

В VisualBasicимеются два типа операторов выбора:опе­раторы условия If (Если) ипереключателиSelect Case (Выбор случая).

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

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

Операторы выбора (условные операторы), как и оператор передачи управления GoTo, могут поменять такой последовательный порядок выполнения программы.

Рассмотрим решение следующей простой задачи.

Задача 8.1. Даны два числа. Определить, равны ли они, а если не равны, то, какое из них наибольшее. Соответствующее сообщение вывести на форму.

Введем переменные: А – первое число, В – второе число.

Словесно опишем часть алгоритма решения задачи, опустив ввод данных.

  1. Если А будет равно В, тогда выводим сообщение “Числа равны”. Если А будет больше В, тогда выводим сообщение “ А – наибольшее” ”. Если В будет больше А, тогда выводим сообщение “ В – наибольшее ”.

Запишем алгоритм кратко, опустив некоторые слова.

  1. Если А = В, тогда выводим “Числа равны”. Если А > В, тогда выводим “А – наибольшее”. Если В > А, тогда выводим “В – наибольшее”.

Перепишем это же по-английски.

  1. If A = B Then Print “Числа равны” If A > B Then Print “A – наибольшее” If B > A Then Print “B – наибольшее”

Приведем перевод: If– если,Then– тогда,Print– печать, вывод.

Мы получили готовый фрагмент программы на VisualBasic. Конструкция сIf…Thenназывается условным оператором. Это один из простейших вариантовоператора выбора,условного операторалинейный, строковый безальтернативный. Записано три таких оператора. В этом случае даже если сразу будет выяснено, что А = В, то два остальных оператора все равно будут выполняться, но сами условияA>B,B>Aне будут выполнены.

Можно использовать в нашей задаче другой вариант условного оператора.

  1. If A = B Then

Print “Числа равны”

End If

If A > B Then

Print “A – наибольшее”

End If If B > A Then

Print “B – наибольшее”

End If

Это вариант записи блочного условного оператора. Вместо трех строк мы написали 9 строк. Блочный условный оператор лучше записывать в случаях, когда после выполнения условия, который следует после словаIf, выполняютсянесколько (блок) операторов, следующие после словаThen. (End– конец).

И, наконец, запишем еще один вариант условного оператора.

  1. If A = B Then

Print “Числа равны”

ElseIf А > B Then ‘ ElseIf – иначе если Print “A – наибольшее”

Rem “ElseIf B > A Then” теперь можно не писать, а просто Else:

Else ‘ Else – иначе. В одном If… может быть только один Else

Print “B – наибольшее”

End If

Ограничений на количество операторов ElseIfнет. При наличииоператор Else условный оператораIfназываютальтернативным.

Почему можно не проверять условие B>A? При сравнении двух чисел возможны только 3 варианта:A = B, A > B, A < B. И если первые два условия не выполняются, то остается третий вариантB>A(или А < В). ПоэтомуElse(иначе) и означает этот третий вариант.

Пятый вариант записи условного оператора – самый оптимальный, т. к. при выполнении какого-либо условия остальные уже не проверяются.

В условном операторе после слова Ifзаписывается условие, которое может быть выполнено или нет.

Условие может иметь и более сложный вид. В условии могут использоваться логические операции And(логическое И),Or(ИЛИ),Xor(исключающее ИЛИ),Not(НЕТ).

Рассмотрим еще одну задачу.

Задача 8.2. Даны три различных числа. Определить, какое из них наибольшее. Соответствующее сообщение выдать на форму.

Введем переменные: А – первое число, В – второе число, С – третье число.

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

Если А > В и А > C, тогда выводим “А – наибольшее ”. ЕслиB> А и В >C, тогда выводим “В – наибольшее”. Если С > А и С > В, тогда “С – наибольшее”.

Перепишем это c использованием операторов VB и получим фрагмент программы:

If A > B And A > C Then Print “A – наибольшее” If B > A And B > C Then Print “B – наибольшее” If C > A And C > B Then Print “C – наибольшее”

Или так:

If A > B And A > C Then

Print “A – наибольшее” ElseIf B > A And B > C Then

Print “B – наибольшее”

Else

Print “C – наибольшее”

End If

Когда сравниваемых чисел много (массив), то такой алгоритм нельзя использовать, а более эффективный, как в примере 9.7.

Рассмотрим третью задачу:

Задача 8.3. Вычислить функцию Y при следующих значениях X:

x при 0 < x < 1

1 при -1 < x ≤ 0 или 1 ≤ x < 2

y=

Переменные: x,y. (Выдумывать названия переменных не надо.)

Опишем часть алгоритма (только вычисление у).

Если 0 < x < 1, тогда y = x

Если -1 < x ≤ 0 или 1 ≤ x < 2, тогда y = 1

Запишем эту часть алгоритма с помощью оператора If…ElseIf…Then.

If x > 0 And x <1 Then

y = x

ElseIf (x > -1 And x <= 0) Or (x >= 1 And x < 2) Then

y = 1

End If

Print “y = “; y

При словесном описании всего алгоритма рекомендуется указывать, с помощью каких операторов можно реализовать каждую алгоритмическую структуру.

Покажем это на примере последней задачи 8.3.

Используя оператор If…Then …ElseIf…End If,:

  1. Проверяем выполнение условия 0 < x < 1.

  2. Если условие выполняется, тогда функция Yвычисляется по формулеy=x.

  3. Если условие 0 < x < 1 не выполняется, то проверяются условия -1 < x ≤ 0 или 1 ≤ x < 2. При выполнении одного из условий функцияyвычисляется по формулеy= 1.