C++基础教程(1):输入、处理、输出
C++是一种很值得学习的基础语言,不仅因为应用范围广,而且因为它经典的语法结构。本章会通过一些案例来认识这门语言的基本结构,从而对这门语言有基本的认识。
请先阅读如何理解计算机与程序。简单程序运行可使用在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
命名空间。
第4行:
空白行,让代码更具可读性。C++ 编译时忽略空白行。
第5行:
int main()
这标志着一个函数的开始。 int
一词代表整数(integer),表示函数在完成执行时向操作系统发送一个整数值。
第6行:
{
这称为左大括号,它与函数 main 的开头相关联。 构成函数的所有语句都包含在一组大括号中。 如果你从左大括号往下看第三行,你会看到右大括号。 两个大括号之间的所有内容都是函数 main
的内容。
第7行:
cout << "Programming is great fun!";
简单地说,这一行在屏幕上显示一条消息。该行的末尾是一个分号,标记 C++ 中完整语句的结束。
第8行:
return 0;
这会在程序完成时将整数值 0 发送回操作系统。 值 0 通常表示主程序执行成功。
第9行:
}
这个大括号标志着 main
函数的结束。 由于 main
是这个程序中唯一的函数,它也标志着程序的结束。
另一个案例
我们可以看到程序包含的基本结构如下图。每个程序必须包含一个main
的主程序,表示程序开始自动从此处执行。程序的主体需要放在main
函数当中。
在程序的主体中我们看到一个语句(第7行):
int apples;
这是用户定义了一个变量。
在如何理解计算机与程序的文章中介绍了程序语言的组成:关键词、程序员定义的标识符、运算符、标点符号、语法。我们来分析下Program 2-9中的成分。
- 关键词:int, using, namespace, return
- 程序员定义的标识符:apples
- 运算符:=
- 标点符号:; ( ) { } <<
- 语法:main函数后要加(),函数主体要在{}里面且要需要缩进,语句结束要用冒号; 等等
输入、处理、输出(Input, Processing, Output)
计算机程序的三个主要部分:
- 输入:输入是输入到程序中的数据。这可以通过各种输入设备来完成,例如键盘、鼠标或麦克风。
- 处理:处理是程序对输入数据所做的工作。这可以包括计算、比较和逻辑运算。对数据处理涉及到变量的问题,需要重点关注变量。
- 输出:输出是处理的结果。这可以显示在屏幕上、打印到打印机或保存到文件中。
由此可知道三者也是相关的:输入的数据用于执行处理,处理的结果即是输出。我们通过以下案例进一步了解。
1、输入(Input)
第14、16行
cin >> length;
cin >> width;
将键盘输入的信息保存在变量length
与width
中。C++的输入可以参考W3school的介绍。变量需要先定义,然后才能使用,所以可以看到第7行定义了三length
与width
量。变量的概念在程序中非常重要,因此需要重点介绍。
2、变量(Variables)
变量是代表存储在计算机内存中的值的名称。程序使用变量来访问和操作存储在内存中的数据。变量需要先定义,然后才能使用。
第9行
int length, width, area;
此处是变量的定义,定义了变量的类型与变量名。这里的变量类型是int
,变量名分别是length
、width
与area
。变量类型除了int
之外,还有bool
, string
, char
等多种数据类型,具体可参考接下来的介绍。变量名称可以自己定义,只要符合要求就可以。定义变量之后便可以通过赋值语句对变量赋值:
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 Type | Size | Description |
---|---|---|
boolean | 1 byte | Stores true or false values |
char | 1 byte | Stores a single character/letter/number, or ASCII values |
int | 2 or 4 bytes | Stores whole numbers, without decimals |
float | 4 bytes | Stores fractional numbers, containing one or more decimals. Sufficient for storing 6-7 decimal digits |
double | 8 bytes | Stores 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++ 语言的基础介绍已经完毕,我们先从两个案例理解语言的基础结构及重要的组成部分,然后从输入输出流程方面介绍程序的运行原理。
这篇文章注重程序的结构,具体的知识点可通过外部资源进步补充,如w3school,cplusplus,Tutorialspoint。