C++基础教程(1):输入、处理、输出

C++是一种很值得学习的基础语言,不仅因为应用范围广,而且因为它经典的语法结构。本章会通过一些案例来认识这门语言的基本结构,从而对这门语言有基本的认识。

C++基础教程(1):输入、处理、输出

请先阅读如何理解计算机与程序。简单程序运行可使用在C++在线编辑器,如:GDB Online, Online Cpp Compiler, W3School,也可以下载客户端Visual Studio. C++ 是作为 C 的扩展而开发的,两种语言的语法几乎相同,主要区别是 C++ 支持类和对象,而 C 不支持。C++可以应用于操作系统、图形用户界面和嵌入式系统的开发。

简单案例

这里通过程序2-1来理解C++语言的基本结构。

第1行:

// A simple C++ program

// 表示注释的开始。编译器会忽略从双斜杠到行尾的所有内容。 注释仅为了提高程序的可读性,不被计算机执行。也可以通过/*....*/进行多行注释。

/* 这行是注释
这行也是注释 */
cout << "Hello World!";

第2行:

#include <iostream> 

因为这一行以 # 开头,所以它被称为预处理器指令。#include 指令使程序中包含另一个文件的内容。 括号内iostream是包含的文件名称。iostream 文件储存了 C++ 程序在屏幕上显示输出与从键盘读取输入的代码。 iostream 文件称为头文件,因此它应该包含在程序的头部或顶部。

第3行:

using namespace std;

程序的实体,如变量、函数、对象等,通常具有唯一名称。using namespace std;语句表示程序将访问std中声明的变量。程序需要访问std命名空间的原因是因为iostream文件创建的每个名称都是std命名空间的一部分。 为了让程序使用iostream中的实体,它必须有权访问std命名空间。

💡
如果不了解#include <iostream> 和 using namespace std 的工作原理, 只需认为是程序需要包含的基本结构。

第4行:

空白行,让代码更具可读性。C++ 编译时忽略空白行。

第5行:

int main()

这标志着一个函数的开始。 int 一词代表整数(integer),表示函数在完成执行时向操作系统发送一个整数值。

第6行:

{

这称为左大括号,它与函数 main 的开头相关联。 构成函数的所有语句都包含在一组大括号中。 如果你从左大括号往下看第三行,你会看到右大括号。 两个大括号之间的所有内容都是函数 main 的内容。

第7行:

cout << "Programming is great fun!";

简单地说,这一行在屏幕上显示一条消息。该行的末尾是一个分号,标记 C++ 中完整语句的结束。

💡
编译器会忽略注释,因此注释末尾不需要分号。 预处理器指令,如#include语句,仅在行尾结束并且从不需要分号。 函数的开头,如 int main(),不是一个完整的语句,因此也不要在那里放置分号。

第8行:

return 0;

这会在程序完成时将整数值 0 发送回操作系统。 值 0 通常表示主程序执行成功。

第9行:

}

这个大括号标志着 main 函数的结束。 由于 main 是这个程序中唯一的函数,它也标志着程序的结束。

另一个案例

我们可以看到程序包含的基本结构如下图。每个程序必须包含一个main的主程序,表示程序开始自动从此处执行。程序的主体需要放在main函数当中。

#include <iostream>
using namespace std;

int main()
{
//这里是程序的主体部分
}

C++程序的基本结构

在程序的主体中我们看到一个语句(第7行):

int apples;

这是用户定义了一个变量。

💡
变量是所有编程语言的重点,接下来会进一步介绍。

如何理解计算机与程序的文章中介绍了程序语言的组成:关键词、程序员定义的标识符、运算符、标点符号、语法。我们来分析下Program 2-9中的成分。

  • 关键词:int, using, namespace, return
  • 程序员定义的标识符:apples
  • 运算符:=
  • 标点符号:; ( ) { } <<
  • 语法:main函数后要加(),函数主体要在{}里面且要需要缩进,语句结束要用冒号; 等等

输入、处理、输出(Input, Processing, Output)

计算机程序的三个主要部分:

  1. 输入:输入是输入到程序中的数据。这可以通过各种输入设备来完成,例如键盘、鼠标或麦克风。
  2. 处理:处理是程序对输入数据所做的工作。这可以包括计算、比较和逻辑运算。对数据处理涉及到变量的问题,需要重点关注变量。
  3. 输出:输出是处理的结果。这可以显示在屏幕上、打印到打印机或保存到文件中。

