APP下载

案例教学在计算机类课程体系中的设计与实践

2018-07-24王一美

教育教学论坛 2018年24期
关键词:举一反三实践教学模式

摘要:转型期的民办高校要始终注重学生能力的培养,贯彻授之以渔的教育理念,逐步实现课堂教学开放互动的教学模式,激发学生共同讨论问题的兴趣,增强其分析和解决问题的能力。本文将结合高校计算机类通识课程中的面向过程语言编程实例,剖析排序算法分析,引领学生掌握解决此类题目的方式方法。

关键词:教学模式;实践;举一反三

中图分类号:G642.4 文献标志码:A 文章编号:1674-9324(2018)24-0274-02

首先,课前教师要精心准备教学实例并指导学生提前阅读。已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请学生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是0或2或4或6或8,则统计出满足此条件的个数cnt,并把這些四位数按从大到小的顺序存入数组b中。最后main()函数调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。

通过阅读题目,我们首先可以得出:有200个四位数存储在数组a中,那么,学生该如何引用这批数据呢?C语言规定:数组的下标从0开始记,即a[0]、a[1]、a[2]、……、a[199]。

其次,我们要通过编辑jsVal()函数体中的语句,来实现该函数的功能。“如果四位数各位上的数字均是0或2或4或6或8”,请学生认真思考:如何获取一个四位数(例如:6482)的千位、百位、十位、个位上的数字呢?我们不妨进行下面的一组演算:

6482/1000,所得商即为千位上的数字6。

6482/100%10,所得余数即为百位上的数字4。

6482/10%10,所得余数即为十位上的数字8。

6482%10,所得余数即为个位上的数字2。

通过观察上述的演算过程,我们可以整理出关于获取四位数各位上的数字的算法来,也就是,千位上的数字:四位数/1000,百位上的数字:四位数/100%10,十位上的数字:四位数/10%10,个位上的数字:四位数%10。同样,我们也可以以此类推出获取三位数各位上的数字的算法来,即百位上的数字:三位数/100,十位上的数字:三位数/10%10,个位上的数字:三位数%10。

接下来,请学生对已拆分出各位上的数字“均是0或2或4或6或8”进行仔细分析。我们不难发现,其实具有这类特征的数值都是偶数,但千位上的数字却不能为0。对此,我们通过选择结构来完成上述结论的逻辑分析,即if(千位上的数字%2==0&&百位上的数字%2==0&&十位上的数字%2==0&&个位上的数字%2==0&&千位上的数字!=0)。可在此题目中,我们要对数组a中200个元素去重复执行该项条件的判定,为此,我们需要借助循环结构来遍历数组a中全部元素,即for(i=0;i<200;i++)。

再接下来,“则统计出满足此条件的个数cnt”,值得强调的是,如果不存在满足条件的数据,那么,此时cnt的值就是0。换言之,cnt的初始值应置为0。当条件满足时,cnt的值加1,即cnt++。“并把这些四位数按从大到小的顺序存入数组b中”,请学生仔细思考,究竟有多少个被筛选出来的数组a中元素会存入到数组b中,是200个吗?不,是cnt个。我们要将满足上述if表达式的数组a中的元素,逐一地赋值到数组b中,即b[cnt++]=a[i];实际上,我们也正是要对它们进行从大到小的排序。下面,我们就通过对一组无序数列:78、29、86、54来加以分析,从而整理出能够完成指定排序的算法来。分析过程如下所示:

第一趟操作是从第一个位置上的数值开始,进行两两比较。

在第一趟操作中,我们依次将第一个位置上的数值与其后各个位置上的数值作比较。如果后者较大,则交换二者位置上的数值;否则,对应位置上的数值不变。经过4-1次比较后,我们得出四个数中最大数86。如此进行下去,在第二趟操作中,对应位置上的数值共进行4-2次比较,我们得出三个数中最大数78。

第二趟操作是从第二个位置上的数值开始,进行两两比较。以此类推,第三趟操作是从第三个位置上的数值开始,进行两两比较。值得注意的是,在第三趟操作中,共进行了4-3次两两比较,我们得出两个数中的最大数54。以此类推,如果有cnt个数,则要进行cnt-1趟操作,也就是要用外层循环去控制趟数,即for(i=0;i

综上,授课教师要及时并认真地带领学生梳理解题思路,把握正确灌输学生算法分析的火候,举一反三,触类旁通,乐此不疲。有200个正整数,且每个数均在1000至9999之间。编制函数,要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组bb中,如果后三位的数值相等,则按原先的数值进行降序排列。

在题目的阅读中,请大家仔细推敲。第一点,“有200个正整数,且每个数均在1000至9999之间”,它实际上等同于“有200个四位数”的说法。第二点,“要求按每个数的后三位的大小进行升序排列”,这其中,我们该如何获取“每个数的后三位”呢?例如:6482%1000,所得余数即为百位、十位、个位上的数字482。第三点:无论是说升序排列,还是在说降序排列,那其实都是在暗示我们,要按照从小到大或者从大到小进行排列。接下来,我们将分析重点落在如何完成指定要求的排序上去。一种情况是,如果原四位数的后三位数不同时,则将原四位数按照它们的后三位大小进行从小到大排列,即if(当前元素%1000>后序元素%1000)。另一种情况是,如果原四位数的后三位数相同时,则直接按照原四位数的大小进行从大到小排列,即if(当前元素%1000==后序元素%1000&&当前元素<后序元素)。而两种情况的逻辑关系应该是:if(一种情况||另一种情况)。

通过上述对案例教学逐层递进式地设计与实践,要积极倡导授课教师优化案例教学理念,创新教改思路,正确载入先进的教育教学方式方法,引领学生温故而知新,构建师生默契的教学模式,让授课教师有备而来,学生满载而归,实现寓教于乐。

参考文献:

[1]王一美.新时期创新创业教育的实践与研究[J].西部素质教育,2017,(13):74-76.

[2]王一美.创新创业视角下人才培养模式研究[J].教育观察,2017,6(9):69-70.

[3]王一美.转型期民办高校信息类专业实践教学改革与创新研究[J].写作,2016,(12):95-96.

猜你喜欢

举一反三实践教学模式
群文阅读教学模式探讨
提高初中数学课堂例题教学的有效性探索
初中科学复习课的有效性探究
高中物理的“举一反三”学习法
“一精三多”教学模式的探索与实践
“导航杯”实践教学模式的做法与成效
5E教学模式对我国中学数学教学的启示