C++进一步扩充和完善了C语言,成为一种面向对象的程序设计语言。C++目前流行的最新版本是Borland C++, Symantec C++和Microsoft VisualC++。C++提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。C语言是面向过程的语言,C是C++的基础,C++语言和C语言在很多方面是兼容的。因此,掌握了C语言,再进一步学习C++就能以一种熟悉的语法来学习面向对象的语言,从而达到事半功倍的目的。
1. 结构化程序设计
1.1 设计思想
o 所谓结构化程序设计思想,就是要使所设计的程序给人一种一目了然的感觉。条理清晰,模块化,自粗到精,逐步细化。在行文上有缩进书写方式,层次分明。
o 结构化程序设计,要求程序只能用三种基本结构来描述,也可以用这三种基本结构组成一个复杂程序。这三种结构就是:顺序结构、选择结构和循环结构。
(1)顺序结构就是一组一条接一条地执行计算机命令。是典型的自上而下结构。
(2)选择结构是一种先对给定条件进行判断,再按判断后的不同情况做不同处理的结构。
(3)循环结构是指多次重复执行同一系列命令的结构。具有循环结构的程序必须指定循环的停止条件,以便对程序的循环进行有效的控制,以免进入死循环状态。根据循环的执行过程及循环结束方式的不同,循环结构又可分为计数循环结构、当型循环结构和直到型循环结构。
1.2 结构化设计常用方法
(1)模块化
A. 把一个较大的程序划分为若干子程序,每一个子程序总是独立成为一个模块;
B. 每一个模块又可继续划分为更小的子模块;
C. 程序具有一种层次结构。
运用这种编程方法,考虑问题必须先进行整体分析,避免边写边想。
(2)自顶向下 逐步求精
“自顶向下”是将复杂、大的问题划分为小问题,找出问题的关键、重点所在,然后用精确的思维定性、定量地去描述问题。
“逐步求精”是将现实世界的问题经抽象转化为逻辑空间或求解空间的问题。复杂问题经抽象化处理变为相对比较简单的问题。经若干步抽象(精化)处理,最后到求解域中只是比较简单的编程问题。
(3)自底向上
即先设计底层,最后设计顶层;
优点:由表及里、由浅入深地解决问题;
不足:在逐步细化的过程中可能发现原来的分解细化不够完善;
该方法主要用于修改、优化或扩充一个程序。
1.3 结构化程序设计的步骤
(1).分析问题
对要解决的问题,首先必须分析清楚,明确题目的要求,列出所有已知量,找出题目的求解范围、解的精度等。例如“兔子的繁殖问题”,必须找出其繁殖规律。
(2).建立数学模型
对实际问题进行分析之后,找出它的内在规律,就可以建立数学模型。只有建立了模型的问题,才可能利用计算机来解决。如菲波那契数列,可推出递推公式u[n]=u[n-1]+u[n-2]
(3).选择算法
建立数学模型后,还不能着手编程序,必须根据数据结构,解决问题的算法。一般选择算法要注意:
A. 算法的逻辑结构尽可能简单;
B. 算法所要求的存贮量应尽可能少;
C. 避免不必要的循环,减少算法的执行时间;
D. 在满足题目条件要求下,使所需的计算量最小。
(4).编写程序
把整个程序看作一个整体,先全局后局部,自顶向下,一层一层分解处理,如果某些子问题的算法相同而仅参数不同,可以用子程序来表示。
(5).调试运行
(6).分析结果
(7).写出程序的文档
主要是对程序中的变量、函数或过程作必要的说明,解释编程思路,画出框图,讨论运行结果等。
2. 顺序结构
各个语句之间存在一定的关系,最简单的一种关系是:从上到下顺序执行哥语句,这就是顺序结构的程序。
【例5.1】输入三角形的三边长,求三角形面积。
已知三角形的三边长a,b,c,则该三角形的面积公式为:
area=sqrt(s*(s-a)*(s-b)*(s-c))
s=(a+b+c)/2.
源程序如下:
#include<math.h>