Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Непейвода Н.Н. -> "Основания программирования " -> 133

Основания программирования - Непейвода Н.Н.

Непейвода Н.Н., Скопин И.Н. Основания программирования — Институт компьютерных исследований , 2002. — 919 c.
Скачать (прямая ссылка): osnovanprogramm2002.pdf
Предыдущая << 1 .. 127 128 129 130 131 132 < 133 > 134 135 136 137 138 139 .. 316 >> Следующая

ной программе), что предпочтительнее MyInpMatr, т. к. функция не связана с необходимостью предварительного определения N и вообще более автономна. Тем не менее, с целью показать различие в использовании процедур и функций ниже MyOwnlnpMatr и MyInpMatr будут рассмотрены совместно и в разных вариантах.
§ 8.3. КОНТЕКСТЫ И ОБСТАНОВКИ. ЛОКАЛИЗАЦИЯ ИМЕН
Тело подпрограммы в совокупности с ее локальнм контекстом называется блоком .Процедура или размещается в тексте программы, или включается в нее другим способом, и, соответственно, попадает в некоторый другой локальный контекст. Этот контекст становится глобальным для данной программной единицы — в теле подпрограммы появляется возможность использовать данные и другие программные элемента из глобального контекста, в котором она применена. Такое использование регламентируется так называемыми правилами локализации имен.
Сосредоточимся сейчас в первую очередь на процедурах. Из сказанного выше, в частности, следует, что глобальный контекст процедуры включает в себя саму процедуру (именно это обстоятельство обеспечивает, к примеру, возможность рекурсивного вызова). Внешние, перерабатываемые данные
378
8.
процедуры — это часть глобального контекста, фактически затрагиваемая при ее выполнении, в совокупности с теми данными, которые в глобальный контекст не входят, а передаются подпрограмме для обработки специальным образом.
Таким образом, описание процедур содерит следуие составля -ие:
• заголовок;
• описания локального контекста;
• тело.
В различных языках программирования описание процедуры может оформляться по-разному, но выделенные составляие в той или иной форме пред-ставля тся всегда, когда требуется иметь дело с процедурами или функциями.
Глобальный контекст обеих процедур ввода матрицы MyOwnInpMatr и MyInpMatr, в соответствии с их назначением, должен содержать:
1. константу NN — размер массива по измерениям;
2. переменну N типа int — фактический размер матриц ;
3. переменную Matr типа двумерный массив размера NN на NN компонент, для определенности типа float.
Эти три объекта исчерпывают внешние перерабатываемые процедурами данные. Кроме перерабатываемых даннх, в глобальном контексте представлены два оператора #include, задающие внешние библиотечные средства.
Внутренние данне, т. е. локальный контекст, определя тся при составлении конкретных алгоритмов тел процедур. Прежде чем составлять эти алгоритмы, необходимо до конца уточнить интерфейс процедур. Поэтому далее предполагается, что глобальный контекст MyOwnInpMatr и MyInpMatr представлен следуими описаниями:
8.3. ЛОКАЛИЗАЦИЯ ИМЕН
379
#include <stdio.h> #include <stdlib.h>
const NN = 100; ,„ 14
(8.1)
typedef float Matrix[NN][NN]; Matrix Matr; //(*) int N;
Это первый вариант глобального контекста. Когда потребуется оперирование с несколькими матрицами, вместо строки с (*) в (8.1) используется:
Matrix Matr1,Matr2;
писание типа
typedef float Matrix[NN][NN];
полезно для содержательного понимания того, что делается. К тому же оно просто сокраает запись, когда требуется определять переменные, параметры и т. д. одного и того е типа:
Matrix Matr1,Matr2; /**/
void MyOwnInpMatr(Matrix M, int SizeM); int MyInpMatr(Matrix M);
Рассмотрим теперь соотноение обстановки и контекста. говорили об обстановке лишь для оператора цикла (см. п. 7.3.5). Для программы и подпрограммы в целом обстановка — существено влияющая на нее часть контекста, в котором она работает: слу ебне и библиотечне программы и пе-ременне операционной среды и системы программирования. Кроме того, в обстановку вкл ча тся призраки и такие более абстрактне и зачасту прямо не представленные в программе суности, как входные и выходные потоки. От обстановки зависит поведение программы.
ля подпрограмм в обстановку мо ет войти ее и доступная часть контекста других подпрограмм, с которми данная подпрограмма взаимодействует.
ля вызова процедур как части некоторой программы обстановка есть объединение составляющих:
а) контекст описания — то, что описано на том же уровне, что и сама процедура, и на уровнях, статически охватывающих ее описание;
380
8.
b) контекст вызова — то, что описано на уровне точки вызова процедуры, и на уровнях, статически охватывающих ее.
ро обстановку вычислений лбого другого фрагмента осмысленно говорить, когда он представляет собой логически замкнуту часть вычислений. Для тела программы, подпрограммы или процедуры это условие выполняется по определени . пределять формально обстановку было б неразумно, поскольку это заслонило бы содержательную сущность понятия: разграничение меду локализованнми во фрагменте элементами вычислений и вненими по отноени к нему элементами. Такое разграничение — часть задачи анализа программы.
бычно контекст описания всегда доступен процедуре. на мо ет употреблять имена, декларированные в этом контексте. В современннх язках име тся и средства ограничения доступа: явно указвается, что некоторые из описаний требу т особых прав доступа, и, таким образом, они не предназначены для данной процедуры.
Предыдущая << 1 .. 127 128 129 130 131 132 < 133 > 134 135 136 137 138 139 .. 316 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100