【華為倉頡編程語言】運行第一個倉頡程序

歡迎來到倉頡編程語言的第一個實戰課程。

上節課我們成功安裝了倉頡工具鏈,今天讓我們一起編寫并運行第一個倉頡程序。相信很多同學都還記得學習第一門編程語言時寫的"Hello World"程序,那種看到程序成功運行的激動心情。今天,我們就要在倉頡語言中重現這個經典時刻!

一、第一個程序的完整流程

讓我們先看看編寫和運行倉頡程序的完整流程:

開始
創建源文件
編寫代碼
保存文件
編譯程序
運行程序
查看輸出
hello.cj
main函數
cjc編譯器
可執行文件
你好,倉頡

看起來步驟不少,但實際操作起來非常簡單。讓我來一步步帶大家完成。

二、創建第一個倉頡源文件

首先,我們需要創建一個倉頡源文件。倉頡源文件的擴展名是.cj,這就像Java用.java,Python用.py一樣。

文件命名規則
擴展名
文件名
編碼格式
.cj
倉頡源文件
hello
簡潔明了
UTF-8
支持中文
hello.cj
完整文件名

創建一個名為hello.cj的文件。注意:

  • 文件名可以自定義,但建議使用有意義的名稱
  • 擴展名必須是.cj
  • 建議使用UTF-8編碼,這樣可以在代碼中使用中文

三、編寫Hello World程序

現在讓我們來編寫代碼。打開hello.cj文件,輸入以下內容:

// hello.cj
main() {println("你好,倉頡")
}

讓我詳細解釋一下這段代碼的每個部分:

代碼結構
注釋
main函數
函數體
// hello.cj
單行注釋
main()
程序入口
{...}
代碼塊
println函數
打印功能
自動換行
你好,倉頡
字符串參數

代碼解析

  1. 注釋部分// hello.cj

    • 這是單行注釋,用于說明文件名
    • 倉頡支持兩種注釋方式
  2. main函數main() { ... }

    • 這是程序的入口點
    • 注意:倉頡的main函數不需要func關鍵字
    • 每個可執行程序都必須有main函數
  3. println函數println("你好,倉頡")

    • 用于打印輸出
    • 自動在末尾添加換行符
    • 可以打印中文字符串

四、倉頡的注釋系統

讓我們深入了解一下倉頡的注釋語法:

注釋類型
單行注釋
多行注釋
// 開頭
到行尾結束
用于簡短說明
/* 開始
*/ 結束
可跨越多行
使用場景
文件說明
函數說明
代碼解釋
臨時屏蔽

示例:

// 這是單行注釋,解釋下面的代碼/* 這是多行注釋可以寫很多行用于詳細說明 */main() {// 打印歡迎信息println("你好,倉頡")  // 行尾注釋/* 暫時屏蔽這段代碼println("這行不會執行")*/
}

五、編譯倉頡程序

代碼寫好了,接下來要編譯它。倉頡使用cjc編譯器:

用戶終端cjc編譯器文件系統輸入編譯命令cjc hello.cj -o hello調用編譯器讀取hello.cj詞法分析語法分析語義分析代碼生成生成可執行文件hello (Linux/macOS)hello.exe (Windows)編譯完成用戶終端cjc編譯器文件系統

編譯命令詳解

編譯命令
cjc
hello.cj
-o
hello
編譯器名稱
源文件
輸出選項
輸出文件名
平臺差異
Linux/macOS
Windows
cjc hello.cj -o hello
cjc hello.cj -o hello.exe

命令解釋:

  • cjc:倉頡編譯器的命令
  • hello.cj:要編譯的源文件
  • -o:指定輸出文件名的選項
  • hello:生成的可執行文件名

六、運行程序

編譯成功后,讓我們運行程序:

運行方式
Linux/macOS
Windows
./hello
輸出結果
hello.exe
.\hello.exe
你好,倉頡

不同平臺的運行命令:

  • Linux/macOS: ./hello
  • Windows: hello.exe.\hello.exe

七、完整的開發流程演示

讓我們把整個過程串起來看:

運行階段
編譯階段
編寫階段
執行程序
查看輸出
執行cjc命令
生成可執行文件
創建hello.cj
編寫main函數
添加println

八、常見問題與解決方案

常見問題
編譯錯誤
運行錯誤
輸出問題
文件名錯誤
語法錯誤
路徑問題
權限不足
找不到文件
亂碼問題
沒有輸出
檢查擴展名.cj
檢查括號匹配
chmod +x
使用UTF-8

問題解決指南

  1. 找不到cjc命令

    • 檢查是否正確安裝倉頡工具鏈
    • 確認環境變量配置正確
  2. 編譯報錯

    • 檢查文件擴展名是否為.cj
    • 確認代碼語法正確,特別是括號匹配
  3. 運行時權限不足(Linux/macOS)

    • 使用chmod +x hello添加執行權限
  4. 中文亂碼

    • 確保源文件使用UTF-8編碼
    • 檢查終端編碼設置

