#

目录

  1. 欢迎来到仓颉世界

  2. 环境搭建

  3. 第一个程序:Hello World

  4. 基础语法

    • 4.1 变量与常量
    • 4.2 基本数据类型
    • 4.3 运算符
    • 4.4 字符串操作
  5. 控制流程

    • 5.1 条件语句
    • 5.2 循环语句
  6. 函数基础

    • 6.1 函数定义
    • 6.2 参数与返回值
  7. 集合类型

    • 7.1 数组
    • 7.2 字典
  8. 类与对象入门

  9. 实战项目:简易计算器

  10. 总结与下一步


欢迎来到仓颉世界

仓颉(Cangjie)是华为为鸿蒙生态开发的现代编程语言,语法简洁优雅,既适合编程新手入门,又能满足专业开发需求。如果你完全没有编程经验,不用担心!本教程将手把手带你从零开始学习仓颉。🎉

为什么选择仓颉?

  • ✨ 语法清晰易懂,学习曲线平缓
  • 🛡️ 类型安全,减少错误
  • 🚀 高性能,适合鸿蒙应用开发
  • 💪 现代化特性,符合主流趋势

环境搭建

在开始编程之前,我们需要安装仓颉开发环境。

步骤:

  1. 访问华为开发者官网下载仓颉SDK
  2. 安装配置开发工具(推荐使用DevEco Studio)
  3. 验证安装:打开终端输入 cangjie --version

安装成功后,让我们开始第一个程序!


第一个程序:Hello World

每个程序员的第一个程序都是"Hello World",这是编程界的传统仪式!😊

main() {
    println("Hello, World!")
    println("你好,仓颉!")
}

代码解释:

  • main() 是程序的入口函数,程序从这里开始执行
  • println() 用于打印文本并换行
  • 双引号内是要显示的文字

运行结果:

Hello, World!
你好,仓颉!

恭喜你!你已经完成了第一个仓颉程序!🎊


基础语法

4.1 变量与常量

编程中,我们需要存储各种数据。仓颉提供了两种方式:

main() {
    // 变量 - 可以改变的值
    var age = 18
    println("我今年${age}岁")
    
    age = 19  // 可以修改
    println("明年我${age}岁")
    
    // 常量 - 不能改变的值
    let birthYear = 2005
    println("我出生于${birthYear}年")
    
    // birthYear = 2006  // 错误!常量不能修改
}

记忆技巧:

  • var = variable(变量),可变
  • let = 固定不变

4.2 基本数据类型

仓颉有几种常用的数据类型:

main() {
    // 整数类型
    let count: Int64 = 100
    let smallNum: Int32 = 50
    
    // 小数类型
    let price: Float64 = 99.99
    let score: Float32 = 85.5
    
    // 布尔类型(真/假)
    let isStudent: Bool = true
    let hasLicense: Bool = false
    
    // 字符串类型
    let name: String = "小明"
    let city: String = "北京"
    
    println("姓名:${name}")
    println("价格:${price}元")
    println("是学生:${isStudent}")
}

初学者提示:
大多数情况下,你可以省略类型声明,仓颉会自动识别:

let age = 18        // 自动识别为 Int64
let name = "小红"    // 自动识别为 String
let price = 88.88   // 自动识别为 Float64

4.3 运算符

让我们做一些数学运算:

main() {
    let a = 10
    let b = 3
    
    // 算术运算
    println("加法:${a + b}")      // 13
    println("减法:${a - b}")      // 7
    println("乘法:${a * b}")      // 30
    println("除法:${a / b}")      // 3
    println("取余:${a % b}")      // 1
    
    // 比较运算
    println("相等:${a == b}")     // false
    println("不等:${a != b}")     // true
    println("大于:${a > b}")      // true
    println("小于:${a < b}")      // false
    
    // 逻辑运算
    let isAdult = true
    let hasTicket = false
    println("可以入场:${isAdult && hasTicket}")  // false(需要同时满足)
    println("符合条件之一:${isAdult || hasTicket}")  // true(满足一个即可)
}

4.4 字符串操作

字符串是编程中最常用的类型之一:

main() {
    let firstName = "张"
    let lastName = "伟"
    
    // 字符串拼接
    let fullName = firstName + lastName
    println("全名:${fullName}")
    
    // 字符串模板(推荐方式)
    let age = 25
    let intro = "我叫${fullName},今年${age}岁"
    println(intro)
    
    // 字符串长度
    let message = "Hello"
    println("长度:${message.length}")
    
    // 大小写转换
    println("大写:${message.toUpperCase()}")
    println("小写:${message.toLowerCase()}")
}

控制流程

5.1 条件语句

根据不同情况执行不同代码:

main() {
    let score = 85
    
    // if-else 语句
    if (score >= 90) {
        println("优秀!🏆")
    } else if (score >= 80) {
        println("良好!👍")
    } else if (score >= 60) {
        println("及格!✓")
    } else {
        println("需要努力!💪")
    }
    
    // 实用例子:判断年龄段
    let age = 16
    if (age < 18) {
        println("未成年人")
    } else if (age < 60) {
        println("成年人")
    } else {
        println("老年人")
    }
}

5.2 循环语句

重复执行相同的操作:

main() {
    // for 循环 - 计数循环
    println("倒计时:")
    for (i in 5..0) {
        println(i)
    }
    println("发射!🚀")
    
    // 打印乘法表
    println("\n九九乘法表:")
    for (i in 1..9) {
        for (j in 1..i) {
            print("${j}x${i}=${i*j}\t")
        }
        println("")
    }
    
    // while 循环 - 条件循环
    var count = 0
    while (count < 5) {
        println("第${count + 1}次循环")
        count += 1
    }
}

