c++模拟计算机_C++实战篇(三),模拟法高效阅读程序代码

虽然说阅读代码应该去理解语意,但是对初学者来说,做到这一点并不容易,可能这个单词不认识,那个算法不熟悉,难道就不能去阅读了么?这个时候就要使用模拟法了。

所谓模拟法,是指抛开语意的影响,原原本本的按照语句要求模拟计算机的操作。不管是输入,输出还是变量的改变,都要把它想象出来。只要我们对语句的了解是正确的,并且在模拟过程中是仔细的,那么最后模拟出的结果应该和计算机上运行的结果是一样的。

不过,一般而言,使用模拟法是需要工具的,就是纸和笔。俗话说“好记性不如烂笔头”,人脑毕竟不是内存,让我们记上十几个变量的变化情况就够呛了,本别说数组了,所以要用纸和笔将程序每一步的执行情况和变量的变化情况一一记录下来,那么就能够大大降低出错的概率了。

下面我们用模拟法来阅读一段代码

b56df8dd4e09d6237e091c8b25e3eed9.png

分析:主函数里调用了3次函数。但是这个函数写的实在不怎么样,不管是函数名还是参数名,都看不出这是在做什么,所以只好模拟运行一下。

怎么以fun(4,6)为例稍作讲述,首先调用函数以后,a=4,b=6,c的值不确定,这时候b不等于0,执行循环体,c=a%b=4%6=4,a=b=6,b=c=4,这时b还不等于0,继续执行循环体,c=a%b=2,a=b=4;b=c=2,然后b不等于0,执行循环体,c=a%b=0,a=b=2,b=c=0,这时候b为0,不满足条件退出循环语句,返回a,输出结果为2

下面文档中的3个表格为3调用函数过程参数变化。

341b27c182d8cb01d2f3ca7a6e03e79c.png

可以看到,模拟的结果和程序在计算机上的运行结果一样。根据多次模拟的结果,也可以揣测出这个函数的作用是求出两个整数最大公约数。

至此,我们已经学完了阅读代码的3种主要方法。大家只要将3种混合运用,再加上一点征服代码的信心和耐心,那么即使更长一点的代码,也可以明白无误的阅读代码了。

本篇完!欢迎大家收藏与转发,下一篇《调试代码技巧》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值