APP下载

C语言实践教学方法浅谈

2012-10-18范宏宇

大众科技 2012年6期
关键词:C语言实例语句

范宏宇 何 晶

(安徽机电职业技术学院,安徽 芜湖 241000)

C语言实践教学方法浅谈

范宏宇 何 晶

(安徽机电职业技术学院,安徽 芜湖 241000)

C语言是高等院校计算机专业的必修课程,在整个学科体系中占据重要的地位。为适应高职院校以实践为目的的教学需要,文章提出以问题为中心,通过阅读、理解、分析、扩展的方式,使同学们理解并掌握知识点,并能够将C语言应用到现实问题的解决中。

C语言;实践;教学

1 前言

C语言是一门被广泛使用的计算机程序语言。它具有语法简洁、结构丰富、编程效率高、可移植性好等特点。在高职院校中引入C语言教学,不但能够使学生们掌握一门基础的编程语言,为以后其他高级编程语言打好基础,还能够培养和锻炼同学们的思维能力。

高职院校C语言教学的目标是让同学们掌握C编程语言的基础语法和编程思想,熟悉基本算法并能够根据问题正确选择、组合算法;能够独立编写代码、调试程序,测试数据;掌握一定的自学能力。对高职学生而言,C语言程序设计是一门实践性很强的课程。

在学习的过程中,C语言具有高级语言的特点,涉及到概念较多,语法规则繁杂,使用灵活,导致编程容易出错,且不易检验。所以,C语言的教与学一直都是教师和学生公认的困难课程。尤其高职院校学生基础相对较差,学习起来更加困难,学生们普遍认为C 语言枯燥难学、概念复杂、容易出错,尤其在面对问题时无从下手,学生的畏难、厌学情绪使得教学困难重重。这些都是C 语言课程教学改革是所面临的问题。

2 以解决问题为教学目标

C语言教学的内容包括语法基础、数据类型、流程控制、数组、函数、指针、文件等。国内经典的C语言教材都是按照以上次序进行分章,每一章节都是采用理论概念、实例讲解、课后习题的结构整理。这种理论—>实例—>习题的三步教学方式很符合我们教与学的习惯,但是大量的难以理解的概念、术语、语法规则的介绍,枯燥无味的例题分析往往使刚接触计算机程序语言的同学“不知所云”,很多同学学习后仍不能理解程序究竟为何物,甚至不明白一个程序到底帮我们解决了什么问题,更不能利用程序语言去解决其他问题,渐渐就失去了学习的兴趣。

程序语言的学习和其他语言的学习一样,例如英语,首先要掌握单词和语法,然后灵活的使用单词,根据语法规则组成各式各样的语句。同样,程序语言需要掌握关键字、结构语句和语法规则,学习C语言的目的就是使用C语言的几种基本数据类型和简洁的语法结构,去灵活运用解决各种问题。这就要求教学的重点不能都放在概念规则的讲授上,应放在引导学生主动思考,解决问题上。应采用化繁为简、先入为主的思想,设计出一个知识点精准、有实用性、易懂的程序,使同学们能够根据已有的知识体系构建相应的认知结构,然后采用“照葫芦画瓢”的方法修改、编写出相似的程序,从中体会并学习到其中的知识点和问题的解决方式,在以后遇到相似的问题,可以通过分析独立解决。这样,学生从中不仅能获得驾驭程序的成就感,还能更好掌握所涉及的知识点。

3 以实例为中心组织教学

在C语言程序设计教学过程中,随着授课的深入,难度越来越大,想要让同学理解并接受知识点,需要教学内容被呈现的过程中,同时介绍内容的框架结构和其他知识点之间的联系,使授课的内容组织转化成有着意义关联的各个部分。这种结构框架从底层的单个知识点的理解,到中层的一类问题的分析和解决,以及最后整体C语言知识点的结构和框架,都需要逐层深入举例讲解。

