Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Подпрограммы. Параметры. Обмен данными подпрограмм с вызывающими блоками




Процедуры и функции в языке Паскаль

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

Для организации модулей в алгоритмических языках (в том числе - в Паскале) обычно предусматриваются два типа подпрограмм - процедуры и функции. Процедуры и функции подразделяются на стандартные (входят в состав языка или библиотеки) и определенные пользователем (непосредственно создаваемые им).

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

Заголовком подпрограммы называют первую строку ее описания, в которой указан тип подпрограммы (procedure - процедура, function - функция), ее имя (идентификатор, образованный по правилам языка Паскаль), а также список ее параметров. Параметры подпрограммы – это специально выделенное множество величин, обеспечивающих передачу в подпрограмму информации из вызывающего блока программы (исходная информация для расчетов подпрограммы) и обратную передачу результатов расчета из подпрограммы в блок. В том случае, когда подпрограмма выполняет одно и то же действие, например, очистку содержимого экрана, и/или может взять все исходные данные для расчетов из операционной системы, переменных Паскаля или используемых библиотек помимо пользователя, то она может не иметь параметров.

Примеры 1 заголовков процедур:

procedure ClrScr; {очистка экрана и заполнение его заданным ранее цветом}

procedure minmax(a,b:real;var min,max:real); {определение минимального и максимального из двух чисел a и b }

Примеры 2 заголовков функций:

function ReadKey:char; {функция определяет содержимое в буфере клавиатуры и возвращает его }

function min(a,b:real):real; {определение минимального из двух чисел a и b }

Вызовом (обращением) к подпрограмме называют совокупность действий, при которой происходит:

1) передача в нее из вызывающего блока исходной информации,

2) внутри подпрограммы производятся все необходимые действия,

3) из подпрограммы в вызывающий блок передаются результаты расчета.

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

Примеры 3 вызовов процедур:

ClrScr; {обращение к процедуре ClrScr для очистка экрана и заполнения его заданным ранее цветом}

minmax(0.005,х,min1,max1); {обращение в процедуре minmax для определение минимального и максимального из двух чисел 0,005 и х, минимум будет помещен в переменную min1, максимум – в max1 }

Примеры 4 вызовов функций:

ReadKey; {ожидание нажатия клавиши для перехода от пользовательского экрана в основной}

min1:=min(0.005,y1); { обращение к функции для определения минимального из двух чисел 0.005 и y1 и присвоения этого значения переменной min1 }

Рассмотрим основные свойства параметров подпрограмм в зависимости от различных аспектов процесса обмена данными.

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

Рис.7.1. Потоки передачи данных между вызывающим блоком и подпрограммой

2. Формальные и фактические параметры. Имена переменных, используемые в заголовке подпрограммы и в ее тексте, называют формальными параметрами. Они являются частью описания подпрограммы и не занимают места в памяти, которое отводится соответствующим их по типу реальным величинам. Фактическими называют реальные значения параметров (числовые, символьные и других типов), которые используются при вызове подпрограммы и подставляются в нее из вызывающего блока вместо формальных параметров при выполнении расчетов.

3. Параметры-значения (передаваемые по значению) и параметры-переменные (передаваемые по ссылке). Данные термины характеризуют два возможных способа передачи параметров в языке Паскаль.

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

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




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 505; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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