Условный оператор позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие. Таким образом, условный оператор - это средство ветвления вычислительного процесса.
Структура условного оператора имеет следующий вид:
if <условие> then <оператор1> else <оператор2>;
где if/ then/ else - зарезервированные слова (если, то, иначе);
<условие> - произвольное выражение логического типа;
<оператор1>, <оператор2> - любые операторы языка Object Pascal.
Условный оператор работает по следующему алгоритму. Вначале вычисляется условное выражение <условие>. Если результат есть True (истина), то выполняется <оператор1>, а <оператор2> пропускается; если результат есть False (ложь), наоборот, <оператор1> пропускается, а выполняется <оператор2>. Например:
var
X, Y, Max: Integer;
begin .
if X > Max then
Y := Max else
Y := X;
….
end;
При выполнении этого фрагмента переменная y получит значение переменной х, если только это значение не превышает мах, в противном случае y станет равно мах.
Условными называются выражения, имеющие одно из двух возможных значений: истина или ложь. Такие выражения чаще всего получаются при сравнении переменных с помощью операций отношения =, <>, >, >=, <, <=. Сложные логические выражения составляются с использованием логических операций and (логическое И), or (логическое ИЛИ) и not (логическое НЕ). Например:
if (а > b) and (b <> 0) then ...
Примечание
Примечание
В отличие от других языков программирования в Object Pascal приоритет операций отношения меньше, чем у логинеёкйх" операции, по этому отдельные составные части сложного логического вьфажёния 5 заключаются в скобки. Например, такая запись предыдущего оператора будет неверной:
if a>b and b <> 0 then ...// Ошибка так как фактически (с учетом приоритета операции) компилятор будет транслировать такую строку:
if a>(b and b)<>0 then...
Часть else <оператор2> условного оператора может быть опущена. Тогда при значении True условного выражения выполняется <оператор1>, в противном случае этот оператор пропускается:
var
X, Y, Max: Integer;
begin
if X > Мах then Мах := X;
Y := X;
end;
В этом примере переменная y всегда будет иметь значение переменной х, а в мах запоминается максимальное значение X.
Поскольку любой из операторов <оператор1> и <оператор2> может быть любого типа, в том числе и условным, а в то же время не каждый из “вложенных” условных операторов может иметь часть else <оператор2>, то возникает неоднозначность трактовки условий. Эта неоднозначность в Object Pascal решается следующим образом:
любая встретившаяся часть else соответствует ближайшей к ней сверху по тексту программы части then условного оператора. Например:
var
a,b,c,d : Integer;
begin a := 1;
b := 2;
с := 3;
d := 4;
if a < b then // Да
if с < d then // Да
if с < 0 then // Нет
с := 0 // Этот оператор не выполняется
else
а : = b; // а равно 2
if а < b then // Да
if с < d then // Да
if с < 0 then // Нет
с := 0 // с равно 0
else // if с < О
else //if с < d
else // If a < b
а := b; // Этот оператор не выполняется
end;
Учебная программа INTTEST
Игра “Угадай число”: программа случайным образом выбирает целое число в диапазоне О... 1000 и запоминает его. Пользователь пытается угадать его и вводит свое число. Сравнив ввод с запомненным числом, программа сообщает - больше, меньше или равно введенное число запомненному. Ввод продолжается до угадывания, после чего программа предлагает сыграть еще раз.
Поскольку пользователь вводит только числа, изменим форму fmExample: как и в предыдущей программе intmult вместо компонента edinput типа TEdit поместим на форму одноименный компонент типа TMaskEdit. Выберите опцию File | New | Application, щелкните по компоненту edinput и удалите его с помощью клавиши Delete, затем поместите на его место компонент MaskEdit (страница Additional), назовите его edInput (свойство Name) и в его свойство
EditMask поместите строку
0999;1;
В секцию private описания класса fmExampie поместите объявление целочисленного поля х:
private
{ Private declarations }
X: Integer;
Для обработчика события OnActivate формы fmExampie Напишите такой код:
procedure TfmExample.For.gif" >