var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
С, D, Summa: Integer;
procedure Sum(A, B: Integer; var S:integer);
begin
S:=A+B;
end;
|
C:=StrToInt(Edit_с.Text);
D:=StrToInt(Edit_d.Text);
Sum(C, D,Summa);
Edit_S:=IntToStr(Summa);
end;
Программа суммирования двух чисел, реализованная с помощью функции.
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
С, D, Summa: Integer;
function Sum(A, B: Integer): Integer;
begin
Result:=A+B;
end;
Begin
С:=StrToInt(Edit_c.Text);
D:=StrToInt(Edit_d.Text);
|
Edit_S:=IntToStr(Summa);
end;
При использовании процедур и функций в программах переменные объявляются несколько раз в головной программе и в подпрограммах. Для правильного определения области действия идентификаторов (переменных), необходимо придерживаться следующих правил:
1. Каждая переменная должна быть описана перед тем, как она будет использована.
2. Областью действия переменной является та подпрограмма, в которой она описана.
3. Все переменные в подпрограммах должны быть уникальными.
4. Одна и та же переменная может быть по-разному определена в каждой из подпрограмм.
5. Если имя подпрограммы совпадает с именем стандартной подпрограммы, то данная стандартная подпрограмма игнорируется, а выполняется подпрограмма пользователя.
Переменные и типы, определенные в главной программе до определения процедур и функций, называются глобальными и доступны всем функциям и процедурам. Однако, если внутри какой-либо процедуры встречается переменная с таким же именем, что и глобальная переменная, то внутри этой процедуры будет действовать локальное описание.
Пример 10. Вычислить среднее арифметическое массивов А=(A1,A2,….A5), B=(B1,B2,….B4), C=(C1,C2,….C7) и записать результат в массив G=(G1,G2,G3). Элементы массивов задаются формулами:
Ai=2i+3 для i= ; Bj=7,5j-20 для j= ; Сk= -1,5k+4 для k= .
Вычисление элементов массива оформить в виде процедуры.
Вычисление среднего арифметического оформить в виде функции.
Входные данные: для каждого массива – его размерность и пара коэффициентов для вычисления элементов.
Выходные данные: массивы А, В, С; вектор G.
Заметим, что элементы массивов вычисляются по одной и той же формуле, но с разными коэффициентами:
Ai = k1×i + k2, где k1 = 2, k2 = 3, i= ;
Bj = k1×j + k2, где k1 = 7.5, k2 = -20, j= ;
Сk = k1×k + k2, где k1 = -1.5, k2 = 4, k= .
Для решения задачи составим две подпрограммы:
1) процедуру FORM, которая формирует массив по параметрам n, k1, k2, где n – размерность массива;
2) функцию SRED, которая вычисляет среднее арифметическое массива.
Обе подпрограммы объявим внутри процедуры обработки щелчка на кнопке «Вычисление».
Процедура FORM формирует массив Х и выводит в поле Memo строку с именем массива и сам массив. Для этого ей необходимо знать размерность массива, его имя икоэффициенты k1, k2. Размерность массива n и его имя name (символьная переменная) передадим процедуре в качестве входных параметров, а коэффициенты k1, k2 передадим как глобальные для FORM переменные (т.е. объявленные выше самой FORM) – для демонстрации еще одного способа обмена данными между процедурой и вызывающей программой. Выходным параметром FORM является сформированный массив Х.
Функция SRED возвращает в вызывающую программу среднее арифметическое массива. Ее входными параметрами будут массив и его размерность.
Блок-схемы алгоритмов, реализуемых подпрограммами, показаны на рисунках 10.1 и 10.2, а основного алгоритма – на рисунке 10.3. Скомпонуем форму, показанную на рисунке 10.4. Результат работы приложения показан на рисунке 10.5.
Рисунок 10.4 - Исходная форма после переименования объектов
Рисунок 10.5 - Форма с результатами