
前言
关于本书
从2002年开始,笔者陆续在培训机构、大学和企业里担任程序设计课程的教师,培训的对象包括在校大学生和已经工作了多年的程序员,也包括从其他专业转过来的学生。很多学生往往在入门阶段非常迷茫,感觉“看了很多书,听了很多课,但仍然没有编程思路,仍然不会动手写程序”,进而选择了“从入门到放弃”。这促使笔者开始思索是什么原因造成了这样的情况,学编程一定需要“天赋”吗?有没有一种学习路径可以在降低难度的同时训练学生的编程思维?
为了解决这些问题,在过去十几年里笔者和同事始终坚持带领学生以项目实训的方式展开学习,用项目需求来推动技术学习,取得了不错的教学效果,也积累了一些实训案例。
在2018年的某次授课中,一名学生提出“我们能不能不在‘黑框框’下编程”,这激发了笔者进行新课程设计的动力并设计了“外汇牌价看板”实训项目用于教学,同时也开始了这本实践指导书的编写。2019—2021年我们分别在多个教学班级进行了教学试点,取得了很好的教学效果,在此基础上最终完成了本书。
本书的读者
如果你符合下列条件之一:
· 准备开始学习软件开发,但不知道如何入门,也不知道方向;
· 学过某种程序设计语言,但不知道它有什么用,也无法将其应用于实践;
· 会做很多练习题,但从来没有从头至尾完成过一个项目;
· 之前学习的挫折让你产生学不会编程这样消极的念头。
那么这本书就是适合你的。本书使用最简单的C语言作为入门语言,对读者之前的专业、编程经验没有特殊要求。
本书特色
在本书的编写过程中,笔者始终把“急用先学、学以致用”作为最重要的原则,避免对语言细节的过多深究造成的学习压力和乏味感;按照“先在实践中发现问题,再学习相应的理论知识或技能来解决问题”的思路,让读者以最快的速度进入项目开发状态,并在这个过程中有意识地锻炼读者发现问题、分析问题和解决问题的能力。
因此,本书不是一本讲述C语言细节的专著,而是一本实践指导书。它着重帮助读者建立对程序设计的系统认知,并通过案例来培养和锻炼读者的编程思维,积累编程经验,从而度过最艰难的入门阶段。
本书所使用的案例放弃了传统C语言教学中纯文本模式下的编程,加入了对图形显示原理和方法的介绍,并最终完成基于图形用户界面的项目开发。
如何使用本书
本书是一本实践指导书,全书是完全围绕完成“外汇牌价看板”这个目标而设计的。因此,除了第1课是必备的背景知识外,从第2课开始每课都要解决一个或多个实际问题。
按照这种方式学习编程已经被大量学习者证明是最有效的,也最符合软件工程师日常学习和工作的模式,对锻炼读者的编程思维和习惯养成是非常有益的。
第2~9课课后都安排了“小结”和“进度检查表”,请读者务必确保在完成了“进度检查表”中每一个任务后再继续后续章节的学习。
更重要的建议是,读者在按照本书的指引完成实训项目的开发后,需要抛开这本书按照自己的思路和想法,尝试找到比本书更好的方式来重新设计和实现一次“外汇牌价看板”程序。如果读者真的这样做了,一定会有额外的收获。
本书的案例
在本书中,笔者将与读者共同从零开始逐步完成“外汇牌价看板”这个小型应用程序。
但“罗马不是一天建成的”,谁也不可能一开始就有能力完成整个程序的开发。在最终实现“外汇牌价看板”程序之前我们将要学习程序和计算机的基础概念、基础的C语言语法知识和数据结构,以及从文本界面逐渐过渡到图形用户界面,并且在这个过程中设计软件需要的基础功能,才可以最后将它们“组装”成可以交付的“外汇牌价看板”程序。在这个软件开发过程中读者需要先完成如表0-1所列的65个小任务,它们分布在第2~9课中。
表0-1 书中涉及的65个任务

续表

续表

完成这些任务后,我们将在第10课最终完成“外汇牌价看板”程序,在第11课通过改善程序的细节使其达到交付标准。“外汇牌价看板”最终运行效果如图0-1所示,并且每隔5分钟会自动刷新并显示最新的外汇牌价信息。

图0-1 “外汇牌价看板”运行效果
本书的网络资源
本书案例所需的素材、程序文件、全部案例代码以及因篇幅原因未能收入书中的内容,读者可以从清华大学出版社的网站下载,下载请扫描下面的二维码。

欢迎各位读者通过电子邮件(hexh@163.com)与笔者联系,提出指正的意见、建议或在使用本书过程中遇到的问题。
本书的创作灵感来自日常教学中与学生们的交流和互动,他们的学习热情也感染和支持我完成这项工作。中国地质大学(北京)的项乐、浙江工业大学教科学院的廖伟霞参与了本书部分案例代码的编写和测试工作,并从读者的角度提出了很多有益的建议。
清华大学出版社的编辑老师在本书写作期间给予了很多帮助和指导,本书的很多修正来自于他们的宝贵意见,也是在他们的帮助下本书才得以出版。
何旭辉
2022年8月于武汉