Функции. Формальные параметры. Структура функций. Роль описателя var. Обращение к функции. Присваивание имени функции значения в теле функции. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Функции. Формальные параметры. Структура функций. Роль описателя var. Обращение к функции. Присваивание имени функции значения в теле функции.



Раздел процедур и функций.

 

Сокращения: СФП – список формальных параметров; ТРРФ - тип результата расчета функции.

Процедура начинается с заголовка процедуры:

procedure имя(СФП типа1: тип1; СФП типа2:тип2;...; СФП типа n: тип n);

Функция начинается с заголовка функции:

function имя(СФП типа1: тип1;...; СФП типа n: тип n):ТРРФ;

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

Формальные параметры могут вызываться по имени или по значению. При вызове по имени перед формальным параметром ставится слово var. Будем считать, что для массивов это слово необходимо всегда.

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

Объявления в процедурах и функциях такие же, как и в основной программе.

Тела процедур и функций заключаются в операторные скобки
begin... end.

Если имеем дело с функцией, то ее имени внутри функции обязательно присваивается значение.

Устанавливается соответствие между порядком и количеством формальных и фактических параметров, причем параметры формальные и фактические стоящие на одинаковом удалении от начала должны быть одного типа.

Формальный и соответствующий ему фактический параметр должны ссылаться на один и тот же тип в разделе типов.

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

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

Обращение к процедуре находится в основной программе:

имя (список фактических параметров);

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

Если результатом работы процедуры является переменная, то в списке формальных параметров перед ней необходимо поставить слово var.

Обращение к функции содержится внутри некоторого выражения и имеет вид:

переменная: =…имя функции (список фактических параметров)….

 

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

 

6.5. Программа с использованием процедуры.

 

Сложение двух векторов.

Исходные данные:

n - размерность векторов.

A, B - складываемые векторы.

Результат:

C- вектор суммы(Ci=Ai+Bi, i=1,…,n)

Таблица 6.1. Соответствие формальных и фактических параметров.

 

Формальный параметр Фактический параметр тип
P A vect
Q B vect
R C vect
n n integer

 

Форма программы и ее код приводится ниже.

 

Рис.6.3. Вид формы.

 

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics,

Controls, Forms, Dialogs, Buttons, StdCtrls;

 

type

TForm1 = class(TForm)

Label1: TLabel;

Button1: TButton;

BitBtn1: TBitBtn;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.Button1Click(Sender: TObject);

Const

nmax=10;

 

Type

vect=array[1..nmax] of Extended;

Var

n,i:integer;A,B,C:vect;

F1,F2:TextFile;

procedure summa(var P,Q,R:vect;n:integer);//процедура сложения векторов

var i:integer;

begin

for i:=1 to n do R[i]:=P[i]+Q[i]

end;

 

begin

AssignFile(F1,'d:\delph\sumvect\sumvect.txt');reset(F1);

AssignFile(F2,'d:\delph\sumvect\sumvect.res');rewrite(F2);

read(F1,n);//ввод размерностей векторов

for i:=1 to n do read(F1,A[i]);//ввод векторa А

for i:=1 to n do read(F1,B[i]);//ввод вектора В

writeln(F2,'Размерность векторов n=', n);

writeln(F2,'Вектор А');

for i:=1 to n do write(F2,A[i]:7:3);writeln(F2);

writeln(F2,'Вектор B');

for i:=1 to n do write(F2,B[i]:7:3);writeln(F2);

summa(A,B,C,n);//обращение к процедуре

writeln(F2,'Сумма векторов');

for i:=1 to n do write(F2,C[i]:7:3);

CloseFile(F1); CloseFile(F2);

Label1.Caption:='конец';exit;//окончание расчета

end;

end.

 

Исходные данные размещаются в файле sumvect.txt, результаты помещены в файле sumvect.res.

Пример исходных данных:

 

1 -5.1 2 3.2 4 1

-2 3 5.7 3 4.2 1 -6

 

Результаты расчетов:

 

Размерность векторов n=6

Вектор А

1.000 -5.100 2.000 3.200 4.000 1.000

Вектор B

-2.000 3.000 5.700 3.000 4.200 1.000

Сумма векторов

-1.000 -2.100 7.700 6.200 8.200 2.000

Структура полной подпрограммы, создаваемой в процедуре режима OnClick.

Итак, такая подпрограмма в общем случае имеет вид:

 

label

набор меток;

const

набор констант;

type

набор типов;

var

набор переменных;

раздел процедур и функций;

begin

тело подпрограммы

end.

Модули. Структура модуля.

Понятие модуля.

Модуль - автономная программная единица, имеющая следующую структуру:

UNIT имя;{unit-модуль}

INTERFACE

интерфейсная часть

IMPLEMENTATION

исполняемая часть

[ BEGIN

инициирующая часть]

end.

Модуль содержится в файле, имя которого совпадает с именем модуля, но содержит расширение pas. Имя модуля – идентификатор, содержащий не более 63 значащих символов.

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

Исполняемая часть{IMPLEMENTATION} содержит тела процедур и функций модуля, причем заголовки совпадают с заголовками интерфейсной части и порядок следования совпадает с порядком следования заголовков в интерфейсной части.

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

Инициирующая часть может содержать открытие файлов и другие действия. Эта часть может вообще отсутствовать вместе со словом BEGIN (см. квадратные скобки). Заканчивается модуль, как и основная программа, ключевым словом End с точкой.

Каждый модуль компилируется отдельно и в результате создается файл имеющий имя модуля. Рассмотрим модуль, реализующий арифметические действия над комплексными числами.



Поделиться:


Последнее изменение этой страницы: 2016-07-11; просмотров: 373; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.14.253.221 (0.013 с.)