- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
如何设计第1个程序”
如何设计第一个程序 测绘遥感信息工程 国家重点实验室 目前你已经学习了一些编程基础,让我们来进一步看看如何设计一个具体的程序。当你坐下准备写一个程序,通常你对于想解决的问题,或者想模拟的情况多少有一些想法。新手程序员经常感到在解决如何把想法变换成实际代码的问题上存在困难。但结果却是,你已经从日常学习生活中获得了很多你所需要的解决问题的技术。 请记住最重要的事情是要在你开始编写代码之前设计好你的程序,而这也是最困难的。在很多注意中,编程就像是盖房子。如果你在没有建筑设计平面图的情况下试图建造一个房子,那会发生什么?除非你是个天才,否则你会得到一所问题重重的房子:漏水的屋顶,凹凸不平的墙壁等等……同样的,如果你在设计好计划之前就开始编写程序,你会发现你所编写的代码有很多问题,你必须花费很多时间来修改问题,这本来是可以通过提前设计避免的。 一个预先的计划会长远的节约你的时间,避免挫折。 第一步:明确问题 首先你要明确你的程序要解决什么问题。理论上,你应该能够用一两句话进行描述。例如: 我想写一个电话簿记录我的朋友的电话号码。 我想写一个能随机地下发生器,它可以产生看起来有趣的洞穴。 我想写一个程序,可以提供股票信息以及预测我该买那些股票。 尽管这一步似乎显而易见,但它还是十分重要的。你能做到的最坏的情况就是写一个实际上不是你或你的老板想要的程序! 第二步:明确你的目标 当你是一个富有经验的程序员时,在此时会有很多其他典型的步骤,其中包括: 了解你的目标使用者是谁 定义目标架构和/或你的程序涉及的操作系统 确定你将用到的所有工具 确定你是独自编写程序还是作为团队中的一员 收集需求(一个关于程序要做什么的文件记录列表) 然而,作为一个新手程序员,这些问题的答案是简单的:你是在为你自己写一个程序,独自的,用你自己的方法,利用你购买或下载的集成开发环境。这使得情况变得简单,所以我们不会在这一步花费时间。 第三步:将任务分出层次 在现实生活中,我们经常需要完成十分复杂的任务。尝试去解决如何做这些任务是很有挑战性的。在这种情况下,我们经常使用自顶向下的方法来解决问题。也就是说,我们不是解决一个单一的复杂的任务,而是将任务分解成多个更容易解决的子任务。如果这些子任务仍然很难解决,则可以进一步分解。通过不断的将复杂的任务分解成简单的任务,最终你可以得到的每一个单独的任务都是容易进行的。 让我们来看一个关于这一点的例子。我们想写一个关于胡萝卜的报告。当前的任务层次是这样的: 。写关于胡萝卜的报告 一次性写一个关于胡萝卜的报告是一个很难的任务,所以我们把它分解成子任务: 。写报告 。做调查 。写概述 。填写关于胡萝卜的细节 我们现在有三个可以分别集中研究的任务,这是很容易办到的。然而,在这种情况下,做关于胡萝卜的研究是模糊不清的,所以我们可以进一步分解: 。写关于胡萝卜的报告 。做关于胡萝卜的调查 。去图书馆找有关于胡萝卜的书 。在网上搜索有关于胡萝卜的信息 。写概述 。关于生长的信息 。关于加工的信息 。关于营养的信息 。填写关于胡萝卜的细节 现在我们有了一个任务的层次,每个子任务都不是特别困难。通过完成每个相对容易做的子项目,我们可以完成关于写一个胡萝卜报告的更困难的全部任务。 创造任务层次的另一种方法是自底向上的方法。在这种方法中,我们从一个简单任务的列表开始,通过将它们分组来构造层次。 举个例子,很多人必须在工作日上班或者上学,所以我们想解决“从起床到上班”的问题。如果问早上从起床到上班你要做什么任务,你也许会想到如下的列表: 。挑选衣服 。穿衣服 。吃早饭 。开车去工作 。刷牙 。起床 。准备早饭 。进入车里 。洗淋浴 使用自底向上的方法,我们可以通过寻找相似点把项目组织起来的方法,将这些整理成一个项目层次: 。从起床到上班 。卧室的事情 。起床 。挑选衣服 。浴室的事情 。洗淋浴 。刷牙 。早餐 。准备早餐 。吃早餐 。交通的事情 。进入车里 。开车去工作 结果表明,这些任务层次对程序设计非常有用,因为一旦你有了一个任务层次,你就基本明确了整个程序的结构。最高级别的任务(在本例中,“写一个关于胡萝卜的报告”或者“从起床到上班”)成为main()(因为它是你要解决的主要项目)。子项目成为程序中的函数。 如果其中一个项目(或函数)太难实现,仅仅是把这个项目分解成多个子项目,再函数调用多个子项目来实现这些新任务。最终,你应该达到的目标是在你的程序中的每一个函数实现起来都是琐碎的。 第四步:确定项目的顺序 现在你的程序有了一个结构,然后就该确定如何将所有的任务联系在一起。第一步是确定项目的执行顺序。例如,当你早上起床,是什么决定了你做以上任务的顺序?顺序或许是这样的: 。
文档评论(0)