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

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

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

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

6.3. Инкапсуляция при помощи подпрограмм Подпрограмма -. это абстрактная операция, определяемая программистом. Подпрограммы являются теми базовыми блоками, из которых строится большинство программ, и почти в каждом языке можно найти средства для их определения и вызова. Ангары аабыли уиомаа уз ь язык !ача. — Примеч. чиуч.

ред. 6.3. Инкапсуляция при помощи подпрограмм 277 Для нас здесь важны два взгляда на подпрограммы. На уровне проекгпированил программы подпрограмма нас интересует в том смысле, в кагором она представляет абстрактную операцию, определенную программистом, — в противоположность злементарным операпиям, встроенным в язык. На уровне разработки языка нас интересует разработка и реализация общих средств определения и вызова подпро)раммы. Хотя эти два взгляда и пересекаются, удобнее рассматривать их по отдельности.

6.3.1. Подпрограммы как абстрактные операции Как и в случае элементарных операций, определение подпрограммы состоит из лнух частей: спецификации и реализации, Но в случае подпрограммы оос эти части определя)отея программистом при ее описании. Спецификация подпрограммы. Поскольку подпрограмма является абстрактной операцией, сс спецификация должна быть понятна вне зависимости от реализации. Спецификация подпрограммы, по сути, пичем не отличаегся от спецификации элеменгарной операции и включает: 1) имя подпрограммы; 2) сигнатуру (называемую также прототипом) подпрограммы, которая задает количество аргументов, порядок нх следования, тип данных для каждого аргумента, а также количество результатов, пх порядок и тип данных для каждого результата; 3) действие, выполняемое полпро)раммой (иначе говоря, описание той функции, которую она вычисляет).

Подпрограмма представляет собой некоторую математическую функци)о, которая отображает каждый конкретный набор аргументов в некоторый набор результатов. Если подпрограмма явно возвращает только ол)ш результирующий объект данных, она обычно называется подпрограмиой-функцией (пли простофуикцией). Типичным примером синтаксиса для спсппфикации функции является следующее выражение на С; Е1оаг ЕНЕ 11оаг Х, влг У) которое определяет сигнатуру функции как ЕМ , вещественное х целое -+ вещественное Заметим, что в спецификацию также входят имена Х и У, которые можно использовать для обращения к аргументам внутри подпрограммы. Эти аргументы называются формальными параметрами.

Общие вопросы передачи параметров в подпрограмму обсуждаются более подробно в разделе 9.3. Кроме того, в некоторых языках имеется специальное ключевое слово, например ргоседпге или Еппсс) оп, которое используется в объявлении подпрограммы, как, например, в языке Рааса!: Голсевол ЕВЕХ гев1 У ~лгечег): геа1. Если подпрограмма возвращает более одного значения или если се действия сводятся к модификации своих аргументов вместо явного возвращения результата, она обычно называется процедурой или подпрограммой. Типичным примером синтаксиса для спецификации полпрограммы является следующее выражение языка С: нове 5оЬЕЕ1оаг Х.

)лв Х, 11овг *7, ~лг ещ) 278 Глава б. Инкапсуляция В привеленпой спецификации ключевое слово чотд указывает на пустуто функ- цию, полпрограмму, которая не возвращает никакого результата. Символ * перед именем формального параметра означает, что этот параметр может являться резуль- тирующим значением или что это аргумент, значение которого может быть молифи- пировано в холе выполнения полнрограммы.

(Фактически такие аргументы, как будет показано в разделе 9.3 являются переменными-указателями.) Эта же специ- фикапия в языке Ада более паютялно выражает указанные различия в аргументах: ргосебоге 5оы Х 1п ВВАЬ, У. 1п тптечег, 7 1п оос АЕАЬ; Н оос ВОО1.ГАН) Этот заголовок опрелеляет подпрограмму со следующей сигнатурой: 5об вещественное, х целое х вещественноет -+ вещественноет х бупево значение Ключевые слова тп, оос и тп оос указывают натри способа вызова аргументов в полнрограмме; то обозначает, что аргуметтт является вхолттым и не молифициру- ется полн рограм мой, то оог обозначает, что аргумент является входным, по может быть модифицирован при выполнении подпрограммы, и оэс обозначает результат.

Более подробно эта тема обсужластся в разделе 9.3. Хотя нолпрограмма и представляет некоторую матсматичсекуто функцию, нри попытке определить, какая в точности вычисляется функция, возникают нското- рьтс проблемы. 1. В подпрограмме могут использоваться леяпные аргуинепты в виде ссылок ца нслокальпыс переменные. 2. При выполнении полпрограммы могут возникать неявные)тезултьтатьт (побочные эффекглы), возвращаемые и вплс изменений значений пелокальных переменных или в ниле изменений значений се аргументов типа тп оог. 3.

