程序设计的基本方法

程序设计的基本方法


2024年4月29日发(作者:)

第2章 程序设计的基本方法

对于初学者来说,写出一个满足题目要求的程序并不是一件简单的事情。明明已经了解和

掌握了C语言中各种语句的语法和语义以及C程序的基本结构,对题目的要求似乎也都清楚,但

就是不知道怎样写出一个满足题目要求的程序:或者是程序运行所产生的结果不对,或者是程

序一运行就崩溃,或者有时感觉根本就无从下手。

出现这种情况是很正常的。编程是用程序设计语言描述一种可以让计算机准确执行的计算

过程,以期完成所需的计算。这里涉及内容和表达两个方面。所谓内容就是要有明确的解决问

题的思路和方案,所谓表达就是使用程序设计语言对问题的解决方案,包括计算的过程和步骤、

所采用的算法和数据结构等,进行准确的描述。大部分初学者在程序设计的学习过程中首先把

注意力集中在对程序设计语言本身的学习上,需要了解和掌握程序设计语言的基本要素、熟记

各种关键字和各种语句的语法、含意和基本使用方法,因此还没有足够的时间和精力去学习和

掌握使用这些语句去编写程序的方法和技巧,更难以关注如何从任务的要求入手,构思一个合

理的解决方案,以及如何准确有效地实现这一方案,保证所完成的程序正确可靠地运行。这是

学习过程中的一个必然阶段,就好像人们首先要学习和掌握写字和造句,然后才能练习写文章

一样。但是,如果注意掌握正确的学习方法,在学习程序设计语言的同时注意学习程序设计的

方法和对程序设计语言的运用,则可以收到事半功倍的效果。

和学习写作需要掌握遣词造句、布局谋篇、起承转合相类似,学习程序设计也要掌握一些

专门的方法。与使用自然语言写作相比,程序设计语言的词汇和语法都要简单得多,写程序的

方法和步骤也更加规范和易于掌握。因此,经过一定的学习和练习,编写符合题目要求的程序

将不再是一件很困难的事情。

2.1 程序设计的基本过程

和解决任何其他问题一样,在进行程序设计时,需要首先明确的是需要解决的问题和已知

的条件。只有在这两者都明确的情况下,才有可能找到从出发点通向目标的正确道路。在程序

设计中,需要首先考虑的问题是,程序需要完成的任务是什么,已知的条件和数据有哪些,从

哪里获得这些数据、在计算过程中有哪些限制。在明确了这些基本要素之后,才能开始寻找实

现目标的方法,选择和确定适当的算法和数据结构,并且考虑如何检验和证明所实现的程序是

否符合设计目标的各项要求。在这些问题都弄清之后,才能进一步考虑使用什么样的语句进行

编码,把上述思想转化为程序。根据这些要点,程序设计的基本过程可以分为问题分析、设计、

编码、调试和测试等几个阶段。

问题分析阶段的主要工作是明确程序所要完成的任务目标及其工作环境和限制。设计阶段

主要是明确问题求解的基本思路和步骤,将任务目标进一步细化成为对于程序的具体要求,并

在此基础上确定实现技术的基本要素,如数据结构、算法、程序结构等。编码过程是程序的具

体实现,是将问题求解过程和步骤的描述由自然语言或其他不能由计算机执行的表达方式转换

为计算机所能理解的形式,将由形式化或非形式化方式完成的设计转换成用编程语言完成的对

计算过程的步骤和细节进行具体描述的代码。调试阶段的任务主要是发现和改正编码过程中的

错误,保证编码过程,也就是从设计到程序的转换工作的正确性,保证程序能够正常运行。测

试阶段的工作目的是检查程序的功能和性能是否符合目标的要求,能否满足所规定的各项指标。

尽管所有的程序设计工作基本上都要经过这几个阶段,但不同规模的程序在每一个阶段所

需完成的任务的复杂程度是有很大差别的。例如在大型的软件中,与问题分析工作相对应的工

作被称为需求分析,在需求分析结束后需要产生一份详细的需求分析报告。对于更复杂的系统