九、擴展練習

現在你已經成功運行了第一個倉頡程序,讓我們嘗試一些變化:

// 練習1:打印多行
main() {println("你好,倉頡")println("Hello, Cangjie")println("歡迎來到倉頡的世界!")
}// 練習2:使用print不換行
main() {print("你好,")print("倉頡")println("!")  // 最后換行
}// 練習3:添加更多注釋
/* * 我的第一個倉頡程序* 作者:你的名字* 日期:今天的日期*/
main() {// 使用中文打印歡迎信息println("你好,倉頡")// 也可以用英文println("Hello, Cangjie")
}

課程總結

今日要點
源文件
編譯
運行
調試
.cj擴展名
UTF-8編碼
cjc編譯器
-o指定輸出
./執行
查看結果
理解錯誤
解決問題

恭喜你!今天我們成功完成了:

  1. 創建了第一個倉頡源文件 - hello.cj
  2. 編寫了第一個倉頡程序 - 包含main函數和println
  3. 學會了編譯命令 - cjc的基本使用
  4. 成功運行了程序 - 看到了"你好,倉頡"

這雖然是個簡單的程序,但它標志著你正式踏入了倉頡編程的大門。從這個簡單的開始,我們將逐步學習更多倉頡的特性和功能。


作業

  1. 創建一個新的程序,打印你的名字和今天的日期
  2. 嘗試使用多行注釋記錄你的學習心得
  3. 探索print和println的區別

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/92643.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/92643.shtml
英文地址,請注明出處:http://en.pswp.cn/web/92643.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

利用DeepSeek改寫并增強測試Duckdb和sqlite的不同插入方法性能

