以文本方式查看主题 - 中华农历论坛 (http://bbs.nongli.net/index.asp) -- 历法知识 (http://bbs.nongli.net/list.asp?boardid=2) ---- [推荐]汉语编程中级教材第三章第三节《汉语编程中的运算方法》 (http://bbs.nongli.net/dispbbs.asp?boardid=2&id=16452) |
||
-- 作者:秦汉昌 -- 发布时间:2008/12/27 18:27:00 -- [推荐]汉语编程中级教材第三章第三节《汉语编程中的运算方法》
|
||
-- 作者:秦汉昌 -- 发布时间:2008/12/27 18:29:00 -- 对用数摞上的两层来表示的数,不能简单的用“+”、“-”来完成,而应用“双+”、“双-”来完成,且运算结果也占数摞的两层。下面是加减运算实际操作实例: 2 8 <回车> ★.. (注:向数摞放了两个数:2和8) 看数摞<回车> [2] 2 8 ★.. (注:用“看数摞”查看数摞的状态) + 看数摞<回车> [1] 10 ★. (注:经过“+”运算后数摞的状态) 说明:最后数摞上的“10”就是“2+8”的结果。经过“+”运算后,将数摞上的“2和8”去掉,留下结果“10”。加法运算的数摞状态为: + ( n1 n2 --- n3 ) 11<回车>★.. (注:继续向数摞放进一个数11) 看数摞<回车>[2] 10 11★.. - 看数摞<回车>[1] –1★. |
||
-- 作者:秦汉昌 -- 发布时间:2008/12/27 18:29:00 -- 说明:最后数摞上的“-1”就是“10-11”的结果。经过“-”运算后,将数摞上的“10”和“11”去掉,留下结果“-1”。减法运算的数摞状态为: - ( n1 n2 --- n1 - n2 ) 10 9 1 5 <回车> ★.... 看数摞<回车> [4] 10 9 1 5 ★.... 双+ 看数摞<回车> [2] 11 14 ★..(注:经过“双+”后数摞上留下的运算结果) 10 <回车> ★... 看数摞<回车> [3] 11 14 10 ★... 双+ 看数摞<回车> [1] 21 ★. (注:将10和11相加,丢失14) 3<回车> ★.. 看数摞<回车> [2] 21 3 ★.. 双+ 看数摞<回车> 数摞已空!★ 3 6 9 5 8 15<回车> ★...... 看数摞<回车> [6] 3 6 9 5 8 15 ★...... 双+ 看数摞<回车> [4] 3 6 17 20 ★.... 由该例可知,“双+”运算是对数摞顶上的4个数进行交叉运算,如果对两个数进行“双+”运算,则数摞为空;如果数摞上只有三个数,只能对第0项和第二项进行相加运算,而丢掉第一项;如果数摞上的数多于4个,则只对摞顶4个数进行交叉运算,其它的数不进行运算。双+数摞状态为: 双+ ( d1 d2 --- d3 ) 同样道理,我们也可以进行“双-”运算,大家可以自己练习,这里不再赘述。 |
||
-- 作者:秦汉昌 -- 发布时间:2008/12/27 18:29:00 -- (二) 数的乘除运算 汉语编程中有符号数的乘法运算与加法运算相同,操作前数摞上有两个有符号数,当执行完“*”后,参与运算的数摞被“吃掉”,留下两个数相乘的积。如: 2 8 <回车> ★.. (注:向数摞放进两个数:2、8) 看数摞<回车> [2] 2 8 ★.. (注:用“看数摞”查看数摞上的状态) * 看数摞<回车> [1] 16 ★. (注:经过“*”运算后数摞上的的状态) 说明:最后数摞上的“16”就是“2*8”的结果。经过“*”运算后,将数摞上的“2”和“8”去掉,留下结果“16”。乘法运算的数摞状态为: * ( n1 n2 --- n3 ) n3是n1与n2的乘积,n3是32位,如果n1与n2的乘积超出-2147483648~2147483647的范围,其结果不可预测。由于在-2147483648~2147483647范围内的数已经足够使用,因此不用考虑数据溢出的问题。 除法与乘法是相对应的,汉语编程语言中的除法操作也会遇到有符号和无符号、单精度和双精度以及混合运算等问题。另外在除法运算时还存在商数的取整问题。在汉语编程中为方便计算机的运算,采用了向下取整的方法。如按向下取整的方法做 -7÷4=-2 余 +1 而用向零取整的方法得出上面的结果后还必须加1才对,在整数运算中采用了向下取整,则应考虑余数的符号必须与除数相同。总之应该为: 商*除数+余数=被除数 以上是整数运算中需要了解的基本知识,在汉语程序设计语言的程序设计中可以通过各种除法运算词来完成不同类型的除法运算。如: / ( n1 n2 ――― <商> ) 数摞上留下n1除以n2的带符号32位的下整商。 求余数 ( n1 n2 ――― <余数> ) 数摞上留下n1除以n2的余数,余数具有与n2相同的符号或者为零。 /余商 ( n1 n2 ――― <余数> <商> ) 数摞上留下n1除以n2的余数和带符号的下整商。余数取除数的符号或为零。 |
||
-- 作者:秦汉昌 -- 发布时间:2008/12/27 18:30:00 -- (三) 浮点数运算 汉语程序设计语言整合了浮点数、整数的处理的问题。所谓浮点数也是计算机采用的一种表示法,它把一个数的整数部分和小数部分分开表示。 采用浮点数表示法有很多的优点。在相同设备的情况下,浮点数能表示数的范围比定点数表示法要大,给程序设计带来方便;浮点计算中的数若采用规格化表示,则其精度较高,相对误差有限;由于能表示的数的范围很大,一般来说可以不必担心“溢出”问题。 汉语编程中的浮点数运算也就是将两个浮点数进行加、减、乘、除运算,运算后,按五舍六入的法则将小数点后按预先的定义保留若干位小数。定义小数位的格式为:n 位小数,如在汉语编程编译器下进行下列运算: 2.2 8.5<回车> ★.. (注:向数摞放了两个数:2.2 8.5) + 显<回车> [1] 10.70 ★ (注:经过“+”运算后,用“显”这个词显示运算的结果“10.70”并将结果删除 ) 3 位小数<回车>★ (注:定义需要保留的小数的位数) 2.523 3.412 <回车>★.. + 显<回车> [1] 5.935 ★ 4 位小数<回车>★ 8.599 2.314 <回车>★.. - 显<回车> [1] 6.2850 ★ 汉语编程浮点运算在保留小数位时要遒循五舍六入的规则,这与我们习惯的四舍五入不同,要注意区别对待。如进行如下运算: 4 位小数<回车>★ 2.03695 0.12362 + 显<回车>2.1606★ 3.22236 2.98756 * 显<回车>9.6270★ 总之,汉语编程中的算术运算与通常的数学算术运算基本一样,所不同的是它参与运算的数必须是同一类型,且是通过数摞来进行运算。 |
||
-- 作者:秦汉昌 -- 发布时间:2008/12/27 18:31:00 -- 二、 逻辑运算 逻辑运算要比算术运算简单的多,因为其参与运算的数和运算结果按位来看都只有两种状态:0和1。在这里0和1不是表示具体的数值,而表示两种不同的逻辑状态(一般用0表示假,1表示真),逻辑运算中的最基本的运算有三种,即与、或、非三种,也叫逻辑乘、逻辑加、逻辑求反。 (一) 逻辑乘法 (与) 逻辑乘法运算就是将两个基本命题用“与”这个系统词连接起来构成一个复合命题。 如基本命题: 一个星期有七天 一天有二十四小时 用“与”连接起来的复合命题: 一个星期有七天 与 一天有二十四小时 由这样的复合命题得出的结果(逻辑积),仍然是命题,重要的一点是要搞清逻辑积的真假是怎样由命题的真假来决定。总结逻辑乘法(与)的运算规则如下: 1.如果两个基本命题都是假的,它们的逻辑积也是假的。如: 3比2小 与 3比5大。 很明显“3比2小”是假的,“3比5大”也是假的,所以逻辑积也是假的。 2.两个基本命题中有一个是假的,则逻辑积也是假的。如: 3比2大 与 3比5大 “3比2大”是真的,“3比5大”是假的,所以逻辑积也是假的。 |
||
-- 作者:秦汉昌 -- 发布时间:2008/12/27 18:43:00 -- 3.两个基本命题都是真的,则逻辑积也是真的。如: 3比2大 与 3比5小 “3比2大”是真的,“3比5大”也是真的,因此逻辑积也是真的。 如果用A和B表示两个基本命题,可以将逻辑积写成AB(也可写成AΛB或A·B)总结以上三点,可以将其列成一个表。 我们一般把这个表叫做命题A、B的真值表。总结这个表,可以得出逻辑乘法运算规则是:有一命题为假逻辑积则为假,全部命题为真时逻辑积才为真。 |
||
-- 作者:秦汉昌 -- 发布时间:2008/12/27 18:46:00 -- (二) 逻辑加法 (或) 逻辑加法运算就是将两个基本命题用“或”连接起来构成复合命题。由这样的复合命题得出的结果就是逻辑和,逻辑和的值为“0”或“1”,全由组成这个复合命题的基本命题来决定,总结逻辑加法(或)运算的运算规则如下: 1.两个基本命题都为假,则逻辑和也为假。如: 9小于5 或 9小于1 由“9小于5”和“9小于1”都是假命题,所也逻辑积就为假。 2.两个基本命题有一为真,则逻辑和就为真。 3.两个基本命题都为真,则逻辑和也为真。 若用A和B表示两个基本命题,总结以上三点可以得出逻辑和(A+B)的真值表如下: |
||
-- 作者:秦汉昌 -- 发布时间:2008/12/27 18:48:00 -- (三) 逻辑求反运算 (非) 逻辑求反运算就是将一个基本命题用“非”这个系统词连接起来组成复合命题。逻辑求反运算的结果完全由这一个基本命题来决定。由于是“求反”运算,所以很显然也看出,如要基本命题为真,则结果就应为假,如果基本命题为假,求反后,结果就应为真。 若用A表示这个基本命题,求反后的结果就应表示为_A,则逻辑求反运算的真值表可表示为: |
||
-- 作者:秦汉昌 -- 发布时间:2008/12/27 18:50:00 -- (四) 逻辑表达式 逻辑表达式就是用与、或、非等符号将基本命题连接起来的复杂的复合命题。如果用A、B、C分别表示三个基本命题,则(A+B)·C就是一个逻辑表达表,其意义是:A和B相或,结果再和C与。因此表达式(A+B)·C也可以表示为:(A或B)与C。其运算规则仍然遵循与、或、非的运算规则,其运算结果仍只有两种“0”或“1”。 若在同一逻辑表达表中同时有“与”运算、“或”运算和“非”运算,则按先“非”,后“与”,再“或”的规则省去括号。如“(AB)+(CD)”可写成“AB+CD”,而“(A+B)•(C+D)”不能写成“A+B•C+D”。 逻辑表达式的基本类型有以下几种: 总之,一个逻辑表达式有很多种形式,也可能很复杂。因此,通常要对逻辑表达式进行简化以取得最简表达形式。 |