Помощничек
Главная | Обратная связь


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

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



Занятие 3

ТЕМА: Ветвление. Написание программ, реализующих алгоритмическую структуру "ветвление" (содержащую операторы IF..THEN..ELSE и CASE..OF).

Цель работы: уметь составлять программы, используя основные алгоритмические структуры ветвления.

Ветвление в Паскаль. Условный оператор.

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

Условный оператор используется для реализации разветвлений в программе, которые происходят при выполнении некоторого условия и имеет следующую структуру:

IF логическое выражение THEN оператор1 ELSE оператор2;

Если логическое выражение, выступающее в качестве условия, принимает значение True, то выполняется оператор1, следующий за словом THEN, иначе выполняется оператор2 расположенный после ELSE.

Поскольку разветвление может быть неполным, то возможна и неполная форма записи условного оператора, т.е. без ветви ELSE.

В качестве оператора в структуре условного оператора может выступать составной оператор, тогда общая форма оператора IF..THEN..ELSE можно записать следующим образом:

IF Условие

THEN

BEGIN

оператор_1;

оператор_2;

оператор_N;

END

ELSE

BEGIN

оператор_1;

оператор_2;

оператор_N;

END;

Условный оператор реализует разветвление вычислительного процесса по двум направлениям, одно из которых осуществляется при выполнении условия, другое – в противном случае. Для реализации разветвлений более чем по двум направлениям необходимо использовать несколько условных операторов.

Примечание: Обратите внимание на отсутствие между зарезервированными словами END и ELSE символа "точка с запятой" (;). Появление этого символа может привести к ошибкам.

Задача 1 Даны действительные числа x, y. Если x и y отрицательны, то каждое значение заменить модулем; если отрицательно только одно из них, то оба значения увеличить на 0.5; в остальных случаях оба значения уменьшить в 10 раз.

Разработаем алгоритм решения задачи и составим блок-схему этого алгоритма, после чего напишем программу.

Составим структурный план задачи:

1. Ввести значения X, Y;

2. Если X<0 и Y<0, то найти их модули и перейти к п. 4, иначе перейти к следующему пункту;

3. Если X<0 или Y<0, то увеличить каждую величину на 0,5 и перейти к п. 4; иначе оба значения разделить на 10 и перейти к следующему пункту;

4. Вывести значения X и Y;

5. Конец.

 

Составим блок-схему и программу.

 
 

Program Pr_If_Then_Else;

Var X, Y : Real;

Begin

Write('Введите два действительных числа:'); ReadLn(X,Y);

If (X < 0) AND (Y < 0) THEN

Begin

X = ABS(X);

Y = ABS(Y)

End

ELSE

IF (X < 0) OR (Y < 0) THEN

Begin

X = X + 0.5;

Y = Y + 0.5

End

ELSE

Begin

X = X / 10;

Y = Y / 10

End;

WriteLn('Результат:');

WriteLn('X= ', X:10:6);

WriteLn('Y= ', Y:10:6)

END.

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

Кроме условного оператора в качестве управляющей структуры довольно часто используется оператор выбора CASE. Эта структура позволяет переходить на одну из ветвей в зависимости от значения заданного выражения (селектора выбора). Ее особенность состоит в том, что выбор решения здесь осуществляется не в зависимости от истинности или ложности условия, а является вычислимым. Оператор выбора позволяет заменить несколько операторов ветвления (в силу этого его ещё называют оператором множественного ветвления).

В конструкции CASE вычисляется выражение K и выбирается ветвь, значение метки которой совпадает со значением K. После выполнения выбранной ветви происходит выход из конструкции CASE. Если в последовательности нет метки со значением, равным K, то управление передается внешнему оператору, следующему за конструкцией CASE (в случае отсутствия альтернативы ELSE; если она есть, то выполняется следующий за ней оператор, а уже затем управление передается внешнему оператору).

Запись оператора выбора:

Case k of

метка1: оператор1;

метка2: оператор2;

…………….

Метка N: операторN;

ЕLSE оператор N+1

END;

Любая из указанных серий операторов может состоять как из единственного оператора, так и нескольких (в этом случае, как обычно, операторы, относящиеся к одной метке, должны быть заключены в операторные скобки Begin .. End).

Выражение K здесь может быть целого, логического или символьного типа.

Задача 2 ––––––––––––––––––––––––––––––––––––––––––––––––––

В старояпонском календаре был принят двенадцатилетний цикл. Годы внутри цикла носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, петуха, собаки и свиньи. Написать программу, которая позволяет ввести номер года и печатает его название по старо японскому календарю. Справка: 1996 г. – год крысы – начало очередного цикла.

Поскольку цикл является двенадцатилетним, поставим название года в соответствие остатку от деления номера этого года на 12.

Program Goroskop;

Var Year : Integer;

Begin

Write('Введите год: '); ReadLn(Year);

CASE (Year MOD 12) OF

0 : WriteLn('Год Обезьяны');

1 : WriteLn('Год Петуха');

2 : WriteLn('Год Собаки');

3 : WriteLn('Год Свиньи');

4 : WriteLn('Год Крысы');

5 : WriteLn('Год Коровы');

6 : WriteLn('Год Тигра');

7 : WriteLn('Год Зайца');

8 : WriteLn('Год Дракона');

9 : WriteLn('Год Змеи');

10 : WriteLn('Год Лошади');

11 : WriteLn('Год Овцы')

END;

END.

 




©2015 studopedya.ru Все права принадлежат авторам размещенных материалов.