Главная » Просмотр файлов » Р.У. Себеста - Основные копцепции языков программирования (2001)

Р.У. Себеста - Основные копцепции языков программирования (2001) (1160794), страница 122

Файл №1160794 Р.У. Себеста - Основные копцепции языков программирования (2001) (Р.У. Себеста - Основные копцепции языков программирования (2001)) 122 страницаР.У. Себеста - Основные копцепции языков программирования (2001) (1160794) страница 1222019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 122)

соипс <= соипс + 1) (яив <- 3; соипс <- 3) "результат вычислений" ;яив <- яив + соипг. соипг <- соипг + 1] -> [соипг <= 2] хй11етгие че1ие -> [соипг <= 2] "значение, посланное методом нЬ11еТгие" ;соипг <= 2] гегигпя ге1ве Другая циклическая управляющая структура — простое повторение с контролем ;четчика.

Этим целям служит метод для целых чисел, называемый г1веяйереас:. Когда метод с1пеяйереаг: передается целому числу с параметром в качестве блока, количество выполнений этого блока равно этому целому числу. Например, хСиЬе <- 1. 3 Г1пеяйереас: [хСиЬе <- хСиЬе * х] вычисляет куб числа х с помощью довольно длительного процесса. Управляющие структуры, подобные операторам цикла йог в языке А].601 бй, могут быть построены на основе одного из методов для целых чисел.

