Главная » Просмотр файлов » Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)

Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 112

Файл №1160801 Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)) 112 страницаТ. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801) страница 1122019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

В тексте программы может быть несколько объявлений для В, а во время выполнения программы — несколько объектов данных, названных В в различных активациях подпрограмм во время выполнения. Таким образом, поддержание созласован нос пи между правилами статической и динамической области видимости является ие слишком тривиальной задачей. Существует несколько способов ее решения, которые мы рассмотрим ниже. Важность статической области видимости. Предположим, что какой-то язык ие использует правила статической области видимости. Рассмотрим оператор нида Х:- Х + Ь1ах из какой-либо подпрограммы. Без использования правил статической области видимости во время трансляции ничего невозможно определить относительно имен Х и Мах.

Во время выполнения программы, когда очередь доходит до выполнения данного оператора, операция обработки ссьиок сначала должна найти соответствующие ассоциации для Х и г1ах, а затем должны быть определены тип и другие атрибуты имен Х и Мзх, Существуетли ассоциация для каждого идентификатора? Является ли Мах именем подпрограммы, именем перемеииой, меткой оператора, именем типа или именем формального параметра? Если Х вЂ” имя перемеипой, принадлежит ли эта переменная к такому типу, который можно складывать с Р1ах? На эти вопросы невозможно ответить, пока ие будет установлено, ссылкой иа какие объекты являются имена Х и Мах.

Более того, каждый раз при 406 Глава 9. Управление подпрограммами выполнении этого оператора весь процесс требуется повторить заново, поскольку ассоциации Х и Мах могли измениться с момента предыдущего выполнения оператс>ра. В языках !.(ЯР, ЯЛОВО!.4 и АР! правила статическс>й области видимости почти не используются. Таким образом, ссылка па любое имя в процессе выполненияя программ на этих языках вызь>вает инициирование довольно сложного и дорогостоящего процесса интерпретации, который сначала ищет соответствук>щую ассоциацию для указанного имени (если таковая вообще существует), а затем определяет тип и атрибуты ассоциированного с именем объекта данных или подпрограммы.

Правила статической области видимосги позволяют выполнить этот процесс для большинства ссылок на имена, встречающиеся в программе, только один раз во время трансляции, вместо того чтобы выполнять его многократно во время выполнения программы. Например, если в программе па языке Рааса! встречается оператор присваивания Х:= Х + Мах и где-то в программе нмя Мэх определяется как константа с помо>цью объявления сопз0 Мах = 30, то правила статической области видимости позволяют во время трансляции связать ссылку па Мах с этим (или каким-то другим) объявлением имени Мэх. Затем компилятор Рааса! может определить, что при выполнении нашего оператора присваивания значение Мах всегда равно 30, и оттранслировать оператор в исполняемый код, в котором к Х просто добавляется 30 без выполнения операции обработки ссылки для имени Мах.

Аналогично, если правила статической области видимости языка Раэса! позволяют связать ссылку на Х с объявлением Х геа! где-то в тексте программы, тогда компилятор Рааса! может выполнить статическую проверку типов, то есть он может определить, что при выполнении этого опсратора: 1) будет существовать ассоциация, связывающая имя Х и некоторый объект данных; 2) этот объект данных будет относиться к типу вещественных чисел (геэ! ); 3) его значение будет типом, который можно использовать в качестве аргумента операции сложения.

Из объявления Х компилятор ис сможет определить пи жесгдополажение в памяти обьскта данных, на который ссылается нмя Х (поскольку местоположение определяется динамически во время выполнения программы и может быть различным для различных случаев выполнения оператора), ни значение Х (поскольку оно также определяется динамически во время выполнения программы). Тем не менее статическая проверка типов позволяет значительно ускорить выполнение программы и повысить надежное>п ес работы (поскольку во время трансляции ошибки определения типов отслеживаются для всех ветвей программы). Правила статического определения области видимости позволяют установить много разных типов связей между ссылками на имена и их объявлениями во время трансляции. Два из них были упомянуты ранее: связывание имени переменной с объявлением переменной и связывание имени конста»ты с ее объявлением. К другим типам связей с>тносится связывание имен типов с объявлениями типов, связывание формальных параметров со спецификациями формальных па)>аметров, связывание вызовов подпрограмм с объявлениями подпрограмм и связывание меток операторов, используемых в операторах 0о0о, с метками конкретных опе- 9.2.

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

Например, правила статической области видимости языка Разса! позволя>от связать ссылку на переменную 11 в каком-либо операторе с расположенным где-то в программе объявлением >> без какого-яибо анализа последовательности вызовов подпрограмм, начиная с главной программы и заканчивая выполнением данного оператора. Таким образом, правила статической области видимости упрощают понимание программы. 9.2.3. Блочная структура Концепция блочной структуры, используемая в блочно-структурировонн>ях языках Разса!, Р1 У1 и Ас1а, заслуживает специавьного упоминания. Программы, написанные па блочно-структурированных языках, имеют характерну>о структуру и соответствующий набор правил статической области видимости.

Впервые вти понятия появились в языке АБООБ 60 — одном из наиболее важных ранних языков программирования. Благодаря своей элегантности и влиянию на эффективность реализации онп были приняты и в других языках. В блочно-структурированном языке каждая программа или подпрограмма организована как множествс> вложенных блоков. Главной характеристикой> блока является то, что он вводит новук> среду локальных ссылок.

Блок начинается с множества объявлений имен (объявления переменных, определения типов, определения констант и т. д.), за которым следует множество операторов, в которых имеются ссылки на указанные имена. Для простоты мы будем считать блок эквивалентным объявлению подпрограммы, хотя точное определение блока различно в различных языках.

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

На самом верхнем (или внешнем) уровне программа состоит из одного блока, определяющего главную программу. Внутри этого блока располагаются другие блоки, определяющие подпрограммы, которые вызываются непосредственно из главной программы; внутри этих блоков содержатся другие, в которых определяются подпрограммы, вызываемые из подпрограмм первого уровня и т. д. В листинге 9.4 представлена типичная компоновка блочно-структурированной программы. В таких языках, как С и Ада, самый верхний уровень может состоять из нескольких независимых блоков (каждый из которых содержит внутри себя вложенные блоки и может компилироваться по отдельности), но здесь мы ограничимся рассмотрением только одного внешнего блока.

408 Глава 9. Управление подпрограммами Листинг 9.4. Статическая блочная структура программы ргодгаы Мюп; - Локальные обьявпенкя для Маьп; Начаго Ма1п ргосебиге 5иЫ; ) - Локальные обьявленкя для 5иЫ: Начало 5иЫ ргоседиге 5иЬЗ; - Локальные абьявлення для 5иЬЗ. Начало 5иЬЗ Ьедлп - Операторы для 5иЬЗ: епб (5иЬЗ); Конец 5иЬЗ ргосвбиге 5иЬ4; - Локальные обьявленкя для 5иЬ4; Начало 5иЬ4 Ьед)п - Операчоры для 5иЬ4; ) епб (5иЬ4): Конец 5иЬ4 Ьед)л - Операторы для 5иЫ епб (5иЫ): ргосебиге 5иЬ2; - Локал~ные обьявленкя для 5иЬ2 Начало 5иЬ2 Ьед)п - Операторы для 5иЬ2 епб (5иЬ2); Конец 5иЬ2 Конец 5иЫ Ьедчп - Операторы для Мачо; ) епд (Мачп ). Конец Ма)п Правила статической облисты видимости для блочно-структурированных программ выглядят следующим образом.

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

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

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