中华农历论坛知识讨论区历法知识 → [推荐]汉语编程中级教材第三章第二节《数摞操作》


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

主题:[推荐]汉语编程中级教材第三章第二节《数摞操作》

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


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

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

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

第三章第二节  数摞操作

 

一个人说话是要表达自己的意图,为了达到这一目的,在说话时可能会参杂许多不可缺少的“废话”,舍此,这段话可能就“不像话”了。程序设计也是如此,如汇编语言中要频繁的保护寄存器,高级语言中却要不断的进行变量操作。在汉语编程语言中,出现最多的“废话”就是数摞操作,然而正由于这些“废话”才使我们的程序设计变得更为精巧和生动。

在标准的汉语程序设计中所建立的数摞均以32位为基本单元。我们可以将一层想象成为一个具有32个杆和珠的算盘,每一个数都是由这种32位为基本单位的算盘来表示的。汉语编程操作与运算过程中的数据都是从数摞上取得,而操作结果也将放在数摞的顶上。这样显然带来一个问题,有的时候操作的结果并不一定是后面操作所需要的操作数,或者即使是操作数,但按后面操作的要求其顺序不对,或者后续的操作只需要部分的结果,使得我们不得不将数摞上的数据进行必要的调整以及复制。在汉语编程语言中提供了一系列的数摞操作算符,以便在程序设计中对数摞上的数据进行适当的调整。

数摞操作是汉语程序设计中最有趣,最巧妙的一个环节,使用极为频繁,读者一旦熟练掌握,到那时就可随心所欲编写汉语编程了。


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


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

一、数摞的交换

现在你来充当计算操作员,计算过程由指令员来指挥。指令员要做一个算术运算203*4,按照算术运算的优先规律应该先乘除后加减。所以指令员先将两个要相乘的数告诉你,由你按顺序将这两个数放入数摞:

4

3       

 


接下来指令员又发出乘法指令,你计算出3 *4的结果,并将数摞上的34去掉,然后将结果12放入数摞:

                           12

 

指令员又将20告诉你,你随即将20放入数摞:

                           20

                           12

 


这时如果指令员发出减法的指令就出现问题了,因为减法没有交换规律,按规律必须是前面的数减去后面的数。在我们数摞上前面的数就是先进入的数,如果直接进行减法操作,就变成了1220,为了解决这类问题,引入了一些数摞操作符。象上面的减法问题只要将两个数进行一次交换再执行减法就可以了。我们用符号“↑↓”表示交换操作。这样指令员在发出减法指令以前就必须发出“↑↓”指令,你就将数摞上数据的顺序交换一下,变成:

 

                           12

                           20

 


然后指令员再发出减法指令,你在做完减法后就可以将1220去除,并将计算结果8放入数摞:

                             8  

 


这个过程用汉语编程语言可以表述下面的形式:

              3  4  *   20  ↑↓ 

以上只是为了说明问题举了一个例子,当然对于这样一种简单的计算完全可以写成另一种简化的形式

20                                                                   3  4  * 

我们放物品并不一定都是竖向摞置,有时要横向码放,如书架上的书基本上是横向码放的。为了表达方便,我们在表示数摞时常常也用横向方式来表示数摞里的状态。我们写文章时习惯从左至右,如果写的是数就进入数摞保存起来,先进入数摞的就在左边而后进入的就在右面。用横向法表示数摞时则记忆为右边的数在上,左边的数在下。如1  2  3  则表示为:

                  3

                  2 

1    

 


为了表达方便,我们还引入了数摞操作表述符号“―――”,并将操作前的数摞状态写在“―――”的左边,操作后的数摞状态写在右边,规范的写法应该为三个“―”,请读者养成良好的习惯。数摞上的数可以是一些代号,如“n1”、“n2”等等。如上面的“↑↓”操作,就表示为:

    ↑↓  ( n1  n2  ―――n2  n1 )

它代表

n1  n2   ↑↓  n2  n1

而对于“+”操作就表示为:

  ( n1  n2  ―――n3 )

其中n3n1 n2之和。


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


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

  了解了以上的基础知识,就可以进行数摞操作的练习了。在汉语编程系统中,系统提示符为“”,表示操作的结束。在提示符“”下的光标处就可以直接输入数值,并通过一些数摞的显示操作去查看数摞,如:

        1  2  3  <回车>★…

面的描述中“<回车>”是指从键盘上键入[←┘Enter]键。提示符“★”后面有几个点“.”就表示当前数摞有多少个数。下面执行“看数摞”命令:

           看数摞<回车>  [3]1  2  3  ★…

“看数摞”命令能显示当前数摞上仍保留的数。“[3 ]”表示当前数摞上有三个数。

  <回车> ★..

看数摞<回车>  [2] 1 5  ..

↑↓  <回车>★..

看数摞<回车>[2] 5 1 ..

需要注意的是,数摞交换操作符“↑↓”只对数摞顶项和次顶项进行交换操作。我们在数摞上再加一个数,然后执行交换操作:

2<回车>  ★…

看数摞<回车>  [3] 5 1 2 ★…

↑↓  <回车>★…

