Учебный курс Программирование на 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.