Операторы If Then Else (Условия, условные операторы в Delphi)
Чтобы понять, что означает условный оператор If и вся конструкция If then else, ее просто нужно перевести на русский язык.
If… then… else…, — это тоже самое, если бы мы сказали по русски:
Если… Тогда… Иначе…,
Оператор If — не зря назван условным, он предназначен для работы с условиями. К программированию на Delphi это имеет следующее отношение…
Допустим нам нужно, чтобы программа произвела какие нибудь действия, в зависимости от исхода какого нибудь события, например:
если a<>b тогда c=d+e иначе c=d*e ,
Тут как раз к нам на помощь и приходит конструкция, If then else, — призванная реализовать нашу задумку.
Записываем, теперь то же условие, только уже на языке понятном программе:
1 2 3 4 5 6 7 8 |
var a,b,c,d,e: Integer; begin if a<>b then //если a<>b тогда с:=d+e else //иначе, выполнить действия ниже c:=d*e; end; |
Кстати, применение секции else в нашей конструкции, не является обязательным, если мы например хотим сформулировать условие, без else, например:
1 2 3 4 5 6 |
var a,b,c,d,e: Integer; begin if a<>b then // если a<>b тогда с=d+e иначе - ничего не делать; с:=d+e; end; |
Этот пример, тоже будет работать. Здесь только важно обратить внимание на синтаксис. Если мы применяем постусловие else, то после выражения, за которым оно следует, знак — ; (точка с запятой) — не ставится. Если мы не применяем постусловие — else, тогда наоборот знак — ; (точка с запятой) — ставится обязательно.
Если нужно, чтобы после проверки условия выполнился — ряд операций, тогда этот ряд после «if — then» нужно заключить в конструкцию «begin — end». Например мы хотим, чтобы после проверки if a<>b then выполнились не только с:=d+e, но еще f:=f*h, и i:=j/k, тогда пишем код следующим образом:
1 2 3 4 5 6 7 8 9 10 |
var a,b,c,d,e,f,g,h,i,j,k: Integer; begin if a<>b then // если a<>b тогда с=d+e иначе - ничего не делать begin с:=d+e; f:=f*h; i:=j/k; end; end; |
Если все-таки нужно применить постусловие else, например, в случае, если a<>b — ложно, выполнить — l:=m-k, Тогда после — end, идущего перед else, знак — ; (точка с запятой) — не ставится. См пример ниже:
1 2 3 4 5 6 7 8 9 10 11 12 |
var a,b,c,d,e,f,g,h,i,j,k,l,m,k: Integer; begin if a<>b then // если a<>b тогда с=d+e иначе - ничего не делать begin с:=d+e; f:=g*h; i:=j/k; end else l:=m-k; end; |
Далее рассмотрим некоторые тонкости.
Например, если в операции if — then нам нужно рассмотреть несколько условий, например — если a<>b и z<=0, тогда выполнить с:=d+e; мы эти свои два условия a<>b и z<=0 объединяем при помощи логической операции and, а сами условия берем в скобки.
1 2 3 4 5 6 |
var a,b,c,d,e,z: Integer; begin if (a<>b) and (z<=0) then // если a<>b и z<=0, тогда с:=d+e; иначе - ничего не делать с:=d+e; end; |
Здесь у нас and — означает и, а еще можно объединять условия при помощи логических операций or — или, not — не, или других операций — xor например.
Еще, отдельного рассмотрения требует вложенность условий, например когда мы хотим реализовать следующее:
если a<>b тогда проверяем если z<=0 тогда c:=d+e; иначе c:=0; Записываем:
1 2 3 4 5 6 7 8 9 |
var a,b,c,d,e,z: Integer; begin if a<>b then if z<=0 then // если a<>b и z<=0, тогда с:=d+e; иначе - ничего не делать с:=d+e else // относится к if где - z<=0 c:=0; end; |
В этом примере не все условные операторы имеют постусловие else. И чтобы понимать к какому из упомянутых дважды в нашем коде — if, относится постусловие else, в Delphi существует правило, — зарезервированное слово else, всегда относится к ближайшему оператору if, которое с else еще не было связано.