看数摞<回车>  [3] 5 2 1 ★…


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


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

二、数摞的复制

许多情况下为了保证参加操作的数据仍然保留在数摞上,我们有必要对数摞上的数进行复制。在汉语编程中,对数摞进行复制的操作符是“♂”,其功能是对数摞顶层的数进行复制并将复制的数放在数摞顶层。

看数摞<回车>  [3] 5 2 1 ★…

♂<回车>★....

看数摞<回车>  [4] 5 2 1 1....

操作符“♂”比较形象,圆圈代表数,向上的箭头代表向顶上复制,执行“♂”操作后的数摞状态为:

   ( n ―――n  n )

“♂”的用途比较广,下面还是用“平方”的例子加以说明:

  平方    * 

该程序的运行体为“♂  *”。执行程序前,我们先给出一个参数n,当程序执行时,先复制一个n,将两个n相乘,即得到n的平方的结果。

三、复制次摞层

次摞层是从数摞顶层向下第二层,也是数摞第1项(以0基计算,数摞顶层为第0项,次摞层为第1项,依此类推)。次摞层的复制采用“∽”操作符:

看数摞<回车>  [3] 5 3 1 ★…

∽<回车>★....

看数摞 <回车>  [4] 5 3 1 3 ....

该例将数摞第13复制到数摞顶层作为第0项。

执行“∽”操作时数摞的状态为:

  ( n1 n2  ―――n1 n2 n1 )

用横向比较法来看该符号,此图形好象绕过了摞顶的数而复制了第二项数据。


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


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

四、复制任意项

当我们需要对数摞上的任意一项进行复制时,可采用“§”操作符。使用该操作符时需指定参数,即指明将第几项复制到数摞顶层。

看数摞<回车>  [4] 5 3 1 3 ....

2  § <回车>★.....

看数摞<回车>  [5] 5 3 1 3 3 .....

该例将数摞的第2(3)复制到数摞顶层作为第0项。

使用该操作符同样需注意,前面的参数表示数摞的项数,这个项数同样以0基方式计算,如2表示数摞的第二项,即数摞从上往下第三层。

技巧:参照“♂”、“∽”可知:

        0 § 等价于 ♂ ;1  § 等价于  


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


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

 五、数摞的旋转

  在汉语编程过程中,有时需要将数摞上的三个数进行轮转,即将第三层的数放到数摞顶上,并将其他两个数向下顺移。这时我们采用“∴”操作符:

看数摞<回车>  [5] 5 3 1 2 4 .....

<回车>★.....

看数摞<回车>  [5] 5 3 2 4 1 .....

   清屏后可以再举一例:

1 2 3 <回车>★...

看数摞<回车>[31 2 3 ...

<回车>★...

看数摞<回车>[32 3 1 ...

执行“∴”操作时的数摞状态为:

  ( n1  n2  n3―――n2  n3  n1 )


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


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

六、反向旋转摞顶三项

有了数摞旋转的概念,就很容易理解数摞的反向旋转。它是将数摞顶层的数放到数摞第三层,并将原来第二层和第三层的数向上顺移。这时我们采用“∵”操作符:

看数摞<回车>  [5] 5 3 1 2 4 .....

<回车>★.....

看数摞<回车>  [5] 5 3 4 1 2 .....

   清屏后可以再举一例:

1 2 3 <回车>★...

看数摞<回车>[31 2 3 ...

<回车>★...

看数摞<回车>[33 1 2 ...

执行“∵”操作时的数摞状态为:

  ( n1  n2  n3―――n3  n1  n2 )


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


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

七、剔出任意项

虽然我们可以复制数摞上的任意项,但有时还有必要只将数摞上的任意项剔出来放在数摞的顶上。这时我们可以采用“√”操作:

看数摞<回车>[22 3 ..

4 5 <回车>★....

看数摞<回车> [42 3 4 5 ....

1 <回车>★....

看数摞<回车>[42 3 5 4 ....

2 <回车>★....

看数摞<回车> [42 5 4 3 ....

3 <回车>★....

看数摞<回车> [45 4 3 2 ....

执行“”操作时的数摞状态为:

   ( nn……n1 n0 n ―――nn-1 ……n1 n0 nn )

技巧:参照“∴”知:

2                                                         等价于 

0                                                         是空操作


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


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

八、去除操作

在程序设计过程中,数摞上的有些数我们并不需要,为了不影响以下的操作,不得不将其删除。这时可以采用“♀”操作符:

看数摞<回车>[32 3 1 ...

<回车>★..

看数摞<回车>[22 3 ..

该例使用去除操作符将数摞顶层的数删除。

注意,该操作符只能删除当前数摞顶层即第0项的数。

执行“”操作时的数摞状态为:

    ( n ――― )

九、双精度数摞操作

双精度数摞操作是把普通数摞的两层当作一个整体来处理,操作方式与单层基本相同,主要包括内容有:双↑↓、双♂、双∽、双♀

本教程由汉编小罗整理,资料来源于互联网,版权归汉编公司所有


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

[推荐]汉语编程中级教材第三章第二节《数摞操作》








签名