如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第一章计算机程序计算机程序(computerprogram)只是控制计算机执行某个任务的一组指令。由于许多人需要编写各个领域中的各种应用程序,所以大多数计算机高级编程语言具有丰富的功能,如Fortran90和C语言。尽管有些工程师可能会涉及到所有这些功能,但是大多数人仅需要执行面向工程的数值计算功能。从这个角度来看,我们可以将这种复杂性概括为几个编程主题,即:简单信息表示(常数、变量和类型声明)。高级信息表示(数据结构、数组和记录)。数学公式(赋值、优先级规则和内部函数)。输入/输出。逻辑表示(顺序、选择和循环)。模块化程序设计(函数和子例程)因为我们假定您具有一定的编程知识,所以我们将不会花时间在前四项内容上。对实现后面的程序必备的编程知识,我们会提供一些相关参考资料的清单。但是,我们将会花一些时间对后两个主题进行介绍。我们强调逻辑表示,这是因为逻辑表示是最影响算法相关性和可理解性的一个方面。我们对模块化编程进行介绍,这是因为它也对程序的组织起到了很重要的作用。另外,模块也为有用算法的打包提供了一种方式,这样就可以为后面的应用提供一个方便的格式。1.1结构化程序设计(1)在计算机出现的早期,程序员通常不太关注他们的程序是否清晰和易于理解。今天,我们已经意识到,编写经过组织的、结构良好的代码有很多好处。除了使软件更易于共享这个显著的优点以外,它也有助于大大提高程序开发的效率。也就是说,结构良好的算法总是更容易调试和测试,程序的开发、测试与更新也只需要更短的时间。为了开发这样的高质量软件,计算机科学家们已经系统地研究了有关的因素和开发过程。从本质上讲,结构化程序设计(structuredprogramming)是一组规则,它规定程序员应该具有的良好编程风格与习惯。尽管结构化程序设计具有足够的灵活性,准许程序员尽可能地发挥他们的创造性,和进行个性化的表达,但是这些规则也对程序强加了足够多的约束,使最后的代码远优于非结构化版本。尤其是,最后的产品会更加完美和更加易于理解。结构化程序设计的一个关键思想是,任何数值算法都可以由三个基本的控制结构组成:顺序、选择和循环。将程序的结构限定为这些结构以后,最后得到的计算机代码将更加清晰和易于理解。在下面的段落中,我们将对这三个控制结构分别进行描述。为了保持描述的一般性,我们将采用流程图和伪代码两种形式。流程图(flowchart)是对算法的一种直观和图形化的表示。流程图运用了一系列的框图和箭头,每个框图和箭头都代表算法中的一个特定操作或步骤(图2-1),箭头代表操作实现的顺序。HYPERLINK"http://images.51cto.com/files/uploadimg/20060921/153223104.gif"\t"_blank"图2-1流程图中使用的符号并不是每个程序员都认为流程图是一个有效的方式。事实上,某些有经验的程序员并不喜欢使用流程图。但是,我们认为学习它有三个好处。第一,可以用它来表达和交流算法。第二,即使不经常使用它们,但在设计、分析或交流自己或别人的程序逻辑时,流程图也是有帮助的。最后,对于实现我们的目标也是最重要的一点是,它们是优秀的教学工具。从教学的角度来看,在计算机程序设计中,它们是可视化某些基本控制结构的理想载体。另一种表示算法的可选方法称为伪代码(pseudocode),它填补了流程图与计算机代码之间的空白。这种方法用类似代码的语句代替了流程图中的图形符号。对于本书中的伪代码,我们将采用某种约定的风格。像IF、DO、INPUT等这样的关键字都是大写,而条件、处理步骤和任务都用小写。另外,处理步骤是缩进的。这样,关键字就形成了一个"三明治",它围绕着这些步骤,从而直观地定义了每个控制结构的深度。相对流程图来说,伪代码的优点是更容易转换为程序。伪代码也很容易修改和与别人共享。但是,由于流程图的图形形式,有时它更适合将复杂的算法直观化。在本书中,为了教学的目的,我们将使用流程图。为了便于交流与数值方法相关的算法,我们将使用伪代码作为基本的载体。逻辑表示顺序顺序结构表达了一个普通的思想,即如果不改变计算机代码的执行,那么计算机代码将每次都顺序地实现一条指令。在图2-2中给出了表示顺序结构所使用的流程图或伪代码。HYPERLINK"http://images.51cto.com/files/uploadimg/20060921/153223104.gif"\t"_blank"图2-2顺序结构的流程图(a)和伪代码(b)选择与一步步执行的顺序结构相比,选择结构使程序可以根据逻辑条件的结果选择进入不同的分支。图2-3给出了实现选择最基本的两种方式。第一种方式是单选决策,或IF/THEN结构(图2-3(a)),