1.1 C++程序结构

C++是在20世纪80年代初期由贝尔实验室设计的一种在C语言的基础上增加了对面向对象程序设计支持的语言,它是目前应用得最为广泛的编程语言。

1.1.1 C++概述

C++(C Plus Plus)是在C语言基础上研制出来的一种通用的程序设计语言,它是在1980年由贝尔实验室的Bjarne Stroustrup创建的。研制C++的一个重要目标是完善C,另一个重要目标就是增加面向对象的程序设计。

为了使C++具有良好的可移植性,1990年,美国国家标准局(ANSI)设立了ANSI X3J16委员会,专门负责制定C++标准。很快,国际标准化组织(ISO)也成立了自己的委员会(ISO-WG-21)。同年,ANSI与ISO将两个委员会合并,统称为ANSI/ISO,共同合作进行标准化工作。经过长达9年的努力,C++的国际标准(ISO/IEC)在1998年获得了ISO、IEC(国际电工技术委员会)和ANSI的批准,这是第一个C++的国际标准ISO/IEC 14882:1998,常称为C++98、标准C++或ANSI/ISO C++。2003年,发布了C++标准第二版(ISO/IEC 14882:2003)。本书以ANSI/ISO C++内容为基础。

使用C++高级语言编写的程序称为源程序。由于计算机只能识别和执行由0和1组成的二进制指令,称为机器代码,因而C++源程序是不能被计算机直接执行的,必须转换成机器代码。这个转换过程就是编译系统对源代码进行编译连接的过程,如图1.1所示。

图1.1 C++程序创建过程

1.1.2 C++程序创建

事实上,对于C++程序的源代码编写、编译和连接的步骤,许多C++编程工具软件商都提供了各自的C++集成开发环境(Integrated Devel- opment Environment, IDE)用于程序的一体化操作,常见的有Microsoft Visual C++、各种版本的Borland C++(如Turbo C++、C++ Builder等)、IBM Visual Age C++和bloodshed免费的Dev-C++等。但Visual C++在项目文件管理、调试及操作的亲和力等方面上都略胜一筹,从而成为目前使用得极为广泛的基于Windows平台的可视化编程环境,如图1.2所示。

图1.2 Visual C++ 6.0 SP6(中文版)开发环境

Visual C++ 6.0分为标准版、专业版和企业版三种,但其基本功能是相同的。Visual C++ 6.0 SP6(中文版)是在Visual C++ 6.0 SP6的基础上进行汉化的一个版本,本书以此版本作为编程环境。为统一起见,仍称之为Visual C++ 6.0,并以Windows XP(经典桌面主题)作为操作系统。下面以一个简单的C++程序为例来说明C++程序在Visual C++中创建和运行的一般过程。

1.创建工作文件夹

创建Visual C++ 6.0的工作文件夹“D:\Visual C++程序”,以后所有创建的C++程序都在此文件夹下,这样既便于管理,又容易查找。在文件夹“D:\ Visual C++程序”下再创建一个子文件夹“第1章”用于存放第1章中的C++程序;第2章程序就存放在子文件夹“第2章”中,以此类推。

2.启动Visual C++ 6.0

选择“开始”→“程序”→“Microsoft Visual Studio 6.0”→“Microsoft Visual C++ 6.0”命令,运行Visual C++ 6.0。第一次运行时,将显示如图1.3所示的“每日提示”对话框。单击按钮,可看到有关各种操作的提示。如果在“启动时显示提示”复选框中单击鼠标左键,去除复选框的选中标记“”,那么下一次运行Visual C++ 6.0时将不再出现此对话框。单击按钮关闭此对话框,进入Visual C++ 6.0开发环境。

图1.3 “每日提示”对话框

3.添加C++程序

(1)单击标准工具栏上的“新建”按钮,打开一个新的文档窗口,在这个窗口中输入下列C++代码。

例Ex_Simple1】 一个简单的C++程序

/* 一个简单的C++程序 */
#include <iostream.h>
int  main()
{
     double  r,area;                     // 定义变量r,area双精度整数类型
     cout<<"输入圆的半径:";             // 显示提示信息
     cin>>r;                             // 从键盘上输入的值存放到r中
     area=3.14159*r*r;                   // 计算圆面积,结果存放到area中
     // 思考:在输出“圆的面积为:”后输出area中的面积值,如何换行?
     cout<<"圆的面积为:"<<area<<"\n";
     return 0;                            // 指定返回值
}

