一个程序应包括一下两方面的内容:(1)对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure)。(2)对操作的描述。即操作步骤,也就是算法。(Nikiklaus Wirth提出一个公式:数据结构 + 算法 = 程序)
因此,算法、数据结构、程序设计方法和语言工具这4个方面是一个程序设计人员所应具备的知识。
广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”。当然算法也有优劣之分。一般说,大家都希望采用方法简单、运算步骤少的方法。所以为了有效地解决问题,不仅需要保证算法的正确,还要考虑算法的质量,选择合适的算法。
计算机算法分为两大类别:数值运算算法和非数值运算算法。数值运算的目的是求数值解,例如求方程的根,函数的定积分等。而非数值运算包括的面就比较广了,最常见的是用于事物管理领域,例如图书检索、人事管理等。
算法的特性,一个算法应该具有以下方面的特点:(1)有穷性。一个算法的操作步骤应该是有限的,应该在一个合理的范围内,而这个“合理限度”并无严格标准,由大家的常识和需要而定。(2)确定性。算法中的每一个步骤应当是确定的,而不应当是含糊的、模棱两可的。算法的含义应当是惟一的,而不应当产生“歧义性”。(3)有零个或多个输入。(4)有一个或多个输出。算法的目的是为了求解,“解”就是输出。没有输出的算法是没有意义的。(5)有效性。算法中的每一个步骤都应当能有效地执行,并得到确定的结果。
表示一个算法的常用方法有:自然语言、传统流程图、N-S结构化流程图、伪代码、PAD图等。
3种基本结构:(1)顺序结构。(2)选择结构。(3)循环结构(有两类循环结构:当(while)型循环结构;直到(until)型循环结构。其共同特点:1、只有一个入口;2、只有一个出口;3、结构内部的每一部分都有机会被执行到。4、结构内不存在“死循环”。
完成一件工作,包括设计算法和实现算法两部分。
结构化程序设计方法:一个结构化程序就是用高级语言表示结构化算法。用以上3种基本结构组成的程序必然是结构化程序。具体说,采取以下方法来保证得到结构化的程序:
(1)自顶向下;(2)逐步细化;
自顶向下、逐步细化:这种方法的过程是将问题求解由抽象逐步具体化的过程。
(3)模块化设计;模块化设计的思想实际上是一种“分而治之”的思想,把一个大任务分为若干个子任务。
(4)结构化编码。所谓编码就是将已设计好的算法用计算机语言来表示,即根据已经细化的算法正确地写出计算机程序。
结构化程序设计方法用来解决人脑思维能力的局限性和被处理问题的复杂性之间的矛盾。
总结:学习程序设计的目的不只是学习一种特定的语言,而是学习进行程序设计的一般方法。掌握了算法就是掌握了程序设计的灵魂,在学习有关的计算机语言的知识,就能够顺利地编写出任何一种语言的程序。脱离具体的语言去学习程序设计是困难的。但是,学习语言只是为了设计程序,它本身决不是目的。世界上高级语言有许多种,每种语言也都在不断发展,因而千万不能拘泥于一种具体的语言,而应当能举一反三。关键还是设计算法。有了正确的算法,用任何语言进行编码都不应当有什么困难。
阅读(1882) | 评论(0) | 转发(0) |