Материал: Алгоритмический язык Turbo Pascal 7.0. Юршин Е.Д., Рог А.И

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

read(x); If_x<7_then_y:=a x_else

If_x<=12_then_y:=b sqr(x)_ else If_x<=15_then_y:=c exp(3 ln(x))_ else If_x<=20_then_y:=d exp(3 ln(x))_ else;

Writeln (´x=´, x:2, ´y=´, y);

End.

ОПЕРАТОР ВАРИАНТА CASE

Данный оператор относится к группе переходных операторов

(if, goto) дело в том, что часто вместо оператора if удобно использовать оператор варианта или выбора, который в общем виде можно представить (неполная форма):

Case <селектор> of

Метка 1: оператор 1 ; Метка 2 : оператор 2 ;

.

.

.

End;

Метка n : оператор n ; Case – выбор ;

Of – из ;

End – конец оператора case.

(Поэтому в программе с использованием case, на один оператор end, будет больше);

<селектор> - математическое выражение целого типа, либо переменная целого типа.

метка – целое число, стоящее перед оператором и отделѐнное от него двоеточием.

т.е метки – целые числа, значения которых принимают селекторы.

Таким образом, до выполнения CASE селектор должен иметь какое-то целое число и тогда компьютер переходит к выполнению оператора, числовое значение метки которого совпадает с числовым значение селектора.

Рассмотрим конкретную программу для вычисления одной из площадей различных геометрических фигур по выбору:

 

ab,если n

1

 

 

 

ah

,если n

2

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

S

(ab)h

,если n

3

 

2

 

 

 

 

 

 

 

 

 

 

 

r2 ,если n

4

 

 

 

R2

,если n

5

 

 

 

 

 

 

 

360

 

 

 

 

 

 

 

Здесь а=3.2, h=2.4,

=27.4,;

b=7.8*10 1

,

3.14

pi, r=4.2,;

(т.е

 

 

 

 

a

 

;

pi; )

 

 

180

Значение селектора n необходимо вводить вручную (с клавиатуры) с помощью оператора READ.

Вариант программы следующий:

Program_get; Label

1,2,3,4,5; Const

a=3.2;

b=7.8e-1; h=2.4; f=27.4; r=4.2;

Var

S: real;

n: integer; Begin

Read (n); Case_n_of

1:S:=a*b;

2:S:=a*h/2;

3:S:=h*a*b/2; Оператор выбора

4:S:=pi*r*r;

5:S:=pi*(r*r)*f/360; end;

Write (‗S=‘,S);

End.

В данной программе при реализации необходимо с клавиатуры ввести одну из цифр от 1 до 5.

Если набрана цифра больше 5, то компьютер выходит из программы без выдачи результатов и сообщения об ошибках.

Следует отметить, что данная программа реализована по неполной форме оператора CASE. Кроме того, отметим, что метка варианта – это необычная метка, так как она может принимать не только целочисленные значения, а принимать значения идентификатора, а следовательно и может отсутствовать описатель label.

Следует иметь ввиду, что существует так называемая полная форма описателя CASE.

CASE <селектор или ключ выбора> OF <список выбора>

ELSE <операторы> END;

Вышеприведѐнную программу можно реализовать по данной полной форме. Для этого сразу после END для CASE необходимо добавить следующее (в общем виде):

Else Begin

Written (‗набери селектор правильно‘);

Goto_6; End;

Таким образом, во втором варианте программы будет для оператора CASE два оператора END, стоящие рядом, не считая конца оператора.

Отметим, что в данном варианте программы присутствует так называемый оператор безусловного перехода GOTO, относящиеся к группе операторов перехода, которых три (IF, CASE, GOTO).

Поэтому и возникает необходимость более подробно рассмотреть оператор GOTO.

ОПЕРАТОР БЕЗУСЛОВНОГО ПЕРЕХОДА GOTO

Отметим, что данный оператор крайне редко используется в программах на PASCAL, обычно он в программе функционирует с оператором if, но если в программе есть оператор выбора case по полной форме, то без него не обойтись.

В общем виде данный оператор можно представить.

GOTO _ N;

Где n – метка какого – либо оператора (целое число). Поэтому в вышеприведѐнной программе второго

варианта по полной форме оператор CASE необходимо добавить в описатель LABEL цифру 6.

Реализуя GOTO 6 компьютер отыскивает в программе оператор, помеченный меткой 6 (в данном случае это оператор READ), пропуская все остальные операторы, и начинает реализацию программы.

Рассмотрим вариант программы с оператором CASE, оформленный по полной форме:

Program_gem; Label

1,2,3,4,5,6; Const

a=3.2; b=7.8e-1; h=2.4; f=27.4; r=4.2;

Var

S: read; N: integer;

Begin

6: Read (n); Case_n_of 1:S:=a*b; 2:S:=a*h/2; 3:S:=h*a*b/2; 4:S:=pi*r*r; 5:S:=pi*(r*r)*f/360; else;

Begin

Written (‗Введите правильно число‘);

Goto 6; End; End;

Источник: https://studfile.net/preview/16565609/