论文部分内容阅读
摘 要:循环是结构化程序设计中最重要的结构,如何设计和讲解循环是C语言教学过程中的重点和难点,本文笔者通过引、推、变、等三个步骤,以可视化效果较好的屏幕图形操控为例,在循循善诱的过程中让学生体会中循环的魅力和循环的操控力,实际的教学课堂学生反应十分积极,上机实践过程中也表明了该方法取得良好的教学效果,学生亦对循环产生极大的学习兴趣。
关键词:C语言; 程序设计;循环结构;教学方法
中图分类号:G642 文献标识码:B
1 引言
C语言程序设计是典型的面向过程的结构化程序设计语言之一。顺序结构,选择结构和循环结构是所有结构化程序设计的三种基本结构。所有的程序中至少包括其中的一种结构。对于初次接触程序设计的学生而言,顺序结构和选择结构相对简单,而其中的循环结构对于大多数学生来讲是一个难点,而循环结构又是C语言等面向过程的程序设计中最重要的一种结构。在某种程度上说没有学会循环以及如何设计循环结构,就没有学会C等面向过程的结构化程序设计语言。
因此如何结合学生的前期知识,激发学生学习循环结构的兴趣,如何引导其设计出合理的循环结构,是我们在C语言循环结构的教学中急需去研究和探讨的问题。本文笔者试图通过引、推、变、等三个步骤在循循善诱过程中让在高昂的激情中学会了循环,并深刻地体会到循环的魅力和控制力。并对C语言后续的教学奠定了坚实的基础。
2 三部教学法
2.1 引
循环结构是属于结构化程序设计中的三种结构之一,顺序结构和选择结构的逻辑相对简单,对于有一定英语基础的C语言初学者来说接受起来相对简单,因此在引入循环的概念之前,为了更好地激发学生对枯燥的循环语法知识的学习兴趣,并对循环的重要性具有切身的体会,我们通过下列的步骤对循环进行引申。
首先让学生在不用循环结构的情况设计程序输出下列图形:
我们可以结合前面的顺序结构引导学生给出的源代码是右上图
学生会发现利用简单的顺序结构就可以解决该问题,紧接着我们抛出第二个问题,启发学生如果符合该规律的图形不只7行,而是20行,甚至是更多,还是不用循环去解决,可以解决吗?解决效果如何?从中有没有发现什么规律?
正当学生埋头苦写代码时,你再抛出第三个启发式的问题:如果现在符合这种规律的图形不是10行,也不是100行,而是一个不定数,是一个变量,可以根据用户的需求随时改变行数的图形,不用循环还能解决吗?而这种能够根据用户的不同需求的程序能够解决现实生活中的很多问题。进一步阐述循环的重要性,和激发学生学习循环结构的兴趣。
2.2 推
在学生带着对循环具有浓厚的学习兴趣之时,急需解开谜底之际,我们乘胜追击,将枯燥,繁琐的循环的三种形式以及其涉及到的语法知识快速讲解完毕。紧接着通过现场代码实现和演示利用循环之后如何能够解决用顺序结构解决起来非常麻烦,甚至是无法解决的问题。
针对上述问题:我们在图形中摸索出了规律,该图形是一个对称图形,先解决上半部分,下半部分就有法可依了。本着先整体后局部的观念,让学生先忽略细节,从整体上来说,要“重复”输出四行,通过前期的知识,很容易引入一个变量表示行数,并将其作为循环控制变量。因此很容易写出程序的大致框架:
int i;
for(i=1;i<=4;i++)
{
重复输出三行;
}
而具体到每一行,如何输出,就需要引导学生观察每一行的输出情况,经过观察不难发现,每一行都是在先输出一定个数的空格之后,再输出一定个数的“*”,最后输出换行。因此程序的进一步细化为:
int i;
for(i=1;i<=3;i++)
{
先重复输出一定个数的空格;// 存在循环-->寻找循环次数-->确定空格个数
再重复输出一定个数的“*”; // 存在循环-->寻找循环次数-->确定“*”个数
最后输出换行符;
}
而具体每一行在输出多少个空格之后再输出多少个“*”,我们可以通过列表的方式来寻找每一行输出的空格个数和“*”的个数与其所在的行数有何关系。
假设我们用n来代表行数。
表一: n=4时行号,空格数,以及“*”的个数之间的关系
通过列表,我们会发现空格个数j=n-i;(n=4), 而“*”的个数k=2*i-1。为了进一步证实该关系的成立,我们还可以增加行数来加以验证。有了上述关系之后,我们输出该图形的上半部分的代码如图1所示。
而对于下半部分的对称图形,只要我们从下往上看,那么空格和“*”字符与行之间的关系是与上半部分相同的。因此我们只要从最后一行开始依次往上输出,则内循环的代码无需修改。即如图2所示。
在实现输出该图形的基础上,我们引入行的变量n,并将上述代码中代表行数的3更换成n,就可以输出任意指定行数的符合该规律的图形。因此也就解决了我们在3.2中所提出的问题。在很多情况下,用了循环结构可以很好地解决原来解决起来非常麻烦,甚至是无法解决的问题。
2.3 变
在解决了符合具有一定规律变化的图形的输出之后,我们可以通过图形中的行列中字符的变化,进一步引导学生如何通过在修改上述代码的基础上实现如下具有规律变化的图形,在学生在变化中体会循环的魅力和操控力。
3 教学效果
在上述的讲解过程中和演示过程中,学生可以在瞬间得到图形的变化,甚至是更大幅度的图形的变换,使得在体会了循环的魅力和操控力的同时,对程序设计的学习势必产生浓厚的兴趣,因此该教学方法在实际的课堂现场反应以及上机实践中均取得十分良好的效果。
4 结论和展望
循环是结构化程序设计教学中的重点和难点,本文笔者通过引、推、变等三部教学法,在循循善诱的过程中让学生体会到了循环的魅力和操控力,激起了学生浓厚的学习兴趣,取得了良好的教学效果。在以后的教学中我们将对该方法进行进一步的扩充和引申。
关键词:C语言; 程序设计;循环结构;教学方法
中图分类号:G642 文献标识码:B
1 引言
C语言程序设计是典型的面向过程的结构化程序设计语言之一。顺序结构,选择结构和循环结构是所有结构化程序设计的三种基本结构。所有的程序中至少包括其中的一种结构。对于初次接触程序设计的学生而言,顺序结构和选择结构相对简单,而其中的循环结构对于大多数学生来讲是一个难点,而循环结构又是C语言等面向过程的程序设计中最重要的一种结构。在某种程度上说没有学会循环以及如何设计循环结构,就没有学会C等面向过程的结构化程序设计语言。
因此如何结合学生的前期知识,激发学生学习循环结构的兴趣,如何引导其设计出合理的循环结构,是我们在C语言循环结构的教学中急需去研究和探讨的问题。本文笔者试图通过引、推、变、等三个步骤在循循善诱过程中让在高昂的激情中学会了循环,并深刻地体会到循环的魅力和控制力。并对C语言后续的教学奠定了坚实的基础。
2 三部教学法
2.1 引
循环结构是属于结构化程序设计中的三种结构之一,顺序结构和选择结构的逻辑相对简单,对于有一定英语基础的C语言初学者来说接受起来相对简单,因此在引入循环的概念之前,为了更好地激发学生对枯燥的循环语法知识的学习兴趣,并对循环的重要性具有切身的体会,我们通过下列的步骤对循环进行引申。
首先让学生在不用循环结构的情况设计程序输出下列图形:
我们可以结合前面的顺序结构引导学生给出的源代码是右上图
学生会发现利用简单的顺序结构就可以解决该问题,紧接着我们抛出第二个问题,启发学生如果符合该规律的图形不只7行,而是20行,甚至是更多,还是不用循环去解决,可以解决吗?解决效果如何?从中有没有发现什么规律?
正当学生埋头苦写代码时,你再抛出第三个启发式的问题:如果现在符合这种规律的图形不是10行,也不是100行,而是一个不定数,是一个变量,可以根据用户的需求随时改变行数的图形,不用循环还能解决吗?而这种能够根据用户的不同需求的程序能够解决现实生活中的很多问题。进一步阐述循环的重要性,和激发学生学习循环结构的兴趣。
2.2 推
在学生带着对循环具有浓厚的学习兴趣之时,急需解开谜底之际,我们乘胜追击,将枯燥,繁琐的循环的三种形式以及其涉及到的语法知识快速讲解完毕。紧接着通过现场代码实现和演示利用循环之后如何能够解决用顺序结构解决起来非常麻烦,甚至是无法解决的问题。
针对上述问题:我们在图形中摸索出了规律,该图形是一个对称图形,先解决上半部分,下半部分就有法可依了。本着先整体后局部的观念,让学生先忽略细节,从整体上来说,要“重复”输出四行,通过前期的知识,很容易引入一个变量表示行数,并将其作为循环控制变量。因此很容易写出程序的大致框架:
int i;
for(i=1;i<=4;i++)
{
重复输出三行;
}
而具体到每一行,如何输出,就需要引导学生观察每一行的输出情况,经过观察不难发现,每一行都是在先输出一定个数的空格之后,再输出一定个数的“*”,最后输出换行。因此程序的进一步细化为:
int i;
for(i=1;i<=3;i++)
{
先重复输出一定个数的空格;// 存在循环-->寻找循环次数-->确定空格个数
再重复输出一定个数的“*”; // 存在循环-->寻找循环次数-->确定“*”个数
最后输出换行符;
}
而具体每一行在输出多少个空格之后再输出多少个“*”,我们可以通过列表的方式来寻找每一行输出的空格个数和“*”的个数与其所在的行数有何关系。
假设我们用n来代表行数。
表一: n=4时行号,空格数,以及“*”的个数之间的关系
通过列表,我们会发现空格个数j=n-i;(n=4), 而“*”的个数k=2*i-1。为了进一步证实该关系的成立,我们还可以增加行数来加以验证。有了上述关系之后,我们输出该图形的上半部分的代码如图1所示。
而对于下半部分的对称图形,只要我们从下往上看,那么空格和“*”字符与行之间的关系是与上半部分相同的。因此我们只要从最后一行开始依次往上输出,则内循环的代码无需修改。即如图2所示。
在实现输出该图形的基础上,我们引入行的变量n,并将上述代码中代表行数的3更换成n,就可以输出任意指定行数的符合该规律的图形。因此也就解决了我们在3.2中所提出的问题。在很多情况下,用了循环结构可以很好地解决原来解决起来非常麻烦,甚至是无法解决的问题。
2.3 变
在解决了符合具有一定规律变化的图形的输出之后,我们可以通过图形中的行列中字符的变化,进一步引导学生如何通过在修改上述代码的基础上实现如下具有规律变化的图形,在学生在变化中体会循环的魅力和操控力。
3 教学效果
在上述的讲解过程中和演示过程中,学生可以在瞬间得到图形的变化,甚至是更大幅度的图形的变换,使得在体会了循环的魅力和操控力的同时,对程序设计的学习势必产生浓厚的兴趣,因此该教学方法在实际的课堂现场反应以及上机实践中均取得十分良好的效果。
4 结论和展望
循环是结构化程序设计教学中的重点和难点,本文笔者通过引、推、变等三部教学法,在循循善诱的过程中让学生体会到了循环的魅力和操控力,激起了学生浓厚的学习兴趣,取得了良好的教学效果。在以后的教学中我们将对该方法进行进一步的扩充和引申。