查字典论文网 >> 高职C语言循环结构的教学设计

高职C语言循环结构的教学设计

小编:庞富胜

C语言课程的教学实践,作者对循环结构单元的教学内容和过程进行了重构和优化,在实践中取得了很好的成效。

1 传统的教学方式存在的问题

当前的C语言教材侧重于知识传授的系统性和逻辑性,教师通常按部就班地进行讲解,先花大量的时间系统地讲授各循环语句的语法规则、执行过程,然后再举出相应的示例。这种教学方法本意是期望学生能够掌握基础理论后,能够举一反三,灵活应用所学知识解决问题。但如果把这种方法用于抽象思维较弱的高职学生,往往适得其反。理论学习能力本就不强的高职学生由于消化困难,很容易丧失兴趣,产生畏难情绪,很多同学干脆就放弃了课程的学习。

2 阶梯式的循环结构教学设计

根据高职学生的认知特点,在循环结构的教学设计上,直接采用任务驱动的方式来展现循环结构的重要使用场景,强调for循环适合表示序列,在学习初期学生采用依样画葫芦的方式就能完成程序编写,完全不需要理解for循环的执行流程。接着从有限序列到无穷序列,很自然的引入break语句来改变循环的执行流程。然后强调 for循环和 while循环的等价性,在没有序列或者序列并不明显的情况下使用while循环和流程图表示来解决其他循环结构的问题。对于循环结构中的非重点内容如loop语句和continue语句,由于这些内容实际应用相对较少,作教学中做了弱化处理,避免给学生太多选择而使学生陷入迷茫。把循环结构中的嵌套循环放在数组单元进行介绍,给学生的学习提供了适当的缓冲,避免难点过于集中而使学生产生畏难情绪。同时,在整个课程的教学中,课程组使用C/C++程序设计自动评测系统的练习平台,学生编写的程序可以由练习平台直接给出评判结果。在循环结构的教学中,更是布置了大量基础练习题来帮助学生熟练掌握循环的应用。下面是循环结构教学设计和实施的具体步骤。

2.1 介绍循环的最简单应用简单重复循环

最简单的应用是控制语句块重复执行的次数,循环变量在循环体内部并不使用。采用的例题是输出10行的good good study,day day up。建议学生编写的循环代码为 for(i=1; i i=i+1),鼓励学生改变各个参数后运行程序,通过观察结果来帮助理解程序。2.2 使用for循环来表示序列循环尤其是for循环最典型的应用是表示序列,例如语句 for(i=1; i i=i+1)表示的序列是 {1,2,3,,10},语句 for(c= cz c=c+1)表示字符序列 {a,b, ,z}。通过分析常用的循环表达方式,归纳了常用序列表示,如在这个环节,采用的案例是计算 1+2+3++100 的值。

这个例子可以写成最原始也是最容易理解的顺序结构;通过归纳可改写成sum=sum+i,其中i依次遍历序列{1,2,3,,100},这个步骤学生也容易理解;在最后一个环节,学生可以根据常用序列的for循环表示写出对应的for语句,从而完成程序的编写。这几个步骤如图1所示。在学生学习循环的初期,采用这种教学方式可以避免陷入必须先理解for循环的执行机制,再编写代码的困境中,让学生相对容易地写出程序代码,增强学习C语言的信心。

for循环for(i=1; ; i++)可以表达无穷序列,在这种情况下,程序会永远运行下去吗?此时引入改变循环正常执行流程的break语句就显得非常自然了。对于改变循环正常执行流程的另一个语句continue,在初期教学时作了弱化处理,因为break语句是必须的,而continue语句是可有可无的,完全可用 if-else 语句来代替。

2.3 将for循环改写成while和do-while循环

在介绍while循环时,一开始并没有引入新的例子,还是使用同一个例子:计算 1+2+3++100 的值。向学生特别强调for循环和while循环在使用上是完全等价的,可以相互改写,特别设计了图2中的中间过渡环节来强调两者的语义上的等价性,并要求学生把for循环表达改写成while循环表达,然后再改写回for循环表达。这种教学方式有利于消除学生对于循环的陌生感,不会增加心理上的负担。在学生掌握了for循环和while循环的代码相互改写后,再要求学生完成while循环和do-while循环的相互改写,从而向学生全面介绍了结构化程序设计中最常使用的3种基本循环结构。

2.4 介绍流程图、while循环及其适用场合

循环结构有for循环、while循环和do-while循环这3种基本表达方式。for循环适合表达序列,并不需要使用流程图来帮助理解,循环体至少要执行一次的情况采用do-while循环,其他情况建议采用while循环。while循环和do-while循环用流程图来表达是非常直观的。在介绍流程图时,采用的例题是3n+1问题:对于任意大于1的自然数,若n为奇数,则将n变为3n+1,否则变为n的一半,经过若干次这样的变换,一定会使n变为1,例如3105168421。程序要求的输入是n,要求程序输出变换的次数。

2.5 结合二维数组讲解双重循环

对于循环的嵌套,并没有放在循环结构这个教学单元中进行讲解,而是放在了数组单元。这主要基于两个考虑:(1)大多数高职学生在短期内接受大量概念和变化有困难,等学生经过一段时间熟练掌握循环结构最基本的用法后,再引入相对复杂的内容,学生的理解效果会更好。(2)双重循环和二维数组本身的关系就非常密切,双重循环是二维数组的典型应用场景。

2.6 循环在其他编程语言中的实现

由于C语言在工业界的广泛应用,其他主流编程语言如C++,Java和PHP在设计时就充分借鉴了C语言的特性,这些编程语言在控制结构上和C语言非常接近甚至完全一致。Java和PHP在C语言的基础上提供了增强型的for循环foreach,这种结构能更加清晰地用来表达序列,介绍foreach能加强学生对于for循环表达序列的理解。

在学生较好掌握C语言循环结构的基础上,适时向学生介绍其他编程语言是如何编写循环语句的,有助于学生了解C语言在程序设计课程中的基础地位,增进学生对其他编程语言的亲切感,增强学生学好程序设计类课程的信心。

3 结语

循环结构是C语言程序设计课程的重点和难点。在该单元的教学设计中,采用了任务驱动的方式来展现不同循环结构的应用场景,从简单开始,围绕示例,阶梯式的引入各种循环语句,并通过相互改写 for循环和 while循环来帮助学生理解两者的联系和区别,并将难点分散到不同的教学单元,消除了学生的畏难情绪,让学生拾级而上,增强了学习的自信心。近两年的教学实践和学生程序设计竞赛的表现表明该方法的教学效果非常有效。

热点推荐

上一篇:仿真模拟在外科护理教学中的应用

下一篇:如何对幼儿进行德育教育论文 幼儿园关于德育教育之类的论文