Лекция 01. Тема Общая характеристика языков программирования высокого уровня


Механизмы обмена данными с подпрограммой


Download 4.1 Mb.
Pdf ko'rish
bet34/57
Sana12.11.2023
Hajmi4.1 Mb.
#1767546
TuriЛекция
1   ...   30   31   32   33   34   35   36   37   ...   57
Bog'liq
Lektsii po YaP Lukinova 2 sem

4.2. Механизмы обмена данными с подпрограммой 
Итак, если мы оформили часть алгоритма в виде подпрограммы, то 
основная задача – передать информацию внутрь блока и “выбросить” 
результат 
работы 
в 
вызывающую 
программу 
для 
дальнейшего 
использования. 
main 
локальные переменные 
Параметры f1 
динамическая связь 
статическая связь 
адрес возврата в 
main 
стек (ЭЗА f1)
f

адрес возврата в 
f

f

… 
… 
… 
Формирует 
f1 
формирует 
вызывающий 
модуль (main) 
указатель вершины 
ЭЗА main 
адрес ЭЗА 
статического 
предка 
стек (ЭЗА f2)
f



Существует 
два 
способа 
информационного 
обмена 
между 
подпрограммой и вызывающей программой: 
1. Прямой доступ к глобальным переменным.
2. Передача через параметры подпрограммы. Этот способ является более 
гибким, чем глобальные переменные. Подпрограмма может вычисляться 
много раз для любых новых фактических данных, а глобальные переменные 
надо переопределять перед каждым вызовом. Кроме того, глобальные 
переменные будут видны и в других подпрограммах.
Механизм глобальных и локальных параметров. 
Выше на рисунке 4.2. приведена структура подпрограммы, которая 
очень похожа на структуру основной программы: присутствуют те же два 
раздела – блок описаний локальных переменных и тела подпрограммы. Но в 
разделе 
описаний 
подпрограммы 
объявляемые 
объекты 
названы 
“локальными”, в отличие от “глобальных” в разделе описаний основной 
программы. Дело здесь в следующем.
Все имена, описанные внутри подпрограммы, локализуются в ней, они 
как бы невидимы извне подпрограммы. Таким образом, со стороны 
операторов, использующих обращение к подпрограмме, она трактуется как 
“черный ящик», в которой реализуется тот или иной алгоритм, действуют те 
или иные переменные, константы и т.п.
Все имена в пределах подпрограммы, в которой они объявлены должны 
быть уникальными и не могут совпадать с именем подпрограммы.
С другой стороны, объекты верхних уровней действуют во всех 
подпрограммах низших уровней. Образно говоря, любая подпрограмма как 
бы окружена полупрозрачными стенками: снаружи подпрограммы мы не 
видим внутренности, но, попав внутрь, можем наблюдать все, что вне ее. 
Пусть имеем такое описание (здесь для удобства термин «подпрограмма» 
заменяется на «блок»):
Program . . ;
var V1 : . . . ;


Блок A;
var V2 : . . . ;
. . . . . .
end {A};
Блок B;
var V3 : . . . ;
Блок B1;
var V4 : . . . ;
Блок B11;
var V5 : . . . ;
. . . . . . . .
Из блока B11 доступны все пять переменных V1...V5, из блока Bl 
доступны VI...V4, и т.д., из основной программы – только V1. При этом 
переменные, описанные внутри блока, с точки зрения этого блока являются 
локальными. Переменные, описанные в блоках высших уровней или в 
главной программе, называются глобальными. Так, V1 является глобальной 
переменной для всех блоков. V2 – локальна для А. V3 – локальна для В и 
глобальна для В1 и В11.
При этом реализуется механизм сокрытия переменных, рассмотренный в 
Download 4.1 Mb.

Do'stlaringiz bilan baham:
1   ...   30   31   32   33   34   35   36   37   ...   57




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling