Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Операторы выбора select case

Поиск

Одним из частных случаев выбора альтернативных решений является вариант проверки на принадлежность значения арифметического или символьного выражения заданному набору значений. Конечно, такую проверку можно было бы реализовать с помощью ранее описанного блока IF - END IF:

IF e = c1 THEN
Группа 1 программных строк
ELSEIF e = c2 THEN
Группа 2 программных строк
ELSEIF e = c3 THEN
Группа 3 программных строк
...............................
END IF

Однако в структурном программировании предпочитают использовать более изящную конструкцию:

SELECT CASE e
CASE c1
Группа 1 программных строк
CASE c2
Группа 2 программных строк
.............................
CASE ELSE
Группа n программных строк
END SELECT

Блоки такого вида принято называть переключателями, а тестируемое выражение e, которое может быть числовым или символьным, - переключающим выражением. Условия проверки, формируемые с помощью операторов CASE, могут содержать не только одно ключевое значение. В теле оператора CASE может быть задано несколько таких значений, разделенных запятыми. И в качестве ключей могут выступать любые выражения того же типа, что и переключающее выражение:
CASE 5+N, 12, -(K+1)
Второй разновидностью проверяемого условия является проверка на принадлежность значения переключающего выражения некоторому интервалу. Например, проверка на принадлежность значения x интервалу [a,b] может быть реализована с помощью условия:
SELECT CASE x
..............
CASE a TO b
...............
Наконец, третья модификация проверки значения переключающего выражения состоит в использовании самой обычной операции отношения. Например, для выполнения действий, когда тестируемое выражение превышает заданный порог a, условие выбора может выглядеть так:
CASE IS >= a
Связка IS заменяет в данном случае тестируемое выражение.
Оператор CASE ELSE позволяет выполнить группу действий в случае, когда значение переключающего выражения не "совпало" ни с одним из выше указанных ключей.

Оператор SELECT
Назначение Оператор SELECT (вместе с оператором CASE) формирует операторы проверки общего назначения.
Синтаксис SELECT CASE выражение
CASE список тестов
операторы
[CASE список тестов
операторы]
[СASE ELSE
операторы]
END SELECT
Комментарий Список тестов - это один или несколько тестов, разделенных запятыми, которые выполняются над выражением. Выражение может быть символьным или числовым, однако, все тесты в списке из отдельного блока оператора SELECT должны быть одного и того же типа.
Тесты, которые могут выполняться в предложении CLAUSE, включают проверки на равенство, неравенство, больше, меньше, диапазон (от-до).
В предложении CASE с несколькими тестами между ними выполняется неявная логическая операция ИЛИ. Если один или несколько тестов в предложении удовлетворяются (TRUE), выполняются все операторы вплоть до следующего предложения CASE. После выполнения последнего оператора, управление передается оператору, следующему за END SELECT.
Оператор SELECT является мощным средством сравнения переменной с некоторым числом ее возможных значений и соот ветствующей обработки. Его использование может иногда помочь построить более ясную исходную программу, чем могло бы получиться с использованием многократных операторов IF.

Пример Рассмотрим тот же самый пример: вычислить значение функции.

 

Таблица 9.3. Пример использования оператора выбора SELECT CASE для разветвляющегося вычислительного процесса: блок-схема и листинг программы

Блок-схема Листинг программы
  Текст программы cls:rem Student Ivanov BGB-06 input "Vvedite a"a x=log(abs(a-cos(a))) c=x*a:b=x+a if c<=0 then k=1 if cc>0 AND Cc<3.5 then k=2 if cc>3.5 then k=3 select case k case 1 y=-10.5 case 2 y=exp(c)+2*b case 3 y=c+log(abs(b)) end select? using "x=##.### c=##.###";x,c? using "y=####.### k=##";y,k end

Результаты расчетов

Ветка 1 Ветка 2 Ветка 2
     

Необходимо иметь в виду, что условия проверок в блоке SELECT - END SELECT не обязательно должны быть взаимоисключающими. Поэтому, если значение переключающего выражения "совпало" с одним из ключей и соответствующие этой ситуации действия были выполнены, то последующие проверки в теле блока не игнорируются. Для того, чтобы прервать все последующие проверки и выйти на конец блока, соответствующая группа действий должна заканчиваться оператором EXIT SELECT.

Необходимо отметить, что при выполнении лабораторной работы №3 следует большое внимание уделить разработке алгоритма и блок-схемы программ. При этом следует иметь в виду, что необходимо так подобрать значения входного параметра (в данном случае это а), чтобы реализовать в расчетах все три ветви заданного разветвляющегося вычислительного процесса. Следует обратить внимание на то обстоятельство, что в данном случае второй блочный оператор IF - END IF вложен в первый.

Другие операторы управления

Оператор останова STOP прерывает выполнение Бейсик-программы. Если такое прерывание происходит в режиме интерпретации (GW BASIC) или под управлением интегрированной среды (Turbo или Quick BASIC), то на экране дисплея появляется сообщение о причине останова и указание о номере программной строки, в которой это событие наступило (при отсутствии номера выдается 0). В этот момент открытые файлы задачи и значения всех ее переменных сохраняют свое состояние, что обеспечивает возможность провести некоторые отладочные мероприятия и продолжить выполнение программы. Если оператор STOP встречается в самостоятельно откомпилированном модуле с расширением.EXE, то все файлы задачи закрываются и управление передается операционной системе.

Тело оператора безусловного перехода (GOTO) состоит из единственного указателя точки программы, в которую передается управление. Им может быть либо номер программной строки (GW BASIC), либо ее метка:
GOTO 100
GOTO SumVec

Конструкция под названием "переключатель" представляет собой специальный вид оператора условного перехода или условного обращения к внутренней подпрограмме:
ON e GOTO T1,T2,...,Tk
ON e GOSUB T1,T2,...,Tk

Список точек перехода T1,T2,... состоит из k указателей программных строк. Выбор одной из них осуществляется по значению арифметического выражения e, которое иногда называют переключающим выражением. Как правило, оно является целочисленным и возможные его значения должны принадлежать диапазону [1,k]. При е=1 из списка точек перехода выбирается T1 и по этому адресу передается управление (ON...GOTO) или производится вызов внутренней подпрограммы (ON... GOSUB), при е=2 в качестве точки перехода используется метка (номер) T2 и т.д. После выполнения внутренней подпрограммы возврат осуществляется на оператор, следующий за ON...GOSUB. Если переключающее выражение имеет вещественный тип, то его значение превращается в целое число путем естественного округления дробной части (1.2 --> 1, 1.5 --> 2, 1.9 --> 2). Если значение переключающего выражения выходит за пределы интервала [1,k], то оператор ON не изменяет естественную последовательность выполнения программных строк. Он просто игнорируется.



Поделиться:


Последнее изменение этой страницы: 2021-04-13; просмотров: 94; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.49.59 (0.006 с.)