Условный оператор
Lazarus IDE: Основы программирования в Windows
Несмотря на то, что всё потихоньку уходит в сеть, программирование для настольных компьютеров остаётся востребованным. И будет таковым ещё долго. Ну а самая распространённая операционная система для настольных компьютеров – это по-прежнему Windows. Поэтому любой программист, даже если он собирается стать веб-разработчиком, должен знать хотя бы основы создания программ для Windows. Подробнее... |
В общих чертах с условным оператором мы уже познакомились в статье Операции сравнения. Сегодня поговорим об это более подробно.
Напомню, как выполняется ветвление в Паскале:
if … then … else
Эта конструкция работает так:
if (если) выполняется условие then (то) выполняем этот код else (иначе) если условие не выполняется выполняем этот код
Кроме того, условный оператор может быть сокращённым, то есть без использования слова else. Сокращённый вариант применяется в тех случаях, когда при несоблюдении условия никаких действий выполнять не надо.
Например, какая-то программа должна проверять значение температуры. Если температура ниже минимальной, то надо выдать сообщение. А если нет, то ничего не предпринимать и продолжить работу. Если вы помните наш алгоритм похода за молоком (рис. 4.2), то там надо выполнять именно эту операцию - проверку температуры, то есть определять, насколько холодно на улице. Выглядеть это будет примерно так:
var Temperatura : integer; begin Temperatura := -20; WriteLn('Get the money'); //Взять деньги if Temperatura < 0 then //Если температура ниже нуля WriteLn('Dress warmly'); //то тепло одеться WriteLn('Go to the store'); //Пойти в магазин WriteLn('...'); //Ну и так далее... ReadLn; end.
Здесь мы проверяем значение переменной Temperatura. Если оно меньше нуля, то выводим строку “Dress warmly” (тепло одеться). Иначе, если температура равна или больше нуля, то программа ничего не делает, а просто переходит к следующей строке кода.
Ну и для закрепления материала снова вернёмся к нашему калькулятору. Посмотрите ещё раз внимательно исходный код и попробуйте определить, какие ещё ошибки могут возникнуть при вводе данных и сможем ли мы их избежать с помощью ветвления.
program ifelse; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes { you can add units after this }; var x, y : integer; begin Write('x = '); ReadLn(x); Write('y = '); ReadLn(y); WriteLn('x + y = ', x + y); WriteLn('x - y = ', x - y); WriteLn('x * y = ', x * y); if y = 0 then WriteLn('!!! Error: Division by ZERO !!!') else WriteLn('x div y = ', x div y); ReadLn; end.