的需求分析已经创造出了一个新的术语:需求工程。在大型软件中,设计工作被进一步细化分

解为概要设计和详细设计,测试也被划分为单元测试、模块测试、功能测试、性能测试、回归

测试等很多种。这些在软件工程领域都有专门的论著和教科书,进行深入的讨论和分析。对于

几十行、上百行或是再稍大一些的程序来说,事情远不需要这么复杂,各个阶段的工作都要简

单得多。很多时候,这些阶段之间的分界并不是非常明确的,很多工作有可能是交叉进行的。

但是,即使对于一个不大的程序来说,也仍然有许多问题需要仔细地考虑,分阶段地处理。因

此,把程序设计的过程分成上述这些阶段是很必要的。对于初学者来说,这有利于掌握有条有

理、按部就班地分析和解决问题的方法,养成良好的习惯。

在程序设计前期的分析和设计阶段,特别需要注意的是阶段性的工作结果一定要完整、细

致、具体。所谓完整、细致和具体,主要的判断标准有三项:第一是工作的结果能够满足其前

导阶段的要求。例如,对功能和性能的分析结果应当能够与题目的各项要求一一对应,设计方

案应当能够实现分析结果中对功能和性能的要求。第二是工作结果能够为后续阶段工作提供具

体的指导。例如,分析结果应当明确地列举所有需要实现的功能和性能指标,以便在方案设计

时有所依据;方案设计应当清晰完整,对程序的结构以及算法和数据结构的描述应当准确、完

整,以便编码时可以一一对照,而不需要在这些方面再重新构思。第三是工作结果能够为后续

阶段工作提供具体的检验标准,也就是说,我们可以根据前期工作的结果,逐项检查后续阶段

的工作是否满足要求、是否合格。例如,我们可以根据设计方案中关于解题思路、计算步骤、

算法以及数据结构的描述来检查编码的内容是否符合要求,是否完整地实现了设计方案所规定

的各项任务,也可以根据分析结果来检查设计方案是否完整地体现了对功能和性能的各项要求。

我们还应该可以根据分析结果来确定测试数据的构造原则,并据此来构造相应的测试数据,检

验整个程序的功能和性能,并能确保在通过了这些测试后,程序就可以满足题目所规定的各项

任务和要求。所有上述各项,都是概念含混、用词模糊、叙述笼统的分析和设计结果所无法实

现的。

有些人编程时往往不对问题进行认真的分析,不对解题思路进行认真的思考,也没有仔细

的方案设计,而是直接使用编程语言思考如何进行编码。他们首先考虑的往往不是程序的第一

步应该做什么,第二步应该做什么,而是第一个语句应该怎么写,第二个语句应该怎么写。这

种缺少对于问题宏观把握的做法混淆了不同阶段的任务,不仅使得编程人员需要同时面对很多

不同性质的问题,而且需要使用他们还不很熟悉的编程语言来进行思考和做出决策。这种做法

对于简单的小问题还可以应付,对于稍微复杂一点的问题就会很难把握,往往事倍功半。为避

免出现此类情况,应该在开始学习程序设计时就重视编程工作的阶段性,养成踏踏实实、循序

渐进的工作习惯。在编码之前的各个阶段,应当使用中文这种我们最熟悉的自然语言思考,以

保证对问题理解准确、描述清楚,为后续阶段的工作打下坚实的基础。

2.2 问题分析

问题分析是程序设计的第一步,其目的是理解题目的要求,明确程序的运行环境和方式,

以及相关的限制条件。问题分析的基本内容包括确定程序的功能和性能、程序的输入输出数据

的来源、去向、内容、范围及其格式,程序的使用者、调用方式、人机交互要求,与其他程序

的关系和交互方式,对通用性的要求和扩展的可能,以及性能和其他对程序的特殊要求和限制,

如程序所占用系统资源的数量、对输入命令的响应速度等。在进行问题分析时需要注意的是,

不但要理解题目字面的意思,更要深入分析题目字面中隐含的内容,要准确、完整、全面地理

解题目的要求。


发布者:admin,转转请注明出处:http://www.yc00.com/web/1714399336a2439375.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信