Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatics.doc
Скачиваний:
6
Добавлен:
21.08.2019
Размер:
1.33 Mб
Скачать

1.6. Разветвление и альтернатива

а) Безусловный выбор. Обычное разветвление осуществляется опера-

тором GOTO ‹ метка ›, либо оператором перехода с выбором

ON ‹ арифм. выражение › GOTO ‹ метка ›, ‹ метка ›,...

При этом значение арифметического выражения округляется до цело-го n и выполняется переход на n-ю метку в списке. Например, реше-ние квадратного уравнения ax2 + bx +c = 0 (a ≠ 0) можно выполнить

программой

DEFINT I

d = b*b - 4ac

i = 2 + SGN(d)

ON i GOTO ZERO, ONE, TWO

EX: PRINT "Задача решена": END

ZERO: PRINT "Корней нет" : GOTO EX

ONE: PRINT "Один корень х ="; - 0.5 * b / a : GOTO EX

TWO: d = SQR(d)

PRINT "2 корня: х1 = "; 0.5 * (d - b) / a;"; x2 = "; - 0.5 * (d + b) / a

GOTO EX

Полезно отметить, что безусловный переход не популярен в програм-мировании и в некоторых языках соответствующие операторы отсут-ствуют.

b) Условный выбор имеет несколько форм (условный оператор):

1) Простое условие:

IF ‹условие› THEN ‹оператор›

2) Условие с альтернативой

IF ‹условие› THEN ‹оператор 1› ELSE ‹оператор 2›.

При этом оператор, оператор 1 (и, или) оператор 2 сами могут быть

условными операторами. Здесь условие - логическое выражение, воз-

можно с использованием логических функций : OR = "или", AND =

= "и", XOR = "разделенное или", NOT = "не", IMP = "импликация" в

соответствии с таблицей истинности:

Таблица 1

x

y

x OR y

x XOR y

x AND y

x IMP y

True

True

False

False

True

False

True

False

True

True

True

False

False

True

True

False

True

False

False

False

True

False

True

True

3) Блочная форма:

IF ‹условие› THEN

‹блок операторов›

ELSE

‹блок операторов›

END IF

При этом блок ELSE (который может отсутствовать, если нет альтер-

нативы) может сам принимать условие в виде блока

ELSEIF ‹условие› THEN

‹блок операторов›

с) Альтернативный выбор в блоке SELECR CASE, который имеет

конструкцию:

SELECT CASE ‹идентификатор›

CASE ‹выражение› 'конкретное значение

‹блок операторов›

CASE ‹выр.›, ‹выр.› IS ≥ ‹выр.› 'сравнение

‹блок операторов›

CASE ‹выр.› TO ‹выр.› 'перечисление

‹блок операторов›

CASE ELSE 'все остальное

‹блок операторов›

END SELECT

Например, пусть требуется выяснить, сколько в тексте TEXT$, запи-санном кириллицей, гласных букв до первого знака препинания. Зада-чу можно решить программой :

DEFINT I - N : DEFSTR T 'предопределение типов

L = LEN(TEXT$) : i = 0 : n = 0 : m = 0

TEXT$ = UCASE(TEXT$)

'Перевод символов в верхний регистр

START: i = i + 1 : t = MID$(TEXT$, i, 1)

SELECT CASE t

CASE "А", "Е", "И", "Й", "О", "У", "Ы", "Э", "Ю", "Я"

n = n + 1

CASE ".", ",", ";", "!", "?" : m = 1

END SELECT

IF i < L AND m = 0 THEN GOTO START

PRINT "Искомое число гласных = "; n

Участок программы START: … GOTO START лучше выполнить с помощью стандартной конструкции цикла (см. п. 7).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]