Лекция: Область действия идентификаторов
Программа на языке Pascal имеет модульную структуру и может состоять из ряда вложенных друг в друга блоков. Основная программа — это самый крупный блок, который не входит ни в какой другой. Объекты, описанные в этом блоке, являются глобальными и могут использоваться во всех вложенных блоках. Вложенные блоки — это функции и процедуры. Описанные в них объекты локальны и недоступны во внешних блоках.
Для правильного использования и определения области действия идентификаторов в программе приведем следующие правила:
1. Каждый идентификатор должен быть описан перед тем, как он будет использован.
2. Областью действия идентификатора является блок, в котором он описан.
3. Все идентификаторы в блоке должны быть уникальными, т.е. не повторяться.
4. Один и тот же идентификатор может быть по-разному определен в каждом отдельном блоке.
5. Если идентификатор подпрограммы пользователя совпадает с именем стандартной процедуры или функции, то последние недоступны в пределах области действия подпрограммы, объявленной пользователем, т.е. стандартная функция игнорируется, а выполняется подпрограмма пользователя.
Одной из самых распространенных причин ошибок в работе с подпрограммами является случайное использование глобальных переменных в процедурах и функциях. Например, если переменная I выбрана для управления циклом в основной программе и случайно была использована без внутреннего описания в подпрограмме, работа программы в большинстве случаев будет полностью дезорганизована. Поэтому для организации циклов в локальных блоках лучше не применять глобальные переменные.
Пример 8.2. Определить ближайшую к началу координат точку, находящуюся в верхней полуплоскости, и наиболее удаленную точку, лежащую в нижней полуплоскости. Координаты точек, находящихся в верхней полуплоскости, заданы массивами X1(N) и Y1(N), а лежащие в нижней полуплоскости, — массивами X2(M) и Y2(M), где N £ 40, M £ 60.
Для каждой точки верхней полуплоскости следует определить расстояние от начала координат. Из этих расстояний необходимо найти наименьшее. Такие же действия выполнить для точек, находящихся в нижней полуплоскости, однако найти наибольшее расстояние от начала координат.
Вычисление расстояний от начала координат и нахождение наименьшего или наибольшего из них выполним в подпрограмме-функции.
Использование одной подпрограммы для нахождения наибольшего и наименьшего значений потребует введения дополнительного параметра K, отрицательное значение К используется для нахождения наименьшего, положительное значение К используется для нахождения наибольшего.
В подпрограмму необходимо передать массивы координат точек, их размер, а также параметр К, который может принимать значения + 1 или -1. Результат, полученный в подпрограмме-функции, присваивается ее имени.