Два наиболее полезных нз них — го: <(о: и го: ьу: бо:. Сначала рассмотрим метод со: с(о:. Параметр го:— >то выражение с целыми числами, значение которого служит в качестве предельного значения цикла. Параметр с(о: — это блок, подлежащий выполнению с помощью метода зля целых чисел. Метод Го:с(о: генерирует последовательность значениИ, начиная с целою литерала, которому передается сообщение, и заканчивая значением параметра = о: . Рассмотрим следующее сообщение: 1 го: 5 с(о: [яип <- яив +х] 11.5. 8ведение в язык $ва)1)а[[г Я6Р Блок выполняется пять раз, Внутренние значения, вычисленные и возвращаемые объектом 1, равны 1, 2, 3, 4 и 5.

Блок, образующий тело цикла, может иметь параметры. Эти параметры неявно присваиваются внутренним значениям, созданным сообщением. Внутренние значения — это значения, возвращаемые числовым объектом, которому было передано полное сообщение. Рассмотрим следующее сообщение: 2 Со: 10 Ьу: 2 с)о: [:ечеп 1 впж <- вою + ечеп] Это сообщение приводит к пятикратному выполнению блока, но в этом случае параметр блока ечеп имеет внузренние значения, равные 2, 4, 6, 8 и 1О. 11.3.Я.З.

Ветеленне Конструкции ветвления также имеют обычный вид, но действуют необычным образом. Обьекты стив и Га1ве содержат метод 1ЕТгце:. Два аргумента сообщения 1ТТгце: 1ГГа1ве: представляют собой части "то" и "иначе" конструкции ветвления. Сообщение передается булевскому выражению. Если значением выражения является объект ккие, то обьекту схэзе передается сообщение.

В этом случае метод 1йТгце: 1ТГа1ве: передает сообщение че1ие его первому аргументу и игнорирует второй аргумент. Если посылается сообщение ха1ве, имеет место противоположная ситуация. В качестве примера рассмотрим следующее сообщение: соса1 = 0 1ГТзце: [ачегаае <- 0] 1ГГа1ве: [ачегаае <- впж // Сопа1) Булевское выражение соса1 = 0 вызывает передачу сообщения = 0 объекту соса1, который в свою очередь возвращает либо объект Кхие, либо объект ха1ве. Объект, полученный в качестве результата (либо ккие, либо хе1ве), затем используется как получатель сообщения, переданного методу 1ГТг це: 1ГГа1ве:.

Двумя параметрами этого метода являются блоки "то" и "иначе", один из которых подлежит выполнению. Оператор // означает деление целых чисел. Объектам Ккие и хе1ве могут передаваться четыре разных сообщения. Кроме сообщения 1ТТгце:11Га1ве:, есть еше сообщения дйТгие:, 11Га1ве: и 1гГа1ве:11Тгие:. Семантика управляющих структур, которые мы только что обсудили, может показаться несколько странной, но для опытных пользователей языка Бгоайга!М оиа вполне естественна.

Кроме того, возможность обрабатывать управляющие структуры в рамках такого подхода добавляет мощи и гибкости в модель передачи сообщений. Она также упрощает язык Бглайгайг, устраняя необходимость в любой структуре, помимо объектов и передачи сообщений, 11.$.5. Классы Классы языка Бшайгарк имеют четыре части: ° имя класса; ° нмя суперкласса; ° объявления переменных экземпляров; ° объявления методов экземпляров и классов. 470 Глава 11.

Поддержка объектно-ориентированного программирования Переменные экземпляров невидимы для других объектов. Каждая переменная экземпляра ссылается на один объект, называемый ее значением. Значения всех переменных экземпляров вместе представляют текущее состояние экземпляра. В языке Бща[йа!й все классы сами по себе являются объектами. Это позволяет классам получать сообщения. Определения классов могут содержать и методы классов. и методы экземпляров, при этом методы классов отвечают на сообщения, передаваемые классам, а методы экземпляров отвечают на сообщения, передаваемые экземплярам класса. Передача сообщения пем классу в операторе присваивания создает экземпляр класса.

При этом переменная, стоящая в левой части оператора, назначается ссылкой на вновь создаваемый объект. Например, фрагмент кода оогРеп <- Реп пем создает экземпляр класса Реп (передавая сообщение пем классу Реп) и назначает пере- менную согрел ссылкой на него. 11.5.6. Дополнительные сведение о методах В этом разделе мы исследуем некоторые свойства методов, не описанные в развеле ! !.5.2.

Следующий метод иллюстрирует использование временных переменных: 11гзс: х зесопс[: у ! севр ! севр <- х ь у. севр > 1000 1ТТгсе. "[у <- 1000]. у Этот метод складывает значения двух параметров и помешает сумму во временную переменную севр.

Если значение переменной севр больше, чем 1000, второму параметру у присваивается 100 0. Значение переменной у является возвращаемым объектом. Псевдопеременная ве1à — это имя объекта, ссылающегося на объект, в котором она появляется. В силу этого псевдопеременная ве1Е используется лля передачи рекурсивных сообщений, или лля передачи сообщений объекта самому себе. Имя объекта ве1Е часто используется для вывода сообщений об ошибках на экран дисплея.

как в следующем примере: Сога1 = 0 1ТТгое: [зе11 еггог: 'Ошибка — невозможно вычислить среднее'] 11Га1зе: [" аив // соса1] Если значение переменной соса1 равно О, этот код посылает сообщение об ошибке: ' Ошибка - невозможно вычислить среднее ' объекту, в котором нахолится этот код. В противном случае он возвращает значение выражения зов // с о с а1. Сообщение еггог, подобно другим сообщениям, направляется суперклассу объекта, которому оно было передано, если этот объект не содержит метол для его обработки.

Если ни один другой класс-предок не имеет метода для обработки сообщения ег гог, то это сообщение получает системный объект ОЬзесс, содержащий метод еггсг. Метод 11.5. Вввйвиив в язык Вша[[[а[[с Я71 еггог из системного объекта ОЬзесс печатает параметры сообщения и прекращает выполнение программы. В качестве примера релурсии рассмотрим следующий метод, который понимается целочисленными объектами.

Он взят из работы Оо)бЬегя апг[ КоЬаоп (! 983): йасгогйа1 ве1г = О 1ЙТгие: ["1]. ае1г' < О 11Тгце: [ве1Г еггог 'Факториал не определен') 1ЙРа1ве: [" ае1г * [ве1Й вЂ” 1) бассогда1] Этот унарный метод лля целочисленных объектов можно вызвать таким сообщением, как 5 Тасгог1а1 Первое булевское выражение ве1б = О передает параметр О методу = целочисленного объекта, которому передается сообщение Тасгог1а1. Сообщение 1йтгие: [ "1] затем передается результату выполнения метода =. Если результатом является объект кгие, как это может оказаться для сообщения О Тасгог1а1, то отправителю сообщения Тасгог1а1 возвращается значение 1.

Если результатом выполнения метода = является объект Еа1ае, ничего не происходит, поскольку метод ТТТгие: в объекте Ее1ве определен так, что он ничего не делает. Следующее булевское выражение ве1г < О передает параметр О методу < целочисленного объекта, которому перелается сообщение Тасгог1а1. Оставшаяся часть сообщения Гасгог1а1 (полное сообщение 1ТТгце: 1ЙГа1ве:) затем посылается результату метала <. Если результирующий объект — сгибе, то обьекту, которому было передано сообщение йасгог1а1, передается сообщение об ошибке. Если результатом метода < является объект Ее1ве, то выполняется блок из части 1ЕРа1ве: метода 1йТгце:1рра1ве:. а результат возвращается объекту — отправителю сообщения гас ог1а1.

Чтобы понять сообщение 1ТРа1ве:, мы должны уяснить приоритеты вычисления сообщений. В этом выражении есть два бинарных выражения (с операциями * и -) и одно унарное выражение (Тасгог1а1). Напомним, что унарные выражения имеют более высокий приоритет, чем бинарные, если бинарные выражения не заключены в скобки. Кроме того. все выражения имеют левую ассоциативность. Теперь порядок вычислений ясен.

Характеристики

Тип файла
DJVU-файл
Размер
9,5 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6390
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее