Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Zanyatie_4_Uslovny_operator.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
120 Кб
Скачать
☆

Оператор выбора case. Примеры задач.

Язык Паскаль имеет оператор выбора case, которая позволяет построить ветвление по ряду условий в форме, более удобной для чтения программ. Оператор выбора позволяет выбрать одно из нескольких возможных продолжений программы. Параметром, по которому осуществляется выбор, служит так называемый ключ выбора (или селектор) – выражение любого типа (кроме типов REAL и STRING).

Общая форма записи следующая:

case выражение of

значение1 : оператор (группа операторов);

значение2 : оператор (группа операторов);

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

значениеN : оператор (группа операторов)

else оператор (группа операторов);

end;

Оператор выбора работает следующим образом. Сначала вычисляется значение выражения, стоящее после зарезервированного слова case, а затем выполняется оператор (или составной оператор), соответствующий результату вычисления выражения.

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

Если один оператор выполняется при нескольких значениях, то их можно перечислить через запятую.

case MONTH of

1, 2, 3 : writeln (’Первый квартал’);

4, 5, 6 : writeln (’Второй квартал’;

7, 8, 9 : writeln (’Третий квартал’;

10, 11, 12 : writeln (’Четвёртый квартал’);

end;

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

Var ch: char;

Begin

Readln(ch);

Case ch of

N, n: writeln(‘Да ’);

Y, y: writeln(‘Нет ’);

End;

End.

Case CH of {выражение-селектор литерного типа}

'A'.. 'z': WriteLn ('Введена латинская буква');

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

end;

Пример.

Type

Month =(jan,feb,mar,apr,may,jun,

Jul,aug,sept,oct,nov,dec);

Var tec_mes: Month;

If tec_mes=okt then writeln(‘октябрь’);

If tec_mes<apr then writeln(‘первый квартал’);

Case tec_mes of

Jan.feb,mar:writeln(‘1 rv’);

…

Oct.nov,dec:writeln(‘4 rv’);

End;

Пример. Вычислить значения функций f и g:

Написать две программы, использующие:

  • вещественные значения;

  • целочисленную арифметику (целочисленные данные, промежуточные и конечные результаты, операции целочисленной арифметики, константу MAXINT, диапазоны оператора выбора Case).

Program example1;

{Программирование ветвящихся вычислительных процессов}

{использование вещественных значений }

Uses Crt;

Var

x,y,f,g:Real;

Begin

Clrscr; {Очистка экрана}

WriteLn('Введите значения x,y');

ReadLn (x,y);

WriteLn ('При x=',x:5:2,' y=',y:5:2);

If x+y<0 then

begin

WriteLn ('x+y=',x+y:5:2,'<0');

f:=1/sqrt(x*x+y*y);

g:=x-y;

end

else

If x+y<=5 then

begin

WriteLn ('0<=x+y=',x+y:5:2,'<=5');

f:=2*x*y;

g:=2*x+3;

end

else begin

WriteLn ('x+y=',x+y:5:2,'>5');

f:=1/(x+y);

g:=1/sqrt(x*x+1);

end;

WriteLn ('f=',f:6:4);

WriteLn ('g=',g:6:4);

ReadLn; {Задержка экрана}

End.

Program example2;

{Программирование ветвящихся вычислительных процессов}

{использование целочисленной арифметики }

Uses Crt;

Var

x,y,f,g:Integer;

Begin

Clrscr; {Очистка экрана}

WriteLn('Введите значения x,y');

ReadLn (x,y);

WriteLn ('При x=',x,' y=',y);

Case x+y of

-Maxint..-1: begin

WriteLn ('x+y=',x+y,'<0');

f:=1 div round(sqrt(x*x+y*y));

g:=x-y;

end;

0..5 : begin

WriteLn ('0<=x+y=',x+y,'<=5');

f:=2*x*y; g:=2*x+3;

end;

6..Maxint : begin

WriteLn('x+y=',x+y,'>5');

f:=1 div (x+y);

g:=1 div round (sqrt(x*x+1));

end

end;

WriteLn ('f=',f);

WriteLn ('g=',g);

ReadLn; {Задержка экрана}

End.

5

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