Студопедия — Оператор выбора CASE
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Оператор выбора CASE






Данный оператор является обобщением условного оператора.

Его общий вид следующий:

case выражение of

список_констант_1: оператор_1;

список_констант_2: оператор_2;

...

список_констант_n: оператор_n

end;

Здесь значения выражения и констант должны быть одного и того же скалярного типа (кроме real), т. е. integer, boolean, char, ограниченный тип или тип “перечисление”. Оператор выбора действует следующим образом: если значение выражения равно одной из констант, то выполняется соответствующий ей оператор. Затем управление передается за пределы оператора выбора. Если значение выражения не совпадает ни с одной константой, то управление сразу передается за пределы оператора выбора.

Пример:

case I+1 of

2: X: =0;

1OO, 3: X: =X*X;

4: X: =sin(X)

end;

A: =A+1;

Если значение I+1 есть 100 или 3, то выполняется оператор X: =Х*Х, а затем управление передается на оператор А: =А+1.

Замечание. Метки оператора case не описываются в разделе lаbel, и на них нельзя переходить оператором goto.

В Тurbo Pascale оператор case может использоваться с ключевым словом else, имеющем тот же смысл, что и слово else в операторе if:

case выражение of

список_констант_1: оператор_1;

..............................

список_констант_n: оператор_n

else оператор

end;

Перед else, как и в операторе if, точка с запятой не ставится.

Пример:

program pr;

Var

I: char;

Begin

read (I);

case I of

'A'.. 'Z', 'a'.. 'Z': Write (' Введена буква');

'0'.. '9': Write (' Введена цифра')

else Write (' Введен символ, отличный от буквы и цифры')

end;

end.

Кроме одиночных констант в альтернативах оператора варианта могут быть заданы списки и / или диапазоны значений, которые в этом случае должны разделятся символом ', ' (запятая), например:

case Switch of

1.. 2: Proc1;

3, 4, 10.. 20: Proc2;

5, 6: Proc3

Else

Proc4

End

В этом примере оператор процедуры Proc 2 будет выполнен в том случае, когда переменная switch будет иметь одно из следующих значений:

3, 4, 10, 11, 12, …, 19, 20

При использовании оператора варианта должны выполнятся следующие правила:

Значение выражения - “переключателя”, записанного после служебного слова case, должно принадлежать дискретному типу; для целого типа они должны лежать в диапазоне -32769.. 32768.

Все константы, предшествующие операторам альтернатив, должны иметь тип, совместимый с типом выражения.

Все константы в альтернативах должны быть уникальны в пределах оператора варианта (то есть повторения констант в альтернативах не допускаются); диапазоны не должны пересекаться и не должны содержать констант, указанных в данной или других альтернативах.

Следует обратить внимание на то, что синтаксис языка предполагает один оператор для каждой альтернативы; при необходимости задания нескольких операторов следует сгруппировать их в составной оператор. В то же время ветвь else допускает последовательность операторов, разделенных символом ';' (точка с запятой).

Примеры выполнения заданий алгоритмов разветвляющей структуры

Пример 4.1

Составить структурную схему и программу для вычисления функции m:

где а=0,0372; b=1, 74*10-2

Структурная схема алгоритма приведена на рис. 1.

{ Разветвляющейся алгоритм }

Program razvet;

Var

A, B, M: real;

M1, M2: real;

Begin

readln (A, B);

M1: =-(Abs(A)+Abs(b))/(A*A+B*B);

M1: =Exp(M1);

M2: =Abs(A+B);

C: =A*B;

if C>0. 5 then WriteLn('M=', M1);

Else

if C>0,4 then {0,4<c<=0,5} WriteLn ('M=', M2);

Else

WriteLn (‘ счет завершен’)

End.

Рисунок 1 - Структурная схема к примеру 4.1

Пример 4.2

Составить структурную схему и программу для вычисления функции y:

где

Структурная схема приведена на рис. 2.

Рисунок 2 - Структурная схема к примеру 4.2

