Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DF4.doc
Скачиваний:
0
Добавлен:
05.01.2020
Размер:
164.35 Кб
Скачать

4.Подпрограммы

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

4.1.Задание

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

  2. Используя полученную функцию, вычислите три значения, начиная с X0 и приращением dX.

  3. Обеспечьте контроль ввода данных и исключите возможность аварийного завершения программы.

  4. Протестируйте Вашу программу.

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 глобальными и внутри процедур их можно использовать без дополнительного описания. В подпрограмме локальные имена могут совпадать с ранее объявленными глобальными именами. В этом случае локальное имя “закрывает” глобальное и делает его недоступным.

Способ передачи данных через глобальные переменные позволяет создавать процедуры без параметров

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]