Skip to Content
C++程序设计:原理与实践(基础篇)(原书第2版)
book

C++程序设计:原理与实践(基础篇)(原书第2版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
Pearson
Content preview from C++程序设计:原理与实践(基础篇)(原书第2版)

6.3.5 重新开始

现在再看一下问题,不要急于得出不完善的解决方案。必须注意,如果这个程序(计算器)运行后只计算一个表达式的值就结束,显然是不满足要求的。我们希望程序的一次执行能够对若干表达式进行计算,因此改进伪代码如下:

很明显程序变得复杂了,但想想我们使用计算器的情景,你就会意识到一次做多个运算是很平常的事情。难道我们让用户做一次运算就启动一次程序吗?可以,但是在很多现代操作系统上启动程序的过程比较慢,因此最好不要这样做。

当我们审视上面的伪代码、最初的解决方案以及设计的使用实例,就产生如下几个问题(其中某些给出了初步答案):

1.如果输入表达式45+5/7,那么如何找出其中的个体元素:45、+、5、/和7?(单词化!)

2.如何标识表达式的结束?当然是用换行符!(要始终保持对“当然”的怀疑:“当然”不是一个有力的理由。)

3.如何将表达式45+5/7作为数据存储以便于计算?在计算加法之前必须先将字符4和5转换为整数45,即4*10+5。(因此单词化是解决方案的一部分。)

4.如何保证表达式45+5/7的计算顺序为45+(5/7)而不是(45+5)/7?

5.表达式5/7的值是多少?大约是0.71,但这不是一个整数。根据对计算器的使用经验可知,用户往往会期望得到一个浮点计算结果。我们应该允许输入表达式中出现浮点数吗?当然!

6.可以使用变量吗?例如,我们能否使用下面的表达式:

好主意,不过先放一放,我们还是先实现计算器的基本功能。

如何回答问题6可能是求解方案中最重要的抉择。在7.8节,你会看到,如果我们决定实现变量功能,程序代码量将会是原来的两倍。让最初版本正常运行起来所花费的时间,也将是原来的两倍。以我们的估计,如果你是一个新手,将会付出四倍的工作量,因而很可能最终放弃。在程序设计早期避免“功能蔓延”是很重要的,应该保证先构建一个简单的版本,只实现最基本的功能。一旦程序能够运转,你可以有更大的野心继续完善程序。分阶段实现一个程序比一次完成要简单得多。如果一开始就实现变量功能还有一个负面影响:很难抵挡进一步添加“漂亮特性”的诱惑。加上常用的数学函数如何?再加上循环功能怎么样?一旦开始便很难停下来。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普
管理Kubernetes

管理Kubernetes

Brendan Burns, Craig Tracey
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉

Publisher Resources

ISBN: 9787111562252