Рассмотрим задачу: В 4019 году в 11 "А" класс было 30 учеников. После выпуска Вася, Петя, Стёпа поехали работать в Новосибирск, Света, Маша, Дима - в Питер. Местонахождение остальных неизвестно. Написать программу, которая сообщит местонахождение человека, чье имя в нее введут, если таковое известно. В противном случае должно выводиться сообщение "я не знаю"
Для решения этой задачи в принципе достаточно обычного "вложенного ветвления":

Dim a as String
Input a
if a="Вася" then
Print "Он(а) работает в Новосибирске"
else
if a="Петя" then
Print "Он(а) работает в Новосибирске"
else
if a="Стёпа" then
Print "Он(а) работает в Новосибирске"
else
if a="Света" then
Print "Он(а) работает в Питере"
else
if a="Маша" then
Print "Он(а) работает в Питере"
else
if a="Дима" then
Print "Он(а) работает в Питере" else
Print "Я не знаю, где он(а)"
end if
end if
end if
end if
end if
end if

Обратим внимание, как много пришлось написать. А ведь нам известно только местонахождение шестерых из 30, так что это явно не предел. Нельзя ли как-нибудь упростить это ветвление? Разумеется, можно, если использовать составное условие.

Ветвление с составными условиями

Составные условия получаются путем соединения простых условий операторами or, and, или not. В переводе на русский язык эти слова означают "Или", "И", "Не".

Составные условия с оператором "or"

В общем виде синтаксис ветвления с составным условием, соединенным оператором "or" будет выглядеть следующим образом:

if условие 1 or условие 2 or условие 3 or...or условие n then
Команда a1
Команда a2
...
Команда an
else
Команда b1
Команда b2
...
Команда b1
End if

Примечание: Команды а1n, будут выполняться в случае, если хотя бы одно из перечисленных условий будет истинным. Если же все условия будет ложными, будут выполняться команды b1-bn.

Пример:

Программу, описанную выше можно записать следующим образом: Dim a as String
Input a
if a="Вася" or a="Петя" or a="Стёпа" then
Объединяем все условия с помощью слова "или". На русском языке это бы звучало так: "Если введенное имя - Вася или введенное имя - Петя, или введенное имя - Саша, то..."
Print "Он(а) работает в Новосибирске"
else
if a="Света" or a="Маша" or a="Дима" then
Аналогично объединяем всех Питерцев.
Print "Он(а) работает в Питере"
else
Print "Я не знаю"
end if
end if

Задание 1. Пароль считается плохим, если в нем больше 20 символов или меньше 4. Написать программу, которая определит, хорош ли введенный в нее пароль и выдаст соответствующее сообщение

Dim a as String
Примечание: Объявляем переменную.
Input a
Примечание: Вводим с клавиатуры пароль.
if (len(a))<4 or (len(a))>20 then
Примечание: Сравниваем длину пароля с числами 4 и 20
Print "Пароль паршивый"
Не буду пояснять, что делает эта команда, но сработает она только в случае, если хотя бы одно из перечисленных условий будет истинно.
else
Слово "Иначе". Отделяет команды, выполняющиеся если условие истинно, от команд, выполняющихся если условие ложно.
Print "Длина пароля оптимальна"
А эта страшная команда выполнится только в случае, если оба условия будут ложны
End if
Окончание ветвления

Составные условия с оператором "and"

В общем виде синтаксис ветвления с составным условием, соединенным оператором "or" будет выглядеть следующим образом:

if условие 1 and условие 2 and условие 3 and...and условие n then
Команда a1
Команда a2
...
Команда an
else
Команда b1
Команда b2
...
Команда b1
End if

Примечание: Команды a1-an, будут выполняться в случае, если все перечисленные условия будут истинными. Если же все хотя бы одно из них будет ложным, будут выполняться команды b1-bn.

Пример:

Написать программу, которая определит, находится ли указанное число в промежуте от 100 до 200
Dim a as Double
Input a
if a>99 and a<201 then
Объединяем все условия с помощью слова "и". На русском языке это бы звучало так: "Если введенное число больше 99 и одновременно с этим введенное число меньше 201, то..."
Print "Число попадает в промежуток"
else
Print "Число не находится в указанном промежутке"
end if

Задание 2. Написать программу, которая определит, является ли точка с целочисленными координатами х,у принадлежащей к первой координатной четверти.

Dim a as Long
Dim a as Long
Примечание: Объявляем переменные.
Input x,y
Примечание: Вводим их с клавиатуры
x>0 and y>0 then
Чтобы точка принадлежала к первой четверти, у нее х и у должны быть одновременно положительными.
Print "Точка принадлежит первой координатной четверти"
Если оба условия истинны - рапортуем об этом.
else
Слово "Иначе". Отделяет команды, выполняющиеся если условие истинно, от команд, выполняющихся если условие ложно.
Print "Точка не принадлежит к первой четверти"
А эта страшная команда выполнится только в случае, если хотя бы одно из условий будет ложно
End if
Окончание ветвления

Задание 3. Пользователь вводит в программу три целых числа не равных друг другу. Программа должна сравнить их и вывести на экран в порядке убывания.

Примечание к заданию: Программу можно написать кучей разных способов. Дополнительное задание состоит в том, чтобы минимизировать количество писанины.
Самый простой способ написать данную программу заключается в использовании составных условий вместе с сокращенной записью ветвления. Все дело в том, что у нас весьма небольшое кол-во вариантов развития событий:
  1. x>y>z
  2. x>z>y
  3. y>x>z
  4. y>z>x
  5. z>x>y
  6. z>y>x
Причем ни одно из этих событий не может выполниться одновременно с другим. Таким образом, самый простой вариант этой программы будет выглядеть так:


Dim a as Long
Dim a as Long
Dim a as Long
Примечание: Объявляем переменные.
Input x,y,z
Примечание: Вводим их с клавиатуры
if x>y and y>z then print x,y,z
if x>z and z>y then print x,z,y
if y>x and x>z then print y,x,z
if y>z and z>x then print y,z,x
if z>x and x>y then print z,x,y
if z>y and y>x then print z,y,x
Поочередно проверяем каждый из возможных вариантов. Те варианты, которые нам не подходят, компьютер просто пропустит, выбрав таким образом один нужный нам.