На этом шаге мы рассмотрим условные конструкции.
Perl является императивным языком программирования: его программа состоит из последовательности операторов, определяющих некоторые действия. Оператор – это завершённая конструкция интерпретатору на выполнение определённого действия. Все операторы языка Perl делятся на простые и составные. Простой оператор представляет собой выражение, возможно, снабженное модификатором. Составной оператор определяется в терминах блоков (о таких конструкциях мы поговорим позднее).
Каждый оператор имеет возвращаемое значение. Для простого оператора – это значение вычисляемого в нём выражения, для составного оператора – значение последнего вычисленного в нём оператора.
С этого шага мы начнем рассматривать простые операторы, в частности, условные конструкции, а также поясним понятие модификатора.
Простой оператор, снабженный модификатором if, имеет следующий общий вид:
<ВЫРАЖЕНИЕ> if <УСЛОВИЕ>;
Выражение, стоящее перед if, выполняется тогда, когда проверяемое условие является истинным. Используя, например, синтаксис языка программирования Паскаль, эту конструкцию можно записать следующим образом:
if <УСЛОВИЕ> then <ВЫРАЖЕНИЕ>;
Модификатор unless является прямой противоположностью if: простой оператор выполняется, если проверяемое условие является ложным. Общий вид такой конструкции следующий:
<ВЫРАЖЕНИЕ> unless <УСЛОВИЕ>;
На Паскале эта конструкция будет выглядеть так:
if not <УСЛОВИЕ> then <ВЫРАЖЕНИЕ>;
Приведем пример использования модификаторов if и unless при решении квадратного уравнения.
# Решение квадратного уравнения a*x**2+b*x+c=0 (* - умножение, ** - # возведение в степень). $a=<STDIN>; # Ввод коэффициентов с клавиатуры $b=<STDIN>; $c=<STDIN>; $d=$b**2 – 4*$a*$c; # Вычисление дискриминанта уравнения. # Вычисление корней, если дискриминант положителен. ( $x1 = (-$b+sqrt $d)/$a/2, $x2 = (-$b-sqrt $d)/$a/2) unless $d < 0; # Печать результатов. print “Коэффициенты: a=$a b=$b c=$c”; # Вывод, если определена переменная $x1 (выражение выполняется # справа налево). print “\tРешение: \n \t$x1\t$x2” if defined $x1; # Вывод, если не определена переменная $x (выражение выполняется # справа налево). print “\tРешения нет!” unless defined $x1;
Модификатор unless используется в операторах вычисления корней и печати сообщения об отсутствии решения. Обратите внимание, что в операторе печати проверяется, определена ли переменная $x1, а будет она определена только в случае положительности дискриминанта $d. В конструкции if оператора печати корней уравнения также проверяется, определена ли переменная $x1.
Таким образом, если какая-то конструкция (условная или циклическая) относится только к одному оператору, то она называется модификатором. Если эта конструкция влияет на несколько операторов (на блок операторов), то она называется оператором. В дальнейшем, чтобы избегать путаницы, мы везде будем пользоваться термином оператор.
На следующем шаге мы введем понятия составного оператора и блока.