36566

Область действия имен в программе

Контрольная

Информатика, кибернетика и программирование

В программах не использующих подпрограммы имена описанные в разделе описаний действуют во всей программе не вызывая какихлибо проблем. В подпрограммах могут использоваться свои локальные внутренние имена и кроме того она может также использовать глобальные внешние для неё имена из других подпрограмм или основной программы. Локальными именами подпрограммы называются те имена которые описаны в этой подпрограмме в её разделе описаний. Все остальные используемые в подпрограмме имена являются глобальными именами данной...

Русский

2013-09-22

29 KB

8 чел.

Область действия имен в программе.

В программах, не использующих подпрограммы, имена, описанные в разделе описаний, действуют во всей программе, не вызывая каких-либо проблем. Совершенно иная ситуация имеет место, когда в программе используются подпрограммы. В подпрограммах могут использоваться свои локальные (внутренние) имена, и кроме того, она может также использовать глобальные (внешние) для неё имена из других подпрограмм или основной программы. Поскольку допустима иерархия подпрограмм в основной программе, необходимы чёткие правила действия имён в программах с подпрограммами. Рассмотрим эти правила, действующие в Турбо Паскале. Введём соответствующие определения.

Локальными именами подпрограммы называются те имена, которые описаны в этой подпрограмме (в её разделе описаний). Все остальные, используемые в подпрограмме имена, являются глобальными именами данной подпрограммы.

Правило действия локальных имён: все локальные имена доступны внутри подпрограммы и недоступны вне этой подпрограммы. Другими словами локальные имена теряют свои значения непосредственно при завершении подпрограммы. Пример: в процедуре print_f имена count, X, j - локальные имена.

Правило действия глобальных имён: все глобальные имена доступны внутри подпрограмм в том случае, если они отличны от локальных имён. В той же процедуре print_f глобальным именем является имя процедуры window (из модуля CRT).

Правило коллизии имён: Если локальные и глобальные имена (и типы) совпадают, то действует локальное имя, (оно "закрывает" такое же глобальное имя внутри подпрограммы).

Правило коллизии имён введено таким образом, что локальным объектам можно давать любые имена, не заботясь об их возможном совпадении с глобальными именами. Подпрограмму можно представлять как некоторый "черный ящик с полупрозрачными стенками ": для внешнего окружения она "черный ящик", а изнутри она прозрачна, так что "видит" всё внешнее окружение.

Формальные параметры подпрограммы локальны в этой подпрограмме, а фактические - глобальны.

Глобальные имена (не входящие в фактические параметры) в силу правила их действия могут выступать как ещё один механизм связи подпрограмм с внешним окружением (дополнительный к механизму параметров подпрограмм, который следует считать основным).

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

Задача 4.2.6(4)

program alex4;

type mas=array[1..4,1..5]of integer;

mass=array[1..5]of integer;

var a:mas;

p:mass;

i,j,y:integer;

procedure proc(x:mas;k:integer;var pr:integer);

var i:integer;

begin

pr:=1;

for i:=1 to 5 do

if x[i,k]<0 then pr:=pr*x[i,k];

end;

begin

for i:=1 to 4 do

for j:=1 to 5 do

read(a[i,j]);

for j:=1 to 5 do

proc(a,j,p[j]);

y:=sqr(1-p[5])+sqr(2-p[4])+sqr(3-p[3])+sqr(4-p[2])+sqr(5-p[1]);

writeln('y=',y);

readln;

end.


 

А также другие работы, которые могут Вас заинтересовать

23433. Изменения в государственном строе ВКЛ в XV – первой половине XVI 16.37 KB
  Изменения в государственном строе ВКЛ в XV первой половине XVI В начале XV века власть в ВКЛ стала практически принадлежать Витовту. При нем государственный строй ВКЛ представлял собой неограниченную монархию власть одного правителя в государстве. Витовт продолжая добиваться независимости ВКЛ от Польши стремился разорвать свои зависимые отношения с польским королем Ягайло. Была подписана Городельская уния союз между ВКЛ и Польшей.
