Вся программа для разветвляющегося алгоритма состоит из команд (операторов). Команды бывают простые и составные (команды, внутри которых встречаются другие команды). Составные команды часто называют управляющими конструкциями. Этим подчеркивается то, что эти операторы управляют дальнейшим ходом программы.
В программе для разветвляющегося алгоритма дополнительно используются следующие операторы:
Условный оператор на языке Basic.
Простая форма оператора выглядит следующим образом:
IF <УСЛОВИЕ> THEN <ОПЕРАТОР>
или
IF <УСЛОВИЕ> THEN <ОПЕРАТОР 1><ОПЕРАТОР 2> …<ОПЕРАТОР N> END IF
Если условие справедливо, то программа выполняет тот оператор, который стоит после ключевого слова THEN (или серию операторов от ключевого слова THEN до END IF), и дальше руководствуется обычным порядком действий. Если условие не справедливо, то оператор, стоящий после THEN (или серия операторов от THEN до END IF) не выполняется, и программа сразу переходит к обычному порядку действий.
Конструкция IF...THEN позволяет в зависимости от справедливости условия либо выполнить оператор, либо пропустить этот оператор.
Конструкция IF...THEN...END IF позволяет в зависимости от справедливости условия либо выполнить группу операторов, либо пропустить эту группу операторов.
Условия - еще один тип логических выражений. В них используются следующие операторы сравнения:
= | равно |
<> | не равно |
> | больше |
< | меньше |
>= | больше или равно |
<= | меньше или равно |
Справа и слева от знака сравнения должны стоять величины, относящиеся к одному типу. В результате сравнения получается логическая величина, имеющее значение ИСТИНА (TRUE) или ЛОЖЬ (FALSE).
Пример:
5<7 - ИСТИНА;
8=12 -ЛОЖЬ (проверяем равно ли 8 12, именно проверяем, а не утверждаем, что 8=12);
Предыдущие конструкции позволяли обойти или выполнить серию оператор в зависимости от справедливости условия. Это еще не было ветвлением. Чтобы вычисления могли разветвляться по нескольким направлениям, служит конструкция IF...THEN...ELSE...END IF.
IF <УСЛОВИЕ> THEN <ОПЕРАТОРЫ1>ELSE<ОПЕРАТОРЫ2>END IF
Если условие справедливо (ИСТИНА), то выполняются <операторы 1> (стоящие между THEN и ELSE), а <операторы 2> (стоящие между ELSE и END IF) будут пропущены.
Если условие не справедливо (ЛОЖЬ), то <операторы 1> игнорируются и выполняются <операторы 2>.
IF - если, THEN - тогда, ELSE - иначе.
Если в комнате темно, тогда надо включить свет.
Если пойдет дождь, тогда надо взять зонтик,
иначе, зонтик не брать.
Пример: Проверить, равно ли введенное число некоторому значению, и в случае равенства выдать на экран сообщение о равенстве чисел.
REM сравнить число со каким-то значением
INPUT "Введите а", а
IF a=7 THEN PRINT "Числа равны"
END
После запуска программы проверяется равно ли введенное значение семи или нет. Если равно, то на экран выводится сообщение 'Числа равны'.
Пример: Определить большее из двух чисел, вывести его на экран, затем - увеличить его в двое и вывести результат на экран.
REM определить большее из двух чисел...
INPUT "Введите а", а
INPUT "Введите b", b
IF a>b THEN PRINT "Большее число: ", a с=2*a ELSE PRINT "Большее число: ", b с=2*b END IF
PRINT "результат: ", c
END
Сначала программа запрашивает оба числа, затем проверяет условие a>b. Если условие верно, то на экран выводится число a, затем это число удваивается. Иначе на экран выводится число b, затем число b удваивается. В завершении на экран выводится удвоенное значение большего числа.
Обратите внимание: программа имеет один недостаток - не учитывается тот случай, когда введенные числа равны. Исправим это, использовав вложение одного условия в другое.
REM определить большее из двух чисел...
INPUT "Введите а", а
INPUT "Введите b", b
IF a=b TNEN PRINT "Числа равны" с=2*a ELSE IF a>b THEN PRINT "Большее число: ", a с=2*a ELSE PRINT "Большее число: ", b с=2*b END IF END IF
PRINT "результат: ", c
END
В этой программе два условных оператора, первым проверяется условие равенства чисел и, в случае его выполнения, будет выдано сообщение о равенстве чисел, если числа не равны, то проверяется второе условие...
Пример: Решение квадратного уравнения.
Решение квадратного уравнения зависит от значения дискриминанта.
REM Решение квадратного уравнения
INPUT "Введите коэффициент a: ", а
INPUT "Введите коэффициент b: ", b
INPUT "Введите коэффициент c: ", c
d=b*b-4*a*c
IF d<0 THEN PRINT "Корней нет" ELSE IF d=0 THEN x=-b/(2*a) PRINT "корень уравнения: ", x ELSE x1=(-b-SQR(d))/(2*a) x2=(-b+SQR(d))/(2*a) PRINT "корни уравнения: ", x1, x2 END IF END IF
END