Для некоторых возможных значений аргументов подпрограмма может быть не определена, гак что она не завершит свои вычисления как обычно, если ей булут переданы полобныс аргувтстттьт, а вместо этого передаст управление каколту-либо внспшсму обработчику исклточсний или вдруг неожиданно вообще завершит выполнение всей программы. т1. Полпрограмма может быть чутвстттительтта к предыстории ее вызовов, так что результаты сс выполнения зависят от послеловател ьпости псрспанных в нее аргументов на протяжении всей истории ее вызовов, а пс только от аргументов, переданных в конкретном вызове. Чувствительность к предыстории может быть вызвана сохранением значений каких-либо локальных данных этой подпрограммы в промежутках мсжлу обращениями к ией.

Реализация полттротрамм. Полнрограмма представляет операцию слоя вирту- ал ыюго компьютера, который сконструирован программистом, и, следовательно, пол- протрамма реализуется при помощи структур данных и операций, предоставляемых ЯЗЫКОЛ1 НРОГРаММПРОВанНЯ. РЕаттнэаттИЯ ОПРЕДЕЛЯЕТСЯ тЕЛОМ ПОДПРОГРаММЫ, КОТО- рое состоит из вбьяылепий локальных даттттых, опрелеляютих структуры данных, используемых полпрограммой, и операторов, залающих лсйствия, которые лолж- на выполнить подпрограмма. Объявления и операторы обычно инкапсулированы, так что нн локальные ланные, ни операторы по отдельности нс доступны пользо- вателю полпрогралтм ы; пользователь может только вызвать подпрограмму с конк- 6.3. Инкапсуляция при помощи подпрограмм 279 ретным набором аргументов и получить вычисленные результаты. Синтаксис языка С лля тела цолнрограммы является достаточно типичным: <1оаг Гы(лоа< Х.

>пт т> — си<натура подпрограииы 1<1оа< ч(10 к >пт. лч — об>явления лоиальных обьеитов данных — последова<ел ноет~ опера~оров, > опредепяшая действия подгрограииы В некоторых языках 1нанриьтер, в 1'васа! и А<1а, но нс в С) в тело подпрограммы могут входить онрслслсция других ноднрограмм, которые представляют собой определяемые программистом операции, нс~ользусмыс только в нрслелах содержащей их более крупной подпрограммы.

Этн локальныс нолнрограммы также ицкансулнровацы,так по к ним можно обран1атьсятолько изнутри тайн<>днрограммы, в которой онн определены, но ос извне. Кажльш вызов нолнрограммы трсбуст передачи ей аргументов правильного типа н соотвстс> нни с оцрслслснной сс спецификацией Также должны быть известны тины рслульт;гсов, во:шращаемых нолнрограммой. Ко<проль тинов в случае подпрограмм ш<алогнчсн коцтрол>о типов, который нрнмснястся для элементарных операций. Контроль тинов может осуществляться стати >сскн во время трансляции, сели лля типов аргументов н результатов всех но<<<>рогрт<мвт заданы объявления.

Альтернативой является динамический контроль тинов, происходящий во время и шо>шсння программы. 171>иве<)елин аргумента к нравнлщньму типу также может осуществляться автоматически, сели подобная операция предусмотрена реализацией языка. Мстодь< реализации и связанныс с этим вопросы являются прямым щи>лолжснисм и обобщением концепций, представленных в главе 5 лля элементарных операций. Основ~ос различие заключается в том, что в случае нолнрограмм нро<.раммнст должен явным образом объявлять информацию о тинах аргументов и результатов, в то время как лля элементарных операций эта информ;щня перслается неявным образом. Но когла <>та нн<1х>рмация предоставлена, то лальнс(йнис аспекты контроля типов трактуются ацалогнчно.

6.3.2. Определение и вызов подпрограмм Разработка средств лля онрслслсния и вызова нолнро> ран л< является одной нз центральных задач — возможно, самой гланной зэлачей — нри разработке большинства языков. Вольшая часть структуры реализации онрелсляется именно структурой подпрограмм. Здесь мы обсудим некоторые общие концепции реализации подпрограмм. В главе 7 мы рассмотрим методы лля обсснсчс<шя полной инкапсуляции н сокры нш ин<рормации о ла>шых.

Определение и активизация подпрограмм Онрслслсннс ш>лнрограммы является статическим свойством программы. Если во время выполнения программы вызывается 1ил и запускается) подпрограмма, то создается активация подпрограммы. 11о завершении выполнения нолнрограм мы активация разру<настся. Если нолнрограмма вызывается следующий раз, создастся новая активация. Во время выполнения программы но елш<ствсцному определению подпрограммы может быть создано много активаций.

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

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

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