Читайте также:
|
|
Cоставной оператор
Несколько команд могут быть записаны в одной строке.
Begin
intCount:=12; a:= 34; b:=a/intCount; c:=(a+b)/a; end;
Условный оператор
Структуру условного оператора в общем виде можно записать следующим образом:
IF <условие> THEN <оператор1> ELSE <оператор2>
где IF, THEN, ELSE – служебные слова (Если … То … Иначе …); <Условие> произвольное выражение или переменная логического типа; <оператор1>, <оператор2> – произвольные операторы языка Object Pascal. Следует отметить, что если оператор1 является составным, а затем идет служебное слово else, то после завершающего его служебного слова end точка с запятой не ставится. Если же служебное слово else не используется, то точка с запятой должна быть.
Как же действует этот оператор? Вначале вычисляется значение условного выражения которое стоит между служебными словами IF и THEN. Если получается результат «истина» (True), то выполняется оператор следующий за служебным словом THEN, т.е. <оператор1>, а <оператор2> пропускается. Если же результатом вычисления будет «ложь» (False), то наоборот <оператор1> будет пропущен, а <оператор2> будет выполнен. Если вместо логического выражения будет использована переменная логического типа, то если она будет иметь значение True, то выполнится <оператор1>, а если ее значение будет равно False, то <оператор2>. Напишем оператор смены значения логической переменной.
Var k: Boolean;
Begin
IF k Then k:= False Else k:= True;
End;
если переменная k имеет значение «истина», то ей присваивается значение «ложно» и наоборот.
В качестве более серьезного примера использования условного оператора рассмотрим функцию, которая вычисляет арккосинус числа. Как известно, косинус не может быть больше единицы, поэтому арккосинус от числа больше единицы не существует. Именно это условие и проверяется в первом условном операторе. Если передаваемое в функцию число больше единицы, то логическое выражение принимает значение «истина» (True) и выполняется оператор стоящий после служебного слова ELSE.
Function arccos(x: Extended): Extended;
Begin
IF ABS(x) > 1 THEN begin
MessageDlg('Wrong Number', mtConformation, mbOk); Exit;
end;
IF x=0 THEN arccos:=pi/2
ELSE arccos:=ArcTan(Sqrt(1-Sqr(x))/x) + Pi*Byte(x<0);
End;
Заметим, что наличие служебного слова ELSE вовсе не обязательно, что и показано в этом примере. Такая ситуация встречается, если какое-либо действие требуется выполнить если условие истинно, а если условие не истинно, то просто пропустить его и продолжить выполнение программы. При выполнении условия ABS(x) > 1 происходит выдача сообщения об ошибке и программа останавливается. Ясно, что если это условие не выполняется, то программа будет выполнять следующий оператор, поэтому наличие служебного слова ELSE здесь излишне. Второй условный оператор позволяет избежать ошибки при делении на нуль. Здесь уже служебное слово ELSE необходимо.
Так как <оператор1> и <оператор2> суть произвольные операторы, то они могут содержать в себе другие условные операторы, таким образом реализуется структура вложенных логических операторов.
IF a > b THEN begin
IF a > c Then
Begin
max:= a;
IF b > c then min:= c
else min:= b; end
Else begin max:= c; min:= b; end;
end {THEN}
Дата добавления: 2015-01-30; просмотров: 84 | Поможем написать вашу работу | Нарушение авторских прав |