表白八法趣讲C语言顺序程序设计
2019-04-19赵娟
赵娟
摘要:针对初学者怕学C语言顺序程序设计的问题,提出用直白式、藏头式、数字式、心数式等表白八法串讲知识点,让学生在快乐中学习。实践证明,该法能大大提高學生的学习兴趣,促进自主学习,有效提高学生的编程能力。
关键词:程序设计;编程能力;学习兴趣;
在智能化时代,需要能够将信息技术应用于本领域的新型人才,因此非计算机专业的学生也要学会一门程序设计,一般理工科学生学习C语言程序设计[1]。学生需要学习编程思想,会用计算思维分析问题和解决问题[2,3]。
一、传统C语言理论课存在的问题
学生学习基础薄弱。中小学生学习程序设计的不多,有的也只是学点Visual Basic的皮毛。大一的学生学习C语言程序设计大都起点为零,在对C语言全然不知的情况下,很多学生是充满了好奇的,有一颗想要尝试学习编程的心。
一般情况下,第二次理论课便会讲C语言第三章顺序程序设计,而该章语法、知识点繁杂[4]。传统的理论课是教师细讲每个知识点,需要大家记忆的东西很多。面对枯燥、难懂的内容,很多学生的学习兴趣被浇灭了[5]。学生听课如听天书,也就没了听讲的动力。上课不听讲,下课看书又瞌睡,很多学生便放弃了学习编程。因此,如何提高学生学习C语言程序设计的兴趣是教师需要解决的关键问题。
二、表白八法趣讲C语言顺序结构
为了激发学生的学习兴趣,通过直白式、藏头式、数字式、心数式等表白八法串讲第三章的知识点,每一式可由两种方法来实现。教学生用程序来表白,一个程序包含若干个知识点。学会了一种表白方式,顺势学会了其中的重点内容,让学生觉得学习程序设计是件有用又有趣的事情。
1.直白式。直白式是指源程序中明白地显示表白的话,被表白方看代码立刻就能知道意图。教师先运行程序,屏幕上显示诸如“嫦娥:女神!”之类的话。然后询问学生这是怎么做到的。如果有积极好学的学生知道答案,便可以让其说出思路。接着,教师展示源程序,再请读懂的学生给大家讲其中的知识点和注意事项。
方法1:源程序里有预处理指令和主函数,主函数调用输出函数来输出表白语。通过此程序可以教学生如何写预处理指令、如何定义函数、如何调用输出函数、如何用转义字符等。让学生清楚为什么主函数的类型为整型,返回值给了谁。当函数类型与返回值类型不一致时会怎样。虽然涉及第七章函数的内容,但是函数是贯穿始终的。教师所讲的知识不必受章节的限制,只要是学生需要的知识,遇到就讲,一回生,二回熟。
方法2:在方法1的基础上进行改进,源程序里使用宏定义符号常量和字符串格式符,设置域宽和左右对齐方式。教学生们何时使用宏定义,如何用宏定义,如何用格式符。由符号常量引出常量和变量。对比常量与变量,讲五类常量和标识符规则。一个程序涉及的新知识点不能太多,语法知识讲久了,学生们会进入疲倦状态。
2.藏头式。藏头式是受藏头诗的启发,代码中的文字看似与表白不相关,被表白方如果看源程序不推敲就不知道真正意图。运行界面与直白式的效果是一样的。
方法3:宏定义两个符号常量代表两句普通的话,使用格式符来截取字符达到表白的效果。进一步对比学习实数格式符与字符串格式符,对比显示效果,让学生清楚%m.ns、%m.nf、%-m.nf、%0m.nf等的作用,并会举一反三地使用。
方法4:改进方法3,定义子函数,在主函数中声明和调用子函数。让学生对比函数定义、函数声明和函数调用,找出其相同点和不同点。通过调整函数定义的位置,让学生思考函数声明的用法。函数定义放在函数调用前,没函数声明,程序也能正常地编译运行。当函数定义放在函数调用后,无函数声明则编译报错。由此让学生明白编译顺序是自上而下,编译系统先见到函数调用,初次见面不相识。因此,函数定义在函数调用后,要写函数声明语句,告诉编译系统函数的相关信息。这样编译到函数调用时,编译系统就能根据函数声明判断函数调用是否合法。相比之下,运行顺序是从主函数开始,调用子函数时就跳到子函数执行,调用结束,返回到被调用处继续执行,最终在主函数结束。
3.数字式。数字式是用数字来表明心意,运行界面上输出的是诸如“嫦娥:520”之类的话。“520”这种民间用法往往能引来学生一笑。
方法5:使用常变量、局部变量和循环结构。分析常变量与常量、符号常量的相同点和不同点。教学生如何定义变量,如何选择数据类型,清楚使用变量的基本原则,知道程序运行时会为定义的变量分配多大内存。对比学习for循环、while循环与do while循环,其中学生最易弄错for循环的执行过程。先让学生讲,教师再做详细分析,加深学生的印象。由循环引出五类C语句——控制语句、函数调用语句、表达式语句、空语句和复合语句,让学生初识九种控制语句,会写复合语句。
方法6:用到浮点型数据转换成整型数据,通过演示和分析,学生深刻认识到浮点型转换成整型是丢掉小数部分,而非四舍五入,由此引出数据类型决定了数据存储形式、取值范围、占内存大小和可以参与的运算种类等。不同类型的数据运算,结果类型与取值范围大的类型相同。
4.心数式。心数式使用ASCII值显示心形。先展示运行效果,屏幕上显出一颗颗的心,再引导学生思考怎么通过程序显示出心形。
方法7:定义字符型变量,调了几种不同的输出函数。让学生能区分单个字符与字符串的引号、格式符、输入函数和输出函数。对比“=”与“==”的区别,从而引出关系运算与赋值运算,教学生复合赋值运算符的用法,学会计算多种表达式的结果。对比除与求余,让学生做几道小题,由出错处引出注意事项,最后总结优先级、结合性、自增运算和自减运算。
方法8:全用ASCII码值输出字母,引出大小写字母等的ASCII码值关系,教学生学会通过修改ASCII值实现大写字母与小写字母的相互转换。还可以进一步扩展,讲二进制、八进制、十进制、十六进制的表示及相互转换方法。第三章知识点很多,不用一次性都讲完,在后续课程中可以继续串讲到这章的内容。
三、趣讲顺序结构的效果
通过八个有趣的小程序串讲第三章的知识,学生们饶有兴趣地听讲,积极地参与互动,课下和上机课时自主地实现了课件上的程序。每个小程序串讲若干知识点,在学生感到疲累前,又换一个有趣的小程序。学生们普遍觉得C语言很有意思,学习兴趣有所提高,愿意腾出时间看书、查资料、多做编程题,编程能力有了大大提高。
四、结语
兴趣是最好的老师。打破常规,用直白式、藏头式、数字式、心数式等表白八法串讲C语言第三章顺序程序设计的众多知识点,学生们兴趣盎然,体会到了编程的快乐,有效地提高了学生的学习动力和编程能力。
参考文献:
[1]刘光蓉.C程序设计实验教学的理实一体化教学模式[J].实验室研究与探索,2013,32(10):350-352.
[2]刘光蓉.融入计算思维的C语言实验教学设计[J].实验室研究与探索,2015,34(10):81-83,103.
[3]张旭.以培养计算思维为核心的C语言实践教学设计[J].教育教学论坛,2017,2(5):252-253.
[4]刘国奇,靳瑞霞,孙全党.基于泛在学习环境的《C语言程序设计》翻转课堂教学研究[J].教育教学论坛,2016,8(31):154-156.
[5]赵媛,王杰,周立军,等.以计算思维为导向的C语言程序设计MOOC建设[J].实验技术与管理,2018,35(4):147-150.