基本数据类型与表达式03 - 零基础入门学习Delphi004
这节课就轻松多了,主要学习运算符,delphi一共有8类运算符,这次只学习最简单的算术运算符。符号名称解释
单目运算符
+取正运算符取其数值本身,结果的类型同原数据,仅右边有运算对象时使用
-取负运算符取其数值相反数,结果的类型同原数据,仅右边有运算对象时使用
双目运算符
+加法运算符符号与取正运算符相同,在左右两边都有运算对象时使用,结果类型为两个运算对象精度高的
-减法运算符符号与取负运算符相同,在左右两边都有运算对象时使用,结果类型为两个运算对象精度高的
*乘法运算符结果类型为两个运算对象精度高的
/除法运算符即使两个运算对象都是整数,结果也为浮点数,除数不能为零
Div整除运算符两个运算对象只能是整数,结果也是整数,除数不能为零
Mod取余(取模)运算符两个运算对象只能是整数,结果也是整数,除数不能为零
这里用Div和Mod取代python的//和%,好处是望文生义,很明确的告诉你要干什么,坏处就是需要多打些字,与之类似的C语言用{},delphi用begin end。小甲鱼没有讲到的是优先级。我自己尝试了一下:+、-(取正取负) > *、/、Div、Mod > +、-(加减)另外有括号的更优先。 另外慎重做Mod的负数运算,不同的程序语言会有不同的结果。这里从度娘摘录一段。取模运算(“Modulo Operation”)和取余运算(“Complementation ”)两个概念有重叠的部分但又不完全一致。主要的区别在于对负整数进行除法运算时操作不同。取模主要是用于计算机术语中。取余则更多是数学概念。取余运算区别编辑对于整型数a,b来说,取模运算或者求余运算的方法都是:1.求 整数商: c = a/b;2.计算模或者余数: r = a - c*b.求模运算和求余运算在第一步不同: 取余运算在取c的值时,向0 方向舍入(fix()函数);而取模运算在计算c的值时,向负无穷方向舍入(floor()函数)。例如:计算-7 Mod 4那么:a = -7;b = 4;第一步:求整数商c,如进行求模运算c = -2(向负无穷方向舍入),求余c = -1(向0方向舍入);第二步:计算模和余数的公式相同,但因c的值不同,求模时r = 1,求余时r = -3。归纳:当a和b符号一致时,求模运算和求余运算所得的c的值一致,因此结果一致。当符号不一致时,结果不一样。求模运算结果的符号和b一致,求余运算结果的符号和a一致。另外各个环境下%运算符的含义不同,比如c/c++,java 为取余,而python则为取模。 再次进入编程阶段,这回我们要编写一个计算器,给出2个数,分别按加减乘除按钮得到结果。
程序很简单,设计3个Edit控件,2个Label,4个Button,要求在鼠标点击Edit时清空其内容,点击加减乘除按钮则把Label1的Caption改为相应的内容,并把结果放入Edit3中。为了减少篇幅,我只把除法的过程放上来。
procedure TForm1.Edit1Click(Sender: TObject);
begin
Edit1.Text := ''
end;
procedure TForm1.Edit2Click(Sender: TObject);
begin
Edit2.Text := ''
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Edit3.Text := FloatToStr(StrToFloat(Edit1.Text) / StrToFloat(Edit2.Text));
Label1.Caption := '÷'
end;
我们发现一个有意思现象,即如果计算结果为整数时,虽然数据类型仍是浮点数,但FloatToStr函数会自动取整,这样显示对用户更友好。另外FloatToStr不仅可以转换浮点数,也可以转化整数。在小甲鱼的视频中误键入了Edit的Change事件,再其过程编写了内容,其后的删除是先删除这个过程,再删除其声明,比较复杂,其实只要把过程体的内容清空,即begin和end之间的内容清空,等保存程序或运行程序时,delphi会自动删除没有内容的事件过程和声明。
这个程序还有些需要优化的地方,Edit3是显示结果的地方,但仍可输入内容,可改为Label或仍用Edit但ReadOnly属性改为True;再次键入数值时,上次的运算结果还保留着,可以在Edit1和2的Click中加上Edit3内容清空。此外没有对输入的是否是数值以及除数是否为0做判断,因为还没学到if语句,就不展开了。
{:7_146:} 顶顶更健康 {:7_123:}
页:
[1]