C++程序设计同步实践宝典——前言

简介: 【2012年8月7日补充:《C++程序设计入门同步实践宝典 》可以下载了】【再次早醒。脑子里盘算的是让写了一年的C++实验指导让更多人能够用上。标题党一次,就叫《C++程序设计同步实践宝典》。这几年写过的博文也有不少积累了,已经在编《贺利坚文集》,上册教育教学篇,下册学习指导篇。暑假完成这三册文集的编辑。哦,三本书,以前没有想过,先做个广告,开学前,免费“出版”,敬请关注。】《C++程序

【2012年8月7日补充:《C++程序设计入门同步实践宝典 》可以下载了

【再次早醒。脑子里盘算的是让写了一年的C++实验指导让更多人能够用上。标题党一次,就叫《C++程序设计同步实践宝典》。这几年写过的博文也有不少积累了,已经在编《贺利坚文集》,上册教育教学篇,下册学习指导篇。暑假完成这三册文集的编辑。哦,三本书,以前没有想过,先做个广告,开学前,免费“出版”,敬请关注。】


《C++程序设计同步实践宝典》前言

  如果你被“宝典”一词吸引而来,嘿嘿,原谅我标题党一把了。

  这些内容原先没有想着有多宝贝,这是我“与84个写代码的菜鸟相伴而行[1]”的一年中,为学生写的上机指导。C++程序设计的上机指导书不少,但是要贴近我的课堂,让学生易于“同步”地开展实践,中间要有个“过渡”,这需要老师为学生架座桥。初入大学的同学不容易,刚学编程的同学伤不起。打火、挂挡、松离合,这套老司机习以为常的动作,对菜鸟就是一个坎,其实也能是一次小激动滴。

  带着这样的想法,在指导学生第一次上机前,按着面向最“菜”的零基础的学生的标准和一系列好玩的想法,写了“上机指导”。尽管如此,第一次的上机仍然显得混乱。至此,认识到一份合适的“上机指导”,对菜鸟而言是多么的重要。一双鞋(老百姓的鞋,是要穿的,而不是看的)是不是宝贝,首先不是多好看,有多贵,而是合脚与否。于是乎,伴随着每周一次的上机,坚持写了下去,以至于一发而不可收拾,支撑了学生一年的课内外实践。

  还必须交待,这份“宝典”有水分:其内容只经过了一次实践的检验。而且,呃,不好意思,还有,这个有18年教龄的迂腐的老师是第一次教C++。以前讲过Basic、Pascal和C等语言,最近一次给新生开出的程序设计课程是给2001级的C语言。这十年,他的教学工作没有停止过,但从没有给新生上过课。十年的时间,学生特点、语言的发展,巨变啊。因此,有时想想,我是一只带菜鸟学生的菜鸟老师。

  其实,这也是一件令人自豪的事情。我是菜鸟,我怕啥。菜鸟的资本在于白手起家,无牵无挂,菜鸟的优秀品质在于勇于往前冲,舍得下力气,摸着石头过河,走一步看一步,碰壁了就回头。在写上机指导时,原先构想的是,一周一两个题目让学生做做就行。但越学内容越多,有时针对一周课堂教学的内容,一两个题目根本没有办法覆盖知识点,恨不得给学生写上十个八个题目才能罢手。显然,同学们的承受能力得考虑,于是苦了“菜”老师,有些题搜肠括肚一番,多体现些知识点,居然也用三四个题目交待了。于是,后来每周的题目数大致保持在三到五个。

  控制题目个数方面的另一个难度是“菜”老师额外自找的,这一点可能会使本“宝典”的读者不适应,为此,我在教学过程中却损耗了不少花花肠子。何方神圣?提前体验[2]!简单说,就是不待老师讲,学生就要练,必要的准备仅限于老师给些提示。提前体验的目的在于在我要讲某一关键概念、知识点之前,学生就曾经稀里糊涂地用过了,当真正学到之时,大拍脑袋:原来当初如此!最重要的,我希望学生由此在学习方法上发生的改变,这是培养持续的自主性学习能力的非常重要的能力,尤其对于学习工程学科的同学。

  在学习中,记忆很重要,有同学一开始学习程序设计,就走上了“背”程序的道路。天哪,被高考考糊的傻孩子,怎能这么干?就书上的几道例题,能支撑你未来要做的项目吗?工程师是要创造世上没有的东西的,背程序成何体统!要知道,记忆的关键在于重复。所以,在这些题目中,除了想“提前体验”,还想要“钩起回忆”。这是我写题目时的又一个难度。

  千万别把“菜”老师想成详林嫂一再诉苦,还有邀功之嫌。一点小得意,下了苦功夫,当然不避嫌。更重要的,我希望同学们在使用这本“宝典”时,品品这方面的味道。不品是不知道的。我的不少学生闷头做题,做完了就完了,这些同学的初级阶段走了很长时间,真的很累。也有的同学,做完了想一想,和课堂上、课本上的内容对照一下,体会出了贺老师的一番苦心,很快地就进步起来了。学得自信,学得轻松,学得有效。至于每周将拓展题也照单全做了的同学,更是不得了了。

  有了这些量身订做的上机题目,我的学生积累了最大的资本:代码行数。说实话,每周二、三百行,高峰时近千行的程序量对大一新生真是不容易。最投入的同学,利用大一的两个学期,写了近两万行C++程序。我的学生又是软件外包方向的,除每一位大一新生必修的课程外,他们还得同时学日语,负担很重。有时,我真的心疼这些孩子们了。但代码行数的积累不能妥协。我们又一利器是用博客提交实验报告[3],在解决了抄作业顽疾的前提下,我的学生由此收获良多[4]

  只是,当这些内容集在一起时,我需要调整一下其中的顺序。我的课堂中的跳跃性让菜鸟学生们常不适应,这种跳跃也延伸到了课后的上机。比如,在第4章关于数组的上机实践中,第13章讲的文件就被引入了。这解决了大量数据需要在运行程序时输入的问题,更重要的是同学开始知道“文件”这个东东可以编程操作。这体现的就是前面讲的提前体验。而本书主要是提供给学生在课外自学中参考的,适应学生们看书学习、做题实践、再看书复习的学习节奏,其中的内容需要按照教材的章节重做调整。也就是说,当初同步于我课堂安排[5]的实验指导,现在同步的是教材。

  现在不得不提教材了,是大名鼎鼎的谭浩强先生的红皮书《C++程序设计》(清华大学出版社)。这是一本非常优秀的教材,尽管也有些仁智之士的仁智之见。本书适合C++的初学者参考,也适合C++课程学过之后,想通过实践回炉进一步提高程序设计能力的读者。建议的使用方法是:看教材、按本书实践、再看书理解涉及到的概念、原理。

  在下一个学年,针对2012级学生,我和我的新菜鸟们与课堂同步的实践教学还要继续下去,其中的内容必然也还会改动,敬请关注我的教学博客[6]的更新。对使用本书中发现的问题,以及建议和批评,可以通过博客提供的邮件功能发给我,也可以直接发送Email到:sxhelijian@163.com。在我的教学工作中,学生及时、完整的反馈是我不断改进工作的源泉。对于本书,同样需要读者给出真实的感受。

  最后再说说“宝典”之“宝”。其中有作者的心血,自然宝贝。其中还有我的84位同学的实践,他们中的大部分也将之当宝。只是,如果不是用心学来,其中的宝气是不会随意施为的。时下有为数不少的学生只要找到一个人云亦云,有时甚至是子虚乌有的说辞,例如兴趣、逻辑思维差之类的,就将自己划到了“不学编程、学不会编程”的阵营中去。怪也不怪,他们真的就学不会程序设计了。作者在“哀其不幸,怒其不争”的同时,也立志“助其成功”[7],为此也写下了大量的文字指导大学生的学习。如果有需要,欢迎光临作者的CSDN博客[6]和新浪博客[8]

  Everyone can cook. 学习的问题要用学习来解决。大学的学习,非不能也,是不为也。

  每个人都能学会编程。如果各种条件不具备,你无法改变“选择了计算机类专业”这一既成事实,通过改变自己,学会编程,爱上编程。将来可以不从事编程工作,但你的人生一定会因为曾经的编程而精彩。

  信不信由你,我信了。相信的依据,看“迂者-贺利坚”博客中我和我的学生的故事。

 

 

