Try   HackMD

用來寫 C++ 程式的軟體

對電腦的「命令」和命令使用的「語言」

程式由一連串對電腦的「命令」構成,執行時電腦會完全遵從這些命令進行計算。

要寫程式就必須用電腦看得懂的方式來下命令,也就是「機器語言」。但機器語言的指令是由一連串的

0
1
所組成,對人類而言太過難懂難學。

因此人類發展出「高階語言」,將命令包裝得比較接近人類語言,同時保證高階語言能夠被轉換為電腦看得懂的指令。使用高階語言寫出來的命令,就叫「程式碼(code)」。

一般我們講程式語言通常泛指高階語言,但其實機器語言、組合語言等「低階語言」(也就是人類比較看不懂的)也算一種程式語言。

但電腦是看不懂高階語言的,要執行必須先翻譯成電腦看得懂的機器語言,這動作叫作「編譯(compile)」。

撰寫「程式碼」所需的工具

綜合以上,寫程式最基本要有

  • 編輯器(editor):用來編輯程式碼。
  • 編譯器(compiler):負責把程式碼翻譯成電腦看得懂的指令來執行。

可以想像成你需要詠唱咒語和精靈們溝通以施展魔法,可是人類連發音都有困難,所以發明一種人類可以發音、又可以被翻譯成魔法語言讓精靈們理解的語言。compiler 就是負責這一層類似翻譯的工作,翻譯給精靈理解後,就可以成功施展魔法啦。

不幸的是,儘管只要湊齊 editorcompiler 就能開始寫程式,但 windows 沒有堪用的內建 editor,word 則是絕對不行;和 compiler 溝通的學習門檻又高。怎麼辦呢?

這時就需要整合開發環境(IDE)啦。

整合開發環境 Integrated Development Environment, IDE

所謂工欲善其事,必先利其器。準備適當的工具,事半功倍。

IDE 將寫程式必要的 editor 和 compiler 整合在一起,還提供許多寫程式時便利的功能。

只要找到合適的 IDE,就不怕 Windows 沒有好用的 editor,也不怕跟 compiler 有溝通障礙了!

推薦的 IDE《CP Editor》

常見的 IDE 有好幾家,包括 Dev-CPP、Code::Blocks 等。這裡介紹徹底捨棄泛用性、特別針對競程特化的《CP Editor》。

特化的關係導致它難以用來開發一般的軟體,不過用在競程方向會比一般的泛用 IDE 更便利。

從官網下載時 asset 部份記得選帶 setupgccLLVM 的選項,如下圖:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

設定配色

初次開啟時,會自動跳出設定頁面。

如果不小心關掉,或者不是初次開啟,可從 Optionspreferences 開啟設定頁面,或者按 CTRL+P

AppearanceGeneral 可以設定 UI 的語言和配色。配色推薦黑底的 Dark FusionDracula,也是作者自己的設定。可以按自己喜好調整。

一般推黑底主要是寫程式時,通常需要長時間注視程式碼。螢幕的原理上黑色是不發光,白色是最亮光,而程式碼文字和背景的比例會是背景居多,因此黑底對眼睛的負擔較低。

另外也存在強者多用黑底,所以用黑底看起來比較強的說法

Opacity 則是透明度,設定半透明時可以看到 CP Editor 視窗後面的東西,可視喜好調整。

AppearanceFont 則可以調整各種字體和大小。視喜好調整即可,不過強烈建議一律使用等寬(Monospaced)類型的字體,讓每個字的寬度一致,較利於排版和比對。

操作介紹

執行起來大概長這樣子:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

FileNew File 建立新的檔案後,畫面大致就長得像上面那樣,概分為左、右上和右下三塊。這時就可以開始寫程式了。

  • 左:editor 的部份。將程式碼寫在這裡。
  • 右上:開始 compile 後,過程的任何訊息,包括成功,或者錯誤以及原因等。
  • 右下:每一筆需要程式去計算的資料、程式算出來的結果、以及該筆資料正確的標準答案。

寫完之後,按底下的 Compile and Run,就會執行和右下的資料筆數相同的次數,每次跑一筆資料,並顯示結果,例題如下:

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

上圖準備了兩筆的資料,因此程式被執行了

2 次,個別給予不同的資料。

  • 左:給予的資料
  • 中:程式算出來的結果
  • 右:標準答案

中間不同色的按鈕 AC 則是比對結果,依結果不同而變更。大致如下:

  • RE:還沒算完,程式就當掉了,或者輸出太多文字。
  • TLE:在限定的時間內(預設為
    5
    秒)未能計算完畢,被強制中止。
  • WA:計算順利在時限內正常結束,但輸出與答案不相符。
  • AC:計算順利在時限內正常結束,且與答案相符。

按下去則會顯示與標準答案的差異比對。

其它 IDE 多半是執行後必須人工一個字一個字輸入資料,就算可以複製貼上,在測試多筆資料時也免不了必須執行多次。尤其程式越複雜時越難一次寫到對,以上動作就必須反覆多次。

CP Editor 可以預先建立想測試的資料,自動執行多次一筆一筆去測試比對,這樣的做法雖缺乏和程式的互動性,但測試時更有效率、減低煩躁感、且比肉眼比對來得正確。

更多便利功能或細節

建議學過一些基本語法再來看,會比較理解這些功能可以幹嘛、方便在哪。

可參考 官網文件 或者 外傳:關於 CP Editor 更多便利功能

一些簡單的 FAQ

APCS 或其它考試、競賽(學科能力競賽、資奧選訓營等)不支援 CP Editor 怎辦?

練習上 CP Editor 肯定比較方便。可以等實力到一定水準後,再來做準備。最基本的概念與流程是共通的,要轉其它 IDE 不難。

用慣 CP Editor 其它 IDE 在測試上可能會感到較不方便就是了。

無法正常執行寫好的程式碼?

如果確定程式碼沒錯,有可能是沒有安裝自帶 GCC 和 LLVM 的版本,可以嘗試重新安裝。下載時記得在 Asset 檢查是否有找對版本。

想用其它 IDE 可以嗎?

無所謂,請自便。

tags: 競程:初章, 競程