23434. Жизнь и занятия первобытных людей на территории Беларуси 19.7 KB
  Жизнь и занятия первобытных людей на территории Беларуси Первые люди неандертальцы на территории Беларуси появились примерно 10035 тыс. Светиловичи Ветковского районов которые датируются 2623 тыс.КАМЕННЫЙ ВЕК 100 тыс. 3 тыс.
23435. Восточнославянские племена на территории Беларуси: расселение, общественные и хозяйственные отношения в VI-IX веках 17.07 KB
  В раннем железном веке область расселения балтов на территории Беларуси составляла бассейны рек Немана Западной Двины Верхнего Поднепровья. происходит массовое расселение славян на территории Беларуси междуречье Припяти Днепра Западной Двины. Образуются союзы племен: кривичи место расселения верховье Днепра Западной Двины и Волги дреговичи бассейны Припяти и Двины радимичи юговосточная часть современной Беларуси восток Гомельской и Могилевской области.Место расселения восточнославянских племен на территории Беларуси это:...
23436. Полоцкое княжество в IX-XI вв. Княжеско-вечевой строй 17.26 KB
  Еще при жизни Всеслав распределил отдельные княжества Полоцкой земли между семью своими сыновьями которые начали междоусобную борьбу. в общественнополитической жизни Полоцкой земли происходят значительные изменения. на севере и западе Полоцкой земли появились немецкие рыцарикрестоносцы которые захватили полоцкие города Кукенойс и Герцике. Начинается период развития Полоцкой земли в союзе с Литвой в новом государстве ВКЛ.
23437. ФИЗИОЛОГИЯ РАСТЕНИЙ 6.3 MB
  Малиновский ФИЗИОЛОГИЯ РАСТЕНИЙ Владивосток 2004 УДК 581.1 Физиология растений. В учебном пособии кратко изложены основные разделы физиологии растений: физиология растительной клетки водный обмен минеральное питание фотосинтез брожение и дыхание гетеротрофное питание транспорт и выделение веществ рост и развитие движения растений механизмы защиты растений от факторов внешней среды в том числе и от патогенов. Особенности водного обмена у растений разных экологических групп .
23438. Способы построения, архитектура и обмен данными в цифровых сетях связи 1.2 MB
  Цифровые сети могут строиться на основе уже существующих проводных линий связи (медные, оптические), прокладываться специально выделенные линии, или строиться каналы беспроводной передачи данных. Архитектура сетей подразумевает различные технологии, протоколы...
23439. ФЕНОТИПИЧЕСКИЕ РЕАКЦИИ И ЭВОЛЮЦИОННЫЙ ПРОЦЕСС 428 KB
  Его обсуждение с дарвинистских позиций началось как известно с гипотезы органического или совпадающего отбора Моргана Болдуина выдвинутой на рубеже нашего века; в 30 40х годах в нашей стране к нему вновь было привлечено большое внимание благодаря работам таких исследователей как В. Одно из них унаследованное генетической теорией еще от вейсмановского неодарвинизма полагает что модификации или ненаследственные изменения в качестве таковых не имеют эволюционного значения и могут только замедлять темпы отбора если попадают в его...
23440. Строение и химия клеточного ядра. Клеточная биология 1.68 MB
  Структура и химия хроматина ДНК хроматина Репликация эукариотических ДНК Основные белки хроматина гистоны Функциональные свойства гистонов Первый уровень компактизации ДНК. Структурная роль нуклеосом Нуклеосомы при репликации и транскрипции Второй уровень компактизации ДНК 30 нм фибрилла Негистоновые белки Петлевые домены ДНК третий уровень структурной организации хроматина ГЛАВА 6. Ядерный белковый матрикс Общий состав ядерного матрикса ДНК ядерного белкового матрикса ГЛАВА 7. Клетки увеличиваются в числе путем деления исходной клетки...
23441. Репликация генома 2.58 MB
  ДНКполимеразы 1. Биосинтез ДНК.2 Бактериальные ДНКполимеразы 1. ДНКполимераза I E.