Delphi-6 - среда разработки программного обеспечения для систем промышленной автоматизации. Букреев В.Г - 64 стр.

UptoLike

Составители: 

С другой стороны, описание всех формальных параметров как па-
раметров-переменных нежелательно по двум причинам. Во-первых, это
исключает возможность вызова подпрограммы с фактическими пара-
метрами в виде выражений, что делает программу менее компактной.
Во-вторых, в подпрограмме возможно случайное использование фор-
мального параметра, например для временного хранения промежуточ-
ного результата, т. е. всегда существует опасность непреднамеренно ис-
портить фактическую переменную. Вот почему параметрами-
переменными следует объявлять только те, через которые подпрограм-
ма в действительности передает результаты вызывающей программе.
Чем меньше параметров объявлено параметрами-переменными и чем
меньше в подпрограмме используется глобальных переменных, тем
меньше опасность получения не предусмотренных программистом по-
бочных эффектов, связанных с вызовом подпрограммы, тем проще про-
грамма в понимании и отладке. По той же причине не рекомендуется
использовать параметры-переменные в заголовке функции: если резуль-
татом работы функции не может быть единственное значение, то логич-
нее использовать процедуру или нужным образом декомпозировать ал-
горитм на несколько подпрограмм.
Существует еще одно обстоятельство, которое следует учитывать
при выборе вида формальных параметров. Как уже говорилось, при
объявлении параметра-значения осуществляется копирование фактиче-
ского параметра во временную память. Если этим параметром будет
массив большой размерности, то существенные затраты времени и па-
мяти на копирование при многократных обращениях к подпрограмме
можно минимизировать, объявив этот параметр параметром-константой.
Параметр-константа не копируется во временную область памяти, что
сокращает затраты времени на вызов подпрограммы, однако любые его
изменения в теле подпрограммы невозможныза этим строго следит
компилятор.
Еще одно свойство Object Pascal – возможность использования
нетипизированных параметров. Параметр считается нетипизированным,
если тип формального параметра-переменной в заголовке подпрограм-
мы не указан, при этом соответствующий ему фактический параметр
может быть переменной любого типа. Заметим, что нетипизированными
могут быть только параметры-переменные:
Procedure MyProc(var aParametr);
Нетипизированные параметры обычно используются в случае, когда
тип данных несущественен. Такие ситуации чаще всего возникают при
64