第2篇:数据与数据类型------存储信息的小盒子
作者: 李金雨
联系方式: wbtm2718@qq.com
目标读者: Rust中文编程
核心理念: AI时代必须使用中文编程,母语编程阅读效率极高
1. 开篇引入
本课目标
- 理解什么是数据
- 掌握Rust的基本数据类型
- 学会如何初始化数据
- 理解可变与不可变数据的区别
生活场景引入
想象一下,你有一个抽屉,里面有各种大小和形状的盒子。有的盒子用来放铅笔,有的用来放橡皮,有的用来放尺子。每个盒子都有自己的用途,只能放特定的东西。
在编程中,数据就像这些盒子,每个盒子(数据)都有自己的类型,只能存储特定类型的信息。
预期成果展示
通过这节课的学习,你将能够:
- 创建不同类型的数据
- 给数据赋予不同的值
- 理解数据类型的用途
- 区分可变与不可变数据
2. 概念讲解
什么是数据?
数据就像一个小盒子,用来存储信息。比如:
- 一个存储年龄的盒子
- 一个存储姓名的盒子
- 一个存储成绩的盒子
在Rust中,我们用 let 关键字来创建数据:
rust
fn main() {
let 年龄 = 15; // 创建一个存储年龄的盒子,里面放着15
let 姓名 = "张三"; // 创建一个存储姓名的盒子,里面放着"张三"
}
整数数据
整数数据就像用来计数的盒子,只能放整数。比如:
- 班级人数:45
- 年龄:15
- 考试分数:95
Rust中的整数类型:
i32:最常用的整数类型,范围大约是 -20亿到20亿u32:无符号整数,只能表示正数,范围是0到40亿i64:更大的整数类型,范围更大
rust
fn main() {
let 人数: i32 = 45; // 显式指定类型
let 分数 = 95; // 自动推断类型
}
小数数据
小数数据就像用来测量的盒子,用来放带有小数点的数。比如:
- 身高:1.75米
- 体重:50.5公斤
- 成绩平均分:88.5
Rust中的小数类型:
f32:单精度浮点数f64:双精度浮点数(更常用)
rust
fn main() {
let 身高: f64 = 1.75;
let 体重 = 50.5;
}
文字数据
文字数据就像用来表达的盒子,用来放文字。比如:
- 姓名:"张三"
- 地址:"北京市"
- 电话号码:"13812345678"
Rust中的文字类型:
String:可变的字符串&str:字符串切片(不可变)
rust
fn main() {
let 姓名 = String::from("张三");
let 问候语: &str = "你好";
}
真假数据
真假数据就像用来判断的盒子,只能放两个值:true(真)或 false(假)。比如:
- 是否及格:
true - 是否成年:
false - 是否会员:
true
rust
fn main() {
let 及格 = true;
let 成年 = false;
}
数据初始化
数据初始化就是给数据盒子放东西的过程。比如:
rust
fn main() {
let 年龄 = 15; // 初始化一个年龄数据,值为15
let 姓名 = String::from("张三"); // 初始化一个姓名数据
let 身高 = 1.75; // 初始化一个身高数据
let 及格 = true; // 初始化一个真假数据
}
可变与不可变数据
在Rust中,默认情况下数据是不可变的,就像一个密封的盒子,放进去的东西就不能再改变。如果想要改变数据的值,需要使用 mut 关键字:
rust
fn main() {
let 不可变年龄 = 15;
// 不可变年龄 = 16; // 错误:不能修改不可变数据
let mut 可变年龄 = 15;
可变年龄 = 16; // 正确:可以修改可变数据
}
3. 动手实践
基础练习(必做)
-
创建个人档案:创建一个程序,存储并打印你的个人信息:
rustfn main() { let 姓名 = "张三"; let 年龄 = 15; let 身高 = 1.75; let 爱好 = "编程"; println!("姓名:{}", 姓名); println!("年龄:{}岁", 年龄); println!("身高:{}米", 身高); println!("爱好:{}", 爱好); } -
计算BMI指数:创建一个程序,计算并打印BMI指数:
rustfn main() { let 身高 = 1.75; // 单位:米 let 体重 = 50.5; // 单位:公斤 let bmi = 体重 / (身高 * 身高); println!("身高:{}米", 身高); println!("体重:{}公斤", 体重); println!("BMI指数:{}", bmi); } -
温度转换器:创建一个程序,将摄氏度转换为华氏度:
rustfn main() { let 摄氏度 = 25.0; let 华氏度 = 摄氏度 * 9.0 / 5.0 + 32.0; println!("{}摄氏度 = {}华氏度", 摄氏度, 华氏度); }
进阶练习(选做)
-
可变数据练习:创建一个程序,使用可变数据:
rustfn main() { let mut 计数器 = 0; println!("初始值:{}", 计数器); 计数器 = 1; println!("第一次修改:{}", 计数器); 计数器 = 2; println!("第二次修改:{}", 计数器); } -
综合练习:创建一个程序,存储多个学生的信息:
rustfn main() { let 学生一姓名 = "张三"; let 学生一成绩 = 95; let 学生二姓名 = "李四"; let 学生二成绩 = 88; println!("{}的成绩:{}", 学生一姓名, 学生一成绩); println!("{}的成绩:{}", 学生二姓名, 学生二成绩); }
挑战练习(拓展)
-
购物清单 :创建一个程序,存储购物清单和价格:
rustfn main() { let 商品一 = "苹果"; let 价格一 = 5.5; let 商品二 = "香蕉"; let 价格二 = 3.0; let 商品三 = "橙子"; let 价格三 = 4.5; let 总价 = 价格一 + 价格二 + 价格三; println!("购物清单:"); println!("{}:{}元", 商品一, 价格一); println!("{}:{}元", 商品二, 价格二); println!("{}:{}元", 商品三, 价格三); println!("总价:{}元", 总价); }
4. 知识总结
核心概念回顾
- 数据:存储信息的小盒子
- 数据类型:数据的种类,决定了可以存储什么类型的值
- 整数类型 :
i32、u32等,用于计数 - 小数类型 :
f32、f64,用于测量 - 文字类型 :
String、&str,用于表达 - 真假类型 :
bool,用于判断 - 数据初始化:给数据设置初始值
- 可变数据 :使用
mut关键字,可以修改值 - 不可变数据:默认情况,不能修改值
关键代码速查
| 数据类型 | 示例 | 用途 |
|---|---|---|
| 整数 | let 年龄 = 15; |
计数 |
| 小数 | let 身高 = 1.75; |
测量 |
| 文字 | let 姓名 = String::from("张三"); |
表达 |
| 真假 | let 及格 = true; |
判断 |
| 可变数据 | let mut 分数 = 95; |
可以修改 |
常见错误提醒
- 类型不匹配:比如把文字放到整数盒子里
- 修改不可变数据 :没有使用
mut就尝试修改数据 - 整数溢出:给整数类型赋的值超出了它的范围
- 小数精度:浮点数可能有精度问题
5. 课后作业
巩固练习题
- 编写一个程序,存储并打印你的家庭成员信息(姓名、年龄、关系)
- 编写一个程序,计算长方形的面积和周长
- 编写一个程序,将公里转换为英里
创意编程题
- 发挥你的创意,创建一个程序,存储你最喜欢的电影信息(片名、导演、评分、上映年份)
- 编写一个程序,模拟一个简单的银行账户(余额、利率、存款、取款)
下篇预习提示
下一篇我们将学习"数据的运算------让数据动起来",就像学习如何使用这些数据盒子进行各种操作。预习一下:
- 有哪些基本的运算符?
- 如何进行算术运算?
- 如何进行比较和逻辑运算?
恭喜你完成了第二篇教程!你已经掌握了Rust的基本数据类型,学会了如何创建和使用不同类型的数据。继续加油,下一篇我们将学习如何让这些数据动起来!
学习交流
如果你在学习过程中遇到任何问题,欢迎联系我:
- ** 视频号,"时空系"
- 邮箱: wbtm2718@qq.com
- 其他提示:
- 本人正在开发纯中文编程语言和编译器,有兴趣的可以交流
- 本人正在写一本基于中国母语思维习惯的数学教材,可以让你一年内学完从初中到研究生的数学,而且可以让你快速掌握人工智能的关键数学知识,有兴趣的可以交流
祝你学习愉快!