Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Теоретические сведения. Цель работы– уяснение общего и основных различий между процедурой и функцией; составление программ с использованием процедур; решение задач




ПОДПРОГРАММА-ПРОЦЕДУРА

Лабораторная работа № 7

 

 

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

Постановка задачи:

1. Выполнить задание с использованием процедур.

2. Исходные данные (кроме размерности массивов) ввести из текстового файла, который представить вместе с листингом программы и результатами счета. Ввод данных оформить как процедуру.

3. Решение задачи оформить в виде процедуры.

4. Исходную матрицу и результаты вывести в другой текстовый файл. Вывод данных в файл оформить в виде процедуры.

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

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

В языке Pascal подпрограмма является частью основной программы, ее описание располагается в описательной части программы, т.е. перед первым begin программы.

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

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

Различают два вида подпрограмм – процедуры и функции. Далее рассмотрим подпрограммы-процедуры.

Структура описания функции имеет вид:

 

procedure <имя> [(<список формальных параметров>)];

[<раздел описаний>]

Begin

<перечисление операторов и программных единиц>

End;

 

Таким образом, процедуры имеют структуру, аналогичную главной программе и содержат:

 

· заголовок со специальным словом procedure – признаком подпрограммы, именем процедуры и необязательным списком формальных параметров – данных, передаваемых на обработку и получаемых из процедуры;

· все разделы описаний, необходимые для работы подпрограммы: метки, константы, типы, переменные и подпрограммы;

· раздел операторов, содержащий собственно алгоритм подпрограммы.

 

При работе с подпрограммой всегда выделяется два этапа:

· описание подпрограммы, т.е. запись алгоритма решения задачи в специальной форме;

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

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

 

Обмен данными между процедурой и вызывающей программой

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

 

Program Example1;

{Описание процедуры}

Procedure Hello; {Заголовок процедуры}

Begin

Writeln (‘Привет!’) {Исполняемый оператор процедуры}

End;

{Раздел операторов основной программы}

 

Begin

Hello; {Вызов процедуры}

Hello;

Hello

End.

 

Процедура Hello при каждом вызове (а их в основной программе три) делает одно и то же – просто выводит слово на печать.

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

Исходные данные à Алгоритм процедуры à Результат.

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

 

Использование глобальных переменных для обмена данными

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

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

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

Задача 1. Найти минимальное из трех вещественных чисел

z = min (a, b, c), где z, a, b, c Î R.

Для решения задачи напишем процедуру, находящую минимальное из двух чисел и дважды последовательно вызовем ее для решения задачи, т.е. вначале найдем z = min (a,b), а затем z = min (z,c).

Program Min1;

{Описание переменных}

Var a,b,c, {исходные данные задачи}

x,y, {исходные данные функции}

z: real; {результат функции и результат задачи}

{Описание процедуры}

Procedure Min;




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


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


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



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




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