Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Глобальные и локальные именаСодержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Каждая процедура (функция) может иметь свой раздел процедур, а описанные в нем процедуры также могут иметь внутренние процедуры. Таким образом, может иметь место последовательность вложенных блоков. Понятие глобальных и локальных имен имеет смысл только относительно некоторого блока. Глобальные имена - это имена, которые действуют на протяжении всей программы (или внешнего блока), они объявляются в соответствуюших разделах программы (или внешнего блока). Локальные имена - это имена, которые действуют в пределах блока подпрограммы, это внутренние имена подпрограммы. К локальным именам относятся формальные параметры и все имена, описанные в блоке подпрограммы. Вне блока подпрограммы локальные имена неопределены. Локальное имя может использоваться в одном блоке, глобальные имена могут являться общими для нескольких блоков и использоваться для передачи данных между блоками. В Паскале данные, описанные в блоке программы, хранятся в так называемом статическом сегменте памяти; память под них распределяется при компиляции. Локальные данные подпрограммы хранятся в специальной области оперативной памяти – стеке; память под эти данные распределяется каждый раз при вызове подпрограммы и освобождается при завершении работы подпрограммы. Если имеется цепочка вложенных обращений к подпрограммам, например, программа вызывает подпрограмму Р1, Р1 вызывает подпрограмму Р2, а Р2 – Р3, то схема заполнения стека будет соответствовать рис. 15; порядок освобождения стека: сначала уходит Р3, затем Р2, затем Р1. Важными являются понятия области действия имени и времени жизни данных. Область действия имени - э то часть программы, в которой имя может быть доступно. Таким образом, область действия локального имени - блок подпрограммы, в которой оно объявлено; глобального – весь текст программы от места объявления до последнего слова End (с точкой). Глобальное имя доступно в подпрограмме только в том случае, если в подпрограмме оно не объявлено еще раз. Понятие времени жизни (существования) данных является близким к области действия, но не совпадает с ним. По времени жизни данные делятся на статические (существуют все время выполнения программы), автоматические (существуют во время выполнения функции, в которой описаны), динамические (получают место в памяти с помощью операторов динамического распределения памяти). В Паскале статические данные - это глобальные данные, автоматические – локальные, динамические данные рассматриваются в части IV.
В данной программе область действия переменной а – вся программа, включая процедуры, время ее жизни – все время работы программы. Область действия глобальной переменной i – текст программы, за исключением процедур; время ее жизни – все время работы программы. Область действия локальной i – текст процедуры, в которой она объявлена, время ее жизни – время работы соотвествующей процедуры. Рекомендации 1. Не стоит делать глобальными промежуточные переменные (например, i в программе вычисления выражения примера §2.3.2), потому что: 1) это делает подпрограмму менее универсальной, так как приводит к появлению непонятного пользователю "стыка" - промежуточной глобальной переменной; 2) приводит к неэкономному расходованию памяти, так как глобальные переменные занимают память в течение всего времени работы программы. 2. Однако допустимо использование глобальных переменных для передачи данных между подпрограммами (если не требуется подстановка параметров). Так, если бы в примере п.2.2.2 требовалось обработать одну матрицу, то можно было бы использовать процедуры без параметров, как сделано в приведенной ниже программе. program primer2_4; {вычисление минимальных значений элементов строк матрицы a[3*5]} Type matr=array[1..3,1..5] of real; mas= array[1..3] of real; Var a:matr; min:mas; {далее-раздел процедур и функций} Procedure minstr; Var i,j:integer; Begin for i:=1 to 3 do begin min[i]:=a[i,1]; for j:=1 to 5 do if min[i]>a[i,j] then min[i]:=a[i,j]; end End{minstr}; Procedure matrin; Var i,j:integer; Begin Writeln('Введите матрицу размером 3*5'); for i:=1 to 3 do for j:=1 to 5 do read(a[i,j]); readln; End{matrin}; Procedure masout; Var i:integer; Begin Writeln('Минимальные значения строк матрицы '); for i:=1 to 3 do writeln(' ',min[i]); End{masout}; {далее - раздел действий программы} Begin matrin; minstr; masout; readln End. Основное назначение подпрограмм в такой программе – упростить программу и сделать ее более наглядной за счет укрупнения операторов. Заметим, однако, что использование глобальных переменных для передачи данных между процедурами имеет существенные недостатки, а именно: 1) делает процедуры менее универсальными и затрудняет их повторное применение, как в пределах одной программы, так и в других программах. 2) усложняет автономную отладку подпрограмм. Процедуры, в разделе действий которой используются только ее формальные и локальные параметры, называются "чистыми". Именно "чистые" процедуры удобно использовать как библиотечные, так как они допускают подстановку вместо формальных параметров различных вариантов фактических.
|
||||||
Последнее изменение этой страницы: 2017-02-07; просмотров: 607; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.189.143.150 (0.01 с.) |