
- •Место процедур в модуле
- •Параметры процедур
- •Пример 1. Процедуры без параметров
- •Рекомендации по выбору типа формальных параметров
- •Пример 2. Процедура с параметрами
- •Пример 3. Процедура контроля алфавита вещественных чисел
- •Пример 4. Функция
- •Пример 5. Вычисление значений функции
- •4.3. Содержание отчета
- •4.4. Контрольные вопросы
4.Подпрограммы
Целью работы является освоение метода декомпозиции задачи, средств и приёмов процедурного программирования, механизма обмена данными между программными блоками.
4.1.Задание
Разработайте функцию для вычисления арифметического выражения Вашего варианта предыдущей работы.
Используя полученную функцию, вычислите три значения, начиная с X0 и приращением dX.
Обеспечьте контроль ввода данных и исключите возможность аварийного завершения программы.
Протестируйте Вашу программу.
4.2. Теоретические сведения
Структура подпрограмм
Подпрограмма (процедура или функция) - именованная, логически завершённая последовательность операторов, к которой можно многократно обращаться с различными фактическими параметрами в вызывающем подпрограмму исполняемом блоке. В модуле могут использоваться три вида подпрограмм: стандартные, языка; процедуры обработки событий и процедуры созданные разработчиком программы.
Отличие функции от процедуры состоит в том, что результатом исполнения операторов функции, всегда является значение. Процедура значения не имеет.
Структуры процедур и функций аналогичны структуре программы и также имеют раздел описаний и исполняемый блок. Отличий в описании процедур и функций всего три: зарезервированные слова заголовка (procedure и function); поскольку функция возвращает значение, то в заголовке указывают тип; в исполняемом блоке идентификатору функции присваивают значение (Имя_Ф:=Выражение). Отличия выделены в тексте подчёркиванием.
procedure Имя_Прц (Список формальных параметров: Тип);
const Список локальных констант, типов, переменных
type
var
begin {Исполняемый блок процедуры}
Операторы
end; {Конец описания процедуры}
function Имя_Ф(Список формальных параметров : Тип): Тип;
const Список локальных констант, типов, переменных
type
var
begin {Исполняемый блок функции}
Операторы
Имя_Ф:=Выражение; {Присваивание значения функции}
end; {Конец описания функции}
Место процедур в модуле
Если подпрограмма используется только в модуле, то её описывают в разделе implementation после описания констант и переменных.
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms, Dialogs;
type
TForm1 = class(TForm)
end;
var Form1: TForm1;
implementation
{Описание констант и переменных модуля}
{Описание подпрограмм пользователя }
end.
Вызов процедур и функций производят внутри какой-либо процедуры или процедуры обработки события. Вызываемая процедура должна быть описана раньше, чем процедура обработки события, вызывающая эту процедуру.
Если по какой-либо причине процедура пользователя не может быть описана ранее вызывающей её процедуры обработки события, то используют опережающее описание процедур.
implementation
{$R *.dfm}
procedure Имя_Проц(Параметры); Forward;
Заголовок процедуры с зарезервированным словом Forward указывают перед описанием процедур. Полный текст процедуры может располагаться после вызывающих процедур.
Описание подпрограммы может содержать описание и вызов другой подпрограммы - вложенное описание, см. рисунок 1. Для вложенных подпрограмм понятие глобальные и локальные - относительное, зависит от взаимного расположения подпрограмм. Структура с вложенными подпрограммами имеет вид:
|
|
Function Имя_Ф1; Описание функции |
|
|
|||
|
|
|
|||||
|
|
Procedure Имя_Прц {Раздел описаний} |
|
|
|||
|
|
|
Function Имя_Ф2 Описание функции |
|
|
|
|
|
|
begin //Исполняемый блок процедуры A:= Имя_Ф2; //Вызов функции Имя_Ф2 B:= Имя_Ф1; //Вызов функции Имя_Ф1 ...................... |
|
|
Рис. 1. Схема вложенности процедур
Параметры процедур
Все константы и переменные, используемые в программе, должны быть описаны. Константы и переменные, в зависимости от места описания в структуре, подразделяют на локальные и глобальные. Понятие локальный – глобальный относительное. Константы и переменные, объявленные в подпрограммах являются локальными, вне подпрограмм они недоступны. Константы и переменные, объявленные в разделах interface или implementation являются для подпрограмм раздела implementation глобальными и внутри процедур их можно использовать без дополнительного описания. В подпрограмме локальные имена могут совпадать с ранее объявленными глобальными именами. В этом случае локальное имя “закрывает” глобальное и делает его недоступным.
Способ передачи данных через глобальные переменные позволяет создавать процедуры без параметров