一本支持研究型教学的C语言教材

我所编写的C语言教材特色突出,是一本支持研究型教学的教材,同时也是一本支持学生自主学习的教材。

首先,本教材以现代教育理念为指导,大胆探索,勇于创新,在教材层面支持研究型教学。

现代教育的重中之重是如何培养学生的创新能力。在这个问题上,教育界存在一个误区,就是强调“练”,强调“用”(如只注重让学生参加“实训”,参与“项目”等等),而忽视了“学”。知识来自于实践,在实践中当然可以激发学生的创新兴趣,培养学生的创新能力,但是,“灌输”完知识,再让学生用“知识”去“创造”,在创造中领会知识的作法问题多多。知识来源于实际问题的成功解决,其本身就蕴含了创新能力,在课堂上“教”的过程中,只给出结论,只“灌输”静态的知识而对其“能力”视而不见。在“课堂”上不引导学生思考,“知识解决了什么问题?”“是如何解决问题的?”,学生又怎么会受到启发从而对生动的能解决问题的知识感兴趣呢?当领悟到知识中的能力后,学生又怎么会觉得书本上的知识“无用”或“过时”呢?“教”时“灌输”而“用”时创新这种自相矛盾的作法又怎么可能有好的教学效果呢?既然知识只有在解决问题时才呈现出能力,那么,教材中的知识就不应该仅仅是个“结论”,而应该出现在问题的环境中,C语言的知识尤其需要如此。

语言用于同计算机沟通,不了解计算机就不可能真正掌握C语言。正如不了解西方文化就不会真正掌握英语。本教材独具匠心,高屋建瓴,从初学者都了解的冯诺依曼计算机原理讲起,通过C语言如何控制计算机,直观形象地给出C语言的构架,为初学者研究分析C语言打下了坚实的基础。当理解了计算机与C语言的关系后,初学者自然明白,C语言表现出的规律,如整数有取值范围,小数不精确等等,本质上是由计算机决定的。这就为通过C语言的学习深入了解并更好地使用计算机这个工具提供了条件,同时也为举一反三学习其它编程语言铺平了道路。

计算机这个工具的“能力”不仅仅决定了C语言的特点。编程能力的培养是C语言学习的重中之重,何谓编程呢?所有的C语言教材都提到了算法,这也是我在研究时发现现行C语言教材的一个通病。一有难点疑点马上用“以后”的课程解决,看了汇编就明白指针了,看了操作系统就明白递归了……。对于一个初次接触编程语言的读者,如此处理C语言课程中的疑难点,不要说分析研究知识了,他们能“死记硬背”已经不错了。编程实际上就是把人们解决问题的步骤翻译成C语言语句。虽然解决问题的步骤就是“算法”,但是,没有必要强调“算法”这个概念,一味地说“算法”就是编程而不分析究竟什么是编程,这种作法对于初学者没有丝毫的帮助。首先,编程是“模拟”,用C语言语句模拟大脑解决问题的过程。其次,编程有特点。解决问题的方法是否有效与所用工具有关,如125×16,人计算时把它变成125×8×2会简便一些,计算机计算时就应直接计算而不要画蛇添足地分开了。计算机的特点就是只会“重复”,工具决定了解决问题的思路,因此,在分析和解决问题时,尽量选用“重复”的步骤,如穷举法等。毫不夸张地说,编程就是写“循环”,即把解决问题时的重复步骤用循环模拟。明白了什么是编程,初学者自然就可以发挥主动性,看看例题是如何“模拟”的,是如何重复的,是如何体现“编程”特点的,然后也就能学着分析问题,学着编程了。只有问题清楚了,读者才有可能试着分析研究问题,如果读者连究竟什么是编程都模模糊糊的,那又怎么可能发挥主动性去分析研究编程呢?试图让初学者通过做大量的练习来体会“编程”就更“不负责任”了。

在初学者掌握了“编程”的特点后,本书又借助“循环的嵌套”再次讨论“编程”。编程是“重复”,但有时“重复”是比较抽象的,如下面的两个图形。

 

如何编程输出这两个图形?分析时找重复,输出第一行;输出第二行;……;输出第五行,重复输出五行就输出了这两个图形。由此可见,这里的重复是从宏观上分析得到了,忽略了每行细节上的不同,这就是所谓的“自顶向下”,然后再用“逐步求精”的方法写出循环体即可解决问题。由具体的问题总结归纳出了“方法论”,使得“循环的嵌套”这个C语言难点不仅直观形象,而且由前面相同的重复到本例抽象的重复,清楚地展示了“创新”的过程,培养了读者的能力。(教育部评估专家组进校实地考察期间,恰逢本人在上这节课,且有幸被专家组成员东北大学副校长汪晋宽教授抽查到。汪校长听后非常满意,认为体现了现代教育理念,大加肯定。)

讲递归时又谈到了编程,递归是C语言里难点中的难点,本书依然从方法论的高度来解决它。编程的重复往往仅限于解决问题的过程中局部步骤,可是在解决一类问题时,如求阶乘,出现重复的是“问题本身”,也就是说,原问题可以转化为性质相同,规模较小的子问题。这类问题的解决方法就是“递归算法”,而递归函数优雅地模拟了递归“算法”。依然是由实例分析问题,找出特点,给出解决办法,整个“创新”过程一目了然。通过这个过程,初学者不仅把握了“知识”的本质,更是体会到了“知识”中蕴含的能力。仅凭“给出递归的定义,举几个例子”这种现行教材通用的处理方法来让初学者理解并掌握递归,最终的效果可想而知。

本质上编程就是循环加递归。通过对“什么是编程”这个C语言重难点的处理,不难看出,本教材以先进的教育理念为指导,着力于在研究中分析知识而非简单地呈现知识,强调挖掘知识中蕴含的能力,以读者的能力培养为出发点,对如何编写现代化的教材进行了积极的探索。这将是一本支持研究型教学的教材,同时也是一本支持学生自主学习的教材。

个人认为,研究型教材的本质是先让读者思考问题(能“解决”更好),在分析“知识”是如何解决问题中让读者体会“知识”蕴含的能力。以C语言教材为例,根本问题是“如何用C语言与计算机沟通?”,计算机当然是“冯诺依曼计算机”。C语言如何操纵计算机?C语言为何有这样那样的特点?C语言的程序如何编写?等等。面向问题是研究型教材思路,因为只有结合问题,知识才能闪光。教材毕竟要面对不同程度的初学者,教材毕竟要体现相当长时间内问题解决过程中浓缩的精华,如何处理好问题与知识的关系是对每个作者的考验。但有一点,教材中的问题是不会因读者的程度而改变,教材中解决问题的过程及这个过程中体现出来的知识也不会因读者的程度而改变,不同的只是,读者在随着教材解决问题过程中的收获和体会。问题明白,解决过程清楚,读者自然可以自主学习。研究型教材肯定支持读者的自主学习。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值