案例嵌套的案例驱动教学法

2018-10-18 10:33赵素萍
现代计算机 2018年26期
关键词:嵌套空格语句

赵素萍

(山西农业大学信息学院信息工程系,晋中 030800)

案例嵌套;案例驱动;循环嵌套

1 教学现状

编程难已经是我国传统灌输式教学下导致的不争的事实。因为编程必须通过大量的动手实践才能掌握的一项技能。就好比玩游戏,如果将玩游戏作为课堂教学的一部分,课堂上教师讲游戏规则,讲的学生都快睡着了,下课的时候给学生们说你们课后要多练习。等到学生练习了时候又忘了规则是什么,相信很多学生都是干脆放弃不玩了。

同样道理,编程其实就是玩的过程,像搭积木一样,一个模块一个模块地编好,然后整合到一个项目中,最后由测试人员在运行中寻找错误,并将错误反馈给编程人员修改然后再测试,依此反复,直到能成功运行。如果将编程放到课堂上讲,只会将学生的兴趣一点点的消磨掉。正如当我碰到我们学校其他系的同事时,很多人都说“编程好难呀,我当时就没学会”。可想而知,当时的好学生都学的一知半解,传统教学是真的不适合实践性强的课程。

为了吸引学生的学习兴趣,平时要多注意大学生关注的流行元素,将他们生活中的元素融合到教学案例中。

2 案例嵌套的案例驱动教学

案例教学法指教师在教学过程中,以真实的大学生生活情境或事件为题材提出问题,在讲授知识点的过程中提出小的案例,引导学生解决问题,当学生掌握当堂课的知识点后,分析案例并引导学生解决问题。该方法是激励学生主动参与学习活动的一种教学方法。

每堂课开始时,首先回顾完上节课的内容后,抛出一个大案例,案例的特点必须是之前的知识点不能解决的问题。然后是本堂课内容的讲授,而知识点的讲授又必须引入多个小案例,即案例嵌套。学生学习完本节课的内容后,通过引导学生将大的案例解决。通过提出问题-分析问题-解决问题的流程,帮助学生掌握当堂课的知识点。此外,通过该案例的解决又可以加深对当堂课内容的掌握。最重要的是,学生知道为什么要学,学了能干什么,从而提高学生的获得感。

3 案例教学设计及示例

应选择学生熟悉的案例,这样容易开展案例分析与功能挖掘。然后采用自顶向下的程序设计方法,具体分析案例将实现的功能。下面通过《C语言程序设计》这门课的两个教学实施案例过程来介绍案例教学的应用。

(1)案例九九乘法表

该案例所涉及到的知识点为循环嵌套。通过多年的程序设计课程的教学发现,循环嵌套是较难掌握的知识点,通过案例嵌套法讲解后,学生的掌握效果良好。

先回顾for循环的执行流程,主要通过叫后排学生回答问题的方式来复习前面的知识点,这种做法的好处是:①减少学生玩手机的现状;②提高学生的注意力;③提示学生该知识点的重要性;学生掌握了for循环的执行流程后,让学生分析一个例子:

for(i=1;i<=5;i++)

{for(j=1;j<=5;j++)printf(“%d,%d”,i,j);

printf(“ ”);}

根据学生掌握的for循环执行流程的知识点,通过提示引导的方式,学生能猜出运行结果,然后在软件中运行程序,结果如图1:

图1 执行结果

通过对结果的观察,可以发现,外层循环的循环变量i为行,内层循环的循环变量j为列;该结论是非常重要的,一定要在讲课过程中多次强调。在此基础上,要求学生思考如何写成九九乘法表,即:

i*j=z(z为i和j的乘积)如2*2=4

回忆格式输出的知识点,即可得出只需要将输出语句从:

printf("%d,%d",i,j);

修改为:

printf("%d*%d=%d",i,j,i*j);

同时将行列的范围改为1-9,得出的结果如图2:

图2 不对齐的执行结果

通过观察发现,从美观上来说,并没有对齐。提示学生规定结果z的最小宽度,如果宽度不够,让计算机补空格而不是人为补,若规定z最小宽度为3,则当z宽度为1则补2个空格,为2时补1一个空格,即可实现对齐,通过对知识点的提示,学生即会答出,将上面的输出结果改为:

printf("%d*%d=%-3d",i,j,i*j);

通过对结果的分析,并和九九乘法表对比,即可得出,列j的范围不能超过所在行的行数,即将内层循环改为:

for(j=1;j<=i;j++)printf(“%d*%d=%-3d”,i,j,i*j);

