编程高手修炼捷径(何勤)716.doc
《编程高手修炼捷径(何勤)716.doc》由会员分享,可在线阅读,更多相关《编程高手修炼捷径(何勤)716.doc(159页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编程高手修炼捷径 何勤 著 前言可以说编程是很难学会的。首先,如果你不喜欢动手编程而只喜欢看编程教科书的话,不管你看了多少书,你都永远不可能学会编程;其次,如果你一直都只热衷于编写难度比较简单的30行以下的小程序,你也永远无法学会编程。我看过的小说至少有好几千本吧,造过的句子也难以计数数。但我决对写不出一篇像样的短篇小说来。然而,又可以说编程是很容易学会的只要你的学习方法正确、并且能够持之以恒。智力正常的人全力以赴的话,从零开始三个月就能编写出小游戏程序来。我所创建的群中已经有不少群友做到了这一点,事实胜于雄辩。只要你仔细通读你手上的这本书,在此基础上,你还要认真做本书中所包含的经过精心挑选的
2、100道编程题。在一边系统学习C语言基本语法的同时目的是掌握常见的语句和程序编写规范;一边阅读消化本书中大量的、难度逐渐递增的、类型丰富的各种类型编程例题目的是积累大量的编程思路和技巧;一边坚持每天做两道本书上的编程题,在编程实践中将语法和算法紧密结合起来,把从书本上所学到的知识真正变为自己脑子里的。使用本书学习过程中,只要你能坚持同时做到以上三点,三个月内你就一定能够成功编写出小游戏程序。要编出一个几百行的能够正常运行的小程序,你必须要有足够强的程序调试能力;通常,还要有一定的用逐步求精伪代码构思设计算法的能力;还要掌握小程序的迭代式开发模式也就是分步骤地实现程序所有功能。从最基本、最简单的
3、功能做起,利用函数将程序模块化。一个人只有能够独立编出几百行的小程序来,才算是真正学会了编程。仅仅能做几个编程的小题目算不上会编程因为你没有通过编程来解决实际问题的基本能力(相当于学写作的人一直只造句子,但从来没写过一段和一篇文章)。会不会编程对于当代的理工农医类大学生是极为重要的。就像是否会射箭对于古代战士那样重要。通过编程充分利用计算机的能力,能够极大提高你做科研或技术开发工作的效率。不会编程的理工农医类大学生,将来毕业后绝对不能去搞科研,不会编程的人去搞科研,科研周期将会很长,科研工作也决对是劳民伤财!一个用计算机做仿真实验不到一年能够轻松解决的问题,不用计算机仿真就要盖实验室,做大量浪
4、费时间和经费的实验。学习本书时要注意模仿本书中的大量例题,掌握用逐步求精伪代码(千万不要使用流程图)来构思设计算法。否则,遇到比较困难的编程问题时,你就会感觉到难以下手。 本书在循环和数组这两章,讲解了大量的例题、收集了大量的编程习题。这是本书的一大特色。原因在于:只有熟练掌握这两章蕴含在例题中的大量编程思路和技巧,才能养成扎实的编程基本功。很多初学者不明白这一点,没有练好这方面的编程基本功,在进一步学习函数、指针、结构、文件和链表等内容和编程时,就会感到困难重重,一筹莫展。本书适合零基础的读者。对于理论基础不感兴趣的初学者,可以直接从本书3.2节开始学习。认真学习本书需要你花费的精力比通常的
5、程序设计教材要多一些。原因是你必须认真阅读消化大量例题的编程思路和技巧;到了后期你还要认真编写一些比较难些的程序。愿不愿意付出这些精力这是你的个人私事,我只付责尽全力把这本书写好。其实学会编程是没有什么捷径的可走的,只是因为初学者可选的路太多了,其中大部分是错误的弯路或死路,因此在过来人的引领下不走弯路或死路就显的特别重要了。持之以恒、不走弯路就是捷径。很多人学习时缺少的就是持之以恒的毅力。缺乏毅力的读者,请结伴学习。朋友之间互相讨论、鼓励和监督比自己一人坚持钻研要容易得多。对本书有什么好的建议或例题,请发邮件给我。我的邮箱地址是2401721440。一旦采纳,将赠亲笔签名书一本。 何勤 关于
6、用逐步求精的伪代码构思设计算法 学会用逐步求精伪代码构思算法是极为重要的。尤其是对于难题,学会用逐步求精伪代码构思算法相当重要为何重要呢?因为人们思考一个复杂问题往往是由粗到细的,逐步求精的伪代码恰好符合了人们的这一思维规律 编写难题不用伪代码构思算法,相当于盖房子事先不进行图纸设计。 构思设计算法,流程图不好用,国外程序设计名著没有使用流程图的。因为流程图难画,难以修改,比伪代码麻烦多了。很多人对于较难编程题感到难以下手、没有思路,关键原因之一就是不会用逐步求精的伪代码去构思、设计算法。 本书中,很多例题用了逐步求精的伪代码来构思、设计算法。伪代码最大的好处体现在逐步求精上。重点是逐步两个字
7、。一级算法对于难题和大题(但不是指软件工程项目那种规模的大问题,而是说大约1000行以下小程序可以解决的问题)来说,是相当重要的。高层次的一级算法用程序语句是无法表示的,程序设计语句缺少伪代码的那种高级抽象层次和概括能力,源程序语句的移植能力也远远低于伪代码。高手与低手的最大区别:高手钻研经典名著,低手随手拿一本书来苦读;高手常用伪代码构思设计算法,低手常用流程图构思设计算法;高手重视编程思想,低手重视考试和证书;高手拥抱代码,低手拥抱语法;高手胆大自信(自信主要来自于正确的学习方法),低手胆小自卑;高手所学所编程序难度逐渐递增,低手所学所编程序难度永远不变;高手仔细阅读分析调试难以懂得的程序
8、,低手看不懂程序立刻求助别人;高手喜爱面向对象编程(容易适应需求变化,容易查找修改错误),低手喜爱结构化编程;高手经常重构优化代码,低手不愿重构优化代码;高手调试程序的方法多,低手调试程序的方法极少(甚至没有);高手学语法快学算法慢,低手学算法快学语法慢 (高手学习语言的高级语法细节时常常是在实践中,基本语法学的比较快);如何快速学会编程现在有些群友C语言(或一门其他编程语言)还没学完就想去做小项目,那是不合适的。个人认为学完C语言教科书的同时,至少要编写100题左右由易逐渐到难的各种类型的程序,你才能开始做课程设计类的小项目;至少做了一到两个几百行的小项目,你还要学习算法与数据结构。你才能考
9、虑做更大的项目。但做比较大的项目还有很多事要涉及到:你至少要大体上了解一些做软件工程的知识如果要用到数据库,你还要会进行库结构的设计,还要学会使用SQL语句。SQL语句就是结构化查询语句。结构化查询语句是嵌入在你所使用的主语言源程序中的。你还要考虑你是使用C/S(即客户机/服务器模式)结构还是用B/S结构(即浏览器/服务器模式),现在採用B/S结构的软件为多 。如果是B/S结构,你还必须学习网页制作,包括动态网页和静态网页。所谓动态网页,就是网页上的数据可以与后台服务器进行双向通信,更新网页或后台服务器(中的数据库)中的一些内容。为此你还必须学习网络编程的相关知识。 如果是做软件工程项目,最好
10、用面向对像的方法去实施:需求分析、编写用例、CRC卡分析类的职责、绘制UML图、考虑对像的持久化、编码、用事先编写测试代码来驱动开发、设计开发中考虑使用一些合适的设计模式、对代码经常进行重构等等。但是,一个人是否能够成为编程人才,我认为最关键的还是头三步要走好:第一步:认真学一本程序设计教科书(最好要含有大量难度循序渐进的例题)并编写大约100个程序(其中最好有三分之一以上是在各类oj上通过)第二步:阅读几个几百行到上千行的程序并编写1到2个几百行的程序(最好编写一、两个图形模式下的游戏程序)第三步:认真学好算法与数据结构,并且做大约100个与之相关的编程题 其中第二步与第三步实施中可以调换次
11、序。但是,千万要注意:学习过程中你所看例题的难度和你所编写程序的难度一定要逐渐递增,类型要丰富。否则你的编程能力基本上不会有太大提高,永远是低水平重复就像永远只造句的人决对难以写出一篇像点样子的(比较长的)文章来。这三步走好了,你不想成为程序员都很困难!因为你已经具备了很高的编程兴趣和强大的自信心(如果你编了一两个小游戏程序的话),这种强烈的兴趣和自信将自动引导你冲破成才道路上的各个其它难关。老老实实多阅读消化经典程序、多编程序,理论与实践并重,持之以恒而不是三天打渔两天晒网,才是正道。仅仅通过看书就想成为编程高手,就像仅仅想看几本小说就能写出好小说那样是不可能的。认真学习经典书籍是很重要的,
12、只是在学习这些书籍时,一定要注意多编写程序。 何勤 第零章 理想厨房的工作原理一种有着神奇的“魔力”和“智能”的人造设备,正在迅速地、彻底地、默默无闻或者令人震惊地改变和丰富我们所生活的大千世界。这个看起来很不起眼的,在少数场合被称为“电脑”的电器设备,是如何具有如此神奇的“魔力”和“智能”的?本章和下一章将带你开始解开这个与我们的生活和工作息息相关的当代社会最大的谜。 01节介绍理想厨房系统,0.2节通过一个炒菜实例,讲解理想厨房各部件是如何密切配合工作的。0.3是一张理想厨房系统与计算机系统的对照表。计算机从发明到现在不过70年左右的时间,然而计算机的发明、改进和普及,把人类带进了智能时代
13、。计算机本身也变得越来越复杂、快速、小巧、种类繁多。但大多数计算机都遵循冯.诺伊曼体系结构,这为我们理解计算机的基本工作原理提供了方便。从某种角度来看,计算机就是一种人造智能生命。想要真正学会编程,通过编写的程序命令计算机工作,就必须懂得计算机的基本工作原理。就像人们要与某种具有智能的其他物种个体进行交流通信,就必须对那个物种的习性有一个基本了解一样。本章和下一章是全书的重要基础。通过这两章,读者可以了解计算机的工作过程。这些知识对学习程序设计非常有帮助。直接学习计算机工作原理是极其枯燥乏味、很困难的,因为有大量的新名词。为此,笔者付出了极大的努力,找到了一种比较好的类比方法理想厨房系统,通过
14、这个例子就可以初步了解计算机的基本工作原理。0.1理想厨房系统:理想厨房系统,是一个通过顺序执行菜谱中的各个加工步骤,把原材料加工成菜肴的系统。它由硬件和软件(菜谱)组成。1) 软件部分:菜谱是理想厨房系统中的一个无重量、无体积、不会损坏、但可以经常更换的极为重要的“软件”部件。菜谱由一个个的加工步骤顺序组成。 每个加工步骤命令理想厨房系统完成一个基本操作(比如炒、蒸、煮、输入一种原材料等)。注意:为了解说简洁起见,在以下叙述中,我们经常把菜谱中的一个“加工步骤”称为一条“指令”。因为一个加工步骤就是一条指导理想厨房如何工作的命令。2) 硬件部分:理想厨房系统,主要由以下四个“硬件”(即实物)
15、部件构成理想厨房、自动冰箱、输入输出设备(即配菜员和传菜生)和三条传送带。 需要注意的是,理想厨房仅仅只是理想厨房系统中的一个重要组成部分。理想厨房系统的构成简图如图0.1所示: 0.1 理想厨房系统运行示意图:0.1 理想厨房系统示意图:自动冰箱:自动冰箱负责临时保存菜谱、原材料和菜肴。它由非常多的(比如几百个)大小一样的格子组成,每个格子都有一个唯一固定编号,这个编号称为地址。地址是从0开始逐一递增的。是不是感到很奇怪:菜谱竟然也要保存在冰箱中?!这样做的道理请看本章后面。每份原材料和菜谱中的每个加工步骤,都占据冰箱中的一个格子。理想厨房:功能:负责根据从冰箱的菜谱中取到的加工步骤,进行炒
16、菜以及进行相关的控制工作。 构成:理想厨房主要由厨房管理员、厨师、炊具和一些碟子组成,参见图0.1。 理想厨房中的各种碟子理想厨房中有一些起着重要作用的碟子:一个PC碟(又称为指令地址存放碟):此碟中存放一个非负整数值,这个值是一个地址;它指明将要执行的指令位于自动冰箱的哪一格中。一个IR碟(又称为指令存放碟):用来存放刚刚从冰箱中取过来的一条立即要执行的指令。理想厨房中还有若干个通用碟(图0.1中标有名称R0、R1、R2的碟):用来临时存放从冰箱中取来的原材料或经过加工了的半成品或成品。这是由于到冰箱格子中存取物品,要比到通用碟慢得多的缘故。 指令执行的全过程理想厨房每次只能按顺序执行菜谱中
17、的一条指令。理想厨房执行指令的流程完全是周期性的,即任意一条指令都是按照“取指令阅读分析指令执行指令”这三个阶段进行的。 厨房管理员首先根据PC碟中的值,通过三条传送带的协调工作(三条传送带如何协调工作的细节,请参见下一节),到自动冰箱的指定格中去取菜谱中的一条指令。取到理想厨房并把它存放到IR碟中之后,PC碟中的值将会加上1这是为取下一条指令预先做好准备。然后,厨房管理员阅读并分析IR碟中刚取到的这一条指令,根据该指令的指示,去做以下六类工作中的一种: 1取物品:通过三套传送带,命令自动冰箱把指定地址格子中的(炒菜加工步骤马上要用到的)原材料(通过材料传送带)传送到理想厨房中来;2加工:命令
18、厨师按照指令的要求,对原材料作一个基本加工操作(做“炒”,“蒸”,“煮”等基本操作步骤中的某一个动作); 3存物品:通过向三套传送带向自动冰箱发命令,把某个碟子或炊具中的成品(或半成品)送回到冰箱指定的格子中存放; 4在厨房内部进行物品传送:在厨房的各个碟子和炊具之间传送原料或半成品 ;5输入:命令配菜员为某道菜临时配备原材料;(在本章不作讨论)。6输出:命令传菜生将炒好的菜送给顾客;(在本章不作讨论)。 一条指令执行完后,理想厨房立即自动进行下一个完全类似的、新的 “取指令阅读分析指令执行指令”的工作。下面我们通过一个实例来讲述理想厨房系统的工作机制。这是本章的一个重点,因为计算机的工作原理
19、,与之极其相似。0.2理想厨房系统的一个炒菜实例在本节中我们通过炒制一道青菜的例子,来说明理想厨房系统的工作全过程。 首先,把青菜放在冰箱地址为5的格子中,冰箱地址为6号的格子,预留给炒好的菜使用。 菜谱的所有加工步骤(又称为指令)从冰箱地址0号格开始依次按照顺序存放,编写炒青菜的菜谱如下:地址0的格子中: 取地址5(中的物品)到R0碟;地址1的格子中: 将R0(倒入炒锅中)炒好后装到R1碟;地址2的格子中: 存R1碟(中的物品)到地址6中; 可见,此菜谱一共有3个加工步骤。开始时理想厨房系统状态如下图0.3(注意:冰箱格子以及理想厨房碟子中存放的物品都用了斜体字)理想厨房 自动冰箱 碟名 碟
20、中物品 地址 冰箱格子中物品R0R1 厨具R2 厨师PC 0 厨房管理员IR 材料传送带地址传送带0控制传送带 取01234567取地址5到R0碟将R0炒好后装到R1碟;存R1碟到地址6中;青菜图0.3菜谱和原料安放完毕后,启动理想厨房系统,开始自动化的工作。1)厨房管理员根据PC碟子中的数字“0”,知道要到地址为0的格子中取第一条指令(即加工步骤)。于是,厨房管理员向控制传送带上发出一个“取”信号,然后马上将PC碟中的数字“0”复制后放到地址传送带上。这两个信号都会到达冰箱。冰箱收到这两个信号后(知道理想厨房想要得到第0格中的物品,于是自动冰箱)将0号格的内容 “取地址5到R0碟”复制一份,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编程 高手 修炼 捷径 716
限制150内