APP下载

无序事物有序化思想在计算机程序设计中的应用

2018-05-09李晓宇秦文杰

科学与财富 2018年8期
关键词:循环

李晓宇 秦文杰

摘 要:阐述了无序事物有序化思想与计算机程序设计之间的联系,介绍了无序事物有序化思想在计算机设计中的相关案例,对比了计算机程序设计中是否应用无序事物有序化思想的优势与不足,分析了无序事物有序化思想对计算机程序设计的意义和应用价值。观察分析无序的事物,从中寻找共同点、规律,以达到有序地解决问题,便于修改或复用设计。

关键词:无序事物有序化,计算机程序设计,循环,复用

1 引言 无序事物有序化思想,顾名思义,就是通过一定量的观察分析问题,从大量的经验中抽象总结出某些潜在规律,做到有序地解决事务。计算机程序设计包含顺序、分支、循环三种思想结构。有效地使用循环可以减少大量无用的工作,而且可以使他人更加容易地理解自己的思路想法,甚至是源代码。还便于修改逻辑设计,做到复用移植。

2 无序事物有序化思想与计算机程序设计的联系

计算机程序设计顺序结构,一个一个地解决问题,就乱序地处理事物。没有能充分利用循环结构的简洁。循环结构,代码量短小,不那么容易使人烦躁、令人心生畏惧。如何使无序事物有序化,就需要分析事物问题,找出共同点。而如何找到,就要靠设计人员的经验和思维抽象高度了。

3 相關应用案例

案例1 数组列表实现无序事物有序化

《32汇编语言程序设计》3习题8-14,利用CMOS RAM的系统时间,将年月日时分秒星期等时间完成的显示出来。

解释:CMOS RAM有64个字节容量,以8位I/O接口形式与处理器连接,通过两个I/O地址访问。要访问CMOS RAM的内容,需要首先向I/O地址70H输出要访问的存储单元编号,然后用I/O地址71H读写该单元的一个字节数据。

由上表可知,待求的年月日时分秒星期信息分别存放在CMOS RAM的9,8,7,4,2,0,6号单元。

若顺序地依次输出年月日时分秒星期信息,需要把读取CMOS信息的语句写7遍,代码立刻显得冗余,且若要修改年月日等信息的顺序,需要读取分析整个代码清单的好几处,不容易查找待修改的地方。

但若加以分析,读取何种时间信息,都要访问CMOS,只是提前告知CMOS要访问的单元号不同。

把这些无序的单元号写到一个连续的存储空间中(cell byte 9, 8, 7, 4, 2, 0, 6; MASM汇编语言定义字节数组的语句),顺序访问这些数据,执行相同的代码段,根据提供的单元号不同,获得相应的信息。这就可以写成一个循环体了。如果改变时间年月日十分秒星期显示顺序,只需要修改cell byte ... 字节数组就可以了。

源代码请访问:代码托管平台5

案例2 映射实现无序事物的有序化

题目描述读入两个小于100的正整数A和B,计算A+B。 需要注意的是:A和B的每一位数字由对应的英文单词给出。[6]

这道考研机试题,就是一个典型的把无序的英文单词,映射为机器可以直接进行数学计算的数字。需要用到映射。one -> 1 , two -> 2, three -> 3, four-> 4... 这里用一个红黑树实现的映射容器map。

map[“one”] = 1, map[“two”] = 2, map [“three”] = 3, map[“four”] = 4...

遇到一个英文单词就转换成数字。one, two, three, four,... 就变成了1, 2, 3, 4.

案例 3

加密解密中的应用

在简单的加密算法字符替换中,把某个字符替换成另一个字符,而不是简单地将所有字符后移几位(例如 a->d, b->e, c->f 后移3位)。替换并无规律可寻,秘钥字符串key可能是个一个随机生成的字符串,例如秘钥key = “jdekalgoba3fdlh4cijm3ip1uo”只要26个不同的字符就可以了。这个秘钥对应的字符依次对应a b c d...

对于转换成的密文,如何根据这个秘钥串key还原得到原文呢?这就需要无序化为有序的思想了。根据秘钥key,给数组array赋值。array[‘j] = a, array[‘d] = b, array[‘e] = c... 利用这个数组array就可以把密文还原为明文了。

4 是否应用无序事物有序化思想到计算机程序设计中的优势与不足

由上面案例可以看到,

无序事物有序化可以使最终的解决方案更简洁;

有利于后来的变动修改;

抽象度更高,需要一定的经验和代码实践基础,不容易想到。

有序到无序可以用于混淆事物,做到加密报文。然后再无序到有序还原报文。

不使用无序到有序的思想,在起初设计编码时可能是简单。不用多动脑筋思考。可是,一旦程序出现问题,再修改维护时,很可能要同时修改几个地方,易疏忽。

给别人阅读理解代码带来麻烦。

过分的考虑分析无序事物中的规律,可能是徒劳的。

5 无序事物有序化思想对计算机程序设计的意义和应用价值

大量实践证明,维护软件需要大量的财力物力,甚至是开发软件的N多倍。无序事物有序化可以提高设计的抽象高度,便于处理后来可能存在的维护问题,减少花费。

该思想可以提高设计人员的思考能力(抽象思维得到提高),开发人员的代码能力(需要缜密的编写)。提高软件生产质量。

结束语

无序事物有序化思想应用在计算机程序设计中,可以抽象设计,使编码量更少。无序事物有序化可以用于批量处理一些问题,效率更高。这是计算机程序设计中的一个小思想,可能只是用在一个较大设计中的一小部分,也不可丢弃。积少成多,计算机程序设计中有很多技巧,需要开发人员等在生产实践中取总结,分享。

2018年3月6日

于郑州大学

注解

[1] 李晓宇:指导老师,郑州大学信息工程学院的老师

[2] 秦文杰:郑州大学信息工程学院软件工程系2015级学生,学号20152480225

[3] 《32位汇编语言程序设计》:郑州大学钱晓捷教授编著的汇编语言学习教科书

[4]CMOSRAM实时时钟信息:本图片源自网络,若有侵权,请告知

[5] 源代码链接 https://github.com/zzuwenjie/coding18/blob/master/MASM/8_14.asm

[6] 题目摘自浙江大学2005年考研机试题

猜你喜欢

循环
试谈《百年孤独》的循环叙事
基于省级精品教材多元自主学习平台的螺旋上升学习研究
PDCA循环在持续改进领导教育质量中的应用
浅析英语词汇记忆策略
物质能量循环理论
CDIO工程教育模式的分界、循环和融合
汽轮机凝汽器最佳运行工况实时分析技术的研究