结果就是我们熟悉的九九乘法表,如图3:

图3 九九乘法表

通过一步一步的引导,学生是可以自己写出九九乘法表的。看到最终的结果时,学生脸上洋溢的笑容告诉我,案例驱动的教学方式不仅是可行的,而且是要大力提倡的。因为该教学方式不仅让学生掌握了所要学习的知识点,同时学生也明白了为什么要学习,以及学了可以做什么。达到真正的学以致用,达到应用型本科院校的教学要求。

(2)游戏提示界面是否继续的制作

该案例应用到的知识点是改变循环执行状态的语句,包括goto、break和continue;这三个语句有类似之处,也有区别。首先通过一个动画让学生对三个语句有个初步的印象:

图4 三个语句的作用

首先复习循环嵌套,根据九九乘法表输出由符号“*”构成的三角形,引导学生将直角三角形转换为金字塔的形状,即:

图5

计算机执行的过程其实是对现实世界的模拟,先让学生想象在Word中输入金字塔的步骤,第一步应该先输入空格,第二步输第一行的“*”,第三步输换行,至此第一行输入完成。下面行同第一行。问题是每一行前面的空格数是怎么确定的呢?

假设总行数n,当行数为i时,i行的空格数为k,星号数为j;

i+k=n、i=j

通过分析得出,空格数应该为n-i,*的个数为i,程序为

for(i=1;i<=5;i++){

for(k=1;k<=5-i;k++)printf(“”);//输出所在行的空格数

for(j=1;j<=i;j++)printf(“*”);//输出所在行的*

printf(“ ”);}

当i为1时,输出空格的语句循环执行4次,每次输出一个空格,即为4个空格。输出*的语句循环执行一次,每次输出一个*,即为1个星号。

根据对goto语句的作用分析,然后使用goto语句实现不输出第二行的空格,即当行数为2时,跳过空格直接输星号;

If(i==2)goto JumpSpace;

for(k=1;k<=5-i;k++)printf(“”);//输出所在行的空格数

JumpSpace:

for(j=1;j<=i;j++)printf(“*”);//输出所在行的*

根据对continue语句的作用分析,然后使用con⁃tinue语句实现不输出第二行,即当行数为2时,结束本次循环;

If(i==2)continue;

根据对break语句的作用分析,然后使用break语句实现只输出前三行,即当行数为4时(输出前3行后,i变为4)结束循环。

If(i==4)break;

在掌握了三个语句的作用后,通过对同一个图形的变换,熟悉中又加入了一点点挑战,学生能积极主动地动脑筋,跟着教师的思路走,学生的学习兴趣浓厚,教学效果非常好。

然而这还不够,学以致用才是学习的最高境界,即必须让学生明白学了这堂课可以做什么。而学生正处于对游戏敏感的时期,将所学知识应用到游戏中,也是学生比较感兴趣的案例。

案例分析:用户输入1时重新开始,为了更形象地帮助学生了解continue、break和goto的含义,加入了提示语句“啊!夭折啦”。当用户要退出时加入“拜拜啦”;当用户输入有误时加入“不要捣乱”。

图6

现在几乎人手一台智能手机,很多学生上课玩手机已经成了不争的事实,如果能将学生玩手机和课堂教学结合起来,就会达到一石二鸟的效果。通过观察发现,目前几乎所有的付款方式都可以通过扫码付款,慕课版教材上都有二维码扫码下载教学资料。通过Internet搜索,发现有二维码生成器可以将文件上传并将案例文件制作成二维码,将生成的二维码放到PPT中,学生即可通过扫码的方式下载源程序,以供学生课堂或课后学习。

图7

4 结语

当今社会信息化高速发展、智能产品已经生活化。大数据、云计算、物联网、人工智能等新兴技术已经成为学校和社会非常受欢迎的热门行业。对于每一个学习计算机知识的学生,想要掌握其中的一种或多种技术,都要通过大量的实践来获得。教师在这个过程中必须由浅入深地寻找大量的贴近学生生活的案例,充分调动学生的学习积极性,激发学生的兴趣。根据应用型本科院校的教学特点,从教学实践出发,阐述了“案例驱动”教学法的应用,提供了二维码分享教学资料的方法。实践证明,教学效果显著。

猜你喜欢
嵌套空格语句
兼具高自由度低互耦的间距约束稀疏阵列设计
趣填成语
略知一二
智慧填数
论电影嵌套式结构的内涵与类型
嵌套交易如何实现逆市盈利
巧用嵌套交易实现逆市盈利
我喜欢
冠词缺失与中介语句法损伤研究
作文语句实录