中华农历论坛知识讨论区历法知识 → [推荐]汉语编程中级教材第三章第三节《汉语编程中的运算方法》


  共有19810人关注过本帖树形打印

主题:[推荐]汉语编程中级教材第三章第三节《汉语编程中的运算方法》

帅哥哟,离线,有人找我吗?
秦汉昌
  1楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:业余侠客 帖子:372 积分:1447 威望:0 精华:0 注册:2008/12/20 18:10:00
[推荐]汉语编程中级教材第三章第三节《汉语编程中的运算方法》  发帖心情 Post By:2008/12/27 18:27:00

图片点击可在新窗口打开查看

    | 汉编新闻 | 汉编加盟 | 汉编商城 | 汉编网校 | 汉编下载 | 汉编视频 | 汉编游戏 | 汉编荣誉 | 汉编留言 | 汉编论坛 | 汉编邮箱 | 汉编招聘

第三章第三节  汉语编程中的运算方法

   

前几节我们主要对汉语程设计语言做了基本的介绍,并从实用的角度介绍了一些基本的操作,对于算术运算只是从应用的角度简单地做了尝试。本节我们将着重地讨论汉语程序设计语言的算术运算和逻辑运算。

一、  算术运算

对于算术运算,我们从数的加减运算、乘除运算和浮点运算三个方面来讲述。

() 数的加减运算

说到加、减、乘、除运算,大家肯定认为小学就学过加、减、乘、除,没必要再学了。其实编写计算机程序用到的主要还是古老的算术知识,高中、大学学到的许多高等数学知识不能被计算机直接解析。汉语程序设计语言的加、减、乘、除运算都是将数摞上的两个32位的数进行运算,同时“吃掉”参与运算的两个顶层数,将运算的结果放回数摞的顶层。

这样的运算只能对有符号数-231+231-1(-21474836482147483647)之间的数进行运算,且运算结果也不能小于-2147483648和大于2147483647。一般情况下这个范围内的数是够用了,那如果不够用怎么办呢?在汉语程序设计语言中,各种运算和操作都是通过数摞进行的,数摞的每一层为一个32位的数,要表示更大的数可以有数摞的多层来表示。如果用数摞上的两层来表示一个数,我们就称这个数为双精度数,一个双精度数表示有符号数的范围就为:-263+263-1


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
秦汉昌
  2楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:业余侠客 帖子:372 积分:1447 威望:0 精华:0 注册:2008/12/20 18:10:00
  发帖心情 Post By:2008/12/27 18:29:00

对用数摞上的两层来表示的数,不能简单的用“+”、“-”来完成,而应用“双+”、“双-”来完成,且运算结果也占数摞的两层。下面是加减运算实际操作实例:

2  8 <回车> ..              (注:向数摞放了两个数:28)

看数摞<回车> [2] 2  8 ..     (注:用“看数摞”查看数摞的状态)

  看数摞<回车> [1] 10 .    (注:经过“+”运算后数摞的状态)

说明:最后数摞上的“10”就是“28”的结果。经过“+”运算后,将数摞上的“28”去掉,留下结果“10”。加法运算的数摞状态为:

+   ( n1  n2 --- n3 )

11<回车>..                 (注:继续向数摞放进一个数11)

看数摞<回车>[2] 10  11..

- 看数摞<回车>[1] 1.


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
秦汉昌
  3楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:业余侠客 帖子:372 积分:1447 威望:0 精华:0 注册:2008/12/20 18:10:00
  发帖心情 Post By: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  .     (注:将1011相加,丢失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 )

同样道理,我们也可以进行“双-”运算,大家可以自己练习,这里不再赘述。


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
秦汉昌
  4楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:业余侠客 帖子:372 积分:1447 威望:0 精华:0 注册:2008/12/20 18:10:00
  发帖心情 Post By:2008/12/27 18:29:00

 () 数的乘除运算

汉语编程中有符号数的乘法运算与加法运算相同,操作前数摞上有两个有符号数,当执行完“*”后,参与运算的数摞被“吃掉”,留下两个数相乘的积。如:

2  8 <回车> ..           (注:向数摞放进两个数:28)

看数摞<回车> [2] 2  8 ..   (注:用“看数摞”查看数摞上的状态)

*  看数摞<回车> [1] 16 .  (注:经过“*”运算后数摞上的的状态)

说明:最后数摞上的“16”就是“2*8”的结果。经过“*”运算后,将数摞上的“2”和“8”去掉,留下结果“16”。乘法运算的数摞状态为:

*   ( n1  n2 --- n3 )

n3n1n2的乘积,n332位,如果n1n2的乘积超出-21474836482147483647的范围,其结果不可预测。由于在-21474836482147483647范围内的数已经足够使用,因此不用考虑数据溢出的问题。

除法与乘法是相对应的,汉语编程语言中的除法操作也会遇到有符号和无符号、单精度和双精度以及混合运算等问题。另外在除法运算时还存在商数的取整问题。在汉语编程中为方便计算机的运算,采用了向下取整的方法。如按向下取整的方法做

7÷4=-2  +1

而用向零取整的方法得出上面的结果后还必须加1才对,在整数运算中采用了向下取整,则应考虑余数的符号必须与除数相同。总之应该为:

*除数+余数=被除数

以上是整数运算中需要了解的基本知识,在汉语程序设计语言的程序设计中可以通过各种除法运算词来完成不同类型的除法运算。如:

/       ( n1  n2 ―――  <> )

数摞上留下n1除以n2的带符号32位的下整商。

求余数  (  n1  n2 ―――  <余数> )

