Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2361

.pdf
Скачиваний:
1
Добавлен:
15.11.2022
Размер:
1.46 Mб
Скачать

IF (условие) THEN (какой-либо оператор);

Полная форма:

IF (условие) THEN (какой-либо оператор 1) ELSE (какой-либо оператор 2);

Где IF, THEN и ELSE – зарезервированные служебные слова (ЕСЛИ, ТО, ИНАЧЕ); <оператор 1>,<оператор 2>- любой оператор языка

Turbo Pascal;

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

При этом математические операции сравнения следующие:

= - равно (=); <> - не равно (≠); < - меньше (<); > - больше (>);

<= - меньше или равно ( ); >= - больше или равно ( );

Логические операции сравнения: Not – логическое не;

And – логическое и; Or – логическое или;

Xor – логическое исключающее или.

Выполняя оператор IF полной формы компьютер проверяет условие и если ( IF) оно выполняется, то ( THEN) и выполняется оператор 1 после THEN, иначе ( ELSE) выполняется оператор 2.

Следует иметь в виду, что полная форма if может иметь несколько разновидностей, например:

IF (условие 1 )THEN (какой-либо оператор 1 ) ELSE _ IF (условие 2 ) THEN (оператор 2) ELSE (оператор 3);

IF (условие 1 ) THEN _ IF (условие 2 ) THEN (какойлибо оператор 1 ) ELSE (оператор 2) ELSE (оператор

3);

IF (условие 1 ) THEN _ IF (условие 2 )THEN (оператор 1 ) ELSE (оператор 2);

Таким образом, в любой из этих форм выполняется либо оператор 1, либо оператор 2.

Следует отметить, что в любой из этих форм: стоит только выполниться любому оператору, кроме IF , как компьютер выходит из данного оператора IF.

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

Участок программы

Условие (if)

Оператор 1 (после then)

Оператор 2 (после else)

Продолжение программы

Рис.4.2.1. Структурная схема работы оператора IF.

Из этой схемы видно, что выполняется либо левый участок программы, а правый игнорируется, либо наоборот. Вполне возможны и такие формы данного оператора.

IF <условие 1> THEN BEGIN

IF <условие 2> THEN <оператор 1>

END;

ELSE <оператор 2>;

Во всех этих случаях иногда бывает не ясно какому then относится, то или иное ELSE

На самом деле надо иметь ввиду, что else всегда относится к ближайшему IF слева.

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

ax, если 0

x

7;

bx2 , если 7

x

12;

cx3 , если 12

x

20;

dx4 , если 15

x

20;

где3а,7= 10 1

;

b=0,15;

 

с=1,2;

 

d=0,2 10 2

;

шаг изменения аргументаx 1, предел изменения аргумента .

Структурная схема алгоритма табулирования может выглядеть следующим образом:

Ввод

Ввод а,в,с,d

Ввод аргумента

Х

Да

Нет

Х< 7

 

 

 

 

 

Да

 

 

Нет

 

У= a*x

 

 

 

 

 

 

 

 

 

 

Х

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a*x2

Y =

Х 12

 

Y =

 

 

Y=

 

bx3

 

 

dx4

 

 

 

 

 

Вывод х,у

Конец

Рис.4.2.2. Структурная схема алгоритма табулирования разрывной функции.

Один из вариантов программы: согласно структурной схеме рис.4.2.2.

Program_funс; Const

а=3.7e-1; b=0.15; с=1.2; d=0.2e-2;

Var

x: integer; y:real;

Begin

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;

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