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.


 

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

51058. Разработка интерактивного справочника магазина Азарт 4.98 MB
  Систематизированная информация на более высоком уровне организует деятельность магазина, позволяя каждому покупателю самостоятельно ознакомиться с ассортиментом и ценами магазина; руководство данного магазина с помощью справочника сможет демонстрировать своим клиентам обновление ассортимента, а так же с акциями, проходящими на территории данного магазина...
51059. Програмування циклів 152.28 KB
  Мета: Створити форму для розвязування задачі табулювання функції. Створити у ній головне меню (обєкт типу MeinMenu) з командами: Закінчити роботу програми, табулювати функцію, очистити поле виведення результатів, а також контекстове меню (PoupMenu), що міститиме команду для очистки поля виведення...
51060. Линейный структурный анализ 4.49 MB
  Изменить назначение контактов: выбрать 4 поверхности контакта в дереве проекта и назначить тип контакта no seprtion остальные контакты оставить bonded 9 Назначить режим нагружения Выделить в дереве проекта Sttic Structurl Выделить поверхность канавки шкива ПКМ Insert Bering Lod Назначить...
51061. Выпрямитель сварочный ВДГИ-301 3.65 MB
  Выпрямитель сварочный ВДГИ-301. Электрическая схема силовой части выпрямителя...
51062. МОДЕЛИРОВАНИЕ ОЦЕНКИ НАДЕЖНОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 956.59 KB
  Классическая теория надежности технических систем использовала метод расчленения сложных объектов на элементы расчета. При этом надежность элементов рассчитывалась, в основном, с помощью справочников, в которых приводились значения интенсивностей отказов элементов. Затем оценивалась надежность объекта и принимались меры по ее повышению.
51064. Дії та їх опрацювання 26.17 KB
  Дії та їх опрацювання. Мета: Створити стратегічну гру Біржа цінних паперівяка моделює операцію інвестування щорічного капіталув акції трьох різних підприємств...
51065. Термический анализ 1.53 MB
  Основы термического анализа В статическом стационарном термическом анализе в Mechnicl определяется матрица температур T из следующего уравнения: При этом делаются следующие предположения: Зависимость от времени не рассматривается в данном типе анализа; K тепловой поток может быть постоянной согласно закону Фурье или зависеть от температуры; Q система с граничными условиями может быть постоянной или зависеть от температуры; в качестве граничных условий могут выступать тепловой поток скорость теплового потока и...
51066. Весовое проектирование магистральных самолетов 4.13 MB
  Рассмотрены различные подходы к весовому расчету самолета на этапе эскизного проектирования самолета: методика Егера методика Торенбика и методика Реймера. В соответствии с указанными методиками проведен расчет трех проектов прототипами для которых являются уже существующие самолеты