设为首页 加入收藏

TOP

1.1 编写简单的C++程序
2013-10-07 00:30:44 来源: 作者: 【 】 浏览:77
Tags:1.1 编写 简单 程序

第1章 快速入门

本章介绍C++(www.cppentry.com)的大部分基本要素:内置类型、库类型、类类型、变量、表达式、语句和函数。在这一过程中还会简要说明如何编译和运行程序。

读者读完本章内容并做完练习,就应该可以编写、编译和执行简单的程序。后面的章节会进一步阐明本章所介绍的主题。

要学会一门新的程序设计语言,必须编写程序。在这一章,我们将编写程序解决一个简单的数据处理问题:某书店以文件形式保存其每一笔交易。每一笔交易记录一本特定的书的销售情况,含有ISBN(国际标准书号,世界上每种书籍的唯一标识符)、销售册数和销售单价。每一笔交易形如:

0-201-70353-X 4 24.99

第一个元素是ISBN,第二个元素是销售的册数,最后是销售单价。店主定期地查看这个文件,统计每本书的销售册数、总销售收入以及平均售价。我们要编写程序来进行这些计算。

在编写这个程序之前,必须知道C++(www.cppentry.com)的一些基本特征。至少我们要知道怎么样去编写、编译和执行简单的程序。这个程序要做什么呢?虽然还没有设计出解决方案,但是我们知道程序必须:

定义变量。

实现输入和输出。

定义数据结构来保存要处理的数据。

测试是否不同的记录含有相同的ISBN。

编写循环,处理交易文件中的每一条记录。

我们将首先考察C++(www.cppentry.com)的这些部分,然后编写书店问题的解决方案。

1.1  编写简单的C++(www.cppentry.com)程序

每个C++(www.cppentry.com)程序都包含一个或多个函数,而且必须有一个命名为main。函数由执行函数功能的语句序列组成。操作系统通过调用main函数来执行程序,main函数则执行它的组成语句并返回一个值给操作系统。

下面是一个简单的main函数,它不执行任何功能但是返回一个值:

int main()
{
    return 0;
}

操作系统通过main函数返回的值确定程序是否成功执行完毕。返回0值表明程序成功执行完毕。

main函数在很多方面都比较特别,其中最重要的是每个C++(www.cppentry.com)程序必须含有main函数,且main函数是(唯一)被操作系统显式调用的函数。

定义main函数和定义其他函数一样。定义函数必须指定四个元素:返回类型、函数名、圆括号内的形参表(可能为空)和函数体。main函数只能有一组受限的形参。本例中定义的main函数形参表为空。7.2.6节将介绍main函数中可以定义的其他形参。

main函数的返回值必须是int型,该类型表示整数。int类型是内置类型,即该类型是由C++(www.cppentry.com)语言定义的。

函数体是函数定义的最后部分,是以花括号开始并以花括号结束的语句块:

{
    return 0;
}

例中唯一的语句就是return,该语句终止函数。

注意return语句后面的分号。在C++(www.cppentry.com)中多数语句以分号作为结束标记。分号很容易被忽略,漏写分号将会导致莫名其妙的编译错误信息。

当return带上一个值,如0,这个值就是函数的返回值。返回值类型必须和函数的返回类型相同,或者可以转换成函数的返回类型。对于main函数,返回类型必须是int型,0是int型的。

在大多数系统中,main函数的返回值是一个状态指示器。返回值0往往表示main函数成功执行完毕。任何其他非零的返回值都有操作系统定义的含义。通常非零返回值表明有错误出现。每一种操作系统都有自己的方式告诉用户main函数返回什么内容。

1.1.1  编译与执行程序

程序编写完后需要进行编译。如何进行编译,依赖于操作系统和编译器。你需要查看有关参考手册或者询问在行的同事,以了解你所用的编译器的工作细节。

