第2篇:数据与数据类型——存储信息的小盒子 Rust中文编程

第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. 动手实践

基础练习(必做)

  1. 创建个人档案:创建一个程序,存储并打印你的个人信息:

    rust 复制代码
    fn main() {
        let 姓名 = "张三";
        let 年龄 = 15;
        let 身高 = 1.75;
        let 爱好 = "编程";
        
        println!("姓名:{}", 姓名);
        println!("年龄:{}岁", 年龄);
        println!("身高:{}米", 身高);
        println!("爱好:{}", 爱好);
    }
  2. 计算BMI指数:创建一个程序,计算并打印BMI指数:

    rust 复制代码
    fn main() {
        let 身高 = 1.75; // 单位:米
        let 体重 = 50.5; // 单位:公斤
        let bmi = 体重 / (身高 * 身高);
        
        println!("身高:{}米", 身高);
        println!("体重:{}公斤", 体重);
        println!("BMI指数:{}", bmi);
    }
  3. 温度转换器:创建一个程序,将摄氏度转换为华氏度:

    rust 复制代码
    fn main() {
        let 摄氏度 = 25.0;
        let 华氏度 = 摄氏度 * 9.0 / 5.0 + 32.0;
        
        println!("{}摄氏度 = {}华氏度", 摄氏度, 华氏度);
    }

进阶练习(选做)

  1. 可变数据练习:创建一个程序,使用可变数据:

    rust 复制代码
    fn main() {
        let mut 计数器 = 0;
        println!("初始值:{}", 计数器);
        
        计数器 = 1;
        println!("第一次修改:{}", 计数器);
        
        计数器 = 2;
        println!("第二次修改:{}", 计数器);
    }
  2. 综合练习:创建一个程序,存储多个学生的信息:

    rust 复制代码
    fn main() {
        let 学生一姓名 = "张三";
        let 学生一成绩 = 95;
        
        let 学生二姓名 = "李四";
        let 学生二成绩 = 88;
        
        println!("{}的成绩:{}", 学生一姓名, 学生一成绩);
        println!("{}的成绩:{}", 学生二姓名, 学生二成绩);
    }

挑战练习(拓展)

  1. 购物清单 :创建一个程序,存储购物清单和价格:

    rust 复制代码
    fn main() {
        let 商品一 = "苹果";
        let 价格一 = 5.5;
        
        let 商品二 = "香蕉";
        let 价格二 = 3.0;
        
        let 商品三 = "橙子";
        let 价格三 = 4.5;
        
        let 总价 = 价格一 + 价格二 + 价格三;
        
        println!("购物清单:");
        println!("{}:{}元", 商品一, 价格一);
        println!("{}:{}元", 商品二, 价格二);
        println!("{}:{}元", 商品三, 价格三);
        println!("总价:{}元", 总价);
    }

4. 知识总结

核心概念回顾

  • 数据:存储信息的小盒子
  • 数据类型:数据的种类,决定了可以存储什么类型的值
  • 整数类型i32u32等,用于计数
  • 小数类型f32f64,用于测量
  • 文字类型String&str,用于表达
  • 真假类型bool,用于判断
  • 数据初始化:给数据设置初始值
  • 可变数据 :使用mut关键字,可以修改值
  • 不可变数据:默认情况,不能修改值

关键代码速查

数据类型 示例 用途
整数 let 年龄 = 15; 计数
小数 let 身高 = 1.75; 测量
文字 let 姓名 = String::from("张三"); 表达
真假 let 及格 = true; 判断
可变数据 let mut 分数 = 95; 可以修改

常见错误提醒

  1. 类型不匹配:比如把文字放到整数盒子里
  2. 修改不可变数据 :没有使用mut就尝试修改数据
  3. 整数溢出:给整数类型赋的值超出了它的范围
  4. 小数精度:浮点数可能有精度问题

5. 课后作业

巩固练习题

  1. 编写一个程序,存储并打印你的家庭成员信息(姓名、年龄、关系)
  2. 编写一个程序,计算长方形的面积和周长
  3. 编写一个程序,将公里转换为英里

创意编程题

  1. 发挥你的创意,创建一个程序,存储你最喜欢的电影信息(片名、导演、评分、上映年份)
  2. 编写一个程序,模拟一个简单的银行账户(余额、利率、存款、取款)

下篇预习提示

下一篇我们将学习"数据的运算------让数据动起来",就像学习如何使用这些数据盒子进行各种操作。预习一下:

  • 有哪些基本的运算符?
  • 如何进行算术运算?
  • 如何进行比较和逻辑运算?

恭喜你完成了第二篇教程!你已经掌握了Rust的基本数据类型,学会了如何创建和使用不同类型的数据。继续加油,下一篇我们将学习如何让这些数据动起来!

学习交流

如果你在学习过程中遇到任何问题,欢迎联系我:

  • ** 视频号,"时空系"
  • 邮箱: wbtm2718@qq.com
  • 其他提示:
  • 本人正在开发纯中文编程语言和编译器,有兴趣的可以交流
  • 本人正在写一本基于中国母语思维习惯的数学教材,可以让你一年内学完从初中到研究生的数学,而且可以让你快速掌握人工智能的关键数学知识,有兴趣的可以交流

祝你学习愉快!

相关推荐
是宇写的啊3 小时前
MyBatis-Plus
java·开发语言·mybatis
时空系3 小时前
第4篇:如果...那么——让程序做选择 Rust中文编程
开发语言·网络·rust
eLIN TECE4 小时前
Golang 构建学习
开发语言·学习·golang
HoneyMoose4 小时前
Discourse 近期更新后附件名中的下划线转义
开发语言
SamDeepThinking4 小时前
如何让订单系统和营销系统解耦
java·后端·架构
小张同学8244 小时前
Python并发编程实战用多线程和协程加速智能体执行效率
开发语言·人工智能·python
hixiong1234 小时前
C# OpenvinoSharp部署INSID3
开发语言·人工智能·ai·c#·openvinosharp
薪火铺子4 小时前
Shiro权限框架深度解析
java·后端
1.14(java)4 小时前
Spring AOP核心概念与实战指南
java·后端·spring