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

Материал из Wiki Mininuniver
Перейти к навигацииПерейти к поиску
(Использование процедур)
(Пример 1.)
Строка 16: Строка 16:
  
 
== Пример 1.==  
 
== Пример 1.==  
[[Изображение:-11-1.jpg]]
+
*'''Условие'''
*Условие
+
Массив A(n) отсортировать в порядке возрастания  элементов.<br>
Алгоритм Евклида для подсчета НОД (наибольшего общего делителя) двух натуральных чисел.
+
Сортировка осуществляется методом выбора.
 
+
Для этого в процедуре max ищется номер максимального элемента. В основном алгоритме максимальный эемент и последний меняются местами. Цикл повторяется до тех пор, пока не останется только один не отсортированный элемент.
*Использованные компоненты
 
3 * label
 
2 * edit
 
2 * button
 
*Программный код
 
  
 +
*'''Использованные компоненты'''
 +
label1 - для текстовых комментарий; <br>
 +
label2 - для текстовых комментарий; <br>
 +
label3 - для текстовых комментарий; <br>
 +
Button1 - для формирования вектора;<br>
 +
Button2 - для вызова процедуры сортировки;<br>
 +
Button3 - для выхода;<br>
 +
StringGrid1 - для вывода исходного массива;<br>
 +
StringGrid2 - для вывода отсортированного массива.<br>
 +
*'''Программный код'''
 
  unit Unit1;
 
  unit Unit1;
 
  interface
 
  interface
 
  uses
 
  uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
+
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, XPMan, Grids, StdCtrls, Buttons;
+
  Dialogs, XPMan, Grids, StdCtrls, Buttons;
 
  type
 
  type
  x=array [1..20] of real;
+
x=array [1..20] of real;
  TForm1 = class(TForm)
+
  TForm1 = class(TForm)
 
     Button1: TButton;
 
     Button1: TButton;
 
     Edit1: TEdit;
 
     Edit1: TEdit;
Строка 64: Строка 69:
 
             if A[l]>m then
 
             if A[l]>m then
 
               begin
 
               begin
                     m:= A[l]; nmax:= l;
+
                     m:= A[l]; nmax:= l
               end;
+
               end
 
  end; {конец описания процедуры}
 
  end; {конец описания процедуры}
 
  procedure TForm1.Button2Click(Sender: TObject);
 
  procedure TForm1.Button2Click(Sender: TObject);
 
  begin
 
  begin
 
  randomize;
 
  randomize;
n:=strtoint(edit1.Text);
+
  n:=strtoint(edit1.Text);
j:=n;
+
  j:=n;
for i:=1 to n do begin
+
  for i:=1 to n do begin
a[i]:=random(11);
+
  a[i]:=random(11);
stringgrid1.Cells[i-1,0]:=floattostr(a[i]);
+
  stringgrid1.Cells[i-1,0]:=floattostr(a[i]);
end;
+
                    end;
 
  end;
 
  end;
 
  procedure TForm1.Button1Click(Sender: TObject);
 
  procedure TForm1.Button1Click(Sender: TObject);

Версия 11:03, 11 апреля 2008

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

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

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

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

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

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

Пример 1.

  • Условие

Массив A(n) отсортировать в порядке возрастания элементов.
Сортировка осуществляется методом выбора. Для этого в процедуре max ищется номер максимального элемента. В основном алгоритме максимальный эемент и последний меняются местами. Цикл повторяется до тех пор, пока не останется только один не отсортированный элемент.

  • Использованные компоненты

label1 - для текстовых комментарий;
label2 - для текстовых комментарий;
label3 - для текстовых комментарий;
Button1 - для формирования вектора;
Button2 - для вызова процедуры сортировки;
Button3 - для выхода;
StringGrid1 - для вывода исходного массива;
StringGrid2 - для вывода отсортированного массива.

  • Программный код
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