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



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

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

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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Тема 2: Анатомо-топографическое строение полостей зубов верхней и нижней челюстей. Полость зуба — это сложная система разветвлений, имеющая разнообразную конфигурацию...

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

Что происходит при встрече с близнецовым пламенем   Если встреча с родственной душой может произойти достаточно спокойно – то встреча с близнецовым пламенем всегда подобна вспышке...

Кран машиниста усл. № 394 – назначение и устройство Кран машиниста условный номер 394 предназначен для управления тормозами поезда...

Приложение Г: Особенности заполнение справки формы ву-45   После выполнения полного опробования тормозов, а так же после сокращенного, если предварительно на станции было произведено полное опробование тормозов состава от стационарной установки с автоматической регистрацией параметров или без...

Измерение следующих дефектов: ползун, выщербина, неравномерный прокат, равномерный прокат, кольцевая выработка, откол обода колеса, тонкий гребень, протёртость средней части оси Величину проката определяют с помощью вертикального движка 2 сухаря 3 шаблона 1 по кругу катания...

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