「Mac玩转仓颉内测版21」基础篇1 - 仓颉程序的基本组成
2024-11-19 20:54:48
4次阅读
0个评论
最后修改时间:2024-11-19 20:57:29
本篇将系统介绍Cangjie编程语言中程序的基本组成部分,涵盖 main 函数的定义、包与模块的使用、变量类型、作用域和代码结构原则,帮助开发者理解Cangjie程序的整体结构。
关键词
- 程序入口点
- main函数
- 包与模块
- 变量类型与作用域
- 值类型与引用类型
- 代码结构与规范
一、程序入口点与 main 函数
Cangjie中,main 函数是程序的入口,负责控制程序的启动与结束。
1.1 main 函数的定义
main(): Int64 {
// 程序代码
return 0
}
- main 函数返回整数,0 表示正常退出。
1.2 参数与返回值
- 可选参数 Array 用于命令行输入。
- 返回类型为整数或 Unit 类型,取决于程序需求。
二、包与模块
模块化编程通过包(package)和模块(module)实现,便于代码逻辑分组与复用。
2.1 定义包
使用 package 关键字定义包,按逻辑组织代码。
package cjcDemo
2.2 导入模块
使用 import 关键字引入其他包中的模块或函数。
import std.math.*
三、程序结构与顶层作用域
Cangjie程序文件扩展名为 .cj,在顶层作用域中可以定义全局变量、全局函数和自定义类型。
3.1 作用域
- 全局作用域:允许定义全局变量和自定义类型。
- 局部作用域:函数或代码块内部的变量仅在局部范围内有效。
let globalVar = 2023
func globalFunc() {}
struct CustomStruct {}
class CustomClass {}
enum CustomEnum { OptionA | OptionB }
main(): Int64 {
println(globalVar)
return 0
}
输出:
2023
3.2 嵌套作用域
嵌套作用域中可以使用外层作用域的变量;内层同名定义会遮盖外层定义。
四、变量定义与使用
Cangjie变量包含变量名、数据值和属性,属性包括可变性、可见性和静态性。
4.1 变量修饰符
- 可变性:let 表示不可变,var 表示可变。
- 可见性:public 或 private 控制变量引用范围。
- 静态性:static 影响变量的存储和引用方式。
示例:
let a: Int64 = 20
var b: Int64 = 12
b = 23
println("${a} ${b}")
输出:
20 23
五、值类型与引用类型
Cangjie中的数据类型分为值类型和引用类型。基础数据类型和 struct 是值类型,而 class 和 Array 是引用类型。
5.1 值类型与引用类型的差异
- 值类型:每个变量都有自己的数据副本,赋值会产生拷贝。
- 引用类型:多个变量共享同一数据对象,对一个变量的修改会影响所有引用。
示例:
struct Copy { var data = 2012 }
class Share { var data = 2012 }
main(): Int64 {
let c1 = Copy()
var c2 = c1
c2.data = 2023
println("${c1.data}, ${c2.data}")
let s1 = Share()
let s2 = s1
s2.data = 2023
println("${s1.data}, ${s2.data}")
}
输出:
2012, 2023
2023, 2023
六、代码规范与风格
良好的代码规范有助于提高代码的可读性和可维护性。
6.1 命名规范
- 变量名:使用小写字母和下划线。
- 函数名:采用驼峰命名法。
- 常量名:全大写字母,单词间用下划线分隔。
6.2 缩进与格式
- 缩进:统一使用 4 个空格。
- 括号与空格:在关键字后加空格,函数调用时不加空格。
- 行长度:每行代码不超过 80 个字符,建议长行换行。
6.3 代码注释
- 简洁性:注释应言简意赅。
- 更新性:确保注释与代码同步更新,避免误导。
七、示例代码解析
以下示例展示了Cangjie程序的基本组成,包括入口函数、变量、函数调用、模块导入等。
package cjcDemo
import std.math.*
main(): Int64 {
let radius: Float64 = 5.0
let area: Float64 = calculateArea(radius)
println("圆的半径为: " + radius.toString())
println("圆的面积为: " + area.toString())
if (area > 50.0) {
println("面积大于50")
} else {
println("面积小于等于50")
}
return 0
}
/* 计算圆的面积 */
func calculateArea(r: Float64): Float64 {
let pi = 3.14
return pi * r * r
}
输出:
圆的半径为: 5.000000
圆的面积为: 78.500000
面积大于50
小结
本篇详细介绍了Cangjie程序的基本组成,涵盖了 main 函数、包与模块的使用、变量类型与作用域、值与引用类型的概念和代码规范,为编写规范的Cangjie代码奠定了基础。
下篇预告
下一篇将进入Cangjie数据类型的详细解析,首先简述 10种基础数据类型,敬请关注 「Mac上学习仓颉22」基础篇2 - 基础数据类型简述!
上一篇: 「Mac上学习仓颉20」PTA刷题篇11 - L1-011 A-B
下一篇: 「Mac上学习仓颉22」基础篇2 - 基础数据类型简述
作者:SoraLuna 链接:https://www.nutpi.net 來源:坚果派 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
00
- 0回答
- 1粉丝
- 0关注
相关话题
- 「Mac玩转仓颉内测版1」入门篇1 - Cangjie环境的搭建
- 「Mac玩转仓颉内测版3」入门篇3 - Cangjie的基本语法与结构
- 「Mac玩转仓颉内测版22」基础篇2 - 基础数据类型简述
- 「Mac玩转仓颉内测版10」PTA刷题篇1 - L1-001 Hello World
- 「Mac玩转仓颉内测版2」入门篇2 - 编写第一个Cangjie程序
- 「Mac玩转仓颉内测版9」入门篇9 - 综合案例篇
- 「Mac玩转仓颉内测版11」PTA刷题篇2 - L1-002 打印沙漏
- 「Mac玩转仓颉内测版15」PTA刷题篇6 - L1-006 连续因子
- 「Mac玩转仓颉内测版16」PTA刷题篇7 - L1-007 念数字
- 「Mac玩转仓颉内测版14」PTA刷题篇5 - L1-005 考试座位号
- 「Mac玩转仓颉内测版18」PTA刷题篇9 - L1-009 N个数求和
- 「Mac玩转仓颉内测版19」PTA刷题篇10 - L1-010 比较大小
- 「Mac玩转仓颉内测版20」PTA刷题篇11 - L1-011 A-B
- 「Mac玩转仓颉内测版12」PTA刷题篇3 - L1-003 个位数统计
- 「Mac玩转仓颉内测版13」PTA刷题篇4 - L1-004 计算摄氏温度