Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 866; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.198 (0.01 с.) |