用渗透式渐进案例解析C语言的选择结构
2019-06-01崔孝凤
崔孝凤
摘要:对于C语言的初学者来说,选择结构的学习既是重点又是难点,本文从初学者的角度出发针对选择结构采用渗透式渐进案例的形式依次设计了3个案例,通过这3个案例依次清楚描述了C语言中常用的选择结构的三种形式,对于C语言的初学者能够起到很好的入门引导作用。
关键词:C语言;选择结构;渗透式;渐进;案例教学
中图分类号:G642 文献标识码:A
文章编号:1009-3044(2019)12-0089-02
1 引言
对于C语言的初学者来说,选择结构的学习和掌握既是重点又是难点,如何用浅显易懂的程序案例帮助初学者理解并应用好选择结构是摆在每一位C语言任课教师面前的一项艰巨的任务。本文从初学者的角度出发,遵从由易到难的自然学习规律,采用渗透式渐进案例的方法设计出3个案例,依次清楚描述了C语言中常用的三种选择结构形式,对于C语言的初学者能够起到很好的入门引导作用。
2 具体案例
2.1 平行的if选择结构案例
【例题1】请设计一个程序,功能是输入数字形式的星期1至星期日(用数字7表示),要求输出相应的英文表示形式,如果用户输入的数字不是1到7,请输出“数据输错了,请重新输入!”的错误提示信息。
算法分析:这是一个多分支选择结构的程序,功能很明确,首先输入一个数字,然后依次判断并输出相应的英文表示即可。为了使程序简单化好理解,此处首先采用最好理解的平行if结构来实现。平行if结构最好理解,因为它与人的正常思维方式是一致的(就是把各种情况都罗列出来,一项一项地逐个实现),等初学者把这一种结构形式理解并掌握了以后,在此基础上就可以继续渗透,进行更为复杂的嵌套结构的学习。任课教师首先调动起学生的兴趣,然后逐步加深难度,这是至关重要的一个环节。
源代码如下:
#include
int main(void)
{int day; //用变量day表示星期几
printf("请输入今天是星期几(1,2,3...7)?") ;
scanf("%d",&day);
if(day==1) printf("Today is Monday.\n");
if(day==2) printf("Today is Tuesday.\n");
if(day==3) printf("Today is Wednesday.\n");
if(day==4) printf("Today is Thursday.\n");
if(day==5) printf("Today is Friday.\n");
if(day==6) printf("Today is Saturday.\n");
if(day==7) printf("Today is Sunday.\n");
if(day!=1&&day!=2&&day!=3&&day!=4&&day!=5&&day!=6&&day!=7) //数据输错了
printf("数据输错了,请重新输入!\n");
return 0;
}
2.2 嵌套的if選择结构案例
【例题2】题目要求同例题1,不再重述。
算法分析:程序功能与例题1相同,还是输入一个数字,然后输出相应的英文星期几的表示,根据由易到难的学习规律,在此采用嵌套的if选择结构来实现。嵌套的if选择结构中内嵌的if语句既可以放在if后面的语句中也可以放在else后面的语句中,此处采用后一种。
源代码如下:
#include
int main(void)
{int day; //用变量day表示星期几
printf("请输入今天是星期几(1,2,3...7)?") ;
scanf("%d",&day);
if(day==1)
printf("Today is Monday.\n");
else if(day==2)//第一层嵌套
printf("Today is Tuesday.\n");
else if(day==3)//第二层嵌套
printf("Today is Wednesday.\n");
else if(day==4)//第三层嵌套
printf("Today is Thursday.\n");
else if(day==5)//第四层嵌套
printf("Today is Friday.\n");
else if(day==6)//第五层嵌套
printf("Today is Saturday.\n");
else if(day==7)//第六层嵌套
printf("Today is Sunday.\n");
else
printf("数据输错了,请重新输入!\n");
return 0;
}
2.3 用switch语句来实现选择结构案例
【例题3】请设计一个程序,功能同例题1。
算法分析:程序功能与例题1和例题2是相同的,此处采用C语言提供的switch结构,switch结构常用于多分支的情况,对于该题目是比较合适的。
源代码如下:
//用switch语句实现选择结构
#include
int main(void)
{int day; //用变量day表示星期几
printf("请输入今天是星期几(1,2,3...7)?") ;
scanf("%d",&day);
switch(day)
{case 1:printf("Today is Monday.\n");break;//请注意break语句
case 2:printf("Today is Tuesday.\n");break;
case 3:printf("Today is Wednesday.\n");break;
case 4:printf("Today is Thursday.\n");break;
case 5:printf("Today is Friday.\n");break;
case 6:printf("Today is Saturday.\n");break;
case 7:printf("Today is Sunday.\n");break;
default:printf("数据输错了,请重新输入!\n");break; //此处的break可以去掉
} //switch结构结束
return 0;
}
请大家注意case 1至case 7后面的break语句是不能去掉的,大家可以思考一下,如果把break语句去掉,程序会出现怎样的运行结果,还正确吗?
2.4 三个案例的比较
通过以上三个案例的比较读者可以很容易地看出,例题1最简单,最好理解,因为平行if结构也可以称为并列if结构,就是通过使用if语句把程序的每一种情况单独以一个if语句的形式列出来。这种结构,程序在运行时需要对每一个if语句进行执行判断,所以耗费时间会比较长一些。例题2采用的是嵌套的if结构,该题目因为一共有八种情况,所以嵌套层数比较多(六层),初学者理解起来会有一定的难度,不过因为已经有例题1作为基础,以这种渗透式渐进的方式会容易理解很多。读者会发现,在嵌套结构中表达数字输错的情况比较简洁一些。具体授课时教师可以引导学生尝试将嵌套的语句放在if后面的语句中,以达到举一反三,灵活掌握if语句嵌套结构的教学目的。对于例题3采用switch结构来实现,在前面两个例题的基础上学生会感觉采用这种结构比较简洁,当然需要特别注意break语句的使用,对于初学者来说这是一个难点。
3 结束语
以上3个案例采用渗透式渐进案例的方式具体展示了C语言中的3种实现选择程序结构的具体应用,目的是抛砖引玉,引起学生的学习兴趣,从而逐步深化下去,取得更好的学习效果,这3个案例对初学者有极好的引导作用,在此基础上初学者可以对C语言中选择结构的学习和使用进行更加深入的学习从而设计出需要的各种情形的选择结构的程序。
参考文献:
[1] 台海江,许鑫,郑光.《C 语言程序设计》课程教学改革探讨[J]. 现代计算机, 2018(11).
[2] 辛凌洁, 贾玉宁, 杨颖. C 语言程序设计学习兴趣和方法[J]. 中国教育技术装备, 2017(22).
[3] 董智勇, 周博雅. 通过编程实例分析探讨C语言教学方法[J]. 辽宁高职学报, 2018(12).
[4] 郝蕊洁, 李妮. “情境-问题-探究”式教学法在C 语言教学中的应用[J]. 现代计算机. 2017(11).
[5] 黄金国. 基于项目化教学的“C 语言程序设计”课程改革研究[J].吉林工程技術师范学院学报,2018-02.
[6] 许金兰, 徐岗. “兴趣驱动+案例教学模式”在C语言教学中的应用[J]. 中国信息技术教育, 2018-03-23.
【通联编辑:王力】