Изучаем язык BASIC. Занятие 3, Ветвление в алгоритмах и программах.

Занятие 3
Ветвление в алгоритмах и программах.
Разветвляющий алгоритм – это алгоритм, в котором в зависимости от условия выполняется либо одна, либо другая последовательность действий.
Во многих случаях требуется, чтобы при одних условиях выполнялась одна последовательность действий, а при других - другая.
[ Cкачайте файл, чтобы посмотреть картинку ]       [ Cкачайте файл, чтобы посмотреть картинку ]
Вся программа состоит из команд (операторов). Команды бывают простые и составные (команды, внутри которых встречаются другие команды). Составные команды часто называют управляющими конструкциями. Этим подчеркивается то, что эти операторы управляют дальнейшим ходом программы.
[ Cкачайте файл, чтобы посмотреть картинку ]
Рассмотрим запись условного оператора на языке Basic.
Простая форма оператора выглядит следующим образом:
IF <УСЛОВИЕ> THEN <ОПЕРАТОР> 
или
IF <УСЛОВИЕ> <ОПЕРАТОР 1>[:<ОПЕРАТОР 2>::<ОПЕРАТОР N>]
Если условие справедливо, то программа выполняет тот оператор, который стоит после ключевого слова THEN (или серию операторов от ключевого слова THEN до конца), и дальше руководствуется обычным порядком действий. Если уловие не справедливо, то оператор, стоящий после THEN (или серия операторов от THEN) не выполняется, и программа сразу переходит к обычному порядку действий. Конструкция IF...THEN  позволяет в зависимости от справедливости условия либо выполнить  оператор, либо пропустить этот оператор.Конструкция IF...THEN... позволяет в зависимости от справедливости условия либо выполнить группу операторов, либо пропустить эту группу операторов.
Условия - еще один тип логических выражений. В них используются следующие операторы сравнения:
=
равно

<>
не равно

>
больше

<
меньше

>=
больше или равно

<=
меньше или равно

Справа и слева от знака сравнения должны стоять величины, относящиеся к одному типу. В результате сравнения получается логическая величина, имеющее значение ИСТИНА (TRUE) или ЛОЖЬ (FALSE).
Пример:
5<7 - ИСТИНА;
8=12 -ЛОЖЬ (проверяем равно ли 8 12, именно проверяем, а не утверждаем, что 8=12);
Предыдущие конструкции позволяли обойти или выполнить серию оператор в зависимости от справедливости условия. Это еще не было ветвлением. Чтобы вычисления могли разветвляться по нескольким направлениям, служит конструкция IF...THEN...ELSE...
IF <УСЛОВИЕ> THEN <ОПЕРАТОРЫ 1>ELSE<ОПЕРАТОРЫ 2> Если условие справедливо (ИСТИНА), то выполняются <операторы 1> (стоящие между THEN и ELSE), а <операторы 2> (стоящие после ELSE ) будут пропущены. Если условие не справедливо (ЛОЖЬ), то <операторы 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 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 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
Логические условия называются простыми, если разветвления имеет две ветви и сложными, если ветвей более двух.
AND и
A and B

OR или
A or B

NOT не
Not A


Вычислить
13 EMBED Equation.3 1415
13 EMBED Equation.3 1415
13 EMBED Equation.3 1415
13 EMBED Equation.3 1415
Задача 1.
Определить является треугольник со сторонами A, B, C равнобедренным.
INPUT “Введите размеры сторон треугольника А, В, С “; A,B,C
IF A=B OR C=A or B=C THEN PRINT “Треугольник равнобедренный”

Задача 2.
Какой четверти принадлежит точка х,у.
INPUT X,Y
IF X>0 END Y>0 THEN ?”1”
IF X<0 END Y>0 THEN ?”2”
IF X<0 END Y<0 THEN ?”3”
IF X>0 END Y<0 THEN ?”4”

Задача 3 Попадает ли заданная точка в заштрихованную фигуру.

INPUT “X=”;X
INPUT “Y=”;Y
IF X>0 AND X<5 AND Y>0 AND Y<2 THEN ?”YES” ELSE ?”NO”


Задача 4
CLS
INPUT X, Y
IF X>-2 AND X<3 AND Y>0 AND Y<2 THEN ?”YES” ELSE ?”NO”
Задача 5.

CLS
INPUT X, Y
F1=( X>-2 AND X<0 AND Y>0 AND Y<3)
F2=( X>0 AND X<4 AND Y>-2 AND Y<0)
IF F1 or F2 THEN ?”YES” ELSE ?”NO”
Домашнее задание.
13 EMBED Equation.3 1415

13 EMBED Equation.3 1415

13 EMBED Equation.3 1415