以文本方式查看主题 - 中华农历论坛 (http://bbs.nongli.net/index.asp) -- 历法知识 (http://bbs.nongli.net/list.asp?boardid=2) ---- [推荐]汉语编程中级教材第三章第二节《数摞操作》 (http://bbs.nongli.net/dispbbs.asp?boardid=2&id=16451) |
||
-- 作者:秦汉昌 -- 发布时间:2008/12/27 18:17:00 -- [推荐]汉语编程中级教材第三章第二节《数摞操作》
|
||
-- 作者:秦汉昌 -- 发布时间:2008/12/27 18:19:00 -- 一、数摞的交换 现在你来充当计算操作员,计算过程由指令员来指挥。指令员要做一个算术运算20-3*4,按照算术运算的优先规律应该先乘除后加减。所以指令员先将两个要相乘的数告诉你,由你按顺序将这两个数放入数摞: 4 3 接下来指令员又发出乘法指令,你计算出3 *4的结果,并将数摞上的3和4去掉,然后将结果12放入数摞: 指令员又将20告诉你,你随即将20放入数摞: 20 12 这时如果指令员发出减法的指令就出现问题了,因为减法没有交换规律,按规律必须是前面的数减去后面的数。在我们数摞上前面的数就是先进入的数,如果直接进行减法操作,就变成了12-20,为了解决这类问题,引入了一些数摞操作符。象上面的减法问题只要将两个数进行一次交换再执行减法就可以了。我们用符号“↑↓”表示交换操作。这样指令员在发出减法指令以前就必须发出“↑↓”指令,你就将数摞上数据的顺序交换一下,变成: 12 20 然后指令员再发出减法指令,你在做完减法后就可以将12和20去除,并将计算结果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 ) 其中n3是n1与 n2之和。 |
||
-- 作者:秦汉昌 -- 发布时间: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 ★… |
||
-- 作者:秦汉昌 -- 发布时间: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 ★.... 该例将数摞第1项3复制到数摞顶层作为第0项。 执行“∽”操作时数摞的状态为: ∽ ( n1 n2 ―――n1 n2 n1 ) 用横向比较法来看该符号,此图形好象绕过了摞顶的数而复制了第二项数据。 |
||
-- 作者:秦汉昌 -- 发布时间: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 § 等价于 ∽ |
||
-- 作者:秦汉昌 -- 发布时间:2008/12/27 18:22:00 -- 五、数摞的旋转 在汉语编程过程中,有时需要将数摞上的三个数进行轮转,即将第三层的数放到数摞顶上,并将其他两个数向下顺移。这时我们采用“∴”操作符: 看数摞<回车> [5] 5 3 1 2 4 ★..... ∴<回车>★..... 看数摞<回车> [5] 5 3 2 4 1 ★..... 清屏后可以再举一例: 1 2 3 <回车>★... 看数摞<回车>[3]1 2 3 ★... ∴<回车>★... 看数摞<回车>[3]2 3 1 ★... 执行“∴”操作时的数摞状态为: ∴ ( n1 n2 n3―――n2 n3 n1 ) |
||
-- 作者:秦汉昌 -- 发布时间:2008/12/27 18:22:00 -- 六、反向旋转摞顶三项 有了数摞旋转的概念,就很容易理解数摞的反向旋转。它是将数摞顶层的数放到数摞第三层,并将原来第二层和第三层的数向上顺移。这时我们采用“∵”操作符: 看数摞<回车> [5] 5 3 1 2 4 ★..... ∵<回车>★..... 看数摞<回车> [5] 5 3 4 1 2 ★..... 清屏后可以再举一例: 1 2 3 <回车>★... 看数摞<回车>[3]1 2 3 ★... ∵<回车>★... 看数摞<回车>[3]3 1 2 ★... 执行“∵”操作时的数摞状态为: ∵ ( n1 n2 n3―――n3 n1 n2 ) |
||
-- 作者:秦汉昌 -- 发布时间:2008/12/27 18:22:00 -- 七、剔出任意项 虽然我们可以复制数摞上的任意项,但有时还有必要只将数摞上的任意项剔出来放在数摞的顶上。这时我们可以采用“√”操作: 看数摞<回车>[2]2 3 ★.. 4 5 <回车>★.... 看数摞<回车> [4]2 3 4 5 ★.... 1 √ <回车>★.... 看数摞<回车>[4]2 3 5 4 ★.... 2 √<回车>★.... 看数摞<回车> [4]2 5 4 3 ★.... 3 √<回车>★.... 看数摞<回车> [4]5 4 3 2 ★.... 执行“√”操作时的数摞状态为: √ ( nn……n1 n0 n ―――nn-1 ……n1 n0 nn ) 技巧:参照“∴”知: 2 √ 等价于 ∴ 0 √ 是空操作 |
||
-- 作者:秦汉昌 -- 发布时间:2008/12/27 18:23:00 --
|