Ответим сначала на первый вопрос, заданный на этом шаге. Раз у условного оператора отсутствует конструкция Else, то в случае ложного значения проверяемого условия компьютер просто перейдет к выполнению следующей команды. Таким образом, будет выполнен оператор, идущей после этой конструкции.
Теперь перейдем к ответу на поставленный вопрос. Если введенные числа будут равны, то проверяемое условие x>y будет ложным, а, следовательно, будет осуществлен переход к конструкции Else, после которой идет вывод значения переменной y. Таким образом, в случае равенства значений переменных x и y на экран будет выведено значение переменной y!
Как изменить программу, чтобы она выводила сообщение: Числа равны? Нужно после конструкции Else поместить еще одно условие, которое будет определять: равны или нет введенные числа.
Program Primer; Var x,y:Integer; Begin WriteLn('Введите два числа: '); {Вводим два целых числа} ReadLn(x,y); {Если (If) x больше y, то (Then) выводим x} If x>y Then WriteLn('Наибольшее из чисел: ',x) {Иначе (Else) проверяем на равенство числа x и y} Else {Если (If) x равно y, то (Then) выводим сообщение "числа равны"} If x=y Then WriteLn('Введенные числа равны') Else {Сюда компьютер попадет, когда x будет меньше y} WriteLn('Наибольшее из чисел: ',y); End.
Протестируем приведенную программу.
1. Пусть x=5, y=3. Первое проверяемое условие: x>y. При заданных
значениях переменных x и y оно является истинным. Раз оно истинно,
то будет выполнен оператор WriteLn('Наибольшее из чисел: ',x), который выведет
на экран сообщение:
Все, что расположено после первого служебного слова Else (а это еще один условный оператор), будет пропущено. Поэтому компьютер перейдет на End и завершит выполнение программы.
2. Пусть x=5, y=5. Первое проверяемое условие: x>y. При заданных
значениях переменных x и y оно является ложным. Раз оно ложно,
то оператор WriteLn('Наибольшее из чисел: ',x) выполнен не будет, и компьютер
перейдет на ветвь Else, где расположена вторая условная конструкция. Следующим
проверяемым условием будет x=y. При заданных значениях переменных x и y
оно является истинным. Раз оно истинно, то будет выполнен оператор
WriteLn('Введенные числа равны'), который выведет на экран сообщение:
После этого компьютер пропустит вторую конструкцию Else, перейдет на End и завершит выполнение программы.
3. Пусть x=3, y=5. Первое проверяемое условие: x>y. При заданных
значениях переменных x и y оно является ложным. Раз оно ложно,
то оператор WriteLn('Наибольшее из чисел: ',x) выполнен не будет, и компьютер
перейдет на ветвь Else, где расположен вторая условная конструкция. Следующим
проверяемым условием будет x=y. При заданных значениях переменных x и y
оно также является ложным. Раз оно ложно, то оператор
WriteLn('Введенные числа равны') выполнен не будет, и компьютер
перейдет на вторую ветвь Else. Здесь уже не требуется проверок условий,
так как мы точно знаем, что сюда компьютер попадет только в том случае, когда
x<y (остальные случаи мы проверили раньше). Таким образом, требуется
только выполнить оператор WriteLn('Наибольшее из чисел: ',y), который выведет
на экран сообщение: