Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 178
Текст из файла (страница 178)
Логические величины, как и в С, являются целочисленными значениями. Ноль соответствует значению подь, а ненулевое значение соответствует истине. Скалярные массивы. Перед именами массивов ставится символ с'. Массивы скаляров можно определять неявным образом, присваивая имени массива соответствующее значение. Например, присваивание Вс1аьь5ьапщ пц = С 1геьцмап'.'ьорцоиоге'.'1цп1ог'.'ьеп1ог'1: создает массив из четырех элементов с индексами от О до 3. Для доступа к элементу массива используется символ 3 перед именем массива (например, Зс1а5551апф пц(21), так как элемент массива является скалярным типом.
Массивы — динамические объекты. С помощью функции рцз(1 к массиву можно добавлять элементы, как, например, в рцзп (сс1аьэ5Гапц1пц. 'Огас!зонг)еп1'), где к массиву с1а555сапй пр добавляется пятый элемент Огацзьсх!епс. Ассоциативные массивы. Массивы можно рассматривать как отношения между ключом и значением. В Рег! ассоциативные массивы используются для фиксирования этих отношений. Такие массивы обозначаются символом 1 перед их идентификатором. Таким образом, запись В Рсг1 строка в лвойных квнь~чквх нв самом леле оорелеляет опсрапщо надстановкн в нее внвченнй сквлярных оереьщнцых и мвссинов сквляров, заданных в ней. — Прияеч. науч.ред.
Так онределщотся массивы скаля ров, нозноляххцис хранить числовые н сч роковые значения, то есть скалярньщданные. — Примеч, ннуч.ред П.9. Рег) 647 ФИРА = С Тон', 3.6, 'Иеогде'. 2 б. '5ан'. 3.2) Соотастствуст любому единичному символу, кроме символа новой строки Соотвстствусг началу строки Соотвстстауют концу ст)юкн Соотвстствуст фрагиснту текста, в котором прсдшсствуюнгий символ вгтречастся ноль нли болсс раз Соотвстствусг фрагменту текста, в котором нрслшсстнующнй символ всгрсчастся один или балов раз Соответствует фрагиснту тскста, в котором прсдшсстнуюший символ встрсчасгся ноль или алин раз Сон гвстствугт любоиу из указанных сии полон а, Ь иян с Соотвстствуст любому символу, за исключсннеи а, Ь или с Соотвстствуст любому символу из указанного диапазона Соответствует одному из символов, д илн Ь [аЬс] [ аЬс] [а-г] а(Ь Те метасимволы, которые используются в образцах (например, (, "), можно задавать в регулярных выражениях, если поставить перед такими символами экранирующий символ Т.
Если группу элементов регулярного выражения заключить в круглые скобки (НанрИМЕр, /[ [В-2] ) т), тО НайдЕННОЕ Ей СООтВЕтСтВИЕ В СтрОКЕ, СОПОСтаВЛяЕМОй С Образцом, будет помещено в переменную $1 (для следующей группы в круглых скобках будет использована переменная $2 и т.д. до $9). Это свойство используется при операции подстановки. Стандартная функция кеу возвращает скалярный массив значений ассоциативного массива, перс- данного сй а на 1сстас нарамстра. — Примеч. науч, ред. Обьгню используется этот символ, хотя на самом деле нрн задании рсгулярааго выражения в каче- ства аграничитсля можно использовать любой символ, один и тат же в начала и в конце.
— Примеч. науч, рад, создает ассоциативный массив из трех элементов. Далее, оператор рш пт "ИРА ог Тон тз $ИРЯ('Тон')"; напечатает ИРА оу Тою 1з 3.6. Заметим, что в этом случае перед идентификатором ассоциативного массива (которому обычно предшествует символ Ф) стоит символ $.
Это объясняется тем, что в данном случае мы ссылаемся на элемент массива, а это— скалярный объект. Использование Тогеасй $пэюе [Ьеу ФИРА) позволяет программе последовательно обработать каждый элемент ассоциативного массива, то есть обработать поле значений лтассива'. Регулярные выражения. Регулярное выражение начинается и заканчивается косой чертой' и используется в качестве правого операнда операций сопоставления с образцом, в частности операции связывания =-. Результатом операции $х =- Тйтп9 будет истина, если строковая переменная $х содержит строку Тптп9. Результатом операции связывания !- будет истина, если строка, заданная регулярным выражением, не будет найдена. В регулярных выражениях могут использоваться следующие метасимволы и конструкции: 648 Приложение.
Обзоры языков Подстановка. Конструкция з/реп выраа/значение) имеет слелуюший смысл: если в сопоставляемой строке находится последовательность символов, удовлетворяющая ре(улярному выражению рег выраа, то она заменяется заданным строковым значениен. Конструкция зтрег вырааузначение/9 производит замену во всех случаях такого соответствия.
Переменные Рег! с з1 по $9 также можно использовать для подстановки, используя их в замещаю(цем значении; внутри самого регулярного выражения для ссылки па содержимое такой переменной следует использовать конструкцию вида 11, г 2 и т. д. до т9. П.9.2. Управление последовательностью действий Операторы. В Рег! используются обычные управляющие структуры. В каждый конкретный момент времени выполняется не более одного оператора. Каждый оператор заканчивается точкой с запятой. Оператор присваивания Рег! является достаточно обычным, но в применении к массивам он имеет некоторые особенности; ех = еу.
Фприсваивание нассива у пассиву х зх = гу. й)рисваивание длины васенка у перекенной х Зх - "Фу'П ФПодстановка в строку через пробел значений лзлекентов пассива у. Полученная строка Фприсваивается перененной х Конструкция цикла (огеасл гц пдехчаг (Ваггауча1ые) (оператор): послеловательно на каждом шаге присваивает переменной аз пбехчаг значения элементов массива и выполняет оператор. В Рег(, как и в С, имеется оператор тог, а также операторы ы))11е-0о и ((о-ипс11.
Предикаты задаются в соответствии с соглашениями, принятыми в С. Равенству соответствует операция =.=, неравенству— операция !=, равенство строк определяется операцией еП, а неравенство строк— операцией пе. Общий вид условного оператора ) ( следующий: т( (вырааение) слеп (оператор) е1зет( (вырааение) (первый возноаный оператор) е1зет( (вырааение) (второй возноаный оператор) е1зе (последний возиоаный оператор); Считывание из файла требует использования дескриптора файла, так Зх = <510(И>; считывает очередные входные данные из стандартного файла ввода (например, с клавиатуры).
Оператор орел (П1епаве, Зз(г1пдча1не); открывает файл с именем, содержащимся в переменной зз(г( п9ча1ие, и создает дескриптор файла т)1епаве, а оператор с1озе(111епаве) закрывает этот файл. В Рег! используются также соглашения оболочки вбей по доступу к файлам ()!ч !Х: П,10. Роа(зспр( 649 орел(ву(т1е, "ьИз1е" ); УОтнрьгть файл для вывода данных орел(ву(з1е," »Ит1е"); ()Отнрьгть файл в репине добавления орел(ву(т)е."<Ъ(т1е"); УОтнрьгть файл для ввода данных Функции.
Функция рыв)т(пассив. скалярная величина) добавляет элемент к мас- сиву, а функция рор(нассив) возвращает последний элемент массива. Функция К еч возвращает первые члены отношений ассоциативного массива (кл ю- чи), в то время как ча1ие возвращает вторые члены этих отношений (значения). Функция зр111(гехрг,втгзпдчаг) использует регулярное выражение гехрг в ка- честве разделителя и преобразует строковое выражение втгз пдчаг в массив. Резуль- татом выполнения оператора (ах-зр1)с(/ /, зу): будет разделение строки $у на подстроки (каждая подстрока — это символы между двумя пробелами в строке) и создание массива, элементами которого являются полученные подстроки. Если строковое выражение не задано, то по умолчанию вместо него используется содер- жимое специальной переменной 3 . Функция спор удаляет из строки символ конца строки, Функция (г (транслитерация) преобразует строку из одного множества симво- лов в другое.
Например, Ог/а-2/А-7/ преобразует содержимое специальной пере- менной $ из нижнего регистра в верхний. Подпрограммы. Синтаксис подпрограмм следующий: выо иия ( операторы ) Вызов подпрограмм осуществляется как Виня, а параметры передаются через элементы специального массива (а .
Возвращаемое значение — то, которое 'было вычислено в подпрограмме последним. Например, )оса)(тх Ву); создает в подпрограмме локальные переменные, П.10. Ро818спр1 П.10.1. Объекты данных Элементарные данные. Данттьте в Роз(зсг)р( включают в себя следующие объекты; Числа могут быть целыми (например, 1, 3, -42) или вещественными (например, -1. 234, 1.
22-10). Листинг П.12. Программа на Роз1зспр1 1; Жлналогична прОгранне на Гог(П приведенной в начале раздела 8 2.2 2. /Не1чебтса (тпп(опт 3: 20 вса1е(опс 4: зе:(оп: 5: 200 400 вече(о б: /(огва1тс (10 10 зсгтпд счгз влоы ) Ое( 7' /зог (пир вп1) Ое( 8: /позыв (ехсн 1 апо ехсл 1 зппех вот апо) 0е( 9. 3 6 оозпв 2 сору (оппа(зт ( ) знои (огваотс 10: с1еаг 11; 200 375 воче:о 12: 0 0 0 1 9 (рор позыв) (ог (огвасзт 13. зиоыра9е 650 Приложение. Обзоры языков Составные данные. Составные данные могут включать в себя несколько компонентов, сгруппированных вместе, которые, в свою очередь, состоят из следуютцих элементов: Массивы — элементарные объекты данных, заключенные в квадратные скобки (1, 1), например: [123 4 5571 Жпассив из трех чисел (комментарии начинаются с символами) или 1123 аос Гхуг) Хиассив из целого числа.
ииени и литерального ииени Строки представляют собой произвольную последовательность символов, заключенную в круглые скобки: (Это строка> Процедуры — это последовательности лексем Розгэсг! рг, заключенные в фигурные скобки ((, ) ): (Оир ин1) ЖВозводит число в квадрат. дублируя верхний злеиент стека и затеи переиноиая два верхних (одинановых) злечента В качестве примера программы на Роетвсйрт приводится программа, аналогичная программе на языке ГоггЬ из обзора языка 8.2. Стлрока 1.