Initial commit: C++ courseware
This commit is contained in:
commit
4a4ee7c287
1789 files changed
+373489
No files matched your search
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,230 @@
|
||||
# C++ 编程讲义 — 初识C++
|
||||
|
||||
工欲善其事,必先利其器。
|
||||
|
||||
编程本质上是我们通过计算机向机器下达精确指令的过程。因此,在正式编写第一行代码之前,我们必须先熟练掌握并使用最核心的工具——电脑的基本操作与 Windows 操作系统。对于初次接触计算机的同学,我们需要从最基础的物理设备开始学习。
|
||||
|
||||
---
|
||||
|
||||
## 第一部分:计算机基础设备操作
|
||||
|
||||
### 一、鼠标的基本操作
|
||||
|
||||
鼠标是我们在图形界面中向计算机发送位置与选择指令的设备。
|
||||
|
||||
* **左键单击**:用食指按一下鼠标左键并立即松开。用于选定目标(例如选中一段代码或定位光标)。
|
||||
* **左键双击**:快速、连续地按两次鼠标左键。通常用于打开软件或选中一整个单词。
|
||||
* **右键单击**:用中指按一下鼠标右键。用于唤出快捷菜单,可以在其中找到复制、粘贴等功能。
|
||||
* **拖拽**:按住左键不放,移动鼠标到目标位置后再松开。用于移动窗口或选中多行文本。
|
||||
|
||||
### 二、熟悉键盘按键
|
||||
|
||||
键盘是编写代码时最重要的输入设备。标准键盘一般包括26个英文字母键、10个数字键、12个功能键(F1~F12)、方向键以及其他的一些功能键。
|
||||
|
||||
所有按键在物理布局上主要分为5个区:
|
||||
|
||||
1. **主键盘区**:最大的一块区域,包含字母、数字和常用标点符号,是我们书写代码的核心区域。
|
||||
2. **功能键区(F1~F12)**:位于键盘最上方,在不同的软件中有不同的快捷功能。
|
||||
3. **编辑/控制键区**:包含方向键、删除键(Delete)等,用于在代码中移动光标和修改文本。
|
||||
4. **小键盘区**:位于最右侧,主要用于快速输入纯数字。
|
||||
5. **键盘指示灯**:提示当前键盘的状态(如大小写锁定、数字键盘锁定等)。
|
||||
|
||||
### **编程必须掌握的按键指令:**
|
||||
|
||||
* **Shift 键(上档键)**:用于切换中英文标点符号,或输入按键上半部分的符号(例如按住 Shift 再按数字 9,可以打出左括号 `(` )。
|
||||
* **Enter 键(回车键)**:在代码中用于换行,使指令结构清晰。
|
||||
* **Backspace 键(退格键)**:用于删除光标前面的字符,是修改代码错误的常用键。
|
||||
|
||||
---
|
||||
|
||||
## 第二部分:什么是程序与计算机语言?
|
||||
|
||||
大家目前可能对软件中复杂的程序代码感到难以理解,但是,大家了解人类生活中的程序吗?有什么程序是大家在日常生活中经历过的呢?
|
||||
|
||||
**例如:开学典礼的程序**
|
||||
主持人会宣布,今天典礼的程序如下:
|
||||
|
||||
* 第一项:升国旗;
|
||||
* 第二项:领导介绍;
|
||||
* 第三项:校长致辞;
|
||||
* 第四项:教师代表发言;
|
||||
* 第五项:学生代表发言。
|
||||
|
||||
这其实就是人类社会的程序。映射到计算机科学中,**计算机的程序被定义为:为了得到某种结果,通过计算机语言表达的指令序列。** 计算机通过严格执行你下达的指令,最终得出预期的结果。
|
||||
|
||||
**假如我们要编写一个让计算机“把大象塞进冰箱”的程序,相当于依次下达以下指令:**
|
||||
|
||||
1. 打开冰箱门;
|
||||
2. 把大象塞进冰箱;
|
||||
3. 关上冰箱门。
|
||||
|
||||
### 计算机语言的演变与分类
|
||||
|
||||
为了把上述指令传达给计算机,我们需要使用计算机语言。计算机语言主要分为三种:
|
||||
|
||||
1. **机器语言(二进制语言)**:由 `0` 和 `1` 组成,这是计算机底层唯一能直接听懂的语言,但人类极难阅读和编写。
|
||||
2. **汇编语言**:使用一些简短的英文字母代替二进制代码,比机器语言稍易读,但依然非常晦涩。
|
||||
3. **高级语言(接近英语/自然语言)**:使用人类容易理解的英文字母、单词和数学符号编写。
|
||||
|
||||
我们即将学习的 **C++ 课程就属于高级语言**。它的本质是由一套特定的英文单词和符号组成的指令集合。然而,计算机底层只能听懂二进制,这就意味着,**必须要将高级语言“翻译”成机器语言,计算机才能执行。**
|
||||
|
||||
---
|
||||
|
||||
## 第三部分:C++ 开发工具 (Dev-C++) 与执行过程
|
||||
|
||||
那我们应该在什么地方、如何去书写这些高级语言呢?这就需要用到专业的集成开发环境(IDE)。
|
||||
|
||||
### 一、初识 Dev-C++
|
||||
|
||||
对于初学者,我们使用 **Dev-C++**。这是一款专门用于书写和运行 C/C++ 高级语言的工具。它提供了一个干净的文本编辑区,并且内置了代码高亮等便捷功能,极大地规范和方便了我们的书写。
|
||||
|
||||
### 二、程序的编译(翻译)与报错机制
|
||||
|
||||
当我们在 Dev-C++ 中书写好高级语言代码后,此时代码还只是一堆英文字符,系统在等待着“翻译官”进行翻译。
|
||||
**这个“翻译”的过程,在计算机科学中被称为“编译 ”。**
|
||||
|
||||
* **严格的语法**:翻译官只能翻译它看得懂的、符合严格规则的代码。如果代码存在拼写错误,或者不符合语法要求,翻译官就会看不懂并拒绝工作。
|
||||
* **编译报错(出现红色的 ×)**:如果下方窗口出现红色的 `×` 或错误提示,说明代码有错误,翻译失败。**只有在代码完全无误,翻译官顺利翻译后,程序才能被执行。**
|
||||
* **标点符号规范**:因为 C++ 是一门基于英文环境诞生的语言,它的指令**无法识别中文标点符号**。如果误用了中文的逗号(,)或分号(;),就等同于你自创了一个不存在的单词,翻译官会直接报错。编写代码时,必须确保输入法处于**英文半角**状态。
|
||||
|
||||
### 三、编译并运行(快捷键 F11)
|
||||
|
||||
当确保代码书写完毕且无误后,我们需要让计算机去执行命令。
|
||||
在 Dev-C++ 中,**按下键盘上的 `F11` 键,即可一键开始“编译并运行”程序。** 软件会自动先将代码翻译为机器语言,紧接着让计算机执行它。
|
||||
|
||||
### 四、控制台(黑框框)
|
||||
|
||||
按下 `F11` 并且编译成功后,屏幕上会弹出一个黑色的独立窗口。这个窗口被称为**控制台**。
|
||||
控制台的作用是**展示程序的最终运行结果**,或者在程序需要用户输入数据时,**与程序进行交互**。当控制台弹出并显示出预期的结果时,就意味着你的指令被计算机成功执行了。
|
||||
|
||||
---
|
||||
|
||||
## 第四部分:初识 C++ —— 第一个程序 Hello World
|
||||
|
||||
了解了工具后,我们将正式开始编写全人类学习编程时的第一个经典程序:向世界问好。
|
||||
|
||||
### 一、代码示例
|
||||
|
||||
在 Dev-C++ 的代码编辑区中,输入以下代码:
|
||||
|
||||
```cpp
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
int main() {
|
||||
cout << "Hello, World!" << endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### 二、代码解析
|
||||
|
||||
这段看似复杂的英文,其实每一行都有其含义:
|
||||
|
||||
* **`#include <iostream>` —— 引入输入输出流库**
|
||||
* **含义**:告诉计算机“我需要使用标准的输入和输出工具”。如果没有这一句指令,计算机就无法理解后续代码中用于在屏幕上显示文字的命令。
|
||||
* 就像做披萨前,要先准备好烤箱和工具,没有烤箱肯定无法制作披萨。
|
||||
* 如果没有这一句,电脑就不知道什么是 `cout`,没有用来输出文字的工具,自然就没法输出文字。
|
||||
|
||||
|
||||
|
||||
* **`using namespace std;` —— 使用标准命名空间**
|
||||
|
||||
* **含义**:告诉计算机“本程序默认使用名为 `std` 的标准工具库”。
|
||||
* 比如:A 工具箱和 B 工具箱都有个锤子,你就要先说清楚是哪个工具箱的,不然计算机就会搞混。
|
||||
* `std` 就像 工具箱,`cout` 就像锤子。
|
||||
* 写了这一句,相当于告诉电脑:“我默认要锤子的时候都用的是 `std` 这个工具箱。”,我们以后要用的所有的工具基本都是在`std`这个工具箱里的。
|
||||
|
||||
|
||||
|
||||
* **`int main() {` —— 主程序入口**
|
||||
|
||||
* **含义**:这是所有 C++ 程序的起点。程序执行时,必定从 `main` 函数后方的大括号 `{` 开始,到对应的大括号 `}` 结束。一个完整的 C++ 程序必须有且仅有一个 `main` 。`int` 是单词 **integer** 的缩写,意思是“整数”,规定这个函数最终执行完毕后,必须向计算机汇报一个整数作为结果。
|
||||
* 好比一个“主任务清单”,电脑会从这里开始做事情。
|
||||
|
||||
|
||||
|
||||
* **`cout << "Hello, World!";` —— 屏幕输出指令**
|
||||
|
||||
* `cout`:用于输出数据的工具,相当于一个“喇叭”,把数据告诉计算机让它来输出。
|
||||
* `<<`:像传送带,把右边的东西送到左边。
|
||||
* **`"Hello, World!"`**:被英文双引号包裹的内容,即我们要原样显示在屏幕上的具体文字数据。
|
||||
* **整句话的意思**:把 "Hello, World!" 交给输出系统,让它把这句话输出在控制台上。
|
||||
|
||||
* *注意:这一行的末尾必须以英文分号 `;` 结束,C++ 里 `;` 代表一条指令的执行完毕。*
|
||||
|
||||
|
||||
* **`return 0;` —— 正常结束程序**
|
||||
|
||||
* **含义**:返回一个数字 `0` 给系统。`0` 表示一切正常。
|
||||
* 好比告诉老师:“作业完成了,没有出错。”
|
||||
|
||||
|
||||
* **`}` —— 程序结束**
|
||||
|
||||
* **含义**:与前文的 `{` 对应,标志着整个 `main` 函数的指令序列到此彻底结束。
|
||||
|
||||
---
|
||||
|
||||
以下是这段代码中涉及的英文单词与缩写的中文翻译对照表(理解英语含义后,对于代码的理解也会非常有帮助):
|
||||
|
||||
### 第一个C++程序 基础词汇翻译表(务必记忆!)
|
||||
|
||||
| **代码单词** | **英文全拼** | **中文含义** |
|
||||
| ------------- | ------------------- | -------------------- |
|
||||
| **include** | include | 包含、引入 |
|
||||
| **iostream** | input output stream | 输入输出数据流 |
|
||||
| **using** | using | 使用 |
|
||||
| **namespace** | name space | 命名空间 |
|
||||
| **std** | standard | 标准 |
|
||||
| **int** | integer | 整数 |
|
||||
| **main** | main | 主要的(程序的起点) |
|
||||
| **cout** | console output | 控制台输出 |
|
||||
| **return** | return | 返回 |
|
||||
|
||||
------
|
||||
|
||||
## 第五部分:程序员的注释
|
||||
|
||||
### 一、什么是注释?
|
||||
|
||||
注释是专门写给人看的说明文字,计算机的翻译官(编译器)在将代码翻译成机器语言时,会**完全跳过并忽略**这些内容。
|
||||
|
||||
可以将注释理解为我们在课本空白处书写的学习笔记:老师(代表计算机)在批改作业时不会检查这些笔记,但这些文字能极大地帮助你自己或他人理清程序的逻辑与思路。
|
||||
|
||||
### 二、注释的两种标准写法
|
||||
|
||||
在 C++ 语言中,为了满足不同的说明需求,提供了两种添加注释的语法规范:
|
||||
|
||||
**1. 单行注释 (`//`)**
|
||||
|
||||
- **语法规则**:在代码中使用两个连续的斜杠 `//`。从这两个斜杠开始,直到本行结束的所有文字,都会被编译器自动忽略。通常用于对某单一行的代码进行简短解释。
|
||||
- **代码示例**:
|
||||
|
||||
```cpp
|
||||
cout << "Hello"; // 这是一句单行注释,专门用于解释左侧这行代码的作用
|
||||
```
|
||||
|
||||
**2. 多行注释 (`/* ... */`)**
|
||||
|
||||
- **语法规则**:从 `/*` 符号作为起点开始,直到 `*/` 符号作为终点结束。这两个符号中间包裹的所有文字内容(无论中间跨越了多少行),都会被系统统一认定为注释。此结构非常适合在程序开头书写长篇的整体功能说明。
|
||||
- **代码示例**:
|
||||
|
||||
```C++
|
||||
/* 这是多行注释块
|
||||
此处可以详细书写第一点、第二点...
|
||||
计算机在执行时会完全无视这部分内容
|
||||
*/
|
||||
cout << "World";
|
||||
```
|
||||
|
||||
*(注:在 Dev-C++ 等专业软件中,注释部分通常会被自动标记为绿色或其他浅色,以便与正常执行的代码做出明显的视觉区分。)*
|
||||
|
||||
### 三、为什么在软件开发中要书写注释?
|
||||
|
||||
初学者往往为了节省时间而跳过书写注释的步骤,但书写注释是非常重要的,主要是因为:
|
||||
|
||||
- **防遗忘**:人类的短期记忆是有限的。经过数周或数月后再次阅读自己编写的代码时,如果没有注释辅助回忆,当时设计的复杂计算逻辑往往难以迅速被重新理解。
|
||||
- **团队协作**:在真实的科技企业中,软件开发是一个团队项目,你的代码必定需要交接给其他工程师查阅或修改。清晰、规范的注释是保证团队成员之间能够快速读懂彼此逻辑。
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,38 @@
|
||||
### **C++ 初识C++ 课后习题 - 答案**
|
||||
|
||||
#### **一、 填空题**
|
||||
|
||||
1. 高级,编译
|
||||
2. `F11`
|
||||
3. 控制台
|
||||
4. `main`
|
||||
5. 控制台输出,整数
|
||||
6. 分号 (`;`)
|
||||
7. 单行,多行
|
||||
8. 输入输出流库 (或 标准输入输出功能)
|
||||
|
||||
#### **二、 单项选择题**
|
||||
|
||||
1. **B**. 程序是一系列有序的指令。
|
||||
2. **B**. 编译时出现红色错误,意味着编译器(翻译官)读不懂代码,是语法层面的问题。
|
||||
3. **C**. `int main()` 是C++程序的起点和入口。
|
||||
4. **C**. `cout` 用于输出,使用 `<<` 运算符,要输出的文字需用英文双引号包裹。
|
||||
5. **C**. `endl` 是 `end of line` 的缩写,用于换行。
|
||||
6. **B**. 注释是给程序员看的,编译器会忽略。
|
||||
7. **C**. `std` 是 `standard` (标准) 的缩写。
|
||||
8. **A**. `cout` 会紧挨着输出,代码中没有空格也没有 `endl`,所以会连在一起。
|
||||
9. **C**. `return 0;` 代表程序顺利完成任务,正常退出。
|
||||
10. **B**. 使用 `//` 和 `/* */` 注释掉的代码行都不会被编译和执行,所以只有 `Step 2` 会被输出。
|
||||
|
||||
#### **三、 判断题**
|
||||
|
||||
1. × (高级语言必须经过编译,翻译成机器语言后才能被计算机执行。)
|
||||
2. √ (C++的语法规定,所有标点必须是英文半角状态。)
|
||||
3. × (所有C++程序都必须有且仅有一个 `main` 函数作为入口。)
|
||||
4. × (`cout` 使用的符号是 `<<`。)
|
||||
5. √ (`#include` 是预处理指令,不是C++语句,所以末尾没有分号。)
|
||||
6. √ (这是单行注释的定义。)
|
||||
7. × (意思是“使用标准命名空间std”。)
|
||||
8. √ (`endl` 会在输出"Hello"后换行,所以"World"会显示在第二行。)
|
||||
9. √ (在文本编辑器中,回车键用于换行。)
|
||||
10. √ (这是C++多行注释的正确语法。)
|
||||
Binary file not shown.
@@ -0,0 +1,95 @@
|
||||
### **C++ 初识C++ 课后习题**
|
||||
|
||||
姓名: \_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
|
||||
|
||||
#### **一、 填空题**
|
||||
|
||||
1. 我们学习的C++属于\_\_\_\_\_\_\_\_\_\_\_\_语言,它需要通过一个叫做“\_\_\_\_\_\_\_\_\_\_\_\_”的过程,翻译成计算机唯一能直接听懂的机器语言。
|
||||
2. 在Dev-C++中,我们可以按键盘上的\_\_\_\_\_\_\_\_\_\_\_\_键来一键“编译并运行”程序。
|
||||
3. 程序编译成功并运行后,会弹出一个黑色的窗口用来显示结果,这个窗口叫做\_\_\_\_\_\_\_\_\_\_\_\_。
|
||||
4. 所有C++程序都从\_\_\_\_\_\_\_\_\_\_\_\_开始执行,这是程序的入口。
|
||||
5. `cout` 来自英文 `console output`,是\_\_\_\_\_\_\_\_\_\_\_\_的意思;`int` 来自英文 `integer`,是\_\_\_\_\_\_\_\_\_\_\_\_的意思。
|
||||
6. 在C++代码中,每一条独立的指令语句的末尾都必须使用英文的\_\_\_\_\_\_\_\_\_\_作为结束标记。
|
||||
7. 我们可以在代码中书写两种注释:以 `//` 开始的\_\_\_\_\_\_\_\_\_\_注释,和以 `/*` `*/` 包裹的\_\_\_\_\_\_\_\_\_\_注释。
|
||||
8. `#include <iostream>` 这行代码的作用是引入\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_,这样我们才能使用 `cout` 工具。
|
||||
|
||||
#### **二、 单项选择题**
|
||||
|
||||
( ) 1. 讲义中“把大象塞进冰箱”的例子,是为了说明程序是什么?
|
||||
A. 一种文件格式 B. 一系列需要严格按顺序执行的指令
|
||||
C. 一种计算机硬件 D. 一种只能由 `0` 和 `1` 组成的代码
|
||||
|
||||
( ) 2. 在Dev-C++的编辑区写好C++代码后,如果点击“编译”时,下方出现了红色的错误提示,最可能的原因是?
|
||||
A. 电脑没有连接网络
|
||||
B. 代码存在语法错误,例如拼写错误或使用了中文标点
|
||||
C. 程序运行时间太长
|
||||
D. 程序逻辑太复杂
|
||||
|
||||
( ) 3. 每一个C++程序都必须有且仅有一个的入口是?
|
||||
A. `#include <iostream>` B. `using namespace std;`
|
||||
C. `int main()` D. `return 0;`
|
||||
|
||||
( ) 4. 在C++中,要在屏幕上原样输出一行文字“I love C++”,应该使用下面哪条指令?
|
||||
A. `cout >> "I love C++";` B. `cin << "I love C++";`
|
||||
C. `cout << "I love C++";` D. `main << "I love C++";`
|
||||
|
||||
( ) 5. `endl` 在 `cout` 语句中的主要作用是什么?
|
||||
A. 表示程序结束
|
||||
B. 在输出的末尾添加一个空格
|
||||
C. 输出一个换行符,让后续的输出从下一行开始
|
||||
D. 清除屏幕上所有已有的文字
|
||||
|
||||
( ) 6. 关于代码中的注释,下列说法正确的是?
|
||||
A. 注释是写给计算机执行的指令
|
||||
B. 注释是写给人看的说明文字,计算机会自动忽略它
|
||||
C. 写了注释会让程序运行变慢
|
||||
D. C++只支持 `//` 这一种注释
|
||||
|
||||
( ) 7. 根据讲义中的词汇表,`std` 是哪个单词的缩写?
|
||||
A. student (学生) B. study (学习)
|
||||
C. standard (标准) D. start (开始)
|
||||
|
||||
( ) 8. 阅读以下代码片段,它的最终输出是什么?
|
||||
```cpp
|
||||
cout << "Apple";
|
||||
cout << "Banana";
|
||||
```
|
||||
A. AppleBanana
|
||||
B. Apple Banana
|
||||
C. Apple (然后换行) Banana
|
||||
D. BananaApple
|
||||
|
||||
( ) 9. `return 0;` 这句代码在 `main` 函数中的作用是什么?
|
||||
A. 输出数字0到屏幕上
|
||||
B. 告诉系统程序出错了
|
||||
C. 告诉系统程序正常结束了
|
||||
D. 让程序重新从头执行一次
|
||||
|
||||
( ) 10. 阅读以下代码,控制台最终会显示什么内容?
|
||||
```cpp
|
||||
// cout << "Step 1" << endl;
|
||||
cout << "Step 2" << endl;
|
||||
/*
|
||||
cout << "Step 3" << endl;
|
||||
*/
|
||||
```
|
||||
A. Step 1 B. Step 2
|
||||
C. Step 3 D. Step 1 (然后换行) Step 2 (然后换行) Step 3
|
||||
|
||||
#### **三、 判断题 (对的打“√”,错的打“×”)**
|
||||
|
||||
1. ( ) C++是一门高级语言,计算机可以直接理解并执行C++代码,无需翻译。
|
||||
2. ( ) 在编写C++代码时,输入法必须处于英文半角状态,不能使用中文标点符号。
|
||||
3. ( ) 一个C++程序可以没有 `main` 函数。
|
||||
4. ( ) `cout` 使用的符号是 `>>`,代表数据从变量流向屏幕。
|
||||
5. ( ) `#include <iostream>` 这行代码的末尾不需要加分号 `;`。
|
||||
6. ( ) `//` 符号后面的所有内容,直到这一行的末尾,都会被当作注释处理。
|
||||
7. ( ) `using namespace std;` 的意思是“使用一个名叫std的学生”。
|
||||
8. ( ) 以下代码会在屏幕上分两行输出"Hello"和"World"。
|
||||
```cpp
|
||||
cout << "Hello" << endl;
|
||||
cout << "World";
|
||||
```
|
||||
9. ( ) 计算机键盘上的 `Enter` 键在代码编辑区的主要作用是换行。
|
||||
10. ( ) `/* 我是注释 */` 这种写法是C++中一种正确的注释方式。
|
||||
|
||||
Binary file not shown.
Reference in new issue
Block a user