冬雪雪冬 发表于 2017-6-14 21:53:36

基本数据类型与表达式05 - 零基础入门学习Delphi006

这节课就简单多了,涉及到的基本概念在前面已经用到了。赋值语句,编程的最基本语句。有两种型式:变量名 := 表达式对象.属性名 := 表达式最需要注意的是delphi赋值用 := 而不是 =下面最说说delphi的常用函数和过程,主要分为数学类函数、字符类函数、日期时间类函数和顺序类函数,实际上这里说的函数也包括一些过程,本课主要介绍前两类。
数学类函数
函数说明参数类型返回值类型
Abs(x)绝对值函数,返回x的绝对值整型或实型与参数相同,但具体是什么整型实型不清楚,帮助中也没说清
Trunc(x)取整函数1,返回x的整数部分ExtendedInt64
Round(x)取整函数2,对x四舍五入取整ExtendedInt64
Int(x)取整函数3,返回x的整数部分ExtendedExtended
Frac(x)取小数函数,返回x的小数部分ExtendedExtended
Sqr(x)平方函数,返回x的平方ExtendedIntegerExtendedInteger
Sqrt(x)平方根函数,返回非负数x的平方根ExtendedExtended
Sin(x)正弦函数,返回弧度制x的正弦值ExtendedExtended
Cos(x)余弦函数,返回弧度制x的余弦值ExtendedExtended
ArcTan(x)反正切函数,返回x的反正切的弧度值ExtendedExtended
Exp(x)e为底的指数函数,返回e的x次方RealReal
Ln(x)自然对数函数,返回x的自然对数RealReal
Rondom(x)随机函数,返回大于等于0小于x的随机数Integer整数
Rondom随机函数,返回大于等于0小于1的随机数-Real
参数的类型虽然的Extended但实际上数据可以是任何实型,甚至是整型,这里选用Extended占字节最多是实型,其他的实型的数据都在它的范围之内,同理Int64也是一样。返回值的类型的Int64 / Extended也能赋值给任何整型 / 实型。Round函数与python并不是严格意义的四舍五入,有人称其为四舍入五成双,举个例子,Round(3.5)为4,而Round(2.5)却不是3而是2,这是因为小数部分为0.5时,它的舍入以形成为整数为偶数为准,但当比2.5大一点点,如2.5000001,得到的值就是3了。Int(x)与Trunc(x)的差别是返回值的数据类型不同。使用Random前最好加上Randomize,否则产生的第一个随机数总是0,且后面的一若干随机数都是同一序列的。我们看到有反正切却没有正切,有Ln却没有Log,这是因为还有不少数学函数在另外的单元中--math单元。Delphi的单元与python的模块有一定的相似性。要想使用这些函数,就必须先引用单元,在Interface后uses引导的部分。与python不同的是,不用在函数名前加上单元名。实际上上面的函数也在一个单元中,system单元,只不过这个单元delphi已缺省引用了。
编写的2个小程序也非常简单:计算不同的函数值

随机产生2个数,你给出相加的值,由程序来验证。

逍遥6688 发表于 2021-11-14 22:40:22

看看cot怎么写的

charwavid 发表于 2023-11-2 15:40:58

数学类函数里的Mandom写成Mondom了

charwavid 发表于 2023-11-2 15:42:42

本帖最后由 charwavid 于 2023-11-2 16:36 编辑

“我的Tan函数用不了,下载站长写的代码可以用。”

问题在于没用引入Math。

charwavid 发表于 2023-11-2 19:21:54

本帖最后由 charwavid 于 2023-11-2 20:32 编辑

对函数和Delphi语法不熟,写了一下午,写了一个和楼主不一样的代码。


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
private
    { Private declarations }
public
    { Public declarations }
end;

var
Form1: TForm1;

implementation
var
x, y : Real;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Randomize;
x := Random(10);
y := Random(10);
Edit1.Text := FloatToStr(x);
Edit2.Text := FloatToStr(y);
Edit3.Text := '';
end;

procedure TForm1.Button2Click(Sender: TObject);
var
_x, _y : Real;
begin
Randomize;
_x := Random;
_y := Random;
//方法1
//x := StrToFloat(FormatFloat('0.00', _x));
//y := StrToFloat(FormatFloat('0.00', _y));
//方法2
x := StrToFloat(Format('%.2f',));
y := StrToFloat(Format('%.2f',));

Edit1.Text := FloatToStr(x);
Edit2.Text := FloatToStr(y);
Edit3.Text := '';
//Edit3.Text := FloatToStr(x + y);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
If (Edit1.Text = '') Or (Edit2.Text = '') Then
    ShowMessage('请点击生成按钮')
Else If Edit3.Text = '' Then
    ShowMessage('请输入答案')
Else If Edit3.Text = FloatToStr(x + y) Then
    ShowMessage('答案正确')
Else
    ShowMessage('答案错误');
end;

end.

星之波比 发表于 2023-11-22 09:31:15

charwavid 发表于 2023-11-2 15:42
“我的Tan函数用不了,下载站长写的代码可以用。”

问题在于没用引入Math。

是的!视频都没说
页: [1]
查看完整版本: 基本数据类型与表达式05 - 零基础入门学习Delphi006