Учебный курс Программирование на 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.
- Форма с результатом работы программы
Пример 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
Литература
- Архангельский. Программирование на Delphi 6. – М: БИНОМ, 2002
- Бобровский С. Delphi 7. Учебный курс. – СПб: Питер, 2003
- Культин Н. Основы программирования в Delphi 7. СПб: БХВ-Петербург, 2005.