贺利坚          

于2012年7月16日凌晨  


[1] 见博文《这一年,与84个写代码的菜鸟相伴而行》,http://blog.csdn.net/sxhelijian/article/details/7643876

[2] 见博文《提前体验——工程教育中的法则》,http://blog.csdn.net/sxhelijian/article/details/7587468

[3] 实施前的想法见博文《将时尚的互联网引入教学中来》,http://blog.csdn.net/sxhelijian/article/details/7085122,教学效果的初步总结见博文《C++课程教学改革问卷调查报告》,http://blog.csdn.net/sxhelijian/article/details/7643654

[4] 见博文《我的学生在CSDN上发表博文情况统计》,http://blog.csdn.net/sxhelijian/article/details/7644123

[5] 博文《C++程序设计教学材料-2011级》记录了课程的进展情况,也提供了原始的资料下载,以及参考解答的链接,博文地址是:http://blog.csdn.net/sxhelijian/article/details/7056008

[7] 见博文《体味:面对“问题”学生“哀其不幸,怒其不争,助其成功”》,http://blog.sina.com.cn/s/blog_5717f02f010163wj.html

[8] 迂者—贺利坚的新浪博客:http://blog.sina.com.cn/sxhelijian



目录
相关文章
|
28天前
|
存储 C++ 容器
学会在 C++ 中使用变量:从定义到实践
C++中的变量是数据容器,包括`int`、`double`、`char`、`string`和`bool`等类型。声明变量时指定类型和名称,如`int myNum = 15;`。`cout`与`<<`用于显示变量值。常量用`const`声明,值不可变。变量名应唯一,遵循特定命名规则,常量声明时需立即赋值。
113 1
|
28天前
|
存储 算法 编译器
【C++ 字符数组的模板特化】面向字符串的C++模板特化:理解与实践
【C++ 字符数组的模板特化】面向字符串的C++模板特化:理解与实践
47 1
|
28天前
|
算法 程序员 C语言
【C++ 随机数分布类型 】深入探索C++随机数分布:原理、应用与实践(二)
【C++ 随机数分布类型 】深入探索C++随机数分布:原理、应用与实践
54 0
【C++ 随机数分布类型 】深入探索C++随机数分布:原理、应用与实践(二)
|
29天前
|
算法 Java 编译器
【C++ 14新特性 】C++14 数字分隔符:深入理解与实践
【C++ 14新特性 】C++14 数字分隔符:深入理解与实践
53 2
|
1月前
|
存储 Linux 测试技术
无效数据处理之道:Linux系统编程C/C++实践探索(三)
无效数据处理之道:Linux系统编程C/C++实践探索
17 0
|
1月前
|
存储 测试技术 Linux
无效数据处理之道:Linux系统编程C/C++实践探索(二)
无效数据处理之道:Linux系统编程C/C++实践探索
31 0
|
1月前
|
安全 Linux 测试技术
无效数据处理之道:Linux系统编程C/C++实践探索(一)
无效数据处理之道:Linux系统编程C/C++实践探索
70 0
|
28天前
|
存储 安全 编译器
【C++ 17 新功能 std::visit 】深入解析 C++17 中的 std::visit:从原理到实践
【C++ 17 新功能 std::visit 】深入解析 C++17 中的 std::visit:从原理到实践
70 0
|
29天前
|
算法 网络协议 编译器
【C++ 14 新特性】C++14二进制字面量:深度探索与实践
【C++ 14 新特性】C++14二进制字面量:深度探索与实践
38 1
|
6天前
|
缓存 编译器 API
NumPy与其他语言(如C/C++)的接口实践
【4月更文挑战第17天】本文介绍了NumPy与C/C++的接口实践,包括Python与C/C++交互基础、NumPy的C API和Cython的使用。通过案例展示了如何将C++函数与NumPy数组结合,强调了内存管理、类型匹配、错误处理和性能优化的最佳实践。掌握这些技能对于跨语言交互和集成至关重要。

热门文章

最新文章