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

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

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

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

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

а также переменные, объявленные в основной программе (за исключением переменных в нелокальных областях вилимости, скрытых объявлениями ближних процедур). Кажлое определение процедуры создает новую область видимости, а следовательно, и новую среду. Рассмотрим следующую скелетную программу на языке Рааса(: ргодгеа ехагхр1ег чаг а, Ь : 'гседегг переменная х процедуры лиЬ2, переменные а и Ь программы ехавр1е переменные а и Ь программы ехавр1е чоз.с( вцЬ1 () ( лпс а, Ь) < --------------1 ) /* конец функции вцЫ */ тол.с) вцЬ2() 1 йпс Ь, с; < --------------2 ацЫ; ) /* конец функции вцЬ2 */ чо1о вафд() ( лпе с, с(; < --------------3 вцЬ2 (); ) /* конец функции вафд */ В указанных точках данная программа имеет следующие среды ссылок: Среда ссылок переменные а и Ь процедуры лиЫ, переменная с процедуры яиЬ2, переменная с функции ва1п (переыенная с функции ва1л и переменная Ь процедуры яиЬ2 скрыты) пеоеменные Ь и с процедуры лиЬ2, переменная <( блока ва1л (переменная с функции вабп скрыта) переменные с и б функции ва1л Точка 1 Глава 4.

Имена, связмаанне, проверка типов и области видимости 202 Рассмотрим теперь объявления переменных в скелетной программе. Отметим, вопервых, что, хотя область видимости процелуры вцЬ1 н выше уровнем (она менее глубоко вложена), чем область видимости процедуры виЬЗ, область видимости процелуры виЬ1 не является статическим прелком процедуры вцЬЗ, поэтому процедура вцЬЗ не имеет доступа к переменным, объявленным в процедуре зцЬ1. Для этого существует важная причина.

Переменные, объявленные в процедуре вцЫ, являются автоматическими, поэтому они не связаны с памятью в то время, котла процелура вцЫ не выполняется. Поскольку процедура виЬЗ может выполняться в то время, когда процедура виЬ1 не выполняется, она не лолжиа иметь доступа к переменным процелуры вцЬ1, которые не обязательно должны связываться с ячейками памяти во время выполнения процелуры виЬЗ.

Полпрограмма называется активной, если ее выполнение началось, но еше не завершилось. Среда ссылок оператора в языке с динамическим обзором данных состоит из локально обьявленных переменных и переменных всех лругих активных на данный момент подпрограмм. Повторимся, некоторые переменные активных подпрограмм могут быть скрыты от среды ссылок.

Новые активации подпрограммы могут содержать обьявления переменных, скрывающих переменные с теми же именами в предыдущих активациях подпрограммы. Рассмотрим следующую программу. Прелположнм, что единственными возможными вызовами функций являются следующие; функция вафд вызывает функцию виЬ2, которая вызывает функцию виЬ1. 4.1 3. Именованные константы Именованной константой [пашег[ сопмапг) называется переменная, связываемая со своим значением только во время связывания ее с ячейкой памяти: значение именованной константы невозможно изменить оператором присваивания или ввода. Данный объект помогает улучшить читабельность программы: значительно удобнее, например, использовать имя ру. а не константу 3.

' 4 159. Другим полезным применением именованных констант являются программы, обрабатывающее заданное количество данных, например, 100. В подобных программах во многих местах, как правило, используется константа 100 для объявления диапазонов значений индексов массивов. пределов изменения счетчиков цикла и т.п. Рассмотрим следующую скелетную программу на языке Рааса!: ргодгаа ехавр1е; Суре Епсаггау аггау [1..100) оЕ Епседег; геа1аггау = аггау [1..100] оЕ геа1г Ьедйп [ ехавр1е Еог Епс[ех := 1 Со 100 с1о Ьедап [г Еог соцпс := 1 Со 100 с1о Ьед1п атегаде := ацв с[хе 100; епо.

[ехавр1е) Для того чтобы эту программу модифицировать для работы с другим количеством значений, следует обнаружить все места, в которых написана цифра 100. и все числа заменить новыми. В большой программе это может оказаться трудоемким и подверженным ошибкам процессом. Более легким и надежным методом является использование именованной константы: ргодгаа ехавр1е; ооипС 11вг1еп 100г Суре Епсаггау = аггау [1..11вг1еп) оЕ Епгедег; геа1аггау = аггау [1..11яГ1еп) оЕ геа1; Ьедз.п [ ехевр1е ) Еог 1пс[ех:= 1 Со 11ег1еп с[о Ьедаа 203 4.1 1.

Именованные константы йок соцпг := 1 Со 11эг1еп оо Ьеодп атегаде := эшп е)дзг 11эс1еп; епе!. !ехажр1е! Если в такой программе потребуется изменить количество данных, то изменять придется только одну строку, вне зависимости от количества упоминаний константы 100 в программе. Вот еше один пример преимушества абстракции: имя 11яс1еп является абстракцией для количества элементов некоторых массивов и количества повторений некоторых циклов. Привеленный пример иллюстрирует, как именованные константы могут облегчить модификацию программы.

Обьявление именованных констант в языке Разса! требует просто наличия некоторого значения справа от оператора =. Вместе с тем, языки Модо)а-2 и ГОКТКАХ 90 позволяют использовать константные выражения, которые могут содержать предварительно объявленные именованные константы, постоянные величины и операторы. Язык Рааса! ограничивается только константами, а язык Моди!а-2 — константными выражениями, поскольку в этих языках используется статическое связывание величин с именованными константал1и. Именованные константы в языках со статическим связыванием величин иногда еше называются манифестными константами (пап!)ез! сонэ!апта).

Языки Ада, С++ и Зача допускают динамическое связывание величин с именованными константами. Это позволяет в объявлениях присваивать константам выражения, содержашие переменные. Например, оператор МАХ : оопввепп Тпке9ег := 2 * И10ТН ь 1 языка Ада объявляет переменную МАХ именованной константой целого типа, значение которой соответствует значению выражения 2 * и10ТН + 1, причем значение переменной И10ТН должно быть видимым при выделении памяти константе мАХ и связывании этой константы со своим значением. Помимо этого, язык Аг)а допускает существование именованных констант перечислнмого и структурированного типов, рассматриваемых в главе 5. 4Л2.

