1.1程序的结构

计算机程序的实质是告诉计算机做什么的指令序列。

语句和表达式

程序中最常见的指令类型是语句,语句是C++语言中最小的独立单元,类似于人类语言中的一个句子。我们写句子是为了表达想法,而C++中语句是为了向编译器传达要其执行的任务,每个语句都以英文的分号结束。

C++中有许多不同种类的语句,以下是一些最常见的简单语句类型:

int x;

x=5;

std::cout<<x;

int x; 是一个声明语句,它告诉编译器x是一个变量,程序中声明变量的实质是为一块内存区域命名,这块区域可以保存一个可改变的值。所有的变量在使用之前都必须声明,稍后我们会花更多时间讨论变量。

x=5; 是一个赋值语句,它将值5分配给变量x。

std::cout<<x; 是一个输出语句,它将x输出到屏幕上(前面语句已将其设置为5,所以此处输出5)。

编译器也能够解析表达式,表达式是一个能够计算数值的数学实体。例如在数学中,表达式2+3的计算值为5,表达式可以包含数值(例如2)、变量(例如x)、运算符(例如+)、函数(基于输入值返回输出值),可以是单独的一个2或者x,也可以是它们的复合,比如2+3、2+x、x+y、(2+x)*(y-3)。

例如,语句x=2+3; 是一个有效的赋值语句,表达式2+3的值为5,这个值会被分配给x。

函数

在C++中,语句通常被组合为一个称为“函数”的单元,函数是一个按顺序执行的语句集合。每个C++程序都必须包含一个称为main的特殊函数,程序就是从main函数中的第一个语句开始执行的。函数通常被用来完成某项特殊功能,例如一个名为“max”的函数可能包含能够计算出三个数中最大值的语句。一个名为“calculateGrade”可能是用来计算学生的成绩的,以后我们会更多时间谈论函数。

友情提示:把main函数放在一个与项目同名的.cpp文件中是个好主意。

库与C++标准库

库是一系列预编译好的代码(例如函数)集合,已经被“打包”好以便被不同的程序重复使用。库提供了可以拓展程序功能的常用方式,比如写游戏时,你可能需要用到声音库和图形库。

C++语言的核心实际上是非常小巧而简约的,但C++还配备了可以提供额外功能的一个庞大的标准C++库,标准C++库中最常用的是iostream库,包含了打印内容到屏幕和读取用户输入的功能。

看一个示例程序

现在你已经对语句、函数和库有了大致的了解,下面我们来看一个简单的示例程序。

#include <iostream>

int main()
{
   std::cout << "Hello world!";
   return 0;
}

第一行是一种被称为预处理指令的特殊语句,告诉编译器执行一项特殊任务,此例中,它告诉编译器将iostream文件的内容添加到程序中,#include <iostream>

允许我们使用iostream库中的功能,将Hello World!打印到屏幕上。

第二行什么都没有,将被编译器忽略。

第三行声明了main函数,如前面所提,这是强制要求的,每个程序都必须有。

第四行和第七行标明main函数的范围。花括号之间的所有内容都是main函数的一部分。

第五行是程序中的第一个语句(称为语句是因为它以分号结束),并且是一个输出语句,std::cout是代表控制台/屏幕的特殊对象,<<是一个操作符(就像+是一个操作符),称为输出操作符,std::cout明白所有通过<<操作符传递给它的内容都应被输出到屏幕上,此例中传递的内容是Hello Woeld!。

第六行是一个新类型语句,称为返回语句。当程序结束运行时,main函数会向操作系统返回一个值以指示程序运行成功与否。这个特殊的返回语句将向系统返回0值,这意味着“一切顺利”,非零值通常表示程序出错,必须终止。后续讨论函数时我们将更详细地研究返回语句。

我们写的所有程序都将遵循这个模板或其变种,以后我们还会更更详细地讨论它。

语法及语法错误

英语中,句子结构遵循具体的语法规则,比如正常的语句都会在一段时间内结束,支配语言构造的规则就成为语法,如果你忘记了结束一个语句并让两个语句一起运行,就违反了英语语法。

C++同样也有语法:保证程序合法的规则。编译程序时,编译器负责检查程序是否遵循基本的C++语法规则,违反规则时,编译器就会“抱怨”并给出语法错误提示。

比如,你已了解到语句必须以分号结束,让我们看一下如果省略分号会发生什么。

#include <iostream>

int main()
{
   std::cout << "Hello world!"
   return 0;
}

Visual studio给出了如下错误提示:

c:\users\apomeranz\documents\visual studio 2013\projects\test1\test1\test1.cpp(6): error C2143: syntax error : missing ‘;’ before ‘return’

这是告诉你第六行有一个语法错误,忘记在return前添加分号。错误实际在第五行,通常编译器会精确地指出错误发生在哪一行,但有时它直到下一行才会注意到(译者注:这是由于C/C++程序对代码的格式没有要求,所以第五行没有分号不一定是错的,分号也可以放在第六行开头,所以编译器检查到第六行才发现居然真的没有分号)。

写程序时遇到语法错误是很常见的,但幸运的是,语法错误通常最容易解决,只有消除所有的语法错误程序才能编译通过。

小测验

下面的测试是为了强化你对上述内容的理解。

  • 语句和表达式之间的区别是什么?
  • 函数和库的区别是什么?
  • C++的语句以什么符号结尾?
  • 什么是语法错误?

小测验答案

  • 语句是告诉编译器执行特定任务的“完整的句子”,表达式是计算数值的数学实体,常包含在语句中。
  • 函数是按顺序执行的语句集合,常被设计用来实现特殊功能,库封装了一系列函数,供不同程序使用。
  • 以“;”结束。
  • 语法错误是在编译时发生的,程序不符合C++语法规则而引发的编译错误。

转载请参看关于博客页面相关要求。

关于 “1.1程序的结构” 的 1 个意见

评论关闭。