2361
.pdfIF (условие) 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;