Множественный выбор(SELECT CASE).

SELECT CASE арифм. _ выражение или симв. _ выражение

CASE условие1

<блок команд1>

CASE условие2

<блок команд2>

[CASE ELSE

<блок командN>]

END SELECT

 

В поле операндов SELECT CASE записывается произвольное арифметическое выражение или символьное выражение, которое в процессе выполнение программы принимает то или иное символьное значение.

В поле операндов каждое CASE надо указать условие в одном из форматов:

1) CASE константа 1, константа_2,

2) CASE IS знак _ отношения константа

3) CASE константа 1, TO константа_2

Константы в условии должны быть того же типа, что и выражение в LECT CASE.

Алгоритм множественного выбора заключается в следующем. Сначала вычисляем значение выражения, записанного в SELECT CASE. Далее проверяется, удовлетворяет ли это значение одному из указанных в CASE условий. Если значение удовлетворяет какому-то условию, выполняется ряд команд, следующий за данным CASE.

ПРИМЕР:

INPUT A

SELECT CASE

CASE 1,5

PRINT “A равно 1 или 5”

CASE IS>5

PRINT “A больше5”

CASE –8 TO 2.5

PRINT “a не меньше –8, но больше 2.5”

CASE ELSE

PRINT “ Ни одно условие не выполняется”

END SELECT

Если ни одно условие не удовлетворяется, выполняется блок следующий за CASE ELSE.

 

Операторы цикла

 

При решении многих задач возникает необходимость многократного повторения одних и тех же действий, но над различными значениями переменных, определяющих эти действия. Такие вычислительные процессы называются циклическими, а многократно повторяемые участки –циклами. В BASIC существуют специальные операторы цикла, синтаксическая структура которых имеет вид

FOR V=A1 TO A2 STEP A3

Операторы

Области (тела)

Цикла

NEXT V

где V- параметр или счетчик цикла; A1,A2,A3-выражения определяющие соответственно начальное А1, конечное А2 значения счетчика и шаг изменения параметра цикла А3.

Такая структура предписывает выполнить все операторы, расположенные между FOR и NEXT, для всех значений параметра цикла V, удовлетворяющих условию (A2-V)*A3>=0.

Количество повторений цикла определяется по формуле

K=[(A2-A1)/A3]+1

где []-целая часть частного.

Конструкция STEP A3 может быть опущена, если А3=1. Например, при выполнении программы

For x%=1 to 8 step 2

Print 2^x%;

Next x%

End

на печать будет выведена последовательность 2, 8, 32, 128.

В качестве шага цикла разрешается использовать любые значения, в том числе отрицательные и дробные. Например,

For l=3.5 to 1 step -.5

Print l;

Next l

На экран будет выведена строка 3.5 3 2.5 2 1.5 1.

Переменная являющаяся счетчиком цикла, может использоваться внутри цикла как любая другая переменная, в частности , можно менятьее значение,что, однако, делать не рекомендуется, так как это может повлиять на число повторений оператора цикла. Например, программа

 

For x=1 to 99 step 2

Print x

X=2*x

Next x

End

Выдает на печать только шесть значений x:1, 4, 10, 22, 46, 94.

При выходе из цикла, по какому –либо оператору условного или безусловного перехода значение счетчика цикла равно последнему значению внутри цикла. Например, рассмотрим программу, реализующую вывод на печать первого положительного значения функции y=x^2-5*X+6 при изменении аргумента от 2,5 до 4 с шагом 0,2.

 

For x=2.5 to 4 step 0.2

Y=x^2-5*x+6

If y>0 then H1

Next x

H1:

Print “x=”; x, “y=”;y

End

 

В отличие от счетчика цикла начальное (А1) и конечное (А2) значения параметра цикла и шаг его изменения (А3) являются неизменными в течение выполнения цикла.

Разрешается использование цикла в цикле (вложенных циклов).

В этом случае внутренний цикл должен полностью находиться в теле внешнего цикла. Например,

For A=……

For B=…..

|

|

next B

for c=…….

|

next c

next A

 

Рассмотрим пример. Пусть необходимо составить программу вычисления значений функции двух переменных z=(x^2+y^2)*(sinx+ cosy) при изменении x от 1 до 3 с шагом 0,5 и y от 0 до 4 с шагом 0,5.

INPUT x0,xk,hx,y0,yk,hy

For y=y0 to yk step hy

For x=x0 to xk step hx

Z=(x^2+y^2)*(sinx+cosy)

Print “x=”;x,”y=”;y,”z=”;z

Next x

Next y

End