另一方面,理论—>实例—>习题的教学结构更偏向于让同学被动接受理论,而忽略了培养同学的主动思考和实践的能力。要想把教学内容植入同学的知识体系,需要以实例为中心,采用引导的方式,让同学在学习中慢慢理解与体会知识点,并通过独立分析解决问题,理解并渗透到知识中,从而更好发挥同学的主观能动性。要求讲解中选好例题,引导同学们逐步执行以下步骤,如图1所示:

图1 学习问题解决方法的步骤

根据以上步骤,可以帮助同学们学习解决问题的方法。那么,如何根据知识点之间的关系、问题的类型和程序的算法,来归类选择实例是教学引导的重点。本文就以本课程第一个编程瓶颈,C语言循环语句的应用来说明问题。

4 教学方法举例

循环程序设计章节知识点不多,但语句灵活多样,在现实问题方面应用非常广泛,在后期的程序设计的学习中也占有很重要的地位。在学习的过程中,如何灵活的将知识应用于问题是教学的主要目的,本章通过大量的例题解释说明循环语句的应用,并提出解决问题的各种方案。要想灵活掌握知识点,首先要从问题上分析并分类。本章的例题根据问题的类型分为以下三类:

(1)遍历类:用循环语句遍历每一种可能的数值,然后判断查找满足要求的数据。经典例题:打印水仙花数。用for语句在100-999之间遍历输出满足条件的数。遍历类问题是循环的基本问题,也是最常用的问题,在现实中有很广泛的应用。

(2)有序序列累加类:一组有一定序列关系的数累加求和。经典例题:1+2+3+…+99+100。累加问题一般用于计算数据。

(3)循环中断类:在一定条件中循环并判断,满足条件则跳出循环语句,根据判断循环语句的结束形式,判断分析结果。经典例题:求100以内的素数,遍历2-100以内的数,每一个数判断是否能够被除开,一旦能除开,则跳出循环。根据循环的结束形式,判断所求数是否除开,不能被除开的数即为素数。循环中断类问题比较难理解,但是在现实问题中应用非常广泛。

每一种题型都采用举例—>扩展—>分析—>解决问题,几个步骤分析教学:

4.1 实例的选择

为了更好的引入内容,选择有代表性的、容易理解的、以往学习中有接触过的例子来介绍问题。例如:累加类题目的1+2+3+...+99+100,该问题曾在第一章算法的讲解中有提及;遍历类题目打印100以内的3的倍数,可以用for语句中包含if语句简单的实现,非常适合初学者的入门。

4.2 扩展分析

当掌握一种问题的第一个实例后,如立刻介绍该类型问题的新实例,很容易让同学发生混淆,进而很难找到问题的核心点和关键点。为了让知识点一步一步的被同学们掌握并促发同学们去主动思考和理解,我们采用延展原例题的方式,对知识点进行扩展分析。

例如:在累加问题中求1~100之和,可以用while语句实现,程序如图2所示。

图2 求1~100之和

文中用“序列标记”来称呼在有有序序列中的关键序列,一般为等比序列或者等差序列,例如该例题为步长值为1的等差序列,在累加问题中,序列标记一般作为while的循环条件,包括循环结束条件,和变量步长值的变化。文中“累加元素”来记录累加序列中最终被sum相加的值,在该例题中,序列标记与累加元素一直,均为从1到100步长值为1的等差序列。

修改程序的第一步程序 1~100的元素求和可扩展为求1~100之内的偶数之和,即求 10098...642 +++++ ,由于“序列标记”变为步长值为2的等差序列,“累加元素”与序列标记一直,所以只需要在图1程序的基础上,将i++修改成i=i+2即可,如图3所示:

图3 求1~100之间偶数和

图4 求1~100之间偶数的倒数和

图5 求1~100之间偶数的加减运算

在这个逐步延展深入的过程中,同学们能够一步一步的去解决,尽管每一次改动很小,但是潜移默化的帮助同学们理解并实现了复杂的累加计算。

4.3 分类总结

随着程序需求的细微的变化,可以让学生在原有模型的基础上,慢慢的改动并领会新程序。为了使知识点更清晰的被同学们掌握,需要教师引导同学们分析几种程序的编写方法。例如前面的有序序列累加问题的特点如下:

(1)求和序列一般存在某种基础序列关系,上文中称之为“序列标记”,例如等比序列或等差序列,一次作为while循环开始和结束的依据,并作为循环变化的依据,如 i++等操作。

(2)每次相加的元素,上文中称之为“累加元素”,是在“序列标记”基础上进行的一系列的变化,可能是倒数、正负、相加、相减等操作。

一般解决这类问题,要观察序列的变化规律,然后按照如下步骤:

(1)初始定义必须要变量,其中包括 sum求和“序列标记”变量 i;以及根据程序需要定义的特殊变量,例如在正负值的变换中,定义整型变量flag存储符号变化。

(2)使用“序列标记”变量实现循环的起点和终点;

(3)次循环用sum加本次循环的“累加元素”;

(4)改变存储有序序列值的 “序列标记”变量,使其通过累加或者乘法等操作满足下一次循环的需要。

通过这种引领式的分析分类,可以将这类问题的特征和解决方法一一展现,让同学们可以在遇到此类问题时,摆脱无处下手的困境。

4.4 问题扩展

学习 C语言的最终目的是用程序语言解决现实中的问题,这就需要授课的内容在原有问题基础上向现实问题扩展。例如,在循环中断问题中,实例是打印100以的内素数,该例题尽管能良好的说明这类问题的特征,但是求素数本身在现实生活中并没有实际意义,这就需要教师提供更现实的问题来补充说明,以加深和扩展该类问题的理解和应用。

在实例的选择上,一般选择比较常见,且比较容易实现的问题。例如生活中经常会遇到密码登陆的问题,就是循环中断方法在生活中的经典应用。一般在登录一些软件或者网页中,需要输入用户密码,三次以内输入正确则可以正确登陆,一旦三次密码输入错误,则登录失败。

我们可以设置三层循环,用count计数器来实现循环次数,每次循环都判断输入密码是否正确,一旦正确则跳出循环,否则继续循环,直到计数器满3跳出循环。在循环结束后判断计数器的值来判断是否在三次以内输入正确的密码。

这种问题的提出和解决,更能激发同学的学习兴趣,并能在解决问题的过程中举一反三,在以后遇到类似的问题,可以独立去解决。从而达到教学的根本目的。

5 结束语

教学是一门艺术,它是教师综合素质的体现。为了让 C语言的教学以实践为方法和目的,要求教师从问题本身出发,引导同学们理论联系实践,掌握归纳问题、分析问题、解决问题的方法。以分析解决问题为手段,以激发同学们面对知识学习的独立性,积极性,潜能为目的,让同学们接纳并掌握这门语言,必能取得良好的教学成果。

[1] 谭浩强.C程序设计[M].北京:清华大学出版社,2002,6.

[2] (美)Stephen Prata. C Primer Plus(第五版)[M] .北京:人民邮电出版社,2005,2

[3] 李静雯.关于提高 C 语言教学质量的探讨[J].计算机教育,2007,(4):1149-1150.

A brief discussion on the teaching of C programming practice

The C language ,occupying an important position in the discipline system ,is a compulsory courses for computer major in the institutions of higher learning. In order to meet the teaching specification which takes practic e as its purpose, this paper centers around the problem bythe way of reading, understanding and analyzing, making s tudents understand and grasp the knowledge points and applying C language to the settlement of practical problems.

C language; Practice; Teaching

G712

A

1008-1151(2012)06-0188-03

2012-04-14

范宏宇(1981-),女,内蒙古人,安徽机电职业技术学院信息工程系助教。

猜你喜欢

C语言实例语句
重点:语句衔接
基于Visual Studio Code的C语言程序设计实践教学探索
基于C语言的计算机软件编程
高职高专院校C语言程序设计教学改革探索
论子函数在C语言数据格式输出中的应用
完形填空Ⅱ
完形填空Ⅰ
如何搞定语句衔接题
作文语句实录