数摞上留下n1除以n2的余数,余数具有与n2相同的符号或者为零。

/余商   (  n1  n2 ―――  <余数> <> )

数摞上留下n1除以n2的余数和带符号的下整商。余数取除数的符号或为零。


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
秦汉昌
  5楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:业余侠客 帖子:372 积分:1447 威望:0 精华:0 注册:2008/12/20 18:10:00
  发帖心情 Post By: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

总之,汉语编程中的算术运算与通常的数学算术运算基本一样,所不同的是它参与运算的数必须是同一类型,且是通过数摞来进行运算。


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
秦汉昌
  6楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:业余侠客 帖子:372 积分:1447 威望:0 精华:0 注册:2008/12/20 18:10:00
  发帖心情 Post By:2008/12/27 18:31:00

二、  逻辑运算

逻辑运算要比算术运算简单的多,因为其参与运算的数和运算结果按位来看都只有两种状态:01。在这里01不是表示具体的数值,而表示两种不同的逻辑状态(一般用0表示假,1表示真),逻辑运算中的最基本的运算有三种,即与、或、非三种,也叫逻辑乘、逻辑加、逻辑求反。

 

() 逻辑乘法 ()

逻辑乘法运算就是将两个基本命题用“与”这个系统词连接起来构成一个复合命题。

如基本命题:

一个星期有七天

一天有二十四小时

用“与”连接起来的复合命题:

一个星期有七天    一天有二十四小时

由这样的复合命题得出的结果(逻辑积),仍然是命题,重要的一点是要搞清逻辑积的真假是怎样由命题的真假来决定。总结逻辑乘法()的运算规则如下:

1.如果两个基本命题都是假的,它们的逻辑积也是假的。如:

32     35大。

很明显“32小”是假的,“35大”也是假的,所以逻辑积也是假的。

2.两个基本命题中有一个是假的,则逻辑积也是假的。如:

32    35

32大”是真的,“35大”是假的,所以逻辑积也是假的。


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
秦汉昌
  7楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:业余侠客 帖子:372 积分:1447 威望:0 精华:0 注册:2008/12/20 18:10:00
  发帖心情 Post By:2008/12/27 18:43:00

3.两个基本命题都是真的,则逻辑积也是真的。如:

32    35

32大”是真的,“35大”也是真的,因此逻辑积也是真的。

如果用AB表示两个基本命题,可以将逻辑积写成AB(也可写成AΛBA·B)总结以上三点,可以将其列成一个表。

图片点击可在新窗口打开查看

我们一般把这个表叫做命题AB的真值表。总结这个表,可以得出逻辑乘法运算规则是:有一命题为假逻辑积则为假,全部命题为真时逻辑积才为真。


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
秦汉昌
  8楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:业余侠客 帖子:372 积分:1447 威望:0 精华:0 注册:2008/12/20 18:10:00
  发帖心情 Post By:2008/12/27 18:46:00

() 逻辑加法 ()

逻辑加法运算就是将两个基本命题用“或”连接起来构成复合命题。由这样的复合命题得出的结果就是逻辑和,逻辑和的值为“0”或“1”,全由组成这个复合命题的基本命题来决定,总结逻辑加法(或)运算的运算规则如下:

1.两个基本命题都为假,则逻辑和也为假。如:

9小于5    9小于1

由“9小于5”和“9小于1”都是假命题,所也逻辑积就为假。

2.两个基本命题有一为真,则逻辑和就为真。

3.两个基本命题都为真,则逻辑和也为真。

若用AB表示两个基本命题,总结以上三点可以得出逻辑和(AB)的真值表如下:

图片点击可在新窗口打开查看


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
秦汉昌
  9楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:业余侠客 帖子:372 积分:1447 威望:0 精华:0 注册:2008/12/20 18:10:00
  发帖心情 Post By:2008/12/27 18:48:00

() 逻辑求反运算 ()

逻辑求反运算就是将一个基本命题用“非”这个系统词连接起来组成复合命题。逻辑求反运算的结果完全由这一个基本命题来决定。由于是“求反”运算,所以很显然也看出,如要基本命题为真,则结果就应为假,如果基本命题为假,求反后,结果就应为真。

若用A表示这个基本命题,求反后的结果就应表示为_A,则逻辑求反运算的真值表可表示为:

图片点击可在新窗口打开查看

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
秦汉昌
  10楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:业余侠客 帖子:372 积分:1447 威望:0 精华:0 注册:2008/12/20 18:10:00
  发帖心情 Post By:2008/12/27 18:50:00

() 逻辑表达式

逻辑表达式就是用与、或、非等符号将基本命题连接起来的复杂的复合命题。如果用ABC分别表示三个基本命题,则(AB·C就是一个逻辑表达表,其意义是:AB相或,结果再和C与。因此表达式(AB·C也可以表示为:(AB)与C。其运算规则仍然遵循与、或、非的运算规则,其运算结果仍只有两种“0”或“1”。

若在同一逻辑表达表中同时有“与”运算、“或”运算和“非”运算,则按先“非”,后“与”,再“或”的规则省去括号。如“(AB)+(CD)”可写成“ABCD”,而“(ABCD)”不能写成“ABCD”。

逻辑表达式的基本类型有以下几种:

图片点击可在新窗口打开查看

  总之,一个逻辑表达式有很多种形式,也可能很复杂。因此,通常要对逻辑表达式进行简化以取得最简表达形式。


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
总数 13 1 2 下一页

返回版面帖子列表

[推荐]汉语编程中级教材第三章第三节《汉语编程中的运算方法》








签名