教学中程序设计思维训练探究

2013-08-15 00:49:23钱小芳
天津市教科院学报 2013年2期
关键词:数组程序设计代码

钱小芳

(江苏省丹阳市第六中学电教处,江苏 丹阳 212300)

一、引言

程序设计是学生进行软件开发必备的专业基础。先前,教学的载体主要依附于章节的内容,重视基本数据结构和算法的讲授、程序设计三种基本结构的训练,学生获取了一个良好地基础后,就能可持续的发展,进行更深入的学习。

随着学校计算机课程的扩展,依附于章节的内容的教学模式,对于四星级高中学生来说,显得非常难学,因而,必须探索出一套既符合教学规律,又能激发学生兴趣,即探索方便好学的现代教学模式,显得十分重要。根据多年的教学经历,文中探索了一种用“思维”贯穿整个教学过程的模式:教师以讲授程序设计思想为主线,对学生进行思维训练为主导、将各章节的内容有机地贯穿起来,方便学生的学习。

二、思维贯穿

1.思维性初探

程序设计是利用已有的软件包,进行应用开发。使用者必须依据具体的应用和依附的具体平台来设计计算方法,这个设计的过程中充满了计算思维,因而程序设计的关键转变为对问题的理解能力、对问题的描述能力、对问题的具体流程控制能力。对问题的理解主要是抽象、分析及等效转换;对问题的描述主要是进一步转换、递推、约减、细化;常用的描述工具有用流程图描述问题、用伪代码描述问题、用程序代码描述,程序的控制主要体现在具体的设计流程中路径的走向。[1]

2.思维贯穿

思维的形式多样化,应该支持发散、反思、推理思维。

第一种,横向思维

主要用于理解算法的描述方式。算法的描述方式很多,比如,从1加到100的和的算法描述可以表示为“1+2+3+……100”数学表达形式,也可以表达成伪代码形式,也可以表达成图的形式,也可以把表达式分解为程序的形式。

为了更好地说明程序设计思想,我们强调的是“思维性”,在程序设计过程中我们要动脑筋,我们把开动脑筋的过程,进行反向分析,针对一题多解问题,探索了几种形式思维:横向思维、转换思维、纵向思维。

三、程序设计

(1)横向思维

对于同一问题,我们可以从语法角度去解题,也可以从语义角度去解题。

语法角度利用do while;while;for求1~100内的元素的和;语义的角度利用数组的首地址、一维指针、二维指针对一个二维数组的所有元素进行遍历。

(2)转换思维

代码内转换能力是一种形式;算法各种形式的转换;将for转换成while循环,if与switch的功能转换,甚至if加goto与循环的等效;在迭代过程中初始值换掉、循环次数边界问题理解;将相同算法思想,表达成图、伪代码、代码,及这三者之间的转换。[2]

(3)纵向思维

基于不同的知识点对同一问题给出解答;基于认知规律的递进性思维,对于问题的原子型解答、改进型解答、完美型解答。这样得到的算法可以比先前的算法更优化、更综合、更有突破性;对于输出40行斐波拉契数列,原子型的解答(f3=f1+f2;f1=f2;f2=f3),改进型的解答每个八个换行,输出效果好,联系具体输出设备的局限,基于数组的解答,并且将其与小兔子的繁衍联系在一起,以月份的形式输出。[3]最后这种叫完美型或应用型。对于菱形图形的输出,可以用穷举法,显然局限最多,可以用上三角、下三角,空格、星号、回车三句来描述,也可以不分上下三角、基于绝对值来进行统一表达;甚至还可以用二维数组的两次赋值来互补进行菱形图案的输出。从不同的角度,进行问题解答。

四、结论

总之,利用各种方式、开动动脑筋是程序设计的思维训练的法宝。在培养学生基本能力的时候,是够用化地教授学生最基本的知识、技能,还是系统化教授最基本知识、技能,其实都是一个问题的两个方面,够用化强调传授知识的同时,要发展学生的能力,因知而费能,系统化看上去偏向研究能力,很深奥,高中学生可能达不到。

[1]刘晓玫等.关于数学推理问题的几点思考[J].数学教育学报,2002,11(2):54-56.

[2]Grant Wiggins&Jay McTighe.Understanding by design[M].ASCD,1998:5-20.

[3]J Sternberg.The Nature of Mathematical Reasoning[J].National Council of Teachers of Mathematics,1999(1):37-44.

猜你喜欢
数组程序设计代码
JAVA稀疏矩阵算法
电脑报(2022年13期)2022-04-12 00:32:38
基于Visual Studio Code的C语言程序设计实践教学探索
计算机教育(2020年5期)2020-07-24 08:52:56
JAVA玩转数学之二维数组排序
电脑报(2020年24期)2020-07-15 06:12:41
从细节入手,谈PLC程序设计技巧
电子制作(2019年9期)2019-05-30 09:42:04
创世代码
动漫星空(2018年11期)2018-10-26 02:24:02
创世代码
动漫星空(2018年2期)2018-10-26 02:11:00
创世代码
动漫星空(2018年9期)2018-10-26 01:16:48
创世代码
动漫星空(2018年5期)2018-10-26 01:15:02
高职高专院校C语言程序设计教学改革探索
寻找勾股数组的历程