
1.3 计算机求解问题的步骤
计算机求解问题就是人们解决某一问题的方法和步骤的计算机化,或者说是通过计算机来表达人们对某一问题的解决方法。也就是说,一个问题,如果人们不知道如何求解,那么计算机是不可能做出正确答案的。程序设计过程实际上是问题解决方案的计算机描述过程,所以程序设计过程必须遵循人们解决问题的一般过程,即分析问题、寻找方法、描述方法和实施方法的过程。具体来说包括以下5个步骤:问题提出与分析;问题的数据描述;问题的功能描述;数据和功能的计算机实现;编码、调试、编译、连接和运行。下面以一个具体的实例——“自动应答器”的设计与实现来分析以上过程和步骤。
1.问题描述
“自动应答器”的基本功能描述如下:当客户走到应答器旁边时,应答器会向用户提示“请报上您的姓名:”,当客户回答完毕后,应答器会立刻回答“×××用户,您好!”。
对于非语言的自动应答器,其工作过程如下:计算机不能直接接收语音输入,也不可能进行语音输出,所以,需要3个步骤:
(1)当一个用户走到应答器旁边时,应答器会向用户显示信息“请报上您的姓名:”。
(2)当用户看到这个信息后,会输入本人的姓名,如Susan。
(3)应答器接收到用户的输入后,会立刻显示“Susan,您好!”。
2.问题分析
为了实现自动应答器的基本功能,根据问题描述的内容,要实现:
(1)向屏幕输出提示信息,即向用户屏幕输出“请报上您的姓名:”。
(2)等待用户的响应,也就是等待用户输入自己的姓名,如Susan。
(3)接收用户的输入,并能将用户输入的数据连同“您好!”一起显示在用户屏幕上。
至此一个工作周期完成。为了便于实现,做一些假设:假定应答器只为一个人服务,即工作一个周期即结束。以上的分析过程就是这个问题的解决方案和步骤。
3.计算机实现
为了让计算机能代替人工完成以上的工作流程或者说解决方案,需要将以上每一步骤转化成计算机可以识别的指令序列(即程序)。下面是对这个应答器工作流程的一个计算机描述。
(1)通过计算机指令向用户屏幕输出。
(2)通过计算机指令等待并接收用户的键盘输入,并且暂存起来以备后用。
(3)通过计算机指令向用户屏幕输出新的数据信息:用户输入的信息加上“您好!”。
接下来将上面对应答器解决过程的计算机实现描述“翻译”成计算机语言,再通过相应的软件将这些计算机语言转换成计算机可以识别的指令,就可以让其“工作”。
以C语言为例,其翻译过程如下:
(1)向用户屏幕输出信息可以通过函数来实现,具体形式如下:

(2)在C语言环境中,数据是以变量的形式存储的,为了存放用户的输入信息,可以采用以下形式定义变量,其具体语法含义请参见第2章。

接收用户的键盘输入并暂存数据,可以通过函数scanf()来实现,具体语法形式如下:

(3)向用户屏幕输出新的数据,同(1),仍然可以通过函数printf()来实现,具体形式如下:

将以上“翻译”的C语言程序按照C语言语法规定稍作整理,得到例1-1程序。
【例1-1】自动应答器的C语言实现。
程序如下:

4.程序运行与调试
在完成问题的求解过程后,就需要进行上机操作,将设计的程序输入计算机,并经过翻译后,让计算机自动执行,这个过程一般分为4步:编辑、编译与调试、连接及运行。下面用框图描述用C语言进行程序设计的整个过程,如图1-1所示。

图1-1 C语言进行程序设计的完整过程
下面来完成自动应答器的计算机处理过程:假设读者的计算机上已经有C语言编译系统(VC++6.0),并且位于C盘的TC目录下,如果没有安装,请参阅本章阅读材料。