本书约定:书中凡是需要用户添加或修改的代码均用填充底纹来标明。

(2)选择“文件”→“保存”菜单或按快捷键【Ctrl+S】或单击标准工具栏中的按钮,弹出“保存为”文件对话框。将文件定位到“D:\Visual C++程序\第1章”文件夹中,文件名指定为“Ex_Simple1.cpp”(注意扩展名.cpp不能省略)。

此时在文档窗口中的所有代码颜色都发生改变,这是Visual C++ 6.0的文本编辑器所具有的语法颜色功能,绿色表示注释(如//…),蓝色表示关键词(如double)等。

4.编译和运行

(1)单击编译工具条上的“生成”按钮或直接按快捷键【F7】,系统弹出一个对话框,询问是否为该程序创建默认的活动工作区间文件夹,单击按钮,系统开始对Ex_Simple1进行编译、连接,同时在输出窗口中显示编连的有关信息,当出现“Ex_Simple1.exe-o error(s),0 warning(s)”时表示Ex_Simple1.exe可执行文件已经正确无误地生成了。

(2)单击编译工具条上的“运行”按钮或直接按快捷键【Ctrl+F5】,就可以运行刚刚生成的Ex_Simple1.exe了,结果弹出下面的称为控制台的窗口(其属性已被修改过,具体修改方法见实验1):

此时等待用户输入一个数。当输入10并按【Enter】键后,控制台窗口显示为:

其中,“Press any key to continue”是Visual C++自动加上去的,表示Ex_Simple1运行后,按一个任意键将返回到Visual C++开发环境,这就是C++程序的创建、编连和运行过程。

本书约定:在以后的C++程序运行结果中,本书不再完整显示其控制台窗口,也不再显示“Press any key to continue”,仅将控制台窗口中的运行结果列出。

1.1.3 C++代码结构

从上面的程序可以看出,一个C++程序由编译预处理指令、数据或数据结构定义和若干函数组成。在C++中,一个程序可以存放在一个或多个文件中,这样的文件称为源程序文件。为了与其它文件相区别,每一个C++源程序文件通常都以.cpp为扩展名。这里再以【例Ex_Simple1】的程序代码来分析C++程序的组成和结构。

1.main函数

主函数:一个C语言程序可以包含若干函数,其中main表示主函数,由于每一个程序执行时都必须从main开始,而不管该函数在整个程序中的具体位置,因此每一个C++程序必须包含一个且只有一个main函数。

函数体:每一个函数都由函数头和函数体组成。在main函数中,“int main()”称为main函数的函数头。函数头下面用一对花括号“{”和“}”括起来的部分就是函数体。函数体中包括若干条语句,每一条语句都以分号“;”结束。

函数值:函数返回的值就是函数值,函数头包括函数值类型和函数名。main函数名的前面有一个int,它表示main函数的类型是整型。函数值就是函数体中的return语句返回的值。上面程序中的main函数体包含“return 0”,所以main函数值是0。如果函数体描述的过程不需要返回函数值,函数就没有值。此时,函数头包括的函数值类型就是void。

2.预处理指令

#include iostream.h称为预处理指令。iostream.h是C++编译系统自带的文件,称为C++库文件,它定义了标准输入/输出流的相关数据及其操作。由于程序用到了输入/输出流对象cin和cout,因而需要用#include将其合并到程序中。又由于它们总是被放置在源程序文件的起始处,所以这些文件被称为头文件(Header File)。C++编译系统自带了许多这样的头文件,每个头文件都支持一组特定的“功能”,用于实现基本输入/输出、数值计算、字符串处理等方面的操作。

3.注释

程序Ex_Simple中的“/*…*/”之间的内容(称为块注释)或“//”开始一直到行尾的内容(称为行注释)是用来注释的,是为了提高程序的可读性,对编译和运行并不起作用。正是因为这一点,所注释的内容既可以用汉字来表示,也可以用英文来说明,只要便于理解就行。一般来说,注释应在编程的过程中同时进行,不要指望程序编制完成后再补写注释。

4.缩进

缩进是指程序在书写时不要将程序的每一行都由第一列开始,而且在适当的地方加进一些空格,也是为了提高程序的可读性。通常,在书写代码时,每个花括号占一行,并与使用花括号的语句对齐。花括号内的语句采用缩进书写格式,缩进量为4个字符(一个默认的制表符)。