<style> .text-img { width: 1em; } .codeblock { width: 2em; } </style> ## 前言 C語言是一個高效率的程式語言,不同於Python等高等程式語言,C語言的檔案(`*.c`)無法像是Python一樣按下按鈕就可以直接執行,在寫完`.c`檔案時,我們需要手動使用編譯器(compiler)把`.c`檔案轉換成`.exe`檔案。 > `.c`為C語言的專屬檔案格式,其編碼格式跟純文字檔一模一樣(皆為`utf-8`),故`.c`檔案是可以用記事本(notepad)進行編輯的喔! > `.exe`檔案為window專屬的格式,在macOS上會是`.app`檔,而在linux則沒有為這種可執行的二進位檔案給予其他後綴。 > `.exe`檔案不能用一般文字編輯器開啟,因為`.exe`檔案是二進制的,吃`utf-8`檔案格式的編輯器無法順利讀取。但是也有一些特殊的編輯器可以開啟這種二進位檔案,不過打開後都是`0010001001001...`,也不會有人看得懂😂。 ## 編譯還是直譯? 說到這邊,我們可以來比較一下編譯(compile)與直譯(interpret)的差異。 | | 編譯 compile | 直譯 interpret | | :---: | :---: | :---: | | 邏輯 | 將文字檔案**翻譯**成二進位檔案 | 直接執行文字檔案 | | 結果 | 會產生一個`.exe`檔案並執行它 | 中途不會產生其他檔案 | | 效率 | 非常高(執行`.exe`檔時不必再翻譯) | 非常低 | | 特點 | 只要語法有錯 編譯時期就會被抓到 | 只會在執行到錯誤的行數時才會報錯 | | 舉例 | c / c++ / rust / java | python / javascript | 電腦是binary的編碼格式,在硬體層是用高電位(1)與低電位(0)來儲存此資訊,而人類很明顯不是以1/0溝通。所以翻譯人類看得懂的格式給電腦看是非常重要的。編譯器與直譯器都有此功能。而差別可以用以下舉例說明。 小傑(非本人🤣)作為一個以中文為母語的人類,並不懂其他語言,但是小傑是一個數學天才,全世界的人都想問他數學問題。但是小傑發現,好多人寄來的數學問題都不是以中文敘述,~~所以小傑決定放棄他們(X)~~,所以小傑決定請一個翻譯專家進行對這些題目進行翻譯。 | 角色 role | 對照 reflection | | :---: | :---: | | 小傑 | 電腦 | | 中文 | 二進位 | | 其他語言 | 文字格式 | | 翻譯專家 | 編譯器或是直譯器 | 翻譯員試了兩種方式 1. 整份翻譯完後重寫一份以中文為敘述的題目給小傑寫 2. 在小傑身旁逐行翻譯念給小傑,小傑一邊寫題目 | 1 | 2 | | :---: | :---: | | 編譯器 | 直譯器 | | 會產生新檔案 | 不產生新檔案 | | 寫題目的效率很高 | 寫題目的效率很低 | 這就是編譯與直譯的區別啦! ❗ 如果學到一定程度後想更了解編譯原理,筆者這邊推薦一些資源。(持續更新) * <img src="https://cdn-icons-png.flaticon.com/512/1384/1384060.png" class="text-img"/> [How computer read code?](https://www.youtube.com/watch?v=QXjU9qTsYCc&ab_channel=FrameofEssence) * <img src="https://hackmd.io/_uploads/rkdVR9AKh.png" class="text-img"/> [CPU運作原理](https://blog.codylab.com/how-cpu-works/) ## 被耽誤很久的環境建置 因為是初學者(應該吧),在這邊推薦使用整合開發環境IDE(Itergrated Developement Environment)進行撰寫。而筆者推薦<img src="https://1.bp.blogspot.com/-rz3FvejBwD0/XuEVVp8UBQI/AAAAAAAABrk/TJLCJsFkdPoSx7JBmiekrwlSjIZSH91TgCNcBGAsYHQ/s1600/codeblock.png" class="codeblock"/> [codeBlocks](http://www.codeblocks.org/downloads/binaries/)。 windows用戶可以直接用官方的[setup工具](https://www.fosshub.com/Code-Blocks.html?dwl=codeblocks-20.03-setup.exe)進行安裝喔~~ 下載完的`.exe`檔案直接執行,一直按next就好。 安裝完後就可以正常開啟codeBlocks了! ## 美化你的codeBlocks ### 調整顏色主題 > 參考[@carlochuang的設計](https://hackmd.io/@carlochuang/codeblocks-theme) 筆者設定會參照上面文章並做些許微調😉 1. 先下載[模擬visual studio主題的設定檔](https://drive.google.com/uc?export=download&id=1qMW-lH3yln37KdykkiAWQU7Gc9Xn6DZE) 2. 確保至少開啟過一次codeBlocks並關閉codeBlocks 3. 找到codeBlocks的安裝目錄 :::spoiler *尋找資料夾for windows用戶* * 先按`win + r` * 打`%appdata%`  * 應該會跳轉到`C:\Users\{USER_NAME}\AppData\Roaming` * 選擇`codeBlocks`資料夾 ::: <br /> 4. 複製一份`default.conf`並命名成`default_original.conf`(名稱可以自訂) 5. 複製一開始下載的檔案內容到`default.conf`(用記事本開啟並複製即可) 6. 存檔並重啟codeBlocks 這樣子就有暗色主題了喔! 可以按左上角`File > new file(ctrl + shift + n)`創建新檔案 `ctrl + s`存檔,格式選擇`.c` 就可以看到變色了! ### 調整字體 1. 在codeBlocks上面選擇條選擇`Settings > Editor` 2. `General settings`中選擇`font`,按下`choose`  3. 打`Consolas`然後按`ok`  ### 調整鼠標顏色 由於鼠標顏色內建是黑色,但是我們剛剛不小心把背景調成了黑色,所以現在要改變鼠標顏色! 1. 在codeBlocks上面選擇條選擇`Settings > Editor...` 2. `Margins and caret`中選擇`caret`,顏色調成白色(寬度可以自訂)  ### 其他設定 1. 進到`Settings > Environment` 2. 選則`Colours`,修改下列項目。  | 項目 | 說明 | 修改數值 | | :---: | :---: | :---: | | Code completion : Tooltip/Calltip background | 提示框背景顏色 | `R60 G60 B60` | | Code completion : Tooltip/Calltip foreground | 提示框文字顏色 | `R212 G212 B212` | | Code completion : Tooltip/Calltip highlight | 提示框高亮文字顏色 | `R100 G210 B230` | | Editor : Highlight occurrence | 和選取文字相同文字的標記顏色 | `R255 G0 B127` | | Editor : Line numbers background colour | 行數區域背景顏色 | `R40 G40 B40` | | Editor : Line numbers foreground colour | 行數區域文字顏色 | `R133 G133 B133` | | Editor : Margin chrome colour | 行數和程式碼中間區域的顏色 | `R30 G30 B30` | | Editor : Margin chrome highlight colour | 行數和程式碼中間區域的顏色 | `R30 G30 B30` | 3. 進到`Settings > Editor` 4. 選擇`General settings` 開啟`Editor settings > Show indentation guides`  開啟`Other editor settings > Highlight line under caret`  至此,你的codeBlocks就被整的十分現代化了。建議重啟來儲存設定。  ### 進階字體教學 在寫程式時,我們常用一些符號的組合來表示其他難以被鍵盤打出的符號,如**不等於(!=)**,**箭頭(->)**,而有辦法只改變字體實現符號的相連嗎? 有!~~不然我寫幹嘛。~~ 字體其實有一種設定,叫做**連字 ligature**,若啟用連字設定,在使用該字體時,匹配到一定的模式(pattern),就會顯示特殊的文字。 筆者這邊給大家很好玩的字體去體驗連字 — [Google Icon](https://fonts.google.com/icons?icon.style=Outlined)。 裡面所有的icon都是透過打底下的字,匹配pattern,最後顯示特殊的圖案。 至於怎麼測試呢... 筆者做了一個網站來給大家玩玩這個字體。 :point_right: [Font Ligartures Playground](https://zzzje.github.io/demo/google_icons/) 輸入區可以匹配的icons都能在[這個網站](https://fonts.google.com/icons?icon.style=Outlined)找到。 但是這個字體不是我們要的,~~誰會需要這些icons呢。~~ 我們需要的是[Fira code](https://fonts.google.com/specimen/Fira+Code) 1. 進入網站後點擊download按鈕  2. 解壓縮下載好的壓縮檔 3. 選取以下檔案  > `.ttf`為字體專用的檔案。 4. 打開電腦設定  5. 搜尋打`font`,選第一個  6. 把第3步的5個檔案拖進去 如此一來,你的電腦就有Fira code這個字體了。 接著進入codeBlocks。 1. 將字體改成Fira Code。若忘記怎麼做,可以查看[上面的字體更改教學](#調整字體)。 2. 開啟`Settings > Editor... > General settings > Other editor settings` 3. `Technology`從`Default`改成`DirectWrite`  大功告成!讓我們來看看 **!=** **->** **=>** 變的怎麼樣吧!  是不是超級漂亮:+1:。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up