Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 182
Текст из файла (страница 182)
Классу Оа газ йоге передается метод пехтна), который возвращает следующее целочисленное значение из файла. Этот объект присваивается переменной х и сравнивается со значением О. Результатом выполнения этого блока является либо булев объект ггпе, либо булев объект 1а ! зе, Строки 27 — 29. Метод ьп ~ ! еТгое: с параметром-блоком передается булеву объекту строки 26, Если этот объект является объектом га! зе, то блок игнорируется; если 'сгце, то блок выполняется и условный блок строки 26 вычисляется снова.
Таким образом, реализуется стандартный цикл нМ1е. Фактически блок представляет собой конструкцию цикла Со. Метод то: со: получает в качестве параметров счетчик 'к и блок операторов и передает цх целочисленному объекту 1. Результатом является циклическое выполнение блока от 1 до К Метод Оа1азсоге пехьна! возвращает следующий символ из файла, присваивает сто переменной ) и затем распечатывает значение ). Точка служит для разделения операторов. Стрел и 30 — 32. Вызывается метод гезее класса Оасазгоге и переменной лцп присваивается значение О.
Распечатывается строка '50й = '. Строка 34. Распечатывается значение ып. После этого метод рг~птн! вставляет символ новой строки. Строка 33. Массив переводится в исходное состояние для нового сумлщрования. Символ (! ) означает выполнение операторов, расположенных в строках 23 — 34. П.12.1. Объекты данных Переменные представляются цепочками строчных букв. В 5шайгайс используется соглашение, по которому имена переменных могут состоять пз нескольких слов, причем каждое следующее слово начинается с прописной буквы, например ап1пее0ег, аРагапетег, спе!прц1, пу!прцтГ! ! е и т, д, Имена глобальных объектов дап- бб2 Приложение.
Обзоры языков ных начинаются с прописной буквы. Все данные, которые совместно используются объектами (то есть объявленные в определении класса объекта), начинаются с прописных букв. Строки заключаются в одинарные кавычки (апострофы), а символьные данные начинаются с символа 5. Так, например, символ "д" задается как зд, Выполнение программ является динамическим. Поэтому типы переменных не задаются, а устанавливаются, изменяются и запрашиваются во врелдя выполнения, Элементарные типы данных В %па!!СаИТ классы определяют типы. Множество предопределенных классов пе- речислено в табл. П.2.
Таблица П.2. Иерархия стандартных классов Ягпа01а1й Оьуесс (суперкласс — продолжение) С1аев ОЬ)ест Аито1оап ВеПаюос П аадОедсгдрддоп С1адд Медас1адд В1осхсопТехд Воо1еап Ра1де Тгие Стипсмопоедсюроог СоЬ)есс Со11есодоп Вао Марреп Со11есддоп 5ееиепсеан еСо11есм оп АггауеОСо11есмоп Аггау ВУСЕАггду Соард1епнетпод 5тгдпд 5уаоо1 !птегид1 К1пкедсддт 5едарПоге ОгаегеЬСо11есюоп 5огсеОСо11есмоп 5ес 01сддопагу !Оепм ЬУОдСТ;ОПдгУ 5УТТеа01ст1опдгУ Ое1 ау Рд1е5еодепд Шпх Ргоседд 5уасдпк МаВП1типе Спагассег Оате Соойирхеу Аддосдаодоп Миаоег ноас 1поерег Т1де Меаогу Вусенеаогу Ногинеаогу надсаде Метподсопоехт Меспос!пто Ргоседдог5пееи1ег 5пдгеООиеие 5сгеаа Роды опди е51геда йеап5ггеаа Нгдте5дгеаа йеааиюое5огеаа Гд1е5тгеаа йапсса Тодеп51геаа Опиеп пеООЬ)ест П.12.
ЯтаИ1а)к 663 Структурированные типы данных В Брайта)к не имеется встроенных структурированных данных. Объекты данных создаются методами из определений классов. Массивы. Массивы создаются при помощи ключевого метода пеи: класса аггау, причем параметром метода является размер массива.
Значения элементов массива задаются ключевым методом ас;, как описано в разделе 7.2.5: аггаууага аще ат л адех рщ. аггауха1ре Метод аг: используется также для получения значений элемента массива: а"гауй ааще амшдех Множества. Множества создаются методом пе»к класса 5ес. Ключевой метод аоо: помещает в ьиюжество новый объект, метод геяоуе: удаляет объект из множества, а метод )ПС1в))еес возвращает Ггве илп уа1зе в зависимости от того, входит ли параметр метода в данное множество. Другие структуры. В 5тайга1к имеются стандартные определения классов для связанных списков, множеств с повторяющимися элементами и других классов, перечисленных в табл. Н.2. В вашей локальной системе могут быть и другие стандартные определения классов.
Для того чтобы узнать атрибуты каждого такого класса, можно использовать метод агзресс. Определяемые пользователем типы В 5шайга1х полиморфизм и возможность залания пользовательских функций обеспечиваются наследованием методов в определениях классов. Представление объектов в памяти В 5шайга1к используется динамическое управление памятью н указатели. Каждая переменная имеет указатель на соответствующий контекст для объектов этого класса. П.
1 2.2. Управление последовательностью действий Выражения выполняются в порядке нх задания. Операторы отделяются друг от друга точками. Определения методов завершаются символом «!», а определения классов завершаются символом «!!». Выражения Выражения в Вшайга1х чрезвычайно просты. Существует только три уровня старшинства: + упарный метод; + бинарный метод; + ключевой метод.
В пределах каждого уровня выполнение методов осуществляется слева направо. Например, выражение 2» 3 * 4 содержит два бинарных метода с одинаковым старшинством, поэпуму правильной его шперпретацией будет ((2» 3) * 4) или 664 Приложение. Обзоры языков 20, а не 14, как можно было ожидать. Возможно, это наиболее необычное свойство языка, и в этом отношении следует проявлять особую осторожность.
Также следует внимательно относиться к таким выражениям, как 1 + 2 рг]пс, Так как рг]пб — зто унарная операция, то при расстановке приоритетов получим 1 ь (2 ршоб], то есть, вероятно, не то, что подразумевалось. Для того чтобы безошибочно получить желаемое семантическое значение выражения, всегда можно использовать скобки. В бшайбайс определен обычный набор методов сравнения (например, «, Гэ -, >, > ). Метод погецыв1 (не равно) обозначается символами —. Также определены некоторые дополнительные методы вычислений. Наиболее полезны из пих следующие: + !! — частное (целочисленное деление); + 11 — остаток; + 0сб: — наибольший общий делитель (то есть пя осб: и для целых чисел ж и и).
Операторы Объявления. Синтаксис 1яагяаб1е1 определяет локальную переменную, область видимости которой распространяется до конца определения текущего метода (ко- торос завершается символом «! >). Присваивапие. Основной оператор присваивания имеет вид переиеннвя выражение В данном случае вычисляется выражение и полученное значение присваивается перененной. Выражение может быть как обычными данными, так и выполняемым блоком — таким образом конструируется оператор 1б В СХ1] йпайсайс ляожно кро- ме стандартного оператора присваивания «» использовать и оператор:=.
Блок. Блок имеет следующий синтаксис 1 .поиапьнвя переивннвя 1 список опорвторов] где локальная перененная — необязательный компонент, представляюяцнй собой спи- сок из одной или нескольких локальных переменных, областью видимости которых является данный блок. Метод нв1ые, посланный блоку, инициирует его выполне- ние. Обычно блоки присваиваются некоторой переменной х и затем выполняются, посылая сообщение яв1ые соответствующему блоку (например, х иа1це). Условные операторы.
Условные операторы создаются посылкой метода 1ГТгые:11та1ве: объектам сгце или Га1зе. Объект 1гце будет выполнять блоковый параметр я ГГгие, тогда как объект Га!зе будет выполнять блоковый параляетр я ГГв!зе: Бупвво выражение япгпе; Гблок] яггв1ве. Голок] Булево выражение будет вычислено равным бгце или Га1яе. Это значение будет передано ключевому сообщению я пи ие: я ГГа1ве, после чего вьшолцится соответствующее действие. Операторы цикла. Апшяогично условным операторам, для создания цикличе- ских конструкций можно использовать ключевые методы, Просяные итерации. Метод ся жезкереас: передаст целому числу некоторый блок, в результате чего этот блок выполняется указанное количество раз.
Так, соков Вяжеяпередб.блок П.12. Бпза!!Са!К 665 выполнит блок соопС раз. Фиксированное повторение. Код 5гпайсаПс начальное значение со конечное значение ьу шаг бо: [блок) аналогичен циклу в языке ЕОКТКАХ; 00 ! - начальное значение, конечное значение. шаг список операгправ ЕИР 00 Как и в языке ЕОКТКАХ, шаг не является обязательным параметром. Можно получить доступ к текущему значению индекса цикла, задавая локалыгую переменную в цикле: начальное значение Со; конечное значение бу шаг бо [.Спбруаг 1 блок) Цикл нгнгуе. Конструкция, аналогичная оператору нМ1е других языков, может быть задана следующим образом; [Булева выражение) нлззе7гие [блок! где блок будет выполняться, пока булево выражение остается истинным.