由此可知道三者也是相关的:输入的数据用于执行处理,处理的结果即是输出。我们通过以下案例进一步了解。

1、输入(Input)

第14、16行

cin >> length;
cin >> width;

将键盘输入的信息保存在变量lengthwidth中。C++的输入可以参考W3school的介绍。变量需要先定义,然后才能使用,所以可以看到第7行定义了三lengthwidth量。变量的概念在程序中非常重要,因此需要重点介绍。

2、变量(Variables)

变量是代表存储在计算机内存中的值的名称。程序使用变量来访问和操作存储在内存中的数据。变量需要先定义,然后才能使用。

第9行

int length, width, area;

此处是变量的定义,定义了变量的类型与变量名。这里的变量类型是int,变量名分别是lengthwidtharea。变量类型除了int之外,还有boolstringchar等多种数据类型,具体可参考接下来的介绍。变量名称可以自己定义,只要符合要求就可以。定义变量之后便可以通过赋值语句对变量赋值:

length = 5;
width = 3;

也可以通过键盘输入,如第14、16行:

cin >> length;
cin >> width;
💡
变量需要先定义,然后才能赋值一个数据。定义和赋值可以同个语句,也可以分开。

案例:变量定义与赋值同时进行

#include <iostream>
using namespace std;
 
int main () 
{
  int num1 = 1000; //定义一个整型变量,然后赋值1000;
  float num2 = 5.75; //定义一个浮点型的变量,然后赋值5.75;
  cout << num1;
  cout << num2;
  return 0;
}

案例:变量定义与赋值分开

#include <iostream>
using namespace std;
 
int main () 
{
    int myNum; //先定义变量
    myNum = 15; //然后才赋值
    cout << myNum;
}

3、数据类型(Data Type)

💡
变量是代表存储在计算机内存中的值的名称,那么值有哪些类型?或者说变量指向的数据类型有哪些?

w3school总结了C++内置的基本数据类型,并且介绍了数据类型的特点。同时w3school提供在线的C++编译器,使用很方便。

Data TypeSizeDescription
boolean1 byteStores true or false values
char1 byteStores a single character/letter/number, or ASCII values
int2 or 4 bytesStores whole numbers, without decimals
float4 bytesStores fractional numbers, containing one or more decimals. Sufficient for storing 6-7 decimal digits
double8 bytesStores fractional numbers, containing one or more decimals. Sufficient for storing 15 decimal digits

除了基本的数据类型,C++还提供了常用的字符串类型(string),用于存储字符序列(文本)。 字符串值必须用双引号括起来。字符串虽然不是内置类型,但只需要在预处理指令中添加#include <string>

#include <iostream>
#include <string>
using namespace std;

int main() {
  string greeting = "Hello"; //定义字符串型的变量,并赋值"Hello"。
  cout << greeting;
  return 0;
}

另外C++语言还提供复杂一些的数据类型,如array与structure类型。

4、处理

从外部世界收集到信息,并用变量来代表存储的信息后,程序通常会以某种方式对其进行处理。

第17行

area = length * width;

将变量length的值与变量width的值相乘,并赋值给定义的变量area。这些就是处理过程,需要用到各种运算符(Operators)。C++的运算符可分为:

  • 算术运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 按位运算符

具体使用方式同样参考w3school,这里不具体介绍。

5、输出

对于以下案例:

#include <iostream>
using namespace std;

int main() {
  cout << "Hello World!";
  cout << "I am learning C++";
  return 0;
}

输出结果为:

Hello World!I am learning C++

cout 对象与 << 运算符一起用于输出值/打印文本。程序员可以根据需要多次使用cout 对象。 但是请注意它不会在输出的末尾插入新行。如果要插入新行,你可以使用 \n 字符。换行符 (\n) 又称为转义字符(escape sequence)。

#include <iostream>
using namespace std;

int main() {
  cout << "Hello World!\n";
  cout << "I am learning C++";
  return 0;
}

输出结果为

Hello World!
I am learning C++

除了在屏幕上输出结果,还可以输出保存的文件,这时不介绍。

总结

C++ 语言的基础介绍已经完毕,我们先从两个案例理解语言的基础结构及重要的组成部分,然后从输入输出流程方面介绍程序的运行原理。

这篇文章注重程序的结构,具体的知识点可通过外部资源进步补充,如w3schoolcplusplusTutorialspoint