许多基于PC的编译器都在集成开发环境(IDE)中运行,IDE将编译器与相关的构建和分析工具绑定在一起。这些环境在开发复杂程序时非常有用,但掌握起来需要花费一点时间。通常这些环境包含点击式界面,程序员在此界面下可以编写程序,并使用各种菜单来编译并执行程序。本书不介绍怎样使用这些环境。

大多数编译器,包括那些来自IDE的,都提供了命令行接口。除非你已经很熟悉你的IDE,否则从使用简单的命令行接口开始可能更容易些。这样可以避免在学习语言之前得先去学习IDE。

1. 程序源文件命名规范

不管我们使用命令行接口还是IDE,大多数编译器希望待编译的程序保存在文件中。程序文件称作源文件(source file)。大多数系统中,源文件的名字由两部分组成:文件名(如prog1)和文件后缀。依据惯例,文件后缀表明该文件是程序。文件后缀通常也表明程序是用什么语言编写的,以及选择哪一种编译器运行。我们用来编译本书实例的系统将带有后缀.cc的文件视为C++(www.cppentry.com)程序,因此我们将该程序保存为:

prog1.cc

C++(www.cppentry.com)程序文件的后缀依赖于你所运行的编译器,其他的形式还包括:

prog1.cxx
prog1.cpp
prog1.cp
prog1.C

调用GNU或微软编译器

调用C++(www.cppentry.com)编译器的命令因编译器和操作系统的不同而不同,常用的编译器是GNU编译器和微软Visual Studio编译器。调用GNU编译器的默认命令是g++:

$ g++ prog1.cc –o prog1

这里的$是系统提示符。这个命令产生一个名为prog1或prog1.exe的可执行文件。在UNIX系统下,可执行文件没有后缀;而在Windows下,后缀为.exe。-o prog1是编译器参数以及用来存放可执行文件的文件名。如果省略-o prog1,那么编译器在UNIX系统下产生名为a.out而在Windows下产生名为a.exe的可执行文件。

微软编译器采用命令cl来调用:

C:\directory> cl –GX prog1.cpp

这里的C:\directory>是系统提示符,directory是当前目录名。cl是调用编译器的命令,-GX是一个选项,该选项在使用命令行接口编译程序时是必需的。微软编译器自动产生与源文件同名的可执行文件,这个可执行文件具有.exe后缀且与源文件同名。本例中,可执行文件命名为prog1.exe。

更多的信息请参考你的编译器用户指南。

2. 从命令行运行编译器

如果使用命令行接口,一般在控制台窗口(例如UNIX的shell窗口或Windows的命令提示窗口)编译程序。假设main程序在名为prog1.cc的文件中,可以使用如下命令来编译:

$ CC prog1.cc

这里CC是编译器命令名,$表示系统提示符。编译器输出一个可执行文件,我们可以按名调用这个可执行文件。在我们的系统中,编译器产生一个名为a.exe的可执行文件。UNIX编译器则会将可执行文件放到一个名为a.out的文件中。要运行可执行文件,可在命令行提示符处给出该文件名:

$ a .exe

执行编译过的程序。在UNIX系统中,即使在当前目录,有时还必须指定文件所在的目录。这种情况下,键入:

$ ./a.exe

“.”后面的斜杠表明文件处于当前目录下。

访问main函数的返回值的方式和系统有关。不论UNIX还是Windows系统,执行程序后,必须发出一个适当的echo命令。UNIX系统中,通过键入如下命令获取状态:

$ echo $ 

要在Windows系统下察看状态,键入

C:\directory> echo %ERRORLEVEL%

习题

习题1.1 回顾你的编译器文档并确定它所用的文件命名规范。编译并运行本节的main程序。

习题1.2 修改程序使其返回-1。返回值-1通常作为程序运行失败的指示器。然而,系统不同,如何(甚至是否)报告main函数运行失败也不同。重新编译并回到你的程序,看看你的系统如何处理main函数的运行失败指示器。

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.3 标准库vector类型 下一篇1.2.2 一个使用IO库的程序

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: