第二章: 改变程序流程算法和流程图2
1算法计算机语言只是一种工具
光学习语言的规则还不够,最重要的是学会针对各种类型的问题,拟定出有效的解决方法和步骤即算法
有了正确而有效的算法,可以利用任何一种计算机高级语言编写程序,使计算机进行工作
因此,设计算法是程序设计的核心
并非只有“计算”的问题才有算法
广义地说,为解决一个问题而采取的方法和步骤,称为“算法”
不要把“计算方法”(computational method)和“算法”(algorithm)这两个词混淆
前者指的是求数值解的近似方法,后者是指解决问题的一步一步的过程
在解一个数值计算问题时,除了要选择合适的计算方法外,还要根据这个计算方法写出如何让计算机一步一步执行以求解的算法
对于计算机外行来说,他们可以只使用别人已设计好的现成算法,只需根据算法的要求给以必要的输入,就能得到输出的结果
对他们来说,算法如同一个“黑箱子”一样,他们可以不了解“黑箱子”中的结构,只是从外部特性上了解算法的作用,即可方便地使用算法
但对于程序设计人员来说,必须会设计算法,并且根据算法编写程序
对同一个问题,可以有不同的解题方法和步骤
例如,求1+2+3+…+100,可以先进行1+2,再加3,再加4,一直加到100,也可采取100+(1+99)+(2+98)+…+(49+51)+50=100+50+49×100=5050
还可以有其它的方法
当然,方法有优劣之分
有的方法只需进行很少的步骤,而有些方法则需要较多的步骤
一般说,希望采用方法简单,运算步骤少的方法
因此,为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法
一个计算问题的解决过程通常包含下面几步: 确立所需解决的问题以及最后应达到的要求
必须保证在任务一开始就对它有详细而确切的了解,避免模棱两可和含混不清之处
分析问题构造模型
在得到一个基本