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

Материал из НГПУ им. К.Минина
Перейти к: навигация, поиск
Строка 2: Строка 2:
 
Функция отличается от процедуры тем,что результат ее работы возвращается в виде значения этой
 
Функция отличается от процедуры тем,что результат ее работы возвращается в виде значения этой
 
функции и,следовательно,вызов функции может использоваться наряду наряду с другими операндами в выражениях.
 
функции и,следовательно,вызов функции может использоваться наряду наряду с другими операндами в выражениях.
Формат операторов:
 
  
 +
Пример программы с использованием функций:
 +
 +
unit Unit2;
 +
 +
interface
 +
 +
uses
 +
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 +
  Dialogs, StdCtrls, ExtCtrls, Grids, XPMan, Buttons;
 +
 +
type
 +
  TForm1 = class(TForm)
 +
    Edit1: TEdit;
 +
    Edit2: TEdit;               
 +
    Edit3: TEdit;
 +
    Label1: TLabel;
 +
    Label2: TLabel;
 +
    Label3: TLabel;
 +
    Label4: TLabel;
 +
    Label5: TLabel;
 +
    XPManifest1: TXPManifest;
 +
    BitBtn1: TBitBtn;
 +
    BitBtn2: TBitBtn;
 +
 
 +
    procedure BitBtn2Click(Sender: TObject);
 +
    procedure BitBtn1Click(Sender: TObject);
 +
  private
 +
    { Private declarations }
 +
  public
 +
    { Public declarations }
 +
  end;
 +
 +
var
 +
  Form1: TForm1;
 +
 +
implementation
 +
 +
{$R *.dfm}
 +
function max (x,y: real): real;
 +
    begin
 +
        if x > y
 +
            then  max:=x
 +
            else  max:=y
 +
    end;
 +
 +
 +
 +
var z, a, b, c: real;
 +
procedure TForm1.BitBtn2Click(Sender: TObject);
 +
begin
 +
 +
 +
    begin
 +
      a:=strtoint(edit1.Text);
 +
      b:=strtoint(edit2.text);
 +
      c:=strtoint(edit3.Text);
 +
      z:=(max(a, b+c) + max(a+b, c*c))/(1+ max(a+b*c, 12));
 +
      Label4.Caption:=floattostr(z);
 +
end;
 +
end;
 +
 +
procedure TForm1.BitBtn1Click(Sender: TObject);
 +
begin
 +
close;
 +
end;
 +
 +
end.
 
while условие do оператор;
 
while условие do оператор;
  

Версия 09:07, 1 марта 2008

Использование функций

Функция отличается от процедуры тем,что результат ее работы возвращается в виде значения этой функции и,следовательно,вызов функции может использоваться наряду наряду с другими операндами в выражениях.

Пример программы с использованием функций:

unit Unit2;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls, Grids, XPMan, Buttons;

type

 TForm1 = class(TForm)
   Edit1: TEdit;
   Edit2: TEdit;                
   Edit3: TEdit;
   Label1: TLabel;
   Label2: TLabel;
   Label3: TLabel;
   Label4: TLabel;
   Label5: TLabel;
   XPManifest1: TXPManifest;
   BitBtn1: TBitBtn;
   BitBtn2: TBitBtn;
  
   procedure BitBtn2Click(Sender: TObject);
   procedure BitBtn1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var

 Form1: TForm1;

implementation

{$R *.dfm} function max (x,y: real): real;

    begin
        if x > y
           then  max:=x
           else  max:=y
    end;


var z, a, b, c: real; procedure TForm1.BitBtn2Click(Sender: TObject); begin


    begin
     a:=strtoint(edit1.Text);
     b:=strtoint(edit2.text);
     c:=strtoint(edit3.Text);
     z:=(max(a, b+c) + max(a+b, c*c))/(1+ max(a+b*c, 12));
     Label4.Caption:=floattostr(z);

end; end;

procedure TForm1.BitBtn1Click(Sender: TObject); begin close; end;

end. while условие do оператор;

repeat операторы until условие;

условие – логическое выражение.

В операторе while сначала вычисляется логическое выражение и если оно истинно, то выполняется оператор. После этого управление возвращается в начало цикла на вычисление логического выражения. Если условие ложно, оператор завершает работу и управление передаётся на следующий оператор.

В операторе repeat сначала выполняются операторы, и только потом вычисляется логическое выражение. Если оно ложно, то управление возвращается в начало цикла, повторяется выполнение операторов тела цикла. Если условие истинно – то выход из цикла.

Пример 1.

  • Условие

Алгоритм Евклида для подсчета НОД (наибольшего общего делителя) двух натуральных чисел.

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


  • Программный код

var a,b,x,y,z:integer;

procedure TForm1.BitBtn2Click(Sender: TObject); begin close; end;

procedure TForm1.BitBtn1Click(Sender: TObject);
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.

  • Форма с результатом работы программы

-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.

  • Форма с результатом работы программы

Пример 3.

  • Условие
  • Использованные компоненты
  • Программный код

var x1,x2,d,e,m:real; procedure TForm1.BitBtn2Click(Sender: TObject); begin close; end;

procedure TForm1.BitBtn1Click(Sender: TObject); begin m:=strtofloat(edit1.Text); e:=strtofloat(edit2.Text); x1:=m;

 repeat
   x2:=2/3*x1+m/3/sqr(x1);
   d:=abs(x1-x2);
   x1:=x2;                   
 until d<=e;

label3.Caption:='Корень= '+floattostr(x2); end;

end.

  • Форма с результатом работы программы


Задание

Таблица 13

Таблица 14

Литература

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


Ссылки

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

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