Выражения и операторы Оператор — это часть текста программы, которую интерпретатор преобразует в законченную инструкцию, выполняемую компьютером. С точки зрения синтаксиса языка (способов составления правильных конструкций, распознаваемых интерпретатором) оператор состоит из лексем — минимальных единиц языка, которые имеют определенный смысл для интерпретатора. Под минимальной единицей языка понимается такая его единица, которая не может быть представлена более мелкими единицами при дальнейшем ее синтаксическом разборе. В языке Perl лексемами могут быть идентификаторы, литералы, знаки операций и разделитель. Мы дадим определения всем допустимым в языке лексемам. Хотя их семантика (смысл) может оказаться для начинающих программистов и не совсем ясна, но мы вернемся к некоторым определениям в последующих главах, где уточним их и синтаксис, и семантику в связи с вводимыми элементами языка. Дело в том, что, к сожалению, невозможно описать язык без ссылок вперед. Идентификатор — это последовательность букв, цифр и символа подчеркивания "_", начинающаяся с буквы или подчеркивания и используемая для именования переменных, функций, подпрограмм, дескрипторов файлов, форматов и меток в программе. Программист может использовать любые правиль ные идентификаторы для именования перечисленных объектов программы, если только они не совпадают с ключевыми словами языка — предопределенными идентификаторами, которые имеют специальное значение для интерпретатора языка Perl, например if, unless, goto и т. д. Примеры правильных и неправильных идентификаторов представлены в примере 2.3. Пример 2.3. Правильные и неправильные идентификаторы # Правильные идентификаторы myNamel my_Namel
_myName__l
1 myName # Начинается с цифры. -myName # Начинается не с символа буквы или подчеркивания. my%Name # Используется недопустимый для идентификаторов символ my # my является зарезервированным словом.
Замечание
(Как используются идентификаторы для объявления переменных см. часть 3 ) (Как используются идентификаторы в дескрипторах файлов см. часть 7 ) (Как используются идентификаторы для объявления форматов см. часть 8 ) Литерал, или буквальная константа, — символ или слово в языке программирования, определяющие в отличие от переменной свое собственное значение, а не имя другого элемента языка. Буквальные константы тесно связаны с типами данных, представимыми в языке, и являются, собственно говоря, их представителями. В Perl литералами являются числа и строки. 123 # Целое число. 23.56 # Вещественное число с фиксированной точкой. 2Е+6 # Вещественное число с плавающей точкой. "Язык Perl" # Строковый литерал. (О литералах см. в части 3) Знаки операций — это один или более специальных символов, определяющих действия, которые должны быть выполнены над величинами, называемыми операндами. Выполняемые действия называются операциями, которые могут быть унарными (применяются к одному операнду), бинарными (применяются к двум операндам) и тернарные (участвуют три операнда). Пример 2.5. Операции языка Perl ++$п; # Унарная операция (++) 23 * $п; # Бинарная операция (*) $п >= 3 ? print "true" : print "false"; # Тернарная операция (?:) (Об операциях и используемых знаках операций см. в части 4) Разделитель — это символ ";", которым завершается любой оператор и который сообщает об этом интерпретатору. Использование разделителя позволяет на одной строке задавать несколько операторов, хотя это и не принято в практике программирования, так как ухудшает читаемость текста программы. В операторе все его лексемы могут отделяться любым числом пробельных символов, к которым относятся сам пробел, знак табуляции, символ новой строки, возврат каретки и символ перехода на новую строку. Поэтому один оператор можно записать на нескольких строках и для этого не надо использовать никакого символа продолжения, требующегося в других языках программирования. Например, оператор номер 4 присвоения данных, введенных с клавиатуры, из примера 2.1 можно записать и так: Пример 2.6. Использование пробельных символов в операторе $name = <STDIN> ; Можно вообще не использовать пробельные символы в операторе, но для обеспечения читаемости программы мы рекомендуем отделять лексемы одним пробелом, тем более что могут встречаться ситуации, когда интерпретатор не однозначно выделяет лексемы из непрерывного потока символов.
Замечание
Операторы в языке Perl могут быть простыми или составными. Простой оператор — это выражение, завершающееся разделителем точкой с запятой ",-", и которое вычисляется исключительно ради своего побочного эффекта. Что такое побочный эффект выражения мы определим немного позже, а сейчас остановимся на понятии "выражение". Выражение — последовательность литералов, переменных и функций, соединенных одной или более операцией, которые вычисляют скаляр или массив, т. е. при обработке интерпретатором выражения единственным действием является вычисление значения, а не выполнение некоторых других действий, например присвоение переменной нового значения. При вычислении выражения могут проявляться побочные эффекты, когда при вычислении выражения меняется значение переменной, входящей в выражение. Они могут вызываться, например, операциями увеличения (++) и уменьшения (--) или при вызове функции, которая изменяет значение своего фактического параметра. Как упоминалось выше, простой оператор и выполняется, чтобы реализовать этот побочный эффект, иначе какой смысл просто вычислить выражение, значение которого никоим образом нельзя использовать. Пример 2.7. Простые операторы ++$n; # Значение переменной $n увеличивается на единицу. 123*$n; # Простой оператор без побочного эффекта. Каждый простой оператор может иметь модификатор, который располагается после выражения перед завершающей точкой с запятой. Модификаторы представляют собой ключевые слова if , unless , while и until , за которыми следует некоторое выражение. Семантика использования модификатора заключается в том, что простой оператор выполняется, если истинно или ложно выражение, стоящее после модификатора, в зависимости от используемого модификатора. Модификаторы употребляются так же, как и в обычном разговорном английском языке. Например, простой оператор $n++ while <STDIN>;
будет выполняться, увеличивая всякий раз значение переменной $n на единицу, пока пользователь будет осуществлять ввод с клавиатуры. Остановить выполнение этого оператора можно вводом комбинации клавиш <Ctrl>+<Z>ium <Ctrl>+<C>.
(Подробно все модификаторы простых операторов рассматриваются в части 5 ) Чтобы определить конструкцию, называемую составным оператором, нам придется сначала ввести понятие "блок". Последовательность операторов Perl, определяющая область видимости переменных, называется блоком. После знакомства с переменными это определение не будет таким туманным, каким оно может показаться сейчас начинающему программисту. Для целей этой главы достаточно мыслить блок как последовательность операторов, заключенную в фигурные скобки: { оператор_1; оператор_n; } Составной оператор определяется в терминах блока и может быть одного из следующих видов: Пример 2.8. Составные операторы if (выражение) БЛОК if (выражение) БЛОК_1 else БЛОК__2 if (выражение_1) БЛОК_1 elsif (выражение_2) БЛОК_2 ... else БЛОК_п МЕТКА while (вьражение) БЛОК МЕТКА while (вьражение) БЛОК_1 continue ЕЛОК_2 МЕТКА for (вьражение_1; выражение_2; аьражение_3) БЛОК МЕТКА foreach переменная (список) БЛОК .МЕТКА БЛОК_1 continue БЛОК_2 Обратим внимание читателя на то, что, в отличие от языков программирования С и Pascal, составные операторы Perl определяются в терминах блоков, а не в терминах операторов. Это означает, что там, где нужен блок, он всегда должен задаваться с помощью фигурных скобок. В составных операторах, если даже блок состоит из одного оператора, он должен быть заключен в фигурные скобки. Такой синтаксис не приводит к двусмысленностям и, например, во вложенных операторах условия всегда ясно, с каким if согласуется else или elsif . Метка, представляющая собой идентификатор с двоеточием ":", в составных операторах не обязательна, но если она присутствует, то имеет значение для операторов управления циклами next , last и redo . (Подробно все составные операторы рассматриваются в части 5 ) В этой главе мы познакомились с основными синтаксическими понятиями, используемыми для формирования правильных конструкций языка Perl. Узнали из каких основных элементов состоит Peri-программа, а также разработали и выполнили нашу первую программу. Поделитесь этой записью или добавьте в закладки | Полезные публикации |