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

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

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

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

Передача по имени. 10.4. Передача по значению и результату. Приведите аргумент против применения как статических. так и динамических локальных переменных в подпрограммах. Приведите аргумент против того, что в языке С подпрограммы могут быть только функциями. Пользуясь каким-либо учебником по языку РОКТКАИ, изучите синтаксис и семантику операторных функций.

Обоснуйте необходимость их существования в языке РОКТКАХ. Изучите методы определенной пользователем перегрузки операторов в языках С++ и Ада и напишите отчет, сравнивая эти два языка, пользуясь нашим критерием оценки языков. Рассмотрим следующую процедуру на языке А[.ОО[. 60. называемую схемой Йенсена в честь Й.йенсена (23епзеп) из Кеяпесеп(га!еп [Серел(зайеп), разработавшего ее в ! 960 голу: геа1 ргооеаиге ЯНМ(А00ЕК, 1Н0ЕХ, ЕЕНЯТН)г ча1ие ЕЕНЯТН; геа1 А00ЕК; Епгедег 1Ы0ЕХ, ЕЕНЯТНг Ьеддп геа1 ТЕМРЯНМг ТЕМРЯНМ := 0.0; Еог 1НОЕХ := 1 веер 1 ипг11 ЬЕНЯТН по ТЕМРЯНИ := ТЕМРЯНМ + А00ЕК; ЯНМ := ТЕИРЯОИг епс)з Что возвращается при каждом из следующих вызовов процедуры ЯНМ, с учетом того, что параметры передаются по имени и что возвращаемое значение присваивается имени подпрограммы? 15.1. ЯНМ (А, 1, 100), где А — скаляр.

152. ЯОИ(А[1]*А[1], 1, 100),гдеА — массив из !00элементов. 153. ЯНИ(А[1] *А [1], 1, 100), где А и  — массивы из !00 элементов. 392 Глава 8. Подпрограммы .нкон Кемени (4о1гп Кевепу1 ' ' :чсн Кемени и его коллега : час Курц (Тиогпаз Кчлз) * -анапа 1960-х годов разрабо-згн в Дартмуте компиляторы -к нескольких диалектов языков 901. и РОНТйДН В 1963 году ° кчени приступил к созданию ьз ка ВА81С и закончил его ' -64 году 9.1. Общая семантика вызовов и возвратов, 9.2. Реализация подпрограмм на языке РОЯТгкАМ 77 9.3.

Реализация подпрограмм на языках, подобных языку А~001. 9.4. Блоки 9.$. Реализация методов динамического обзора данных 9.6. Реализация параметров, являющихся именами подпрограмм Реализация подпрограмм 393 ель этой главы — исследовать методы реализации подпрограмм.

В ней читатель Ц получит некоторое представление о том, каким образом "работают" языки программирования, а также почему язык АЕООЕ 60 в начале 1960-х годов представлял собой вызов ничего не подозревавшим создателям компиляторов, Мы начнем с простейшей разновидности подпрограмм — подпрограмм в языке РОКТКАХ 77, а затем перейдем к более сложным подпрограммам в таких языках со статическим обзором данных, как Рааса! и Ада. Возрастающие трудности. связанные с реализацией подпрограмм в этих языках, вызваны необходимостью поддержки рекурсии и механизмов доступа к нелокальным переменным. Детально обсуждаются и сравниваются между собой два метода доступа к иелокзльным переменным в языках со статическим обзором данных — статические цепочки и дисплеи. Кратко описаны способы реализации блоков.

Рассмотрены виды доступа к не- локальным переменным в языках с динамическим обзором данных. В заключение описывается метод реализации параметров, представляющих собой имена подпрограмм. 9.1. Общая семантика вызовов и возвратов Вызов подпрограммы и операции возврата управления, взятые вместе, называются связыванием подпрограмм (зцЬргойгаш йпйайе). Любой метод реализации подпрограмм должен основываться на семантике связывания подпрограмм. Вызов подпрограммы в обычном языке программирования связан с большим количеством действий. Так, он содержит механизм передачи параметров. Если локальные переменные не являются статическими, вызов приводит к выделению памяти для локальных переменных, объявленных в вызываемой подпрограмме.

и связывает их с этими ячейками памяти. Он должен сохранять текущее состояние выполняемого модуля, вызвавшего подпрограмму; передавать управление коду подпрограммы и гарантировать, что оно будет возвращено в нужное место после выполнения подпрограммы. В заключение вызов должен обеспечить доступ к нелокальным переменным, видимым в вызываемой подпрограмме. Возврат управления из полпрограммы также достаточно сложен. Если параметры подпрограммы передаются в режиме вывода и по копии, при возврате управления вначале следует присвоить фактическим параметрам локальные значения соответствующих формальных параметров. Затем должна быть освобождена память, использованная для хранения локальных переменных, и восстановлено текущее положение вызывающего программного модуля.

Для возврата механизма доступа к нелокальным переменным в состояние, в котором он пребывал до вызова подпрограммы, также требуется выполнить несколько действий. В заключение управление должно быть возвращено вызывающему программному модулю. 9.2. Реализация подлрограмм на языке ЕОВТВАМ 77 Мы начнем с относительно простого примера — подпрограмм в языке РОКТКАХ 77. Все обращения к нелокальным переменным в языке РОКТКАМ 77 осуществляются через блоки СОММОИ.

Поскольку блоки СОММОМ не относятся к механизму связывания подпрограмм, они здесь не обсуждаются Другим упрощающим дело обстоятельством является тот факт, что в языке РОКТКАХ 77 подпрограммы не могут быть рекурсивными. 394 Глава 9. Реализация подпрограмм белее того, во многих реализациях переменные, объявленные в подпрограммах, размезются статически. Семантика вызова подпрограмм в языке ГОКТКАХ 77 требует выполнения слелуюих действий.

1. Сохранить текущее состояние выполняемого программного модуля. 2. Передать параметры. 3. Передать адрес возврата вызываемой подпрограмме. 4. Передать управление вызываемой подпрограмме. При возврате из полпрограмм в языке ГОКТВАХ 77 выполняются следуюшие действия. 1. Если использовался метод передачи параметров по значению и результату, текущие значения этих параметров присваиваются соответствующим фактическим параметрам. 2. Если подпрограмма представляет собой функцию, то значение функции переме- шается в место, доступное вызывающему модулю. 3.

Восстанавливается первоначальное текущее состояние вызывающего модуля. 4. Управление передается назад вызывающему модулю. действия, связанные с вызовом и возвратом, требуют выделения памяти лля слелуюих данных. ° Информация о состоянии вызывающего модуля. ° Параметры. ° Адрес возврата. ° Возвращаемое значение функции.

:--и данные вместе с локальными переменными и кодом подпрограммы формируют пол- ".о совокупность информации. необходимой подпрограмме для своего выполнения и :-: зврата управления вызывающему модулю. Подпрограмма на языке ГОКТКАМ 77 состоит из двух отдельных частей: собственно °:=з подпрограммы, являющегося неизменным, а также локальных переменных и дан- л. перечисленных выше, которые могут изменяться при выполнении подпрограммы. ..

е эти части имеют фиксированные размеры. Формат, или структура, части подпрограммы, не являющейся кодом, называется за-исью активации (ас11ча6оп гесаб), или активационной записью, поскольку данные, °:-.орые она описывает, относятся только к активации подпрограммы. Форма записи ак- эзции является статичной. Экземпляр записи активации з-.ггагюп гесаб 1пыапсе) — это конкретный образец записи ак- зкмекееддигдее - эзции, или набор данных в форме активационной записи. Поскольку язык ГОРСТКАМ 77 не поддерживает рекурсии, в Легедыыеледеиыыие °: клый момент времени может существовать только одна ак- зная версия данной подпрограммы и только один экземпляр : лиси активации подпрограммы. Возможная структура записей Адрес еозиитв :. гивации в языке ГОРСТКАМ 77 показана на рис.

9.1. Здесь и в :-звшейся части главы мы пропускаем сохраненное текущее Рис 91.3алисьаюлива.:;тояние вызывающего модуля, поскольку это не относится к «иивлэыкеГОЯТВАН77 --. елмету нашего обсуждения. = 2. Реализация подпрограмм на языке ГОкТкАМ 77 393 Поскольку экземпляр записи активации полпрограммы в языке РОКТКАМ 77 имеет фиксированный размер, его можно размешать в памяти статически. Фактически, его можно присоединить к коду подпрограммы. На рис. 9.2 показана программа на языке РОКТКАН 77, состоящая из СОгяЧОгЬблока, главного модуля и трех подпрограмм: А, В и С.

Хотя на рисунке показано, что все сегменты кода хранятся отдельно от всех экземпляров записей активации, в некоторых случаях экземпляры записей активации присоединяются к соответствующему сегменту кода. ихзн Данные Рпс. 9.2. Код н зипись икпгивипли программы в языке РОИ7КАИ 77 Компилятор не создает полную программу на языке ГОКТКАН 77, показанную на рис. 9.2. Действительно, поскольку существует независимая компиляция, четыре программных модуля — МА1н, А, В и С вЂ” могут быть скомпилированы в разное время. После компиляции каждого модуля его машинный код вместе со списком ссылок на внешние подпрограммы и нелокальными переменными записывается в файл.

Выполняемая программа, показанная на рис.9.2, объединяется в одно целое редактором связей (йп1ег), являющимся частью операционной системы. (Иногда редакторы связей называются загрузчиками.) При вызове редактора связей лля главной программы его первой задачей является поиск файлов, содержащих оттранслированные подпрограммы вместе с их экземплярами записей активации, и загрузка их в память. Он должен также опреде- 396 Глава 9. Реализация подпрограмм ..ть размер всех СОММОИ-блоков и разместить их в памяти. Затем редактор связей при:эанвает входные адреса вызываемых подпрограмм целевым адресам соответствующих з,швов, находящихся в главном модуле. То же самое он делает со всеми вызовами, з;гречаюшимися в загружаемых подпрограммах, и всеми вызовами стандартных подгограмм языка ГОКТКАХ.

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

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

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

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