Пример решения задач IIA и IIБ
Задача IIA
|
REM алг. разветвляющейся стр. II А
|
INPUT “ A, M, N”; A, M, N
X = (A+M) / N
|
IF C < > 0 THEN
R = LOG( C ) / LOG( 5 )
PRINT “R=” ; R
ELSE
PRINT “решения нет”
END IF
END
Задача IIБВычислить значение функции
при -2 < x ≤ 5
y = x > 5
0x ≤ -2
REM алг. разветвляющейся стр. II
DIM A, X, Y
INPUT “ A, X,”; A, X
IF X >= -2 AND X < 5 THEN
Y = TAN ( A * X)
ELSE
|
|
|
ELSE
Y = 0
END IF
END IF
PRINT “Y =” ; Y
END
Оператор выбора SELECT CASE
Оператор SELECT CASE предназначен для выполнения одного из альтернативных действий, перечисленных в нем. Выбор определяется значением управляющей переменной.
Формат оператора
SELECT CASE переменная
CASE сравнение 1
[операторы 1]
[CASE сравнение 2
[операторы 2]]
. . .
[CASE ELSE
[операторы]]
END SELECT
CASE– сравнение в простейшем случае состоит только из одного выражения (например, из чисел или переменных). Однако можно включать списки выражений (выражение 1, выражение 2...) или целые области (выражение 1 TO выражение 2)
Если Сравнение 1 – ''истина'', то выполняются операторы 1, после чего, операторы, следующие END SELECT.
Если Сравнение 1 – ''ложь'', проверяется условие следующей ветви CASE.
Если ни одно из условий не выполняется, то выполняются операторы ветви CASE ELSE.
Значение переменной можно оценивать с помощью операторов сравнения, как в случае с условиями. Для этого после CASE используется ключевое слово IS, за которым следуют операции отношения или выражения.
Фрагмент программы | Исходные данные | Результат выполнения программы |
CONST Z = 10 Dim C INPUT “C”; C’ SELECT CASE С CASE 1,2 PRINT ’’знач. С = 1 или 2’’ CASE 3 ТО 10 PRINT ’’знач. С в интервале от 3 до 10’’ CASE IS = 11 PRINT ’’значение С = 11’’ CASE IS < Z + 10 PRINT ’’значение С > 11 и < 20’’ CASE ELSE PRINT ’’инф. отсутствует’’ END SELECT | при С = 1 | значение С = 1 или 2 |
при С = 5 | знач. С в интервале от 3 до 10 | |
при С = 11 | значение С = 11 | |
при С = 15 | значение С > 11 и < 20 | |
при С >20 | инф. отсутствует |
Алгоритмы циклической структуры
Цикл – последовательность операторов, выполняемых многократно.
Цикл ''ПОКА'' Цикл ''ДО'' Цикл ''СЧЕТЧИК''
| |||||
| |||||
| |||||
-
|
|
|
+
-
Цикл также можно сформировать с помощью операторов IF THENи GOTO.
Операторы цикла WHILE – WEND (цикл ‘’ПОКА’’)
Циклические действия выполняются, пока выполняется определенное условие.
Формат оператора
WHILE условие
Оператор 1
. . .
Оператор n
WEND
Пока выполняется условие, последовательно выполняются операторы 1 ÷ n.
WEND –закрывает цикл.
Если условие не выполняется с самого начала, то управление передается оператору, следующему заWEND,т.е. циклические действия не выполняются ни разу.
Необходимо следить, чтобы действия внутри цикла влияли на WHILE – условие.
К моменту первой проверки условия переменные, входящие в оператор, должны быть установлены соответствующим образом
Фрагмент программы | Результат выполнения программы |
Z= - 5 WHILE Z <= 0 T = ABS(Z) Z = Z +1 PRINT ’’T = ’’; T; ''Z=”;Z WEND | T = 5 Z = - 4 T = 4 Z = - 3 T = 3 Z = - 2 T = 2 Z = -1 T = 1 Z = 0 T = 0 Z = 1 |
Операторы цикла DO – LOOP
Циклические действия выполняются дотех пор, пока выполняется определенное условие.
Формат оператора
1. Цикл ‘’ДО’’( выполняется не менее одного раза)
DO
[оператор 1]
... [EXIT DO]
[оператор n]
LOOP условие
2. Цикл ‘’ПОКА’’ (может не выполняться ни разу)
DO условие
[оператор 1]
... [EXIT DO]
[оператор n]
LOOP
Способы проверки условия:
WHILE – цикл выполняется, пока соблюдается условие (л.в. – истина)
UNTIL – цикл осуществляется, только если не выполняется условие (л.в. – ложь)
EXIT DO – преждевременно прерывает выполнение цикла. Работа продолжается с оператора, следующего за LOOP.
Цикл DO – LOOP может работать без проверки условий. В этом случае из бесконечного цикла можно выйти с помощью EXIT DO.
Пример 1 | Пример 2 | Пример 3 |
Z=-10 ’цикл ''ДО'' DO T = ABS(Z) Z = Z +1 PRINT ’’T = ’’; T LOOP WHILE Z <= 0 {или LOOP UNTIL Z >0} | Z= - 10 ’цикл ''ПОКА'' DO WHILE Z <= 0 или UNTIL Z > 0} T = ABS(Z) Z = Z +1 PRINT ’’T = ’’; T LOOP | Z= - 10 DO T = ABS(Z) Z = Z +1 PRINT ’’T = ’’; T IF Z > 0 THEN EXIT DO END IF LOOP |
Операторы цикла FOR – NEXT (цикл со счетчиком)
Этот цикл применяется для циклических вычислений с известным количеством повторений.
Формат оператора
FOR счетчик = N1 TO N2[STEP N3]
Оператор 1
. . .
[оператор n]
[EXIT FOR]
NEXT счетчик
Счетчик – числовая переменная, изменяющаяся при повторении цикла (управляющая переменная цикла, параметр цикла).
N1 –начальное значение счетчика – а.в., задает начальное значение параметра цикла.
N2 -конечное значение счетчика – а.в., задает конечное значение параметра цикла.
N3 –шаг – а.в. – приращение параметра цикла. По умолчании - шаг N3= 1.
EXIT FOR – прерывание цикла. Программа выполняется с оператора, следующего за NEXT.
Пример 1 | Пример 2 |
Z= - 10 ’Табулирование функции FOR Z = - 10 TO 0 T = ABS(Z) PRINT ’’T = ’’; T NEXT Z | S = 0‘Вычисление суммы FOR I =1 TO 11 STEP 2 S = S+ (A+I)^2 NEXT I PRINT ’’S = ’’; S |
Вложенные циклы
Вычислить значение функции
, , ,
k =1, 2, 3,...,16, i =1, 3, 5,..., 21
REM вложенные циклы
DIM H, M, DL, i, AI, BK, Ci, Yi, S, K
INPUT ''H,M,DL’’; H,M,DL
FOR i = 1 TO 21 STEP 2
Ai = H + I : Ci = M ^ i
S = 0
FOR K = 1 TO 16
BK = DL *K : S = S + BK*Ci
NEXT K
Yi = Ai + S
NEXT i
PRINT ”S=”;S: END
Пример:
Вычислить значение функции yk = ak + bk3, k = 1, 3, …, 23,
при , xi = x0 + i Δ , i = 1, 2, …, k,
Итерационные циклы
Вычислить значение суммы , пренебречь членами ряда меньшими ε, т.е. , при х = 0,2
REM итерационные циклы
DIM X, i, EPS, F, Fi
INPUT ''X, EPS”; X, EPS
F = 0: i=1
DO
Fi = X^ i / (i+1)^3*( -i ) ^(i+1)
F = F + Fi: i = i+1
LOOP WHILE ABS(Fi) >EPS
PRINT ”F=”; F
END
1 –й вариант решения (при ε =10 -5)
i Fi
i1 =1 F1 = + 0.025
i2 =2 F2 = - 0.00148
i3 =3 F3 = +0.000025
i4 =4 F4 = - 0.00000256
2 –й вариант решения (при ε =10 -3)
i Fi
i1 =1 F1 = + 0.025
i2 =2 F2 = - 0.00148
i3 =3 F3 = +0.000025