Учебный курс Программирование на Delphi. Модуль 13: различия между версиями

Материал из Wiki Mininuniver
Перейти к навигацииПерейти к поиску
Строка 28: Строка 28:
 
*Программный код
 
*Программный код
  
var a,b,x,y,z:integer;
+
unit Unit1;
 
+
interface
procedure TForm1.BitBtn2Click(Sender: TObject);
+
uses
  begin \\Начало процедуры
+
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
close;
+
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);
*Т.е. при нажатии на кнопку BitBtn1 будет сделано следующее
+
  begin
 
+
  close;
  begin   
 
a:=strtoint(edit1.Text);
 
b:=strtoint(edit2.Text);
 
  x:=a; y:=b;
 
    while (x<>y) do
 
      if x>y then x:=x-y
 
              else y:=y-x;
 
      z:=x;
 
label3.Caption:='НОД= '+inttostr(z);
 
 
  end;
 
  end;
  end.
+
  end.
*Форма с результатом работы программы
 
[[Изображение:-4-1.JPG]]
 
== Пример 2.==
 
*Условие
 
 
 
*Использованные компоненты
 
 
 
*Программный код
 
 
 
var n:integer;
 
      s,z,e:real;
 
procedure TForm1.BitBtn2Click(Sender: TObject);
 
begin
 
close;
 
end;
 
 
 
procedure TForm1.BitBtn1Click(Sender: TObject);
 
begin
 
e:=strtofloat(edit1.Text);
 
  n:=1; z:=1/6; s:=0;
 
    while abs(z)>=e do
 
      begin
 
        s:=s+z;
 
        n:=n+1;                         
 
        z:=n/((n+1)*(n+2));
 
      end;
 
label2.Caption:='Сумма= '+floattostr(s);
 
end;
 
 
 
end.
 
  
 
==Задание==
 
==Задание==

Версия 09:04, 10 апреля 2008

Использование процедур

Использование процедур

Часто в программе появляются участки, выполняющие одни и те же действия с различными данными. Такие участки лучше всего оформлять в виде подпрограмм. Выделяют два вида подпрограмм: Процедуры и функции. Процедурой называют особенным образом оформленный фрагмент программы, имеющий собственное имя. В заголовке процедуры, может быть задан список формальных параметров.При вызове процедур, формаллные параметры, будут заменены фактическими.

В Delphi7, объявление процедур происходит автоматически при создании действия с элементом. Создать такое действие можно либо просто дважды щёлкнув на объекте (click), либо выбрав нужное действие из подменю events в object inspector

Пример объявления процедуры:

procedure TForm1.Button1Click(Sender: TObject); Эта строка означает, что если нажать (click) на кнопку button1, находящуюся на форме form1, то будут выполнятся действия, которые указаны ниже.


Fcreate.jpg

Пример 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

Литература

  1. Архангельский. Программирование на Delphi 6. – М: БИНОМ, 2002
  2. Бобровский С. Delphi 7. Учебный курс. – СПб: Питер, 2003
  3. Культин Н. Основы программирования в Delphi 7. СПб: БХВ-Петербург, 2005.


Ссылки

Учебный курс Программирование на Delphi

Учебный план курса Программирование на Delphi