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

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

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

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

Вначале -1 передается обьекту ве1г', создавая объект, меньше на 1, чем обьект, которому было передано сообщение. Затем сообщение Тасгог1а1 передается этому новому объекту. Окончательный результат этого сообщения после выполнения всех рекурсий передается вместе с методом * объекту ве1г', являющемуся исходным объектом, которому было передано сообщение йасгог1а1. Результатом такого сообщения является значение факторнала. Этот пример иллюстрирует схожесть рекурсий в языках со значительно различающимися семантиками. 472 Глава 11. Поддержка объектно-ориентированного программирования 11.6. Примеры программ на языке Зпю!!Фа!!с 11.6.1.

Простой обработчик таблиц с1вее паже яирегс1аее кпевапсе чегйаЬ1е пешее Сер.Собея ОЪ|есс пашня собея "Создать методы" "Создать экземпляр" пен еирег пен "Методы экземпляра" "Число записей в таблице" я1ге пашея луге "Найти код отдела" ас: паше ! 1пбех ! 1пбех <- ее1г 1пбехОЕ: паше.

1пбех = О 1ЙТгце: [ее1г еггог: 'Ошибка — кода нет в таблице'] 1гГа1яе: ["собея аг: 1пбех] "Установить новый код; создать запись, если нужно" аг: паше рцс: собе ! 1пбех 1пбех <- ве1г 1пбехОЕг паше. 1пбех = О 11Тгце: [1пбех <- ве1г пен1пбехОб: паше]. собея ат: 1пбех рцг: собе "Найти индекс заданного названия отдела" 1 1.6.

Примеры программ на языке бгла![[а[[г Я73 Пример класса в этом разделе демонстрирует, что простые задачи обработки таблиц, оычно решаемые в императивных языках, также легко мо!уг быть решены в языке <и~а[байк Задача состоит в том, чтобы написать программу, создающую записи и выполняющую поиск в таблице, содержащей названия отделов и их кодовые номера. Из-за от.]тствия в языке Ясла[На[к статических типов программу можно было бы использовать зля любой таблицы, состоящей из двух параллельных массивов данных, где просмотры основаны на элементах первого массива.

Одно из интересных свойств, использованных в программе, — динамическое связывание диапазона индексов с массивом. Два массива имеют размер, точно соответствующий количеству хранящихся в них данных. Каждое добавление новой записи просто увеличивает размер таблицы. Несмотря на то что при этом эффективно используется память, такой подход является в высшей степени затратным с точки зрения времени выполнения программы. Каждое добавление новой записи в таблицу приводит к созданию двух новых массивов и переносу содержимого старых массивов в новые — очень долгий процесс. Одним из недостатков программы является также отсутствие метала для удаления записи из таблицы. 1пбех01: пап1е 1 гог пашея ядге бо: (:1пбех ~ (пашея агг Епбех] паше 1йтгце:("1пбех)] 0 "Создать новую запись с заданным именем и вернуть индекс" пеи1пбех01: паше вв1Г дгои. патея ас: пашез яйге рцгг па|пе.

пап1ея яйге "Увеличить таблицу на один элемент и записать новое имя" д ои ( о1бИашея 01бСобея о1б(ташея <- пашея. о1бСобея <- собез. пашея <- Аггау пеи: пашея яузе т 1. сопев <- Ьггау пеи: пашея ядге ь 1. пашея гер1асеГгош: 1 Го: о1б(зашея зйге иуГП: о1бМашея собея гер1асеГгош: 1 со: о1бСобея яузе ийс)з: о1бНашея "Проверка включения заданного имени" 1пс1цбея: паше (ав1Г 1пбехОГ: паше) - 0 "Проверка на пустоту" 1яЕшрсу пашея 1яЕшрсу "Создать начальный пустой массив" 1пггуа11ге пашез <- Аггау пеи: О. собея <- Аггау пеи: 0 Рассмотрим работу метода гер1асеГгош:.

Впервые метод гер1асеГгош: используется в операциях метода дгои прн перемегденнн элементов массива о1б(сашея, пронндекснрованных в диапазоне от 1 до яузе массива о1бИашея, в массив с именем пашея. Следующие выражения н вычисленные результаты иллюстрируют поведение экземпляра ОерсСобея. Заметим, что метод 1яЕшрсу: — это унарный метод, наследуемый от системного объекта ОЬз ест.

Выражение Реэулыпат бСобея <- ОерсСобея пеи Создает новый экземпляр бСосея 1пдг1а11ге Создает пустой массив бСобея 1яЕшрпу сгце бСобея ас: 'Физика' рцг: 100 100 бСобея ас: 'Химия' рцп: 110 110 бСобез аг: 'Биология' рис: 120 120 бСобея 1яЕшрсу Га1яе бСобея ауге 3 бСобея ас: 'Химия' 110 бСобея Епс1цбея 'Физика' сгце бСобея 1пс1цбея 'Кибернетика' Га1яе 474 Глава 11. Поддержка объектно-ориентированного программирования 1 з.6.2.

Грядфикяз в ОООО станавливает параметры кадра следующим образом: левый верхний угол — в точке . 0.50) и правый нижний угол — в точке (350,350). Протокол сообщения для перемещения и рисования с помощью объектов класса Реп ,,меет следуюшнЯ вид: с(оип Устанавливает перо в положение для рисования. Устанавливает перо в положение, в котором рисование не производится. Изменяет направление движения пера на количество грщгу- сов, определенное параметром. Перемещает перо в текущем направлении на количество би- тов, определенное параметром. Перемешаег перо в точку, координаты которой определяются параметром.

Если перо в этот момент находится в положении "опушено", оно рисует линию. ор эигп: бедгееа оо: с(засапсе добро: аРозпг В этом разделе приведен пример программы, который иллюстрирует применение . тассов языка Бша11шйг, предназначенных для рисования, характерного для "черепашьей .-рафики" в ЕОПО. Этот класс под названием Реп является подклассом другого системчого класса йдс 61с, которыЯ мы не будем обсуждать. Экземпляр класса Реп очень похож на шариковую ручку с компьютерным управлением, только пишущую не по бумаге, а по экрану дисплея. Объект класса Реп имеет три .сновных параметра: направление, положение и кадр (йаше). Параметр "положение" имеет два значения — "поднят" н "опущен".

Значение "поднят" сигнализирует, что объект не рисует во время движения, а значение "опушен" — что он рисует во время движения. Направление измеряется по часовой стрелке в градусах, считая от нулевого направ;гния, где 0 означает направление вправо по экрану. Кадр объекта Реп представляет собой область на экране дисплея, в которой объект может рисовать, измеренную в битах.

За пределами кадра экземпляр класса Реп рисовать не может. Начальное состояние экземпляра класса Реп таково: он направлен под углом 270 граду;ов. что соответствует направлению прямо вверх по экрану; расположен в точке с координатамн (300400) и находится в положении "поднят". Координаты (300400) находятся в деп-.ре экрана с предполагаемыми размерами, равными 600 бит в ширину и 800 бит в высоту. Текущие параметры экземпляра класса Реп можно получить из методов направления, местоположения и кадра. Метод кадра возвращает координаты верхнего левого и право-о нижнего угла области, в которой может рисовать перо. Кадр можно установить с помощью второго сообщения; 'тате: (аРозпс ехсепт: аРояпт) Здесь объект аРозпс — это пара познний, выраженных в битах и разделенных знаком "в" (6).

Скобки нужны для того, чтобы установить требуемый порядок вычисления выгажений сообщения. Первое появление объекта арозпс в этом сообщении определяет координаты верхнего левого угла кадра. Второе появление устанавливает расстояние, на которое простирается кадр в направлении х и у, считая от верхнего левого угла. Напричер, сообщение 'тате: (50650 ехтепг: 3006300) 11.6.

Примеры программ ио языке Зшо(1)о!(г 473 р1асе: аРоапс Устанавливает перо в позицию, координаты которой определяются параметром. Линия не рисуется. Ьопе Устанавливает перо в центр кадра. погСЬ Устанавливает направление пера, равное 270 градусам, что соответствует направлению прямо вверх вдоль экрана. Цвет линии, рисуемой экземплярами класса Реп, по умолчанию черный.

Форма кончика пера по умолчанию представляет собой точку размером 1 на 1 бит. И цвет, и форма кончика пера могут изменяться. С помощью экземпляра класса Реп можно рисовать простые геометрические фигуры. Вначале необходимо создать экземпляр класса Реп: Оогреп <- Реп пеи с]ейао1с111Ь: 2. Оогреп ор; сосо: 8008300! г]оип Теперь можно нарисовать треугольник; ОогРеп сто: 100; согп: 120; оо: 100; гого: 120; оо: 100 На рис. 11.2. показан результат выполнения этого кода. На нем также видна остальная часть экрана во время выполнения кода, что характеризует особенности пользовательского интерфейса системы бшарцайс Приведенное выше сообщение можно нескольке упростить с помощью блока, например: 3 с1пейереас: ]ОогРеп оо: 100.

ОокРеп сосо: 120] Рис. П.2. Рисование треугольника на экране с помои]ью программы наяэыке 5та]Лай ЯУ6 Глава 11. Поддержка объектно-ориентированного программирования Это сообщение можно обобщить для рисования любого равностороннего многоугольника, повторив этот блок столько раз, сколько у него сторон. как в следующем фрагменте кода: пшаЯ1с[ея гзиеяйереаг: [Опгреп 9ос: 100. Опгреп Гигп: 360 // пшяЯ1<[ея] Таким образом создается класс лля рисования равносторонних многоугольников общего вила. Слелуюший пример похож на код. приведенный в работе Со!дЬег8 апд йоЬзоп [1983): с1авв паве Ро1удоп впрегс1авв ОЬЗесг дпвсапсе чагааЬ1е пааев ОигРеп псиЯ1<[ея я1<[еЬеп9СЬ "Методы класса" "Создаем экземпляр" пен вирек пен ОегРеп "Методы экземпляра" "Определить перо для рисования многоугольников" ОеСРеп оигреп <- Реп пен с!ейаи1гН1Ь: 2 "Нарисовать многоугольник" <[гам пшлЯ1<[ея СзжеяКереас: [оигРеп цо: язс[еЬеп9гЬ! гпгп: ЗбО // пшлЯ1<[ея] "Установить длину сторон" 1епдГЬ: 1еп Я1<[еЬеп9ГЬ <- 1еп "Установить количество сторон" язс[ея: пшя пшяЯ1<[ея <- пшя Заметим, что переменная оигреп в определении класса, приведенном выше, начинается не с прописной буквы, как это было, когда она использовалась вне класса.

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

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

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

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