Инициализация леременнмх Обсуждение связывания значений с именованными константами естественным образом приводит к теме инициализации переменных, поскольку связывание величины с именованной константой является таким же процессом, только постоянным. В большинстве случаев удобно. чтобы переменные имели значения до начала выполнения программы или подпрограммы, в которой они обьявляются. Связывание переменной со значением во время связывания ее с ячейкой памяти называется инициализацией (!и!г!айза!!оп).

Если переменная статически связана с ячейкой памяти. то связывание и инициализация происходят до выполнения программы. При динамическом же связывании с памятью инициализация также является динамической. Елово 4. Имено, связывоиие, проверко типов и области видимости В языке ГОКТКАН начальные значения переменных могут устанавливаться в операторе САТА: РЕАЕ Р1 1ИТЕЯЕЯ ЯСМ САТА ЯУМ /С/, Р1 /3.14159/ В этом операторе переменная Я-М иницназизируется значением С. а переменная Р1— значением 3. 14159.

В данном случае фактическая инициазизация происходит во время компиляции. Как только начнется выполнение программы. переменные Я'М н Р1 не будут ничем отличаться от друпш переменных. Во многих языках исходные значения переменных могут задаваться в операторах объявления, как в объявлении языка Ада: ЯУМ : 1ИТЕЯЕй := С; Ни язык Разсай ни язык Модо!а-2 не содержат иного способа инициализации переменных, кроме инициализации во время выполнения с помошью операторов присваивания. Вообше, инициализация статических переменных происходит только олин раз, но лля таких динамических переменных. как локальные переложенные в процедуре языка Ада, она происходит каждый раз при распределении памяти. Форма имен в языке может воздействовать как на читабельность этого языка, так и на улобство его использования.

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

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

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

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