Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР5 (Процедуры и функции).doc
Скачиваний:
6
Добавлен:
04.12.2018
Размер:
150.02 Кб
Скачать

12

Лабораторная работа № 6 Реализация программ, использующих процедуры и функции пользователя

  1. Цель работы

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

- разработать алгоритм поставленной задачи (блок-схема);

- составить и отредактировать программу на языке Pascal;

- выполнить программу и обработать полученные результаты.

2. Краткие сведения из теории

2.1 Общие сведения о подпрограммах

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

В языке Pascal имеется две разновидности подпрограмм – процедуры и функции. Структура подпрограммы аналогична структуре программы (рисунок 1).

Рисунок 1 Структура подпрограмм

2.2 Глобальные, локальные блоки и объекты

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

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

Procedure treug(x,y,z:Integer;Var ss:Real; Var pp : Integer);

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

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

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

type tArr = array[l..100] of Real;

procedure ZapolnMas (l:integer, var A: tArr; Max);

Здесь A - параметр-переменная, l - параметр значение.

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

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