program F1;

Const

Pi: =3.1416;

Var

A, B, X, Xн, Xк, Hx, Y: real;

Begin

read(A, B, Xн, Xк, Hх);

X: =Xн

while X<=Xк DO

Begin

if X<=-Pi/2 then

Y: =2*sin(x)

Else

if X<Pi/2 then

Y: =A*sin(X)+B

Else

Y: =cos(X);

WriteLn(' X=', X, ' Y=', Y);

X: =X+Hх

end;

end.

Пример 4.3.

Ввести номер дня недели и вывести соответствующий ему день недели на русском и английском языках.

Program dnedeli;

Var

N: integer; (* номер дня недели *)

Begin

WriteLn ('Введите номер дня недели: ');

read (N);

case N of

1: WriteLn ('понедельник');

2: WriteLn ('вторник');

3: WriteLn ('среда');

4: WriteLn ('четверг');

5: WriteLn ('пятница');

6: WriteLn (' суббота');

7: WriteLn ('воскресенье')

End

end.

Рис. 3 - Структурная схема к примеру 4.3

Пример 4. 4

Заданы три числа, обозначающие число, месяц и год. Составить программу определения номера этого дня с началом года. Указание: Високосный год это тот, у которого номер делится на 4, но не делится на 100, или у которого номер делится на 400.

{ Определение номера дня года }

program ndg;

Var

D, M, G, DN, MM: integer

Begin

read (D, M, G); {D-день месяца, М-месяц, G-год}

Write (D: 3, '. ', M: 2, '. ', G: 4, ' - ');

Dg=D; (* Dg-день года *)

for Mm: =1 to M-1 DO

case Mm of

1, 3, 5, 7, 8, 10, 12: Dg: =Dg+31;

4, 6, 9, 11: Dg=Dg+30;

2: if (G mod 4=0) and (G mod 100<>0) OR (G mod 400=0) then

Dg: =Dg+29

Else

Dg: =Dg+28;

End;

WriteLn (Dg: 3, 'день года')

End.

Контрольные вопросы

1. Какой вычислительный процесс называется разветвляющимся?

2. Какие операторы передачи управления Вы знаете?

3. Оператор перехода, укажите на его общий вид. Целесообразность

его использования в программе? Приведите пример.

4. Какие формы записи условного оператора Вы знаете? Приведите примеры.

5. Может ли условный оператор содержать в себе другие условные операторы?

Как называется такая конструкция? Приведите примеры.

6. Зачем необходимо при отладке программы тестировать все ветви алгоритма?

7. Оператор выбора и его назначение.

8. Приведите пример программы с использованием вложенных операторов

выбора.

9.Приведите пример программы с использованием вложенных операторов if.

10. Приведите пример программы с использованием условного оператора,

внутри которого имеется составной оператор.







Дата добавления: 2015-10-02; просмотров: 631. Нарушение авторских прав; Мы поможем в написании вашей работы!



Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

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

Трамадол (Маброн, Плазадол, Трамал, Трамалин) Групповая принадлежность · Наркотический анальгетик со смешанным механизмом действия, агонист опиоидных рецепторов...

Мелоксикам (Мовалис) Групповая принадлежность · Нестероидное противовоспалительное средство, преимущественно селективный обратимый ингибитор циклооксигеназы (ЦОГ-2)...

Менадиона натрия бисульфит (Викасол) Групповая принадлежность •Синтетический аналог витамина K, жирорастворимый, коагулянт...

ИГРЫ НА ТАКТИЛЬНОЕ ВЗАИМОДЕЙСТВИЕ Методические рекомендации по проведению игр на тактильное взаимодействие...

Реформы П.А.Столыпина Сегодня уже никто не сомневается в том, что экономическая политика П...

Виды нарушений опорно-двигательного аппарата у детей В общеупотребительном значении нарушение опорно-двигательного аппарата (ОДА) идентифицируется с нарушениями двигательных функций и определенными органическими поражениями (дефектами)...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия