当前位置: 首页 > news >正文

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

第2篇:数据与数据类型——存储信息的小盒子

作者:李金雨
联系方式:wbtm2718@qq.com
目标读者:Rust中文编程
核心理念:AI时代必须使用中文编程,母语编程阅读效率极高


1. 开篇引入

本课目标

  • 理解什么是数据
  • 掌握Rust的基本数据类型
  • 学会如何初始化数据
  • 理解可变与不可变数据的区别

生活场景引入

想象一下,你有一个抽屉,里面有各种大小和形状的盒子。有的盒子用来放铅笔,有的用来放橡皮,有的用来放尺子。每个盒子都有自己的用途,只能放特定的东西。

在编程中,数据就像这些盒子,每个盒子(数据)都有自己的类型,只能存储特定类型的信息。

预期成果展示

通过这节课的学习,你将能够:

  • 创建不同类型的数据
  • 给数据赋予不同的值
  • 理解数据类型的用途
  • 区分可变与不可变数据

2. 概念讲解

什么是数据?

数据就像一个小盒子,用来存储信息。比如:

  • 一个存储年龄的盒子
  • 一个存储姓名的盒子
  • 一个存储成绩的盒子

在Rust中,我们用let关键字来创建数据:

fnmain(){let年龄=15;// 创建一个存储年龄的盒子,里面放着15let姓名="张三";// 创建一个存储姓名的盒子,里面放着"张三"}

整数数据

整数数据就像用来计数的盒子,只能放整数。比如:

  • 班级人数:45
  • 年龄:15
  • 考试分数:95

Rust中的整数类型:

  • i32:最常用的整数类型,范围大约是 -20亿到20亿
  • u32:无符号整数,只能表示正数,范围是0到40亿
  • i64:更大的整数类型,范围更大
fnmain(){let人数:i32=45;// 显式指定类型let分数=95;// 自动推断类型}

小数数据

小数数据就像用来测量的盒子,用来放带有小数点的数。比如:

  • 身高:1.75米
  • 体重:50.5公斤
  • 成绩平均分:88.5

Rust中的小数类型:

  • f32:单精度浮点数
  • f64:双精度浮点数(更常用)
fnmain(){let身高:f64=1.75;let体重=50.5;}

文字数据

文字数据就像用来表达的盒子,用来放文字。比如:

  • 姓名:“张三”
  • 地址:“北京市”
  • 电话号码:“13812345678”

Rust中的文字类型:

  • String:可变的字符串
  • &str:字符串切片(不可变)
fnmain(){let姓名=String::from("张三");let问候语:&str="你好";}

真假数据

真假数据就像用来判断的盒子,只能放两个值:true(真)或false(假)。比如:

  • 是否及格:true
  • 是否成年:false
  • 是否会员:true
fnmain(){let及格=true;let成年=false;}

数据初始化

数据初始化就是给数据盒子放东西的过程。比如:

fnmain(){let年龄=15;// 初始化一个年龄数据,值为15let姓名=String::from("张三");// 初始化一个姓名数据let身高=1.75;// 初始化一个身高数据let及格=true;// 初始化一个真假数据}

可变与不可变数据

在Rust中,默认情况下数据是不可变的,就像一个密封的盒子,放进去的东西就不能再改变。如果想要改变数据的值,需要使用mut关键字:

fnmain(){let不可变年龄=15;// 不可变年龄 = 16; // 错误:不能修改不可变数据letmut可变年龄=15;可变年龄=16;// 正确:可以修改可变数据}

3. 动手实践

基础练习(必做)

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

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

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

    fnmain(){let摄氏度=25.0;let华氏度=摄氏度*9.0/5.0+32.0;println!("{}摄氏度 = {}华氏度",摄氏度,华氏度);}

进阶练习(选做)

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

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

    fnmain(){let学生一姓名="张三";let学生一成绩=95;let学生二姓名="李四";let学生二成绩=88;println!("{}的成绩:{}",学生一姓名,学生一成绩);println!("{}的成绩:{}",学生二姓名,学生二成绩);}

挑战练习(拓展)

  1. 购物清单:创建一个程序,存储购物清单和价格:
    fnmain(){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
  • 其他提示:
  • 本人正在开发纯中文编程语言和编译器,有兴趣的可以交流
  • 本人正在写一本基于中国母语思维习惯的数学教材,可以让你一年内学完从初中到研究生的数学,而且可以让你快速掌握人工智能的关键数学知识,有兴趣的可以交流

祝你学习愉快!

http://www.jsqmd.com/news/734250/

相关文章:

  • 开源天文历书MCP服务器:AI时代的天文数据接口实践
  • 3分钟掌握终极麦克风静音神器:MicMute完整使用指南
  • Office Custom UI Editor:5步完成零代码Office界面定制的终极指南
  • HMC7044上电锁不住?手把手教你排查PLL锁定问题(从读取0x007D寄存器开始)
  • MIPI D-PHY电路设计避坑指南:从1.8V HSTL到2.5V LVCMOS的PCB实战要点
  • 题解:AcWing 3483 2的幂次方
  • 【maaath】Flutter for OpenHarmony 实战:构建跨平台房产租售应用
  • 第4篇:如果...那么——让程序做选择 Rust中文编程
  • 甲言Jiayan:古汉语NLP终极解决方案,让文言文处理变得简单高效
  • Linux Shell 中有个字符让我瞬间感觉自己像个黑客
  • 别再手动导Jar包了!用Maven私服一键管理KingbaseES 8.6.0 JDBC驱动(SpringBoot整合指南)
  • 雀魂牌谱屋完全指南:用数据驱动你的麻将竞技提升
  • 题解:AcWing 6057 最短路
  • PCL2整合包导出:3分钟掌握智能分享的正确姿势 [特殊字符]
  • 告别手动!SWMM 5.2 批量设置检查井与管道的3种高效方法(附脚本思路)
  • claw-exterminator:基于clang-format的代码格式化自动化工具实战
  • 语雀Lake文档智能解析引擎:解锁知识资产跨平台流动新范式
  • 【仅限前500名技术负责人】VSCode 2026企业级启动优化包:含自定义shell环境注入模块、离线符号表预加载工具及启动火焰图诊断模板
  • 从F103到F407:手把手教你移植广州大彩串口屏HAL库驱动(避坑指南)
  • 开源大模型Grok本地部署与优化实战:从架构解析到应用落地
  • 显卡驱动清理终极指南:5个专业技巧彻底解决驱动残留问题
  • 题解:AcWing 6058 亲戚
  • Gemma 2本地部署方案与优化技巧详解
  • 为 Hermes Agent 配置自定义供应商并指向 Taotoken 服务
  • 终极Mac剪贴板管理方案:Maccy完整使用指南与深度优化
  • OmniInsert:无掩码视频插入技术的原理与应用
  • 基于LLM的GUI自动化智能体:从原理到实践
  • Motif-2-12.7B模型架构与优化技术解析
  • 基于Claude的AI任务编排框架:MissionRunner实战指南
  • 使用 Taotoken CLI 工具一键配置团队统一的开发环境