Условный оператор IF (если), очень часто используется программистами. Благодаря этому элементу программирования языка Паскаль, мы можем, например, в нашей предыдущей программе, предотвратить деление на 0, и это только одно из возможных применений.
Общий синтаксис условного оператора IF выглядит так (сокращенная версия):
1 |
IF (условие) THEN инструкция-1; |
И вторая версия (более длинная):
1 |
IF (условие) THEN инструкция-1 ELSE инструкция-2; {Внимание! - после инструкции-1 нет точки с запятой, потому что это не конец IF} |
Принцип работы приведенного выше кода очень прост. „Инструкция-1″будет выполняться только тогда, когда данное условие вернет true (т.е. будет истинным, например. 2 > 1). В то время как во второй версии (более длинной), есть такая разница, что в случае, если данное условие возвращает false (т.е. будет неправдой, например. 2 < 1), это будет сделано в „Инструкции-2„.
1 |
IF (2 > 1) THEN выполнить если правда; |
1 |
IF (2 > 1) THEN выполнить если правда, а если ELSE выполнить если ложь; |
Если код будет после слова THEN или ELSE, то он будет содержать несколько функций, т.е. будет более сложным:
1 2 3 4 5 6 7 8 9 10 |
IF (1 > 0) THEN BEGIN инструкция-1; инструкция-2; END {ВНИМАНИЕ! - ЗДЕСЬ НЕТ ТОЧКИ С ЗАПЯТОЙ, ПОТОМУ ЧТО ЭТО НЕ КОНЕЦ ОПЕРАТОРА IF} ELSE BEGIN инструкция-3; инструкция-4; END;{ВНИМАНИЕ! - ВОТ ТОЧКА С ЗАПЯТОЙ, ПОТОМУ ЧТО ОПЕРАТОР ЗАКОНЧИЛСЯ} |
Теперь вернемся к нашей программе:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
программа калькулятор; uses crt; var <span class="crayon-v">number1</span><span class="crayon-sy">,</span> <span class="crayon-v">number2</span><span class="crayon-sy">,</span> <span class="crayon-v">dobavitrezultat</span><span class="crayon-sy">,</span> <span class="crayon-v">dobavitrezultat</span><span class="crayon-sy">,</span> <span class="crayon-v">dobavitrezultat</span><span class="crayon-sy">,</span> <span class="crayon-v">dobavitrezultat</span><span class="crayon-o">:</span> <span class="crayon-t">integer</span><span class="crayon-sy">;</span> begin ClrScr;{очистить экран} write('введите первое число:'); readln(number1); write('введите второе число:'); readln(number2); <span class="crayon-v">dobavitrezultat</span>: = number1 + number2;{сложение} rezultat: = number1 - number2;{вычитание} rezultat: = number1 / number2;{ помните, что нельзя делить на0! } rezultat: = number1 * number2;{умножение} writeln('результат сложения:', результат сложения); writeln('результат вычитания:', результат вычитания); writeln('результат деления:', результат деления); write('результат умножения:', результат умножения); repeat until keyPressed;{ожидаем нажатия кнопки} end. |
Нам нужно применить к ней условный оператор, который проверит, отличается ли переменная – „number2„, которая является делителем от 0.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
программа калькулятор; uses crt; var <span class="crayon-v">number1</span><span class="crayon-sy">,</span> <span class="crayon-v">number2</span><span class="crayon-sy">,</span> <span class="crayon-v">dobavitrezultat</span><span class="crayon-sy">,</span> <span class="crayon-v">dobavitrezultat</span><span class="crayon-sy">,</span> <span class="crayon-v">dobavitrezultat</span><span class="crayon-sy">,</span> <span class="crayon-v">dobavitrezultat</span><span class="crayon-o">:</span> <span class="crayon-t">integer</span><span class="crayon-sy">;</span> begin ClrScr;{очистить экран} write('введите первое число:'); readln(number1); write('введите второе число:'); readln(number2); <span class="crayon-v">dobavitrezultat</span>: = number1 + number2;{сложение} rezultat: = number1-number2;{вычитание} {ОПЕРАТОР IF} if (number2 < > 0) then {проверяем, отличается ли делитель от 0} rezultat: = number1 / number2 {внимание! - здесь нет точки с запятой, потому что это не конец оператора IF} ELSE результат деления: = ' нельзя делить на 0!'); {конец IF} {Конец IF } rezultat: = number1 * number2; { умножение } writeln ('результат сложения:', результат сложения); writeln ('результат вычитания:', результат вычитания); writeln ('результат деления:', результат деления); write ('результат умножения:', результат умножения); repeat until keyPressed;{ожидаем нажатия кнопки} end. |
Теперь, после внесения незначительных изменений, программа стала понимать, что на 0 делить нельзя.
С Уважением, MonitorBank