Студопедия — Оператор выбора 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; просмотров: 627. Нарушение авторских прав; Мы поможем в написании вашей работы!



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

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

Классификация потерь населения в очагах поражения в военное время Ядерное, химическое и бактериологическое (биологическое) оружие является оружием массового поражения...

Факторы, влияющие на степень электролитической диссоциации Степень диссоциации зависит от природы электролита и растворителя, концентрации раствора, температуры, присутствия одноименного иона и других факторов...

Йодометрия. Характеристика метода Метод йодометрии основан на ОВ-реакциях, связанных с превращением I2 в ионы I- и обратно...

Деятельность сестер милосердия общин Красного Креста ярко проявилась в период Тритоны – интервалы, в которых содержится три тона. К тритонам относятся увеличенная кварта (ув.4) и уменьшенная квинта (ум.5). Их можно построить на ступенях натурального и гармонического мажора и минора.  ...

Понятие о синдроме нарушения бронхиальной проходимости и его клинические проявления Синдром нарушения бронхиальной проходимости (бронхообструктивный синдром) – это патологическое состояние...

Опухоли яичников в детском и подростковом возрасте Опухоли яичников занимают первое место в структуре опухолей половой системы у девочек и встречаются в возрасте 10 – 16 лет и в период полового созревания...

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