在前文基礎上,好奇作為事務型數據庫的SQLite表現怎么樣,讓DeepSeek來幫忙。 提示詞 請仿照附件編寫用python插入sqlite數據的測試函數,如果sqlite3沒有對應方法就省略 import sqlite3 import pandas as pd import timemethods [字符串拼接, …

進程管理塊(PCB):操作系統進程管理的核心數據結構

進程管理塊(PCB):操作系統進程管理的核心數據結構在現代操作系統中,進程管理塊(Process Control Block, PCB) 是內核用來描述、管理和控制進程生命周期的最核心、最關鍵的數據結構。它就像是一個進程的“身…

線程的sleep、wait、join、yield如何使用?

sleep:讓線程睡眠,期間會出讓cpu,在同步代碼塊中,不會釋放鎖 wait(必須先獲得對應的鎖才能調用):讓線程進 入等待狀態,釋放當前線程持有的鎖資源線程只有在notify 或者notifyAll方法調用后才會被喚醒,然后去爭奪鎖. join: 線程之間協同方式,使…

2025年服裝智能跟單系統TOP3推薦榜單

TOP1領軍者首選推薦:金蝶服裝系統【★★★★★】 在服裝智能跟單系統的領域,金蝶服裝系統憑借其強大的功能和卓越的性能脫穎而出,成為眾多企業的首選。盡管本文標題提及的是另一份榜單,但值得一提的是,金蝶系統若參與評…

基于FFmpeg的B站視頻下載處理

起因是這樣的一天,本人在B站客戶端緩存了一個視頻,用于學習參考等學術交流,但是視頻和音頻卻是分開且通過Win Hex查看發現文件頭含有9個“30”,想到一個個手動刪字節不如讓程序取代,便有了本文章這一篇文章發布之前&am…

【Vue Router】路由模式、懶加載、守衛、權限、緩存

前言 Vue Router 是 Vue 生態中處理頁面跳轉的核心工具,它解決了單頁應用中 URL 管理、組件切換、狀態維護等關鍵問題,同時提供了豐富的功能(如動態路由、嵌套路由、路由守衛)。除了經常用到的路由配置以外,我們還需了…

Linux epoll 實現詳解 (fs/eventpoll.c)

核心數據結構分析 1. struct eventpoll (epoll 實例核心結構) c struct eventpoll {struct mutex mtx; // 保護 epoll 結構的互斥鎖wait_queue_head_t wq; // epoll_wait() 使用的等待隊列wait_queue_head_t poll_wait; // 文件 poll() 使用的等待隊列struc…

【牛客刷題】小紅的項鏈(字節跳動面試題)

文章目錄 一、題目介紹 1.1 輸入描述 1.2 輸出描述 1.3 示例 二、算法設計思路 三、流程圖 四、題解實現 五、復雜度分析 六、關鍵算法知識點 一、題目介紹 原題鏈接:https://www.nowcoder.com/practice/3da065cab096478eb603bbfca5af8b02 小紅將 n n n個珠子排成一排,然后…

【Html網頁模板】HTML炫酷星空(一閃一閃亮晶晶)

文章目錄專欄導讀功能預覽快速開始核心實現拆解1. 背景與基礎布局2. 背景層靜態星空(輕微閃爍)3. 前景層“亮晶晶”的閃爍小星星4. 交互與動效5. 行星裝飾可配置項與個性化建議初始化順序(入口)源碼結語專欄導讀 🔥&am…

第一天-CAN Signal信號的Multiplexor多路復用在DBC中實現

🚀 CAN總線的“變形金剛術”:Multiplexor多路復用信號深度揭秘在汽車電子江湖中,當數百個ECU爭相發送數據時,如何讓一條CAN報文像"變形金剛"一樣自由切換形態?Multiplexor(多路復用)技…

Code Exercising Day 10 of “Code Ideas Record“:StackQueue part02

文章目錄【150. Evaluate Reverse Polish Notation】【239. Sliding Window Maximum】【347. Top K Frequent Elements】【150. Evaluate Reverse Polish Notation】 Problem Link Approach: Use a stack. Push numbers onto the stack; when encountering an operator, pop t…

系統架構設計師備考之架構設計高級知識

1.系統架構設計基礎知識1.1.軟件架構概念軟件架構定義軟件架構(Software Architecture)或稱軟件體系結構,是指系統的一個或者多個結構,這些結構包括軟件的構件(可能是程序模塊、類或者是中間件)、構件的外部…

PWM波的頻譜分析及matlab 驗證[電路原理]

你知道嗎?pwm可以制作adc模塊哦!這樣普通的gpio也能實現adc功能了。 我們嵌入式日常接觸的pwm波,你真的了解他嗎? 只有知道PWM的頻譜是怎么樣的,才能設計合適的濾波器,下面我們一起從底層數學原理來推導PWM…

相機、鏡頭參數詳解以及相關計算公式

一、工業相機參數 1、分辨率 相機每次采集圖像的像素點數,也是指這個相機總共有多少個感光晶片。在采集圖像時,相機的分辨率對檢測精度有很大的影響,在對同樣大的視場成像時,分辨率越高,對細節的展示越明顯。 相機像素…

通信中間件 Fast DDS(一) :編譯、安裝和測試

目錄 1.簡介 2.Windows編譯、安裝和測試 2.1.編譯環境準備 2.2.編譯安裝 2.2.1.安裝FastCDR 2.2.2.安裝Foonathan Memory 2.2.3.安裝FastDDS 2.3.驗證安裝 3.Linux編譯、安裝和測試 3.1.編譯環境準備 3.2.編譯安裝 3.2.1.安裝FastCDR 3.2.2.安裝Foonathan M…

NI USRP X410 無線電上的雷達目標仿真

此示例展示如何在 NI? USRP? 無線電的 FPGA 上部署雷達目標仿真算法。 介紹 在本例中,您將從 Simulink 模型入手,該模型可模擬最多四個雷達目標響應。您將按照分步指南,在 Simulink 中從該模型生成比特流,并使用生成的 MATLAB 主…

PyTorch 深度學習實戰教程-番外篇04:卷積層詳解與實戰指南

標簽:# 深度學習 #人工智能 #神經網絡 #PyTorch #卷積神經網絡 相關文章: 《Pytorch深度學習框架實戰教程01》 《Pytorch深度學習框架實戰教程02:開發環境部署》 《Pytorch深度學習框架實戰教程03:Tensor 的創建、屬性、操作與…

LeetCode 面試經典 150_數組/字符串_分發糖果(15_135_C++_困難)(貪心算法)

LeetCode 面試經典 150_數組/字符串_分發糖果(15_135_C_困難)題目描述:輸入輸出樣例:題解:解題思路:思路一(貪心算法):代碼實現代碼實現(思路一(貪…

配置timer控制 IO的輸出(STC8)

使用STC8的Timer控制IO輸出 STC8系列單片機具有多個定時器,可以用于精確控制IO口的輸出狀態。以下是使用Timer0和Timer1控制IO輸出的方法。 初始化Timer0 配置Timer0為16位自動重裝模式,用于周期性控制IO輸出: /************************ 定時…

【Python練習】086. 編寫一個函數,實現簡單的DHCP服務器功能

086. 編寫一個函數,實現簡單的DHCP服務器功能 086. 編寫一個函數,實現簡單的DHCP服務器功能 安裝依賴庫 示例代碼 代碼說明 示例輸出 注意事項 擴展功能 DHCP服務器功能實現方法 依賴庫安裝 基本功能實現 功能說明 運行方法 注意事項 擴展功能 086. 編寫一個函數,實現簡單的…