循环控制:

main() {
    // break - 跳出循环
    for (i in 1..10) {
        if (i == 5) {
            break  // 到5就停止
        }
        println(i)
    }
    
    // continue - 跳过本次循环
    for (i in 1..10) {
        if (i % 2 == 0) {
            continue  // 跳过偶数
        }
        println(i)  // 只打印奇数
    }
}

函数基础

6.1 函数定义

函数是可重复使用的代码块:

// 简单函数
func sayHello() {
    println("你好!")
}

// 带参数的函数
func greet(name: String) {
    println("你好,${name}!")
}

// 带返回值的函数
func add(a: Int64, b: Int64): Int64 {
    return a + b
}

main() {
    sayHello()
    greet("小明")
    
    let sum = add(10, 20)
    println("10 + 20 = ${sum}")
}

6.2 参数与返回值

更多函数的使用方式:

// 多个参数
func introduce(name: String, age: Int64, city: String) {
    println("我叫${name},${age}岁,来自${city}")
}

// 默认参数
func makeCoffee(size: String = "中杯", sugar: Int64 = 1) {
    println("制作${size}咖啡,${sugar}份糖")
}

// 返回多个值(使用元组)
func getMinMax(numbers: Array<Int64>): (Int64, Int64) {
    let min = numbers.min()
    let max = numbers.max()
    return (min, max)
}

main() {
    introduce("李华", 20, "上海")
    
    makeCoffee()                    // 使用默认值
    makeCoffee("大杯", 2)           // 指定值
    
    let scores = [85, 92, 78, 95, 88]
    let (lowest, highest) = getMinMax(scores)
    println("最低分:${lowest},最高分:${highest}")
}

集合类型

7.1 数组

数组用于存储一组相同类型的数据:

main() {
    // 创建数组
    let fruits = ["苹果", "香蕉", "橙子", "葡萄"]
    
    // 访问元素
    println("第一个水果:${fruits[0]}")
    println("第三个水果:${fruits[2]}")
    
    // 数组长度
    println("共有${fruits.size}种水果")
    
    // 遍历数组
    println("\n所有水果:")
    for (fruit in fruits) {
        println("- ${fruit}")
    }
    
    // 可变数组
    var scores = [85, 90, 78]
    scores.append(95)  // 添加元素
    println("成绩:${scores}")
    
    // 数组操作
    let numbers = [1, 2, 3, 4, 5]
    let doubled = numbers.map({x => x * 2})  // [2, 4, 6, 8, 10]
    let evens = numbers.filter({x => x % 2 == 0})  // [2, 4]
    println("翻倍:${doubled}")
    println("偶数:${evens}")
}

7.2 字典

字典用于存储键值对:

main() {
    // 创建字典
    let person = [
        "name": "张三",
        "age": "25",
        "city": "深圳"
    ]
    
    // 访问值
    println("姓名:${person["name"]}")
    println("年龄:${person["age"]}")
    
    // 可变字典
    var scores = ["语文": 85, "数学": 92, "英语": 88]
    scores["物理"] = 90  // 添加新项
    
    println("\n成绩单:")
    for ((subject, score) in scores) {
        println("${subject}:${score}分")
    }
}

类与对象入门

面向对象编程让代码更有组织性:

// 定义一个学生类
class Student {
    var name: String
    var age: Int64
    var grade: String
    
    // 构造函数
    init(name: String, age: Int64, grade: String) {
        this.name = name
        this.age = age
        this.grade = grade
    }
    
    // 方法
    func introduce() {
        println("我是${name},${age}岁,读${grade}")
    }
    
    func study(subject: String) {
        println("${name}正在学习${subject}")
    }
}

main() {
    // 创建对象
    let student1 = Student("小明", 15, "初三")
    let student2 = Student("小红", 16, "高一")
    
    // 调用方法
    student1.introduce()
    student1.study("数学")
    
    student2.introduce()
    student2.study("英语")
}

实战项目:简易计算器

让我们综合运用所学知识,做一个实用的小项目!

class Calculator {
    func add(a: Float64, b: Float64): Float64 {
        return a + b
    }
    
    func subtract(a: Float64, b: Float64): Float64 {
        return a - b
    }
    
    func multiply(a: Float64, b: Float64): Float64 {
        return a * b
    }
    
    func divide(a: Float64, b: Float64): Float64 {
        if (b == 0) {
            println("错误:除数不能为0")
            return 0.0
        }
        return a / b
    }
    
    func showMenu() {
        println("\n=== 简易计算器 ===")
        println("1. 加法")
        println("2. 减法")
        println("3. 乘法")
        println("4. 除法")
        println("5. 退出")
    }
}

main() {
    let calc = Calculator()
    
    println("欢迎使用计算器!")
    
    // 示例计算
    let num1 = 10.0
    let num2 = 3.0
    
    println("\n第一个数:${num1}")
    println("第二个数:${num2}")
    
    println("\n计算结果:")
    println("${num1} + ${num2} = ${calc.add(num1, num2)}")
    println("${num1} - ${num2} = ${calc.subtract(num1, num2)}")
    println("${num1} × ${num2} = ${calc.multiply(num1, num2)}")
    println("${num1} ÷ ${num2} = ${calc.divide(num1, num2)}")
}

运行结果:

欢迎使用计算器!

第一个数:10.0
第二个数:3.0

计算结果:
10.0 + 3.0 = 13.0
10.0 - 3.0 = 7.0
10.0 × 3.0 = 30.0
10.0 ÷ 3.0 = 3.333333

快快开始你的仓颉编程之旅吧!🚀

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