Изучаем язык 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", bIF a>b THEN PRINT "Большее число: ", a:с=2*aELSE PRINT "Большее число: ", b:с=2*bPRINT "результат: ", cEND
Сначала программа запрашивает оба числа, затем проверяет условие a>b. Если условие верно, то на экран выводится число a, затем это число удваивается. Иначе на на экран выводится число b, затем число b удваивается. В завершении на экран выводится удвоенное значение большего числа.
Обратите внимание: программа имеет один недостаток - не учитывается тот случай, когда введенные числа равны. Исправим это, использовав вложение одного условия в другое.
REM определить большее из двух чисел...INPUT "Введите а", аINPUT "Введите b", bIF a=b TNEN PRINT "Числа равны":с=2*aELSE IF a>b THEN PRINT "Большее число: ", a: с=2*a ELSE PRINT "Большее число: ", b: с=2*bPRINT "результат: ", cEND
В этой программе два условных оператора, первым проверяется условие равенства чисел и, в случае его выполнения, будет выдано сообщение о равенстве чисел, если числа не равны, то проверяется второе условие...
Пример: Решение квадратного уравнения.Решение квадратного уравнения зависит от значения дискриминанта.
REM Решение квадратного уравненияINPUT "Введите коэффициент a: ", аINPUT "Введите коэффициент b: ", bINPUT "Введите коэффициент c: ", cd=b*b-4*a*cIF 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, x2END
Логические условия называются простыми, если разветвления имеет две ветви и сложными, если ветвей более двух.
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