Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal_учебник_3.doc
Скачиваний:
33
Добавлен:
11.04.2015
Размер:
937.47 Кб
Скачать

4.2. Использование в программах оператора варианта

Оператор варианта в литературе называют еще оператором выбора. Общий вид оператора:

Case выражение-селектор of метка_случая : оператор;

метка_случая : оператор;

………….……….………….

метка_случая : оператор

ELSE операторы

END

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

Часть «ELSE оператор» может отсутствовать. Перед ELSE можно поставить точку с запятой, но это будет лишний пустой оператор.

Из определения оператора CASE следует, что в данный момент будет выполняться лишь один оператор, а именно тот, метка случая которого равна текущему значению выражения-селектора.

Если ни одна из меток не равна текущему значению выражения-селектора, то в случае отсутствия части «ELSE оператор» никакие операторы, входящие в состав оператора CASE, не выполнятся, а будет выполняться следующий за END (от CASE) оператор. Если же часть «ELSE оператор» присутствует, то будет выполняться оператор, следующий за ELSE.

Итак, сначала вычисляется значение выражения-селектора, затем выполняется оператор, метка_случая которого совпадает со значением селектора.

Пример записи оператора CASE:

CASE A of

77 : y:=Exp(X);

{диапазон} 1..4: y:=x;

5,10 : y:=Sin(x);

-1..0 : y:=Cos(x);

105,9: y:=-x;

-5,6..8 : y:=Sqr(x)

ELSE y:=ln(x)

end

Пусть A принимает значения: 105; 7; -7; 103; 3; -10; 10; 0; 77. Как в этих случаях будет вычисляться y?

Пример 1

Написать программу для определения значения величины Z:

где i- переменная целого типа.

Решение

Var

x,z,f:real;

i:integer;

Begin

Read(x,f,i);

case i of

3,18: z:=3*x+cos(f);

0..2,24..100: z:=4*x-sin(f);

13: z:=35*x

else z:=0

end; {case}

Write('z=',z)

End.

На этом примере покажем, как оператор варианта отображается в структурных схемах:

Задания

№1. Определить, какими будут значения переменных p и d в результате работы следующей программы:

Var

p:boolean;

d,k:integer;

Begin

Readln(k);

p:=true;

d:=1;

case k mod 10 of

4..6 : d:=k;

1

Обратите внимание: если нам надо выполнить несколько операторов в каком-либо случае, то используются операторные скобки.

..3,7 : begin

p:=false;

d:=2

end;

9 : ;

1..3,6..8 : begin

p:=false;

d:=3

end

end; {case}

Writeln('p=',p,' d=',d)

End.

если целая переменная k принимает следующие значения:

а) 62; б) 236; в) 78; г) 100; д) 221; e) 99; ж) 345.

№2. Написать программу для определения значения величины Q, где N - целого типа:

На О.О.Ф. не исследовать; считать, что все исходные данные удовлетворяют О.О.Ф.

№3. Написать программу для определениязначения величинR,R1, гдеJ,N- целого типа:

На О.О.Ф. не исследовать; считать, что все исходные данные удовлетворяют О.О.Ф.

№4. Если остаток от деления К на 10 есть 3,2,7,5, то d по­ложить равным К; если 4 или 8, то d положить равным 2; если 9 или 6, то d положить равным 3.

№5. Заданы четыре интервала на числовой оси:

[-100,50] ; [0,20] ; [51,100] ; [200,300]

- и точка X (целого типа). Какому интервалу или интервалам принадлежит точка Х? Указать номер (или номера) интервала.

№6. Заданы пять интервалов на числовой оси:

[-100,-20]; [-20,-10]; [0,0]; [5,20]; [10,30].

Определить, какому интервалу принадлежит точка Х (целого типа).

Если точка Х принадлежит 1-му интервалу, то вычислить значение Cos в точке Х;

если 2-му интервалу, то вычислить значение Sin в точке Х;

если 3-му интервалу, то вычислить значение Ln 5;

если 4-му интервалу, то вычислить значение Ln в точке Х;

если 5-му интервалу - квадратный корень из Х.

Вычисленные значения вывести на экран.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]