Лекция: Flag1 or flag2
flag1 | or | flag2 |
true | or | false |
true |
(a>5) and flag1
( a > 5 ) | and | flag1 |
( 7 > 5 ) | and | true |
true | and | true |
true |
(a>7) or (b2<q)
( a>7 ) | or | ( b2<q ) |
( 7>7 ) | or | ( 3<1 ) |
false | or | false |
false |
not( (a>7) or (b2<q) ) and ( flag2 or (b3<>(a1+u) ) )
not | ((a>7) | or | (b2<q)) | and | (flag2 | or | (b3 | <> | (a1+u))) |
not | ((7>7) | or | (3<1)) | and | (false | or | (5 | <> | (2+4))) |
not | (false | or | false) | and | (false | or | (5 | <> | 6)) |
not | false | and | (false | or | true) | ||||
true | and | true | |||||||
true |
1.3 Условный оператор. Ветвления в программе организуются с помощью условного оператора if. Синтаксис оператора if:
а) полная форма
if логическое_выражение
Then
оператор1
Else
оператор2
Если логическое выражение принимает значение true, то выполняется оператор1, если false, то выполняется оператор2. !!! Перед else точка с запятой НЕ СТАВИТСЯ. После логического выражения точка с запятой НЕ СТАВИТСЯ.
б) сокращенная форма
if логическое_выражение
Then
оператор1
Если логическое выражение принимает значение true, то выполняется оператор1, если false, то сразу выполняется следующий за if оператор.
Если вы хотите, чтобы в случае, когда логическое выражение принимает значение true (или false), выполнялось бы более одного оператора, то группу операторов следует поместить в операторные скобки begin-end.
(полная форма)
if логическое_выражение
Then
Begin
оператор1-1;
оператор1-2;
оператор1-3;
…
оператор1-n;
End
Else
Begin
оператор2-1;
оператор2-2;
оператор2-3;
…
оператор2-k;
End
(сокращенная форма):
if логическое_выражение
Then
Begin
оператор1-1;
оператор1-2;
оператор1-3;
…
оператор1-n;
End
Примеры условных операторов:
If a>b |
Then M:=a |
Else M:=b; |
Здесь и далее ветка «then» отмечена коричневым цветом, ветка «else» — зеленым.
If (a>5) and (a<10) |
Then Flag:=true; |
If flag1 or (n<0) |
Then Begin A:=a+3; |
B:=b-1; |
C:=8; End; |
If flag1 or (n<0) |
Then Begin A:=a+3; |
B:=b-1; |
C:=8; End |
Else A:=a-2; |
If flag1 or (n<0) |
Then Begin A:=a+3; |
B:=b-1; |
C:=8; End |
Else begin A:=a-2; |
B:=5; End; |
If flag1 or (n<0) |
Then A:=a+3 |
Else begin A:=a-2; |
B:=5; End; |
Далее приведены примеры фрагментов кода, в которых присутствуют условные операторы, серым цветом отмечены операторы, которые не относятся к if и выполняются в любом случае, не зависимо от того, какое значение примет логическое выражение (условие).
A:=10; |
If flag1 or (n<0) |
Then A:=a+3 |
Else begin A:=a-2; |
B:=5; End; |
Label1.Caption:=’a=’+IntToStr(a); |
A:=10; |
If flag1 or (n<0) |
Then Begin A:=a+3; |
B:=b-1; |
C:=8; End |
Else A:=a-2; |
Label1.Caption:=’a=’+IntToStr(a); |
A:=10; |
If flag1 or (n<0) |
Then Begin A:=a+3; |
B:=b-1; |
C:=8; End; |
Label1.Caption:=’a=’+IntToStr(a); |
1.4 Логические свойства компонент. Некоторые свойства компонент (например, Checked, Enabled, Visible и др.) являются логическими и могут принимать значения true или false. Эти свойства можно использовать в программе как обычные переменные логического типа, например:
Button1.Enabled:=false; //блокируем командную кнопку
RadioButton1.Checked:=true; //программно выбираем кнопку
Flag:=Edit1.Enabled and Edit2.Enabled; //присваиваем обычной логической переменной
// flag значение trueесли разрешено
// редактирование
//для обеих полей ввода и значение falseво всех
//других случаях.
If RadioButton2.Checked then… //проверяем, выбрана ли кнопка 2
If Edit1.Enabled and Edit2.Enabled then… //проверяем, разрешено ли редактирование
//для обоих полей ввода.
1.5 Независимая кнопка выбора CheckBox. CheckBox находится на вкладке Standard.
Если несколько кнопок CheckBox составляют одну группу, то из них может быть выбрана любая комбинация. Этим CheckBox отличаются от уже рассмотренных нами кнопок RadioButton, для которых может быть выбрана только одна кнопка из группы.
У компонент CheckBox есть логическое свойство Checked, значение которого может быть прочитано, например: flag:=CheckBox1.Checked and not CheckBox2.Checked; (здесь логическая переменная flag принимает значение true, если кнопка CheckBox1 выбрана, а кнопка CheckBox2 не выбрана, и false во всех остальных случаях) или установлено, например: CheckBox1.Checked:=true;
Событие OnClick для компонент CheckBox может возникнуть как при установке соответствующей опции (флажка) так и при ее снятии, поэтому при обработке этого события часто бывает полезно проверить, почему именно оно возникло (событие возникает уже после установки или снятия флажка):
procedure TForm1.CheckBox2Click(Sender: TObject);
Begin