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

第2篇:数据与类型——仓颉的基础数据类型 仓颉原生中文编程

第2篇:数据与类型——仓颉的基础数据类型

**作者:**中文编程倡导者—— 李金雨
联系方式:wbtm2718@qq.com
**目标读者:**编程入门(零基础)
核心理念:使用华为仓颉原生中文编程,体验真正的国产编程语言


一、开篇引入

1.1 生活中的"数据"

想象你要介绍自己,你会说什么?

  • 我叫张三(文字)
  • 我今年15岁(整数)
  • 我身高1.75米(小数)
  • 我是学生(是/否)

这些都是数据——用来描述事物的信息。

1.2 程序中的"数据盒子"

上一节课,我们写了这样的代码:

let 姓名 = "张三" let 年龄 = 15

这里的姓名年龄就是数据盒子(变量),我们用来存放信息。

1.3 关于类型声明的思考

在这里,我们又要提到那个让人纠结的语法设计问题了。

仓颉的语法是:

let 年龄: Int64 = 15

按照我们中国人的思维习惯,应该是:

  • 整数类型的年龄等于15
  • 字符串类型的姓名等于"张三"

但仓颉的写法是"年龄整数类型的",这就像是说"苹果红色的",而不是"红色的苹果"。

如果仓颉能像C#那样设计:

// 设想中的更符合中国人习惯的语法 Int64 年龄 = 15 // 整数类型 年龄 = 15 String 姓名 = "张三" // 字符串类型 姓名 = "张三"

这样读起来就顺畅多了!先知道是什么类型,再看叫什么名字,最后看值是什么——完全符合我们的思维习惯。

不过,既然仓颉目前采用的是类型后置的设计,我们就先适应它。也许未来的版本会改进呢!

1.4 本课目标

今天我们要学习:

  1. 仓颉的基本数据类型
  2. 如何创建数据盒子
  3. 如何使用不同类型的数据
  4. 做一个个人信息档案程序

二、概念讲解

2.1 数据盒子(变量)

什么是数据盒子?

想象你有一个储物柜,里面有很多盒子,每个盒子上贴着标签:

┌─────────────┐ │ 玩具盒子 │ → 里面装玩具 ├─────────────┤ │ 书本盒子 │ → 里面装书本 ├─────────────┤ │ 文具盒子 │ → 里面装文具 └─────────────┘

在编程中,数据盒子就像是这些贴标签的盒子,用来存放数据。

创建数据盒子
let 名字: String = "张三"
部分含义
let创建一个数据盒子
名字盒子的标签(名称)
:分隔符
String盒子的类型(只能装字符串)
=把数据放进盒子
"张三"具体的数据

再次吐槽一下语法

我们中国人习惯说"字符串类型的名字",但仓颉的写法是"名字字符串类型的"(名字: String)。

这就像:

  • 我们习惯说:“红色的苹果”
  • 仓颉的写法像是:“苹果红色的

虽然不影响使用,但确实不太符合我们的语言习惯。希望华为能在未来版本中改进!

2.2 仓颉的基本数据类型

类型1:整数(Int64、Int32等)——装整数的盒子

用来存储年龄、人数、分数等整数信息。

let 年龄: Int64 = 15 // 整数 let 班级人数: Int32 = 50 // 整数 let 分数: Int64 = 95 // 整数 let 负数: Int64 = -10 // 负数也可以

整数类型的区别

类型范围说明
Int8-128 ~ 127很小的整数
Int16-32768 ~ 32767小整数
Int32约-21亿 ~ 21亿普通整数
Int64很大很大大整数

生活例子

  • 你的年龄:15(Int8就够了)
  • 中国人口:14亿(需要Int64)
  • 考试分数:100(Int8就够了)
类型2:小数(Float64、Float32)——装小数的盒子

用来存储身高、体重、价格、成绩等带小数点的数。

let 身高: Float64 = 1.75 // 小数 let 体重: Float64 = 60.5 // 小数 let 圆周率: Float64 = 3.14159 // 小数 let 温度: Float64 = -5.5 // 负数也可以

注意:小数在计算机里叫"浮点数",所以类型名是Float。

类型3:文字(String、Char)——装文字的盒子

用来存储名字、地址、句子、文章内容等文字信息。

let 姓名: String = "张三" // 字符串(多个字符) let 性别: Char = '男' // 字符(单个字符) let 地址: String = "北京市海淀区" // 字符串 let 空字符串: String = "" // 空的字符串

String和Char的区别

  • String:一串文字,用双引号"..."
  • Char:单个字符,用单引号'...'
类型4:真假(Bool)——装"是/否"的盒子

只有两种可能的值:true(真/是)或false(假/否)

let 是否学生: Bool = true let 是否成年: Bool = false let 是否会员: Bool = true let 是否在线: Bool = false

生活例子

  • 你是学生吗?是(true)
  • 你成年了吗?否(false)
  • 今天下雨了吗?否(false)
  • 这个账号是VIP吗?是(true)

2.3 类型推断

仓颉很聪明,有时候你不用告诉它类型,它也能猜出来:

// 明确指定类型 let 姓名: String = "张三" // 让仓颉自己推断类型 let 姓名 = "张三" // 仓颉知道这是String类型 let 年龄 = 15 // 仓颉知道这是Int64类型

建议:为了代码更清晰,建议初学者还是写上类型!

2.4 关于类型声明语法的再思考

让我们再次对比一下不同的语法设计:

仓颉目前的语法(类型后置):

let 姓名: String = "张三" let 年龄: Int64 = 15 let 身高: Float64 = 1.75 let 是否学生: Bool = true

C#风格的语法(类型前置,更符合中国人习惯):

string姓名="张三";int年龄=15;double身高=1.75;bool是否学生=true;

为什么类型前置更符合中国人习惯?

我们中文的语序是:修饰语在前,中心语在后

  • 美丽的花朵
  • 高大的树木
  • 红色的汽车
  • 字符串类型的变量

所以,字符串类型的 姓名姓名 字符串类型的更符合我们的思维习惯。

建议华为

  1. 在仓颉的未来版本中,考虑支持可选的类型前置语法
  2. 或者至少提供一个语法糖,让两种写法都能用
  3. 这样既能保持与国际接轨,又能照顾中国人的使用习惯

三、动手实践

3.1 基础练习:创建个人档案

// 个人档案程序 // 作者:你的名字 main() { println("=== 个人档案 ===") // 基本信息 let 姓名: String = "张三" let 年龄: Int64 = 15 let 身高: Float64 = 1.75 // 单位:米 let 体重: Float64 = 60.0 // 单位:公斤 let 是否学生: Bool = true // 输出信息 println("姓名:${姓名}") println("年龄:${年龄}岁") println("身高:${身高}米") println("体重:${体重}公斤") println("是否学生:${是否学生}") // 计算BMI let bmi: Float64 = 体重 / (身高 * 身高) println("BMI指数:${bmi}") // 判断体重状态 if (bmi < 18.5) { println("体重状态:偏瘦") } else if (bmi < 24.0) { println("体重状态:正常") } else if (bmi < 28.0) { println("体重状态:偏胖") } else { println("体重状态:肥胖") } }

3.2 进阶练习:成绩统计

// 成绩统计程序 main() { println("=== 成绩统计 ===") // 各科成绩 let 语文: Int64 = 85 let 数学: Int64 = 92 let 英语: Int64 = 78 let 物理: Int64 = 88 let 化学: Int64 = 90 // 计算总分 let 总分: Int64 = 语文 + 数学 + 英语 + 物理 + 化学 // 计算平均分 let 平均分: Float64 = Float64(总分) / 5.0 // 输出结果 println("语文:${语文}分") println("数学:${数学}分") println("英语:${英语}分") println("物理:${物理}分") println("化学:${化学}分") println("----------------") println("总分:${总分}分") println("平均分:${平均分}分") // 判断等级 if (平均分 >= 90) { println("等级:优秀") } else if (平均分 >= 80) { println("等级:良好") } else if (平均分 >= 70) { println("等级:中等") } else if (平均分 >= 60) { println("等级:及格") } else { println("等级:不及格") } }

3.3 挑战练习:温度转换器

// 温度转换器 main() { println("=== 温度转换器 ===") // 摄氏温度 let 摄氏温度: Float64 = 25.0 // 转换为华氏温度 // 公式:华氏 = 摄氏 × 9/5 + 32 let 华氏温度: Float64 = 摄氏温度 * 9.0 / 5.0 + 32.0 // 转换为开尔文温度 // 公式:开尔文 = 摄氏 + 273.15 let 开尔文温度: Float64 = 摄氏温度 + 273.15 println("摄氏温度:${摄氏温度}°C") println("华氏温度:${华氏温度}°F") println("开尔文温度:${开尔文温度}K") }

四、知识总结

4.1 核心概念回顾

  1. 数据盒子(变量):用来存储数据的容器
  2. 数据类型:告诉计算机这个盒子里能装什么类型的数据
  3. 基本类型:整数(Int64)、小数(Float64)、文字(String)、真假(Bool)

4.2 关于语法设计的总结

虽然仓颉的类型后置语法(let 姓名: String)不太符合中国人的定语前置习惯,但它也有优点:

优点:

  • 与国际主流语言(Rust、Swift、Kotlin)保持一致
  • 类型信息明确,不容易混淆
  • 有利于国际化推广

缺点:

  • 不符合中国人的语言习惯
  • 初学者需要时间适应
  • 读起来不够顺畅

建议:

  • 初学者可以先适应这种写法
  • 希望华为能在未来版本中提供类型前置的可选语法
  • 或者提供IDE支持,让两种写法都能自动转换

4.3 关键代码速查

// 整数 let 年龄: Int64 = 15 // 小数 let 身高: Float64 = 1.75 // 字符串 let 姓名: String = "张三" // 字符 let 性别: Char = '男' // 布尔值 let 是否学生: Bool = true // 类型转换 let 整数: Int64 = 100 let 小数: Float64 = Float64(整数)

4.4 常见错误提醒

错误现象原因解决方法
类型不匹配把文字赋给数字变量检查类型是否对应
变量未定义使用了没创建的变量先用let创建变量
字符串没引号String类型没加引号加上""''
类型转换错误直接赋值不同类型使用类型转换函数

五、课后作业

5.1 巩固练习(必做)

练习1:完善个人档案

在上面的个人档案基础上,添加:

  • 学校名称
  • 班级
  • 爱好
  • 计算并显示BMI和体重状态

练习2:购物小票

制作一个购物小票程序:

  • 商品1:苹果,单价5元,数量3斤
  • 商品2:牛奶,单价8元,数量2盒
  • 商品3:面包,单价6元,数量1个
  • 计算总价

练习3:圆的计算

输入圆的半径,计算:

  • 周长(2 × π × r)
  • 面积(π × r × r)

5.2 创意编程(选做)

创意1:制作名片

制作一个电子名片,包含:

  • 姓名、职位
  • 联系方式
  • 公司/学校
  • 用字符画装饰

创意2:简单计算器

实现两个数的:

  • 加法
  • 减法
  • 乘法
  • 除法(注意除数不能为0)

5.3 下篇预习

下一篇,我们将学习数据的运算,了解如何对数据进行各种计算。预习问题:

  1. 怎么计算两个数的和、差、积、商?
  2. 怎么比较两个数的大小?
  3. 怎么判断多个条件(并且、或者)?

思考题:你觉得在编程语言设计中,应该优先考虑国际化(与国际接轨),还是优先考虑本土化(符合本国人的习惯)?能不能两者兼顾?


恭喜你完成了第2篇的学习!🎉

现在你已经掌握了仓颉的基本数据类型。虽然类型后置的语法设计有改进空间,但一旦习惯了,写起来也很流畅。

下节课,我们将学习如何对这些数据进行运算!

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

相关文章:

  • Mac终极音乐解密指南:3步解锁QQ音乐加密文件,实现跨平台自由播放
  • 低代码插件热重载失败?(从py_compile缓存污染到__pycache__权限锁死的完整排障链)
  • Xiaomusic插件架构源码级解析:动态加载与异步事件处理机制深度剖析
  • 别再只会用滤镜了!用Python+OpenCV手把手教你调出专业级照片锐化效果(USM/SM实战)
  • 立即解决!Windows任务栏透明美化神器TranslucentTB全攻略
  • 工业备料封神!郑州博尚木材切片机实测,精度拉满还省电,木材厂/加工厂必入 - 会飞的懒猪
  • 数据格式混乱、时间戳错位、主键冲突全解析,深度解读Python跨系统融合的7大隐形陷阱
  • WaveTools鸣潮工具箱:终极解决方案,3分钟告别游戏卡顿与抽卡烦恼
  • ESP32边缘语音识别控制机械爪:从TensorFlow Lite到舵机控制的完整实践
  • 京东二面:假如SQL中join了10张表,如何优化性能?
  • 从零到自动化:用NetBox + NAPALM打造你的网络‘活地图’(含API调用实战)
  • 项目实训(五):面向 AI 解释的 SQL 注入传播链记录
  • 如何在5分钟内解锁你的加密音乐收藏:Unlock-Music完整指南
  • 2026年武汉微电影制作拍摄公司TOP7权威排行榜,为你揭晓行业佼佼者! - 品牌推荐官方
  • 魔兽争霸3终极助手:3步配置WarcraftHelper解锁宽屏与高帧率
  • 城通网盘下载太慢?这个免费神器让你秒变下载达人!
  • 别再手动降噪了!用FFmpeg的arnndn+AI模型,批量处理播客录音真香
  • 如何实现Unity游戏实时翻译:XUnity.AutoTranslator技术深度解析
  • 30秒生成CSDN技术博客封面!GPT-Image-2适配平台规范的参数配置指南
  • EasyClick 双端自动化智能体|AndroidiOS 全平台 EC 脚本开发助手
  • MOOTDX:量化投资中的通达信数据整合技术突破
  • 新手如何通过快马平台轻松上手windows18-hd19主题开发项目
  • 现代汽车租赁前端系统架构:从React技术栈到工程实践全解析
  • 2026年成都打酒铺热销品牌TOP7权威排行榜,速来围观! - 品牌推荐官方
  • 第3篇:数据的运算——让数据动起来 仓颉 中文编程
  • 3步解锁数字音乐自由:QMCDecode全面解析
  • 无锡黄金回收避坑指南:选福正美,不扣点不熔金 - 福正美黄金回收
  • 终极本地Cookie导出指南:Get cookies.txt LOCALLY完全教程
  • DownKyi哔哩下载姬:B站视频下载与处理的完整解决方案
  • 2026 南通上门黄金变现,福正美黄金奢饰品回收排名靠前 - 福正美黄金回收