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.
@@ -0,0 +1,177 @@
|
||||
# C++ 基本语法与 Python 的区别
|
||||
|
||||
## 第一部分:程序的基本结构
|
||||
|
||||
### 1. Python 基础程序 和 C++ 的基础程序
|
||||
在 Python 中,你想打印一句话,只需要直接写一行代码:
|
||||
```python
|
||||
# Python 代码
|
||||
print("Hello, World!")
|
||||
```
|
||||
Python 是**解释型语言**,它从第一行开始直接往下读并执行。
|
||||
|
||||
但在 C++ 中,哪怕只是打印一句话,你也需要搭建一个完整的代码框架结构。因为C++ 是**编译型语言**,代码必须先完整翻译成机器码,然后才能运行,以下的代码为 C++ 中 Hello world 程序实现。注:C++代码中 `//` 后的内容表示注释。
|
||||
|
||||
```cpp
|
||||
// C++ 代码的基本框架
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
int main() {
|
||||
cout << "Hello, World!" << endl; // 这是注释,用于输出 Hello, world!
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
### 2. C++ 结构拆解(为什么要有这么多行?)
|
||||
* `#include <iostream>`:类似于 Python 的 `import`。`iostream` 是“输入输出流”的意思,没有这一行,C++ 连怎么把字显示在屏幕上都不知道,这一行相当于是拿到了 `iostream` 这个工具箱,让它可以获取里面的输出工具。
|
||||
* `using namespace std;`:声明使用“标准命名空间”。你可以把它理解为告诉 C++:“接下来我用到的一些基础工具,都去标准工具箱(std)里找”。
|
||||
* `int main() { ... }`:**这是 C++ 最重要的地方,叫做“主函数”**。在 C++ 里,程序永远从 `main` 函数的第一行开始执行。大括号 `{}` 里面的内容,就是要执行的具体指令代码。
|
||||
* `return 0;`:表示程序正常结束,向操作系统汇报圆满完成了任务,没有错误。
|
||||
|
||||
### 3. 两个语法习惯的区别
|
||||
* **分号 `;` 是结尾**:在 Python 里,换行就代表一句话结束。**在 C++ 里,几乎每一条语句结束时,都必须加上英文分号 `;`。** 忘记写分号是 `python` 使用者在 C++ 里最常犯的错误之一。
|
||||
* **大括号 `{}` 取代了缩进**:Python 靠严格的缩进来判断代码块。C++ 不管缩进(哪怕你全写在一行它也能运行),C++ 是靠大括号 `{}` 来圈定代码块的。当然,为了人类易读,我们在 C++ 里依然会保持良好的缩进习惯。
|
||||
|
||||
---
|
||||
|
||||
## 第二部分:变量与数据类型
|
||||
|
||||
### 1. 动态类型 和 静态类型
|
||||
在 Python 里,变量像是一个有弹性的袋子,你往里面装什么,它就是什么:
|
||||
```python
|
||||
# Python: 动态类型
|
||||
age = 18 # 此时是整数
|
||||
age = "十八" # 突然变成字符串了,Python 完全OK
|
||||
```
|
||||
|
||||
**C++ 是严格的“静态类型”语言**。在 C++ 里,变量更像是一个定制的容器,你在制造(声明)这个容器的时候,**必须提前规定好它只能装什么类型的东西**,而且永远不能变。
|
||||
|
||||
那么**在 C++ 定义变量的语法是 `数据类型 变量名 = 初始化值;`**(其中 `= 初始化值` 的部分可以省略不进行初始化)。
|
||||
|
||||
```cpp
|
||||
// C++是静态类型 (必须先写数据类型,再写变量名字,后面可以进行初始化)
|
||||
int age = 18;
|
||||
// age = "十八"; // 错误!C++ 会直接报错:不能把文字塞进整数盒子里!
|
||||
```
|
||||
|
||||
### 2. C++ 中最常用的基本数据类型
|
||||
在 Python 里的类型,在 C++ 里都有对应,但划分得更细:
|
||||
* **`int`** :整数(例如 `10`, `-5`, `0`)。
|
||||
* **`double`**:双精度浮点数,也就是小数(例如 `3.14`, `-0.99`)。C++ 中还有一种叫 `float` 的小数,但 `double` 精度更高,更常用。
|
||||
* **`char`** :单个字符。注意!在 C++ 里,**单字符必须用单引号**(例如 `'A'`, `'?'`),双引号是留给字符串的。
|
||||
* **`string`**:字符串(例如 `"Hello"`)。需要引入 `#include <string>` 才能使用,并且字符串需要用双引号包裹。
|
||||
* **`bool`** :布尔值。代表真假。
|
||||
|
||||
### 3. 变量的声明与初始化
|
||||
在 C++ 里,你可以先准备好盒子(声明),以后再往里装东西(赋值):
|
||||
```cpp
|
||||
int score; // 声明变量:准备了一个叫 score 的整数盒子
|
||||
score = 100; // 赋值:把 100 放进去
|
||||
|
||||
double price = 9.9; // 声明并同时初始化(推荐这种做法)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 第三部分:输入与输出
|
||||
|
||||
在 Python 里,我们用 `print()` 输出,用 `input()` 输入。
|
||||
在 C++ 里,输入输出的概念有点像是一条河流。
|
||||
|
||||
### 1. 输出:`cout`
|
||||
C++的输出是使用 `cout` 配合输出符号 `<<` (像两个向左的箭头,表示把数据流向屏幕)。
|
||||
```cpp
|
||||
// Python 的输出语法
|
||||
# age = 16;
|
||||
# print("我的年龄是", age)
|
||||
|
||||
// 对应 C++ 的实现:
|
||||
int age = 16;
|
||||
cout << "我的年龄是 " << age << endl;
|
||||
```
|
||||
* 你可以用 `<<` 把很多东西串联起来。
|
||||
* `endl` (End Line) 表示换行,相当于 Python `print` 默认的换行效果。你也可以在字符串里添加 `\n` 来换行。
|
||||
|
||||
### 2. 输入:`cin`
|
||||
C++的输入是使用 `cin` 配合输入符号 `>>` (箭头向右,表示把从键盘读到的数据流向变量)。
|
||||
|
||||
**输入这里 C++ 比 Python 方便一点!**
|
||||
在 Python 里,`input()` 拿到的永远是字符串,你要用 `int(input())` 强行转换。
|
||||
但在 C++ 里,因为变量已经提前规定好了类型,`cin` 会**自动**把你的键盘输入转换成合适的类型!
|
||||
|
||||
```cpp
|
||||
// Python 代码:
|
||||
# age_str = input("请输入年龄: ")
|
||||
# age = int(age_str)
|
||||
|
||||
// C++ 代码:
|
||||
int age; // 获取输入前,必须先准备好一个空盒子来装这个输入的数据
|
||||
cout << "请输入年龄: "; // 提示用户
|
||||
cin >> age; // 程序暂停,等待用户输入,并自动转为整数放进 age 盒子
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 第四部分:条件判断
|
||||
|
||||
条件判断的逻辑在任何编程语言里都是相通的(无非就是如果...就...否则...),主要的区别在于**符号和格式**。
|
||||
|
||||
### 1. 结构对比 (`if - elif - else` vs `if - else if - else`)
|
||||
|
||||
我们直接看对比。假设我们要编写根据分数判断 优秀、及格、不及格 的三个等级的代码:
|
||||
|
||||
**Python 版本:**
|
||||
```python
|
||||
score = 85
|
||||
|
||||
if score >= 90:
|
||||
print("优秀")
|
||||
elif score >= 60:
|
||||
print("及格")
|
||||
else:
|
||||
print("不及格")
|
||||
```
|
||||
|
||||
**C++ 版本:**
|
||||
```cpp
|
||||
int score = 85;
|
||||
|
||||
// 注意 1:条件必须用圆括号 () 包起来!
|
||||
// 注意 2:执行的代码块必须用大括号 {} 包起来!
|
||||
if (score >= 90) {
|
||||
cout << "优秀" << endl;
|
||||
}
|
||||
else if (score >= 60) { // 注意 3:C++ 里没有 elif,必须写完整的 else if
|
||||
cout << "及格" << endl;
|
||||
}
|
||||
else {
|
||||
cout << "不及格" << endl;
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 逻辑运算符的变换 (and, or, not)
|
||||
在 Python 里,判断多个条件时,使用的是英语化的 `and`、`or`、`not`。
|
||||
在 C++ 里,需要使用数学领域的符号:
|
||||
|
||||
* **与 (and) 变成 `&&`**
|
||||
* **或 (or) 变成 `||`** (竖线符号,通常在回车键上方,按 Shift + \ 打出)
|
||||
* **非 (not) 变成 `!`**
|
||||
|
||||
**举个例子:判断一个人是不是青少年(年龄在 13 到 19 岁之间):**
|
||||
|
||||
* Python: `if age >= 13 and age <= 19:` (Python 甚至允许 `if 13 <= age <= 19:`)
|
||||
* C++: `if (age >= 13 && age <= 19)` (但是C++ **绝对不能**连写,必须用 `&&` 连接两个独立的判断)
|
||||
|
||||
### 3. 布尔值的细微差别
|
||||
* Python 的真假是首字母大写的:`True` / `False`
|
||||
* C++ 的真假是全小写的:`true` / `false`
|
||||
|
||||
---
|
||||
|
||||
### **作为有 Python 基础的同学,在写 C++ 时一定要注意以下几个问题:**
|
||||
|
||||
1. **分号**:每句话代码都要加上 `;` 。
|
||||
2. **类型**:要用一个新变量,必须要规定数据类型,例如 `int` 、`double` 。
|
||||
3. **括号**: `if` 后面,条件需要加上 `()` 。并且代码块也要加上 `{}` 。
|
||||
4. **结构**:写代码前要写上C++程序框架, `int main() { ... }` ,以及前面的 `include` 以及 `using namespace std;`。
|
||||
@@ -0,0 +1,167 @@
|
||||
### 实例一:程序基本结构 (最简单的 "Hello World")
|
||||
|
||||
**Python 代码**
|
||||
```python
|
||||
# 直接写,所见即所得
|
||||
print("Hello, C++!")
|
||||
```
|
||||
|
||||
**C++ 代码**
|
||||
```cpp
|
||||
// C++ 程序在基本的程序框架下写代码,这个框架基本是固定的结构,记住即可。
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
int main() {
|
||||
cout << "Hello, Python!" << endl;
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
#### 区别点解析:
|
||||
* **框架**:Python 几乎没有框架,直接写功能。C++ 必须把所有代码放进 `int main() { ... }` 这个主函数“容器”里。
|
||||
* **引用**:C++ 需要用 `#include <iostream>` 来引入“输入输出”的功能模块。
|
||||
* **语法**:C++ 语句结尾必须有分号 `;`。`endl` 用于换行。
|
||||
|
||||
---
|
||||
|
||||
### 实例二:变量与数据类型 (声明一个变量并使用)
|
||||
|
||||
**Python 代码**
|
||||
```python
|
||||
# Python 是动态类型
|
||||
# 变量的类型由赋给它的值决定
|
||||
|
||||
my_variable = 100
|
||||
print("它现在是一个数字:", my_variable)
|
||||
|
||||
my_variable = "一百"
|
||||
print("它现在变成了一个字符串:", my_variable)
|
||||
```
|
||||
|
||||
**C++ 代码**
|
||||
```cpp
|
||||
#include <iostream>
|
||||
#include <string> // 使用 string 类型,需要引入 string 工具箱中的字符串模块
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main() {
|
||||
// C++ 是静态类型
|
||||
// 必须提前声明变量的类型, 语法为: 数据类型 变量名 = 初始化值; 其中 = 初始化值 的部分可以省略
|
||||
|
||||
int my_number = 100;
|
||||
cout << "它是一个整数: " << my_number << endl;
|
||||
|
||||
// 如果是C++, 下面这行代码会直接编译失败!
|
||||
// my_number = "一百";
|
||||
|
||||
string my_text = "一百";
|
||||
cout << "这是一个字符串: " << my_text << endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
#### 区别点解析:
|
||||
* Python 的变量 `my_variable` 可以随意改变类型。C++ 的变量 `my_number` 在被声明为 `int` 后,就永远只能存储整数。
|
||||
* **声明**:C++ 必须用 `类型 名字;` 的格式先“声明”变量的存在,才能使用。如 `int my_number;` 和 `string my_text;`。
|
||||
|
||||
---
|
||||
|
||||
### 实例三:输入与输出
|
||||
|
||||
**Python 代码**
|
||||
```python
|
||||
name = input("请输入你的名字: ")
|
||||
age_str = input("请输入你的年龄: ")
|
||||
|
||||
# input() 得到的是字符串,需要手动转换
|
||||
age = int(age_str)
|
||||
|
||||
print("你好,", name, "! 你明年就", age + 1, "岁了。")
|
||||
```
|
||||
|
||||
**C++ 代码**
|
||||
```cpp
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main() {
|
||||
string name; // 准备一个装字符串的盒子
|
||||
int age; // 准备一个整数的盒子
|
||||
|
||||
cout << "请输入你的名字: ";
|
||||
cin >> name;
|
||||
|
||||
cout << "请输入你的年龄: ";
|
||||
// cin 会自动将用户的输入转换为整数!
|
||||
cin >> age;
|
||||
|
||||
cout << "你好, " << name << "! 你明年就 " << age + 1 << " 岁了。" << endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
#### 区别点解析:
|
||||
* **输入类型**:Python 的 `input()` 永远返回字符串,需要手动转换。C++ 的 `cin` 会根据你提供的变量类型(`int age`)自动尝试转换用户的输入,非常方便。
|
||||
* **输出串联**:Python 的 `print()` 用逗号 `,` 分隔多项。C++ 的 `cout` 使用 `<<` 符号来像链条一样串联多项。
|
||||
|
||||
---
|
||||
|
||||
### 实例四:条件判断
|
||||
|
||||
#### 例:输入年龄,根据是否成年 以及 是否有许可 来判断能否进入一个俱乐部
|
||||
|
||||
注:**是否有许可**是通过一个布尔类型变量 `has_permission` 来手动设置的,变量值设置为 `true` 代表有许可,否则是无许可。
|
||||
|
||||
**Python 代码**
|
||||
|
||||
```python
|
||||
age = 20
|
||||
has_permission = False
|
||||
|
||||
# 使用 and, or, not 逻辑词
|
||||
# 使用冒号(:)和缩进定义代码块
|
||||
if age >= 18 and not has_permission:
|
||||
print("你已成年,但没有许可。")
|
||||
elif age < 18:
|
||||
print("你还未成年。")
|
||||
else:
|
||||
print("你可以进入。")
|
||||
```
|
||||
|
||||
**C++ 代码**
|
||||
```cpp
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main() {
|
||||
int age = 20;
|
||||
bool has_permission = false; // 布尔值是小写
|
||||
|
||||
// 使用 &&, ||, ! 逻辑符号
|
||||
// 使用圆括号()包裹条件,大括号{}定义代码块
|
||||
if (age >= 18 && !has_permission) {
|
||||
cout << "你已成年,但没有许可。" << endl;
|
||||
}
|
||||
else if (age < 18) { // 注意是 else if
|
||||
cout << "你还未成年。" << endl;
|
||||
}
|
||||
else {
|
||||
cout << "你可以进入。" << endl;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
#### 区别点解析:
|
||||
* **逻辑词 和 逻辑符号 不同**:Python 的 `and`, `or`, `not` 在 C++ 中对应的是 `&&`, `||`, `!`。
|
||||
* **代码块**:Python 靠**冒号+缩进**。C++ 靠**大括号 `{...}`**。
|
||||
* **条件包裹**:C++ 的 `if` 和 `else if` 后面的判断条件**必须**用圆括号 `()` 包起来。
|
||||
* **关键字不同**:Python 的 `elif` 在 C++ 中是 `else if`。Python 的 `True/False` 在 C++ 中是 `true/false`。
|
||||
@@ -0,0 +1,191 @@
|
||||
# C++与Python的对比 与 Python基本语法
|
||||
|
||||
---
|
||||
|
||||
### **1. 变量**
|
||||
**区别:** Python 不需要声明类型,它会自动推导,相当于前面加了C++的 `auto` 一样,并且也不需要分号
|
||||
|
||||
| C++ | Python |
|
||||
| :-------------------- | :------------------------------------------- |
|
||||
| `int a = 10;` | `a = 10` |
|
||||
| `float b = 3.14;` | `b = 3.14` |
|
||||
| `string s = "hello";` | `s = "hello"` |
|
||||
| `bool f = true;` | `f = True` (首字母需要大写与C++的true不一样) |
|
||||
|
||||
---
|
||||
|
||||
### **2. 输入输出 **
|
||||
**输出:**
|
||||
|
||||
| C++ | Python |
|
||||
| :---------------------- | :---------------- |
|
||||
| `cout << "Hello";` | `print("Hello")` |
|
||||
| `cout << "Num: " << a;` | `print("Num", a)` |
|
||||
|
||||
**输入:**
|
||||
|
||||
Python 的输入默认是字符串类型,如果要进行计算,需要手动强制类型转化
|
||||
|
||||
| C++ | Python |
|
||||
| :-------------------- | :----------------------------------------------------------- |
|
||||
| `string s; cin >> s;` | `s = input()` |
|
||||
| `int n; cin >> n;` | `n = int(input())` (必须强制类型转化为`int`才能用于数学计算) |
|
||||
|
||||
---
|
||||
|
||||
### **3. 判断语句**
|
||||
**区别:**
|
||||
|
||||
1. 没有括号 `()` 包围条件
|
||||
2. 行尾必须加冒号 `:`
|
||||
3. **没有大括号 `{}`,全靠缩进(通常为4个空格,可以使用Tab按键来快速缩进)来表示某个代码块**
|
||||
4. `else if` 变成了 `elif`
|
||||
|
||||
**C++:**
|
||||
|
||||
```cpp
|
||||
if (x > 0) {
|
||||
cout << "正数";
|
||||
} else if (x == 0) {
|
||||
cout << "零";
|
||||
} else {
|
||||
cout << "负数";
|
||||
}
|
||||
```
|
||||
|
||||
**Python:**
|
||||
|
||||
```python
|
||||
if x > 0: # 没括号,有冒号
|
||||
print("正数") # 必须缩进,表示是属于 x > 0 的这个代码块
|
||||
elif x == 0: # else if 变成 elif,并且回退缩进,从 x > 0 的代码块中退出
|
||||
print("零")
|
||||
else:
|
||||
print("负数")
|
||||
```
|
||||
|
||||
### Python的缩进
|
||||
|
||||
你可以把缩进看作是**“文件目录的层级”**
|
||||
* 缩进越深,说明它属于越内部的逻辑
|
||||
|
||||
* 一旦缩进退回来,说明那个逻辑块结束了
|
||||
|
||||
**C++ (用花括号 `{}` 决定范围)**
|
||||
C++ 根本不在乎你有没有缩进,只要有 `{}` 就能跑。哪怕你写成一行也是对的(虽然很丑)
|
||||
|
||||
```cpp
|
||||
// C++ 即使写得乱七八糟,机器也能读懂,因为有 {}
|
||||
void fun() {
|
||||
if(isReady){
|
||||
do();
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Python (用缩进决定范围)**
|
||||
Python 没有 `{}`,**必须**靠缩进排版。如果你乱写,程序直接报错,或者逻辑完全变了
|
||||
|
||||
```python
|
||||
# Python 必须写得整整齐齐
|
||||
def fun(): # 函数下也必须缩进,代表函数的代码块范围
|
||||
if is_ready: # 冒号代表下面要开始缩进来确定它自己的代码块范围了
|
||||
do() # 这行缩进了,说明它属于 if
|
||||
print("Done") # 这行退回去一个缩进了,说明它不属于 if,但属于 fun 函数内部
|
||||
|
||||
print("Over") # 没有缩进,代表它不属于任何逻辑代码块的内部
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **4. 循环 **
|
||||
|
||||
#### **For 循环**
|
||||
**区别:** C++ 的 `for(int i=0; i<n; i++)` 在 Python 中用 `range(n)` 实现
|
||||
|
||||
**C++:**
|
||||
```cpp
|
||||
// 循环 5 次:0, 1, 2, 3, 4
|
||||
for (int i = 0; i < 5; i++) {
|
||||
cout << i;
|
||||
}
|
||||
```
|
||||
|
||||
**Python:**
|
||||
```python
|
||||
# range(5) 就代表 [0, 1, 2, 3, 4] 左闭右开的区间
|
||||
for i in range(5):
|
||||
print(i)
|
||||
```
|
||||
|
||||
#### **While 循环**
|
||||
**区别:** 同样是去掉括号,加上冒号。注意 Python 没有 `i++`,必须写 `i += 1`
|
||||
|
||||
**C++:**
|
||||
```cpp
|
||||
while (i < 5) {
|
||||
cout << i;
|
||||
i++; // 或者 ++i
|
||||
}
|
||||
```
|
||||
|
||||
**Python:**
|
||||
|
||||
```python
|
||||
while i < 5:
|
||||
print(i)
|
||||
i += 1 # Python 没有 ++ 运算符
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### **5. 函数**
|
||||
|
||||
**核心区别:**
|
||||
1. **关键字**:C++ 用 `返回值类型` 开头,Python 统一用 **`def`** 开头
|
||||
2. **参数**:Python **不需要** 写参数类型
|
||||
3. **结构**:同样是去掉大括号 `{}`,行尾加冒号 `:`,内容靠 **缩进**
|
||||
|
||||
#### **写法对比**
|
||||
|
||||
**1:带返回值的函数 (比如求和)**
|
||||
|
||||
**C++:**
|
||||
```cpp
|
||||
// 必须声明返回类型(int)和参数类型(int)
|
||||
int add(int a, int b) {
|
||||
return a + b;
|
||||
}
|
||||
|
||||
// 调用
|
||||
int result = add(5, 10);
|
||||
```
|
||||
|
||||
**Python:**
|
||||
```python
|
||||
# 统一用 def,参数没类型,结尾加冒号
|
||||
def add(a, b):
|
||||
return a + b # 缩进
|
||||
|
||||
# 调用
|
||||
result = add(5, 10)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**2:无返回值的函数 (Void 类型)**
|
||||
|
||||
**C++:**
|
||||
```cpp
|
||||
// 使用 void
|
||||
void say_hello(string name) {
|
||||
cout << "Hello, " << name << endl;
|
||||
}
|
||||
```
|
||||
|
||||
**Python:**
|
||||
```python
|
||||
# 还是用 def,如果没有在内部写 return,就等于没有返回值
|
||||
def say_hello(name):
|
||||
print(Hello, name)
|
||||
```
|
||||
Binary file not shown.
@@ -0,0 +1,72 @@
|
||||
# C++信息学奥林匹克竞赛课程
|
||||
|
||||
## 什么是编程?
|
||||
|
||||
- **编程是什么?:**简单来说编程,就是**我们去给电脑下指令**
|
||||
- 想让手机APP完成一个功能,比如发微信、扫码支付,这些都是通过编程告诉手机应该怎么做的。
|
||||
- 想让游戏人物动起来,或者让自动驾驶汽车知道该转弯了,也是编程告诉它们该如何行动。
|
||||
- 说白了编程的本质就是训练孩子**如何把一个大任务,分解成一个个小步骤,再用一套逻辑告诉电脑应该怎么去执行你的命令。**这样计算机就可以完成**你交给它的工作**,而孩子在这个过程中,就学会了**发现问题、分析问题、解决问题**的能力。
|
||||
- **C++信息学奥赛是什么?:**
|
||||
- C++是**全英文**环境下的编程语言,也是目前**全球职业开发中最主流、最底层的语言**。**编程语言才是计算机能够听懂的指令**,需要通过编程语言来告诉计算机你想要让他做什么,而目前**非常多软件开发公司就是在使用C++语言进行编程开发软件**,所以我们将会学习编程语言当中的C++语言,而且课程是与现代职业接轨的。
|
||||
- 并且它是**五大学科竞赛中信息学奥林匹克竞赛(NOI)**的唯一指定语言。
|
||||
- 信奥赛(NOI)是五大联赛中唯一可以**小学起步、初中出成绩、高中走捷径**的赛道,竞争压力相对其他奥赛更小。
|
||||
- **编程是未来现代科技社会最核心的技能之一,软件工程师、AI专家、数据科学家……这些都是高薪、受人尊敬的职业。孩子现在学,相当于提前为大学专业和未来职业发展做好了准备。**
|
||||
|
||||
------
|
||||
|
||||
## 应用价值
|
||||
|
||||
编程,它其实构建了我们现代生活的方方面面,所有日常中的手机,电子设备,想要运行起来,都需要编程去实现各种功能。
|
||||
|
||||
- **生活中的编程:**
|
||||
- **手机APP:** 每天用的**微信、支付宝**,背后全是程序员的代码在运行。
|
||||
- **热门游戏:** 孩子喜欢玩的**《我的世界》、《王者荣耀》**,都是由C++等语言去开发出来的。
|
||||
- **前沿科技:** **自动驾驶、ChatGPT人工智能**,这些高精尖技术的基石就是编程。
|
||||
- **学编程,可以让他们从程序的使用者变为程序的创造者,掌握未来世界的逻辑。现在科技日新月异,有非常多的计算机相关岗位的公司招聘,我们提前学习,就相当于提前在进行职业培训了**。
|
||||
|
||||
------
|
||||
|
||||
## 编程对孩子核心收益
|
||||
|
||||
**现在的学习编程,是为了未来的职业竞争力。**
|
||||
|
||||
### 1. 逻辑思维
|
||||
|
||||
- 编程要求极其严谨。孩子需要学会**计算思维:** 无论是复杂的数学题、生活中的规划,还是奥赛编程难题,孩子将学会如何将其**拆解成清晰、可执行的小步骤**,最终逐一击破。这种通过编程实践形成的计算思维和逻辑能力,可以帮助他们在各学科中都表现出色。
|
||||
|
||||
### 2. 数学能力
|
||||
|
||||
- C++编程也是一种**另类的的数学课**,我们其中会学习很多数学知识,例如:
|
||||
- **变量与方程:** 通过代码实践,孩子会直观理解代数中的**变量赋值、等式与不等式**概念,并学习如何利用**循环和条件判断**来模拟求解方程组或逻辑推理。
|
||||
- **坐标系与几何:** 在处理图形、解决地图路径问题时,**二维/三维坐标系、点线面关系、向量运算**等几何知识都是需要掌握的。
|
||||
- **逻辑与算法:** 会提前学习接触**排列组合与概率论**、**概率论**、**线性代数**、**离散数学**等高等数学。
|
||||
- **针对理科强的孩子可以这样说:** “如果你的孩子数学好,不学 C++ 简直是天赋的浪费,因为数学好的孩子学习编程非常的快,会非常容易出成绩“
|
||||
- **如果理科稍差的话可以这样说:**“ C++学习的过程本身就是在持续训练思维逻辑能力,其中我们学习融入的数学知识会以更生动、更实用的方式呈现,能够有效反哺和提升他们对数学学科的理解和兴趣。
|
||||
- **学过C++信息学奥赛的孩子,回过头再看学校里的数学题,常常会觉得非常简单!** 因为信息学奥赛的本质,就是通过计算机逻辑和算法的运用,去解决各种数学问题,让孩子对数学有更深的理解。
|
||||
|
||||
### 3. 英语水平
|
||||
|
||||
- **编程环境:** 因为C++是**全英文编程**,孩子需要熟练掌握英文关键字和语法结构,通过英文去书写代码,所以课堂上也会练习使用英语,学习英语,**提高孩子的英语能力**。
|
||||
- 如果孩子的英语比较差的话,也可以学习编程来提高自己的英语能力。
|
||||
|
||||
------
|
||||
|
||||
## 竞赛与升学
|
||||
|
||||
- **含金量最高的赛道:**
|
||||
- **国家级认可:NOI系列竞赛(信息学奥林匹克竞赛)与数学、物理、化学、生物奥赛并列,是国家教育部和科协官方认可的五大学科竞赛之一**。
|
||||
- **升学优势:** 无论是在小升初、中考还是高考,拥有信息学特长(CSP-J/S获奖)的学生,都是顶尖名校“科技特长班”争抢的对象。
|
||||
- **强基计划:** 优秀的竞赛成绩是通往清华、北大等名校的“敲门砖”,可以获得降分或保送资格。
|
||||
|
||||
- **职业前景无限:**
|
||||
- **大学课程抢跑:** 我们学习的内容**直接对标大学计算机专业C++软件编程的核心课程**。孩子现在学,等于**提前打好了大学的地基,进入大学后能更快适应、更快获得成绩。
|
||||
- **未来高薪职业:** 软件工程师、算法专家、人工智能(AI)工程师、数据科学家……这些都是未来社会薪资最高、需求最旺盛的职业。学C++,是为孩子投资一项**高含金量、高成长性、高起薪**的职业技能。
|
||||
- **站在行业前沿:** 无论是现在火热的**ChatGPT、人工智能、自动驾驶等新型领域**,其核心技术都离不开C++和扎实的编程功底。
|
||||
|
||||
------
|
||||
|
||||
## 总结
|
||||
|
||||
- 可以给家长这样说:**现在学编程,就像20年前学英语。** 学得早,就是未来的刚需;学得晚,可能就会被时代淘汰。”
|
||||
|
||||
- 不管孩子未来是想当科学家、金融家还是创业者,**编程都是科技时代未来的需要**。
|
||||
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 1.9 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 767 KiB |
Binary file not shown.
@@ -0,0 +1,54 @@
|
||||
### **一、 本阶段学习成果**
|
||||
|
||||
#### **(一)学习内容概览**
|
||||
|
||||
本阶段的核心目标是**建立基础的编程认知,并掌握C++语言的最基本元素**。我们系统性地学习了:
|
||||
|
||||
* **理论与环境:** 计算机的基本组成原理,Dev-C++集成开发环境的安装与使用。
|
||||
* **程序基础结构:** C++程序的基本框架(`#include`, `int main()`, `return 0;`等)。
|
||||
* **C++语法元素:**
|
||||
* **变量与初始化:** 如何使用 `int`, `double`, `char` 等类型来存储和操作计算机中的数据。
|
||||
* **输入与输出:** 使用 `cin` 和 `cout` 实现人与计算机的初步交互。
|
||||
* **运算符:** 掌握算术(`+`, `-`, `*`, `/`, `%`)和类型转换运算符。
|
||||
* **字符与ASCII码:** 理解计算机处理文本的底层逻辑。
|
||||
* **算法思维:** 利用 `/` 和 `%` 运算符对整数进行数位分离。
|
||||
|
||||
---
|
||||
|
||||
#### **(二)学习信奥赛的含金量**
|
||||
|
||||
祝贺同学顺利完成了信息学奥赛的初步阶段!这不仅是学会了代码,更是一次思维能力的锻炼。我们希望您能了解,孩子在本阶段的付出,所收获的深远的价值:
|
||||
|
||||
1. **抢跑大学核心课程:**
|
||||
我们当前学习的内容,**对标国内外大学计算机专业大一的核心基础课,如《计算机科学导论》和《程序设计基础》**。这意味着,孩子现在付出的努力,是在为未来的大学学习减负和增效。当其他同学还在为学习大学的课程而苦恼时,您的孩子早已胸有成竹,因为您的孩子已经学习过了,能将更多精力投入到人工智能、数据科学等更前沿的领域,起步即领先。
|
||||
|
||||
2. **在全英文环境中,锻炼英语能力:**
|
||||
C++是一门**全英文**编程语言,所有的关键字(`int`, `double`, `return`)、函数和错误提示都是英文的。学习C++的过程,本身就是一次**高强度的英语实战**。孩子需要熟练掌握英文关键字和语法结构,并能读懂英文技术文档。这种能力。
|
||||
|
||||
3. **数学能力的提升**:信息学竞赛的本质,就是**计算机科学与数学的融合**。
|
||||
* **课程内容就是数学:** 我们的课程体系有了大量中小学及大学的数学知识。因为孩子过程中,需要掌握并应用 **数论**、**组合数学**、**图论**、**博弈论**等关键数学。他们需要将这些抽象的数学概念,通过编程转化为能解决实际问题的代码。
|
||||
* **解题过程训练数学思维:** 解决任何一道信息学奥赛题,都需要**分析问题,建立数学模型**;然后**设计算法,进行严谨的逻辑推理**;最后**编写代码,验证和优化**。这个过程与解决复杂数学应用题的思维过程是一致的,能锻炼了孩子的逻辑抽象、归纳演绎和问题分解能力。因此,孩子能够将这种思维方式迁移到日常的数学学习中,提高学科数学的能力与成绩。
|
||||
|
||||
4. **掌握现代流行的编程语言:**
|
||||
C++并不仅仅是一门竞赛语言,它更是**全球软件工业的基石**。从您电脑的操作系统、手机里的游戏引擎、到金融交易系统,背后都有C++编程的身影。它以高性能和高控制力著称,学习它,能让孩子更深刻地理解计算机的运行原理,技术的底层,而非停留在表面的应用。
|
||||
|
||||
5. **官方赛道**
|
||||
我们选择C++,因为它是**全国青少年信息学奥林匹克竞赛(NOI)的唯一官方指定语言**。全国青少年信息学奥林匹克竞赛简称信息学奥赛,是**国家认可的五大学科竞赛之一**,**无论是在小升初、中考还是高考**,拥有信息学特长的学生,都是科技特长班争抢的对象。并且在高考强基计划中,信奥选手可以降分进重点高校。 而且优秀的竞赛成绩是通往清华、北大等名校的敲门砖,可以获得降分或保送资格,我们走的每一步,都是在为**国内最权威的科技竞赛**做最直接、最有效的准备。
|
||||
|
||||
---
|
||||
|
||||
### **二、 下一阶段学习计划**
|
||||
|
||||
1. **巩固与复习:**
|
||||
我们将通过强化练习,扫清第一阶段的知识盲点。
|
||||
|
||||
2. **新的知识:**
|
||||
* **条件判断 (`if-else`语句):** 这是下一阶段的**核心**。我们将学习如何让程序拥有“决策能力”。就像走到十字路口,程序可以根据不同的条件,选择不同的道路。这是程序从机械执行到智能判断的进化。
|
||||
* **循环结构 (`for`/`while`循环):** 它能让计算机不厌其烦地重复执行成千上万次任务。我们将利用它来解决需要大量重复计算的问题,体会到计算机自动化的强大。
|
||||
* **逻辑运算 (`&&`, `||`, `!`):** 这是构建复杂决策的基石,让程序能够处理复杂的嵌套逻辑判断。
|
||||
|
||||
3. **实践与成果**
|
||||
* **解决数学逻辑问题:** 我们将运用新学到的知识,去解决更有多的数学逻辑问题,例如判断闰年、解一元二次方程、寻找范围内的质数等。
|
||||
* **官方认证:** 在完成下一阶段的学习后,学生将具备能力去**考取由工信部指导的中国电子学会颁发的“C++软件编程等级考试”证书**。这不仅是一次学习成果的检验,也是一份国家认可的、有分量的官方凭证,将成为孩子履历上的加分项。
|
||||
|
||||
我们坚信,通过坚持不懈的学习,同学不仅能在信息学奥赛的道路上发现无尽的乐趣,同时对每个学习阶段成绩的提升带来莫大的帮助,更是在为孩子的未来构建一个核心竞争力。期待与您一同见证孩子的成长!
|
||||
Binary file not shown.
Reference in new issue
Block a user