APP下载

中职学生对51单片机双重循环语句的理解

2014-09-23杨松清

时代农机 2014年10期
关键词:C语言双重表达式

杨松清

(怀化工业学校,湖南 怀化418000)

51单片机的应用非常广泛,电子、通信、自动控制、汽车、航空、娱乐等等均涉及到,就业前景好;因而学习者逐年加增。在许多中专、职高、大专、本科等层次的学校或学院开设了单片机这门课程。但是有些学校没有开设C语言课程;还有些是社会爱好者或者非专业爱好者,因而造成了他们对其理解存在很大困难。然而,双重循环语句本身较为复杂,许多人虽然能够应用这条语句,但是对其基本原理无法正确理解。当遇到精确的程序时,则无从下手。所以,正确理解程序的内在运行是基础中的基础。

1 双重循环语句

双重循环语句,在单片机C语言编程或其它C语言类编程中是比较常见的,也是相当重要的语句。双重循环是一个循环的循环体内包含另一个循环(内循环)。当然,内循环的循环体内也可以包含循环构成多重循环,但本文对多重循环不进行分析,但可以按双重循环的思路进行分析。

双重循环可由while、do—while、for三种循环结构进行互相嵌套实现。本文只对for循环结构进行分析。其语句格式如下:

for(循环变量初值;循环条件;修改循环变量)

for语句循环的执行过程:

①先执行第一个表达式,给循环变量赋初值,通常这是一个赋值表达式。

②利用第二个表达式判断循环条件是否满足,通常是关系表达式或逻辑表达式,若其值为“真”(非0),则执行循环体“语句组”一次,再执行下面的第③步;若为假(为0),则转到第⑤步,结束循环。

③计算第三个表达式,修改循环控制变量,一般也是赋值语句。

④跳到上面的第②步,继续执行。

⑤循环结束,执行for语句下面的貌一个语句。

这只是一个循环结构,没有双重循环,当要做到双循环,只要往循环体中嵌

For循环语句执行图

套一个循环结构即可。那么怎么套?那我们看下面的双重循环结构的表达式组成。

2 双重循环结构

for(循环变量初值;循环条件;修改循环变量)

双重循环的每一个循环(内或外循环)的执行步骤与上述图中相同,其原理也是一样。只是,先把内循环执行完了之后,再去执行外循环,如此循环,直到最后跳出循环为止。

下面是一段双重循环程序。

此程序大家都知道是循环了i×255次,教师上单片机课时就会说,这是一个双重循环,先执行内循环,再执行外循环,总共执行了i×255,每次调用循环双重就可以了。书本也是这么写,看似不错,但是对于一个中职学生或者对C语言初学者来说,恐怕没这么顺利了。据了解,有部分大学生刚开始时也有些迷惑,更何况是中职类学生。他们就会问为什么会是这样?大家回答这样的问题,较多会趋向这样说:先执行内循环,再执行外循环,总共执行了i×255,其中有一个是空语句。学生们仍不懂时,又不好意思再次问老师,于是就去查书,结果书本上都是这样写的,最终还是无法透彻地理解它,甚至没有信心去弄懂它了。最终,还是只知道是这么用,不知其理。

3 解决办法

既然存在上述问题,我们总应拿出解决方案来。从上文中双重循环的原理我们就会发现,其实,我们的课本,编程者是站在一个对C语言相当熟练或有一定功底的一个角度进行编写的。然而,那些中职学生是在C语言上是零基础的,再加上,大多数是初中毕业生,本身的知识面还不够广、理解能力、自学能力等等因素造成他们对单片机这门学科学习起来较难。

那么怎么解决双重循环这个问题?其实,从原理上讲,答案就很明显了。只要我们写清楚、写详细问题就解决了。看下面修改后的程序:

从这段程序可以很明显的看出,是按文中的基本语句格式进行编写的。不难看出,先执行for(j=0;j<255;j++){;}完之后再执行for(k=0;k

总之,基于中职学生的特殊性,在编写单片机相关教材或教学中的编程语言应尽量做到详细,有时还要把细节的东西单独进行分析或讲解。切记为了精炼程序而省略部分程序或某些字符等等,因为在教学中发现初学者一开始只知道其结论和运用,但其原理能说得出来的人不多,更何况是知识面还不广、理解能力相对较薄弱、信心不是很足的中职学生。建议,在今后的式作中尽量做到细化、让读者、学生能够轻松地学会、真正地学好它。

[1]李亚宁.C语言中计数循环语句几种形式的处理方法[J].科技资讯,2007,(10).

[2]郑小乐.C语言中循环语句的分析[J].硅谷,2010,(3).

猜你喜欢

C语言双重表达式
基于Visual Studio Code的C语言程序设计实践教学探索
一个混合核Hilbert型积分不等式及其算子范数表达式
表达式转换及求值探析
化解“双重目标”之困
分析师关注对财务重述的双重作用
分析师关注对财务重述的双重作用
浅析C语言运算符及表达式的教学误区
基于C语言的计算机软件编程
行政法上的双重尊重
高职高专院校C语言程序设计教学改革探索