Учебный курс Программирование на Delphi. Модуль 13: различия между версиями
| Строка 28: | Строка 28: | ||
*Программный код | *Программный код | ||
| − | var a, | + | unit Unit1; |
| − | + | interface | |
| − | procedure TForm1. | + | uses |
| − | begin | + | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, |
| − | + | Dialogs, XPMan, Grids, StdCtrls, Buttons; | |
| + | type | ||
| + | x=array [1..20] of real; | ||
| + | TForm1 = class(TForm) | ||
| + | Button1: TButton; | ||
| + | Edit1: TEdit; | ||
| + | Label1: TLabel; | ||
| + | StringGrid1: TStringGrid; | ||
| + | Label2: TLabel; | ||
| + | Button2: TButton; | ||
| + | StringGrid2: TStringGrid; | ||
| + | Label3: TLabel; | ||
| + | XPManifest1: TXPManifest; | ||
| + | BitBtn1: TBitBtn; | ||
| + | procedure Button1Click(Sender: TObject); | ||
| + | procedure Button2Click(Sender: TObject); | ||
| + | procedure BitBtn1Click(Sender: TObject); | ||
| + | private | ||
| + | { Private declarations } | ||
| + | public | ||
| + | { Public declarations } | ||
| + | end; | ||
| + | var | ||
| + | Form1: TForm1; | ||
| + | a:x; i, j, n, k: integer; R: real; | ||
| + | implementation | ||
| + | {$R *.dfm} | ||
| + | procedure max (q: integer; var nmax: integer); | ||
| + | var m: real; l: integer; | ||
| + | begin | ||
| + | m:=A[1]; nmax:=1; | ||
| + | for l:=1 to q do | ||
| + | if A[l]>m then | ||
| + | begin | ||
| + | m:= A[l]; nmax:= l; | ||
| + | end; | ||
| + | end; {конец описания процедуры} | ||
| + | procedure TForm1.Button2Click(Sender: TObject); | ||
| + | begin | ||
| + | randomize; | ||
| + | n:=strtoint(edit1.Text); | ||
| + | j:=n; | ||
| + | for i:=1 to n do begin | ||
| + | a[i]:=random(11); | ||
| + | stringgrid1.Cells[i-1,0]:=floattostr(a[i]); | ||
end; | end; | ||
| − | + | end; | |
| − | + | procedure TForm1.Button1Click(Sender: TObject); | |
| + | begin {основная программа} | ||
| + | while j <> 1 do | ||
| + | begin | ||
| + | max (j, k); | ||
| + | R:= A[k]; A[k]:= A[j]; A[j]:= R; | ||
| + | j:= j-1; | ||
| + | end; | ||
| + | for i:=1 to n do | ||
| + | stringgrid2.Cells[i-1,0]:=floattostr(a[i]); | ||
| + | end; | ||
procedure TForm1.BitBtn1Click(Sender: TObject); | procedure TForm1.BitBtn1Click(Sender: TObject); | ||
| − | + | begin | |
| − | + | close; | |
| − | begin | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
end; | end; | ||
| − | + | end. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | end. | ||
==Задание== | ==Задание== | ||
Версия 09:04, 10 апреля 2008
Использование процедур
Часто в программе появляются участки, выполняющие одни и те же действия с различными данными. Такие участки лучше всего оформлять в виде подпрограмм. Выделяют два вида подпрограмм: Процедуры и функции. Процедурой называют особенным образом оформленный фрагмент программы, имеющий собственное имя. В заголовке процедуры, может быть задан список формальных параметров.При вызове процедур, формаллные параметры, будут заменены фактическими.
В Delphi7, объявление процедур происходит автоматически при создании действия с элементом. Создать такое действие можно либо просто дважды щёлкнув на объекте (click), либо выбрав нужное действие из подменю events в object inspector
Пример объявления процедуры:
procedure TForm1.Button1Click(Sender: TObject); Эта строка означает, что если нажать (click) на кнопку button1, находящуюся на форме form1, то будут выполнятся действия, которые указаны ниже.
Пример 1.
- Условие
Алгоритм Евклида для подсчета НОД (наибольшего общего делителя) двух натуральных чисел.
- Использованные компоненты
3 * label 2 * edit 2 * button
- Программный код
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, XPMan, Grids, StdCtrls, Buttons;
type
x=array [1..20] of real;
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
StringGrid1: TStringGrid;
Label2: TLabel;
Button2: TButton;
StringGrid2: TStringGrid;
Label3: TLabel;
XPManifest1: TXPManifest;
BitBtn1: TBitBtn;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a:x; i, j, n, k: integer; R: real;
implementation
{$R *.dfm}
procedure max (q: integer; var nmax: integer);
var m: real; l: integer;
begin
m:=A[1]; nmax:=1;
for l:=1 to q do
if A[l]>m then
begin
m:= A[l]; nmax:= l;
end;
end; {конец описания процедуры}
procedure TForm1.Button2Click(Sender: TObject);
begin
randomize;
n:=strtoint(edit1.Text);
j:=n;
for i:=1 to n do begin
a[i]:=random(11);
stringgrid1.Cells[i-1,0]:=floattostr(a[i]);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin {основная программа}
while j <> 1 do
begin
max (j, k);
R:= A[k]; A[k]:= A[j]; A[j]:= R;
j:= j-1;
end;
for i:=1 to n do
stringgrid2.Cells[i-1,0]:=floattostr(a[i]);
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
close;
end;
end.
Задание
Таблица 13
Таблица 14
Литература
- Архангельский. Программирование на Delphi 6. – М: БИНОМ, 2002
- Бобровский С. Delphi 7. Учебный курс. – СПб: Питер, 2003
- Культин Н. Основы программирования в Delphi 7. СПб: БХВ-Петербург, 2005.
