русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Способы передачи параметров подпрограммы


Дата добавления: 2013-12-23; просмотров: 2021; Нарушение авторских прав


В заголовке подпрограммы указываются формальные параметры. При вызове подпрограммы указываются фактические параметры.

Корректность передачи параметров основывается на их порядке перечисления в заголовке подпрограммы и совместимости по присваиванию между соответствующими фактическими и формальными параметрами. Сфера действия имен параметров такая же, как и локальных данных.

Список формальных параметров необязателен и может отсутствовать.

В списке перечисляются имена формальных параметров и их типы, например: Procedure SB(a: Real; b: Integer; c: Char);

Function F(a, b: Real): Real;

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

Любой из формальных параметров подпрограммы может быть либо параметром-значением, либо параметром-переменной, либо параметром-константой.

Если параметры определяются как параметры-переменные, то перед ними необходимо ставить зарезервированное слов Var, а если это параметры-константы – слово Const. Например,

Procedure MyProc (par1, par2: Type1; par3, par4: Type2); {параметры-значения}

Procedure MyProc (Var par1, par2: Type1; Var par3, par4: Type2); {параметры-переменные}

Procedure MyProc (Const par1, par2: Type1; Const par3, par4: Type2); {параметры-константы}

Механизм работы соответствующих параметров:

Параметры значения

    Фактический параметр В выделяемые ячейки памяти формального параметра передается копия     Формальный параметр
фактического и обратно не возвращается.

Параметры-переменные

  Фактический параметр Передается адрес (не значение!) фактического параметра.   По имеющемуся адресу изменяется содержимое ячеек памяти фактического параметра, т.е. выполняется возврат результата.   Формальный параметр

Параметры-константы



  Фактический параметр Передается адрес фактического параметра.   По имеющемуся адресу разрешено только брать значение фактического параметра, а изменять его значение запрещено, т.е. обратного влияния нет.   Формальный параметр

Пример использования различных типов параметров. В программе задаются два целых числа 5 и 7, эти числа передаются процедуре Inc2, в которой они удваиваются. Один из параметров передается как параметр-переменная, другой – как параметр-значение. Значения параметров до и после вызова процедуры, а также результат их удвоения выводятся на экран.

Const a: Integer = 5;

b: Integer = 7;

Procedure Inc2(Var c: Integer; b: Integer);

Begin

c := 2*c; b := 2*b;

Writeln(‘Удвоенные ’, c: 5, b: 5);

End;

Begin

Writeln(‘Исходные ’, a: 5, b: 5);

Inc2(a, b);

Writeln(‘Результат ’, a: 5, b: 5);

Readln;

End.

В результате прогона программы будет выведено:

Исходные 5 7

Удвоенные 10 14

Результат 10 7

 

Определение формального параметра тем или иным способом существенно только для вызывающей программы: если формальный параметр объявлен как параметр-переменная, то при вызове подпрограммы ему должен соответствовать фактический параметр в виде переменной нужного типа; если формальный параметр объявлен как параметр-значение, то при вызове ему может соответствовать произвольное выражение. Контроль осуществляется компилятором Турбо Паскаля.

C помощью параметров-переменных подпрограмма может передавать результаты своей работы вызывающей программе. Другой способ передачи результатов – через глобальные переменные. Однако злоупотребление глобальными связями делает программу, как правило, запутанной, трудной в понимании и сложной в отладке.

Чем меньше параметров объявлено параметрами-переменными и чем меньше в подпрограмме используется глобальных переменных, тем меньше опасность получения непредусмотренных программистом побочных эффектов, связанных с вызовом подпрограммы, тем проще программа в понимании и отладке.

Не рекомендуется использовать параметры-переменные в заголовке функции: если результатом работы функции не может быть единственное значение, то логичнее использовать процедуру.

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



<== предыдущая лекция | следующая лекция ==>
Область действия идентификаторов при использовании процедур и функций | Рекурсия и опережающее описание


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.