案例教学法在数组实验教学中的应用研究
扫描二维码
随时随地手机看文章
0 引 言
案例教学法被认为是顺应当代教育改革方向的成功教育模式。本文将案例教学引入到计算机程序设计基础课程数组部分实践教学过程,并对教学效果与实践经验进行分析研究,结果证明在数组部分采用实际的生活案例设计,极大地调动了学生的主观能动性,激发了学生对知识灵活运用的探究兴趣。
案例教学起初是由美国哈佛大学商学院提出,在多次实践后取得了成功,案例教学是在课堂上引入具有趣味性和生动性的案例,与传统教学相比,该方法使课堂更加活跃,教师也通过这种教学法更新了教育理念,实现“知识传授”向“能力培养”的转变。案例教学最早应用于法学行业和医学行业,直到 1970 年,这种教学方法开始在教育行业推广使用 [1]。
案例教学法的优势在于 :
(1)直观性强,易引起学生的兴趣,使学生在好奇心的驱使下完成知识的领悟 ;
(2)设计一般采用案例引入——提出问题——分析讨论——解决问题——归纳总结流程。这几步层层递进,有利于学生自主思考和分析 ;
(3)案例设计一般从实际生活实例入手,实践性强,使学生在上机实践中完成知识的运用 [2-3]。
1 数组实践教学中传统的案例设计
学生在数组部分学习时,普遍感觉数组概念简单,基本内容简单易懂,但解决实际问题时通常无处着手。对学生来说,在课堂理论教学中,教师通常介绍数组的结构特点,并让解决一类问题。这部分案例通常较简单,目的在于方便学生理解数组的数据结构。
传统数组部分案例设计大都采用经典排序或查找算法。学生在上机实践过程中通常能较好地完成这部分内容,经典数组应用中的排序和查找算法代码较成熟、精炼,学生易于理解掌握并熟记。这样的案例设计通常无法加深学生对数组数据结构特点的掌握,只是完成了固定代码的拷贝实践练习。
针对传统数组部分案例设计的不足,本文将学科竞赛中的大数运算引入到数组部分的实践练习中,使用了“由浅入深” 与“循序渐进”相结合的案例教学法。
2 案例设计
实际生活中存在有超大整数,这些超大数据需进行信息处理。而计算机中所有数据类型都无法表示这些超大数据,因其位数超过最大数据类型所能表示的范围,因此如何完成这类数据的存储和运算值得讨论。
2.1 超大整数加减法运算
从大数的存储进行分析讨论,涉及字符数组知识。字符数组存在“%S”格式输入和输出,把超大数作为字符串,采用字符数组存放,可方便完成数据的输入输出 [4]。从最简单的超大整数加法入手,解决存放问题。两数相加涉及的知识如下:
(1)加法的运算是从低位向高位进位,若数组按顺序存放,大数的最高位在数组的首元素,若加法运算后最高位存在进位时,需依次移动数组中的元素,较为繁琐。故加法运算前,先进行字符串的在字符数组中的逆序存放,即大数的最低位为数组的首元素。
(2)进位问题的判定,对应位做加法时存在进位问题。
(3)运算结果的输出问题,加法运算相对简单,该案例的设计较好地训练了学生对字符数组应用的掌握。由加法运算过渡到减法运算,强调减法和加法运算的不同之处。首先保证大数减小数,可通过比较字符串比大小确定大数 ;减法从低位到高位进行对应相减运算,结果为负时,前一位数需减 1(借 1),最后对于结果为负数的值,进行加 10 处理,如 图 1 所示。
2.2 超大整数乘法运算
对于两个超大整数乘法运算 [5],数据的存放及输入输出与数据加法和减法相同,两大数乘法运算的关键在于首先确定相乘结果为几位数(n 位数和 n 位数相乘结果不大于 2n 位 数)。其次,第 i 位和第 j 位相乘结果存放在第 i+j 位,如图 2所示。最后处理进位关系(通过与整数 10 进行模和除法运算,对第 i+j 位的累加求和后的两位数进行分离)。
乘法运算案例的设计是对加减法运算的循序递进,学生由乘法运算易想到除法运算,除法运算要考虑的问题更复杂,因此在实践教学过程中不做要求,但对于学习程度较好的学生,可引导他们进行下一步学习。
从两个超大数的加法、减法到乘法案例设计循序渐进,使学生在上机实践的过程中既能很好地理解超大数以字符串形式存放在数组,又能较好地使用数组数据结构的特点来完成指定的逻辑运算。乘法运算的难点在于数组元素对应位相乘的结果应该位于数组元素的第几位。这样的任务设置符合学生的认知规律,可加深学生理解并掌握。
此实验案例的目的在于除了熟练掌握查找、排序常见算法之外,还可灵活利用数组克服计算机数据类型存储数据范围有限的缺陷。对于超大数间的运算,可利用数组存储数据的特点加以解决。让学生体会如何利用程序设计的思想来完成编程。
3 结 语
计算机程序设计基础中,数组是最为基础的数据结构,稍复杂的问题中都会遇到这类数据结构,因此学习和熟练掌握数组的应用非常必要。上机实践的教学过程中需精心进行案例的设计,让学生既不会畏难,又附有一定的挑战,使学生在熟练掌握基础知识的同时进行一定的知识拓展,这对于培养他们的思考和思维能力非常有益。通过往届学生的授课实践结果证明,该部分所采用的案例设计非常成功。计算机程序设计基础课程是一门实践性非常强的课程,对于各章节实践案例都需要精心设计,使学生在解决生动有趣的实际问题中,完成计算思维能力的培养。