截至計算機程式課程的第十一週, 總結一下本課程已經介紹的內容與隨後的應用, 並希望各組能夠自行利用這些內容, 完成一個自選的程式設計專題.

以類解譯模式執行 ANSI C 程式

首先, 在這門大一的計算機程式課程中, 我們同時介紹了 ANSI C 與 Python3 的基本用法, 為了讓學員以最直覺的方式了解 ANSI C 與 Python3 最簡單的程式執行方式, 我們採用了 SciTE、TinyC 與 Embedded Python3, 讓 C 程式的執行與 Python3 解譯方式類似, 可以直接在 SciTE 中輸入 C 與 Python3 程式, 分別儲存為 .c 與 .py 命名的檔案, SciTE 則透過副檔名的區別, 以 Tiny C 的 tcc.exe -run 直接編譯執行 .c 程式, 並傳回結果, 而 Python3 程式則透過 64 位元的 Embedded Python3 解譯器執行 .py 程式.

可攜程式開發套件與 Fossil SCM

當 SciTE 與 Tiny C 及 Python3 解譯器的設定完成後, 為了提升各學員在不同 Windows 64 位元電腦上執行程式的方便性, 我們利用 Windows 批次檔案, 以 SUBST 指令將程式開發套件製作成隨身碟可攜式檔案, 各學員可以在任一台 Windows 64 位元電腦上, 以 start.bat 開啟系統, 以 stop.bat 關閉系統, 可暫時免除安裝 C 編譯系統與整合開發環境的困擾, 以最方便直覺的模式學習 ANSI C 與 Python3 程式的基本用法.

此外, 為了在分組學員間推動計算機程式檔案的協同開發與版次管理, 捨棄了較複雜的 Git 與 Github 應用, 而改以 Fossil SCM 系統入門, 各學員可以利用單一 5MB 左右的 fossil.exe 可執行檔案, 將各組所開發的 .c 與 .py 檔案提交推送到廣域網路的主機, 或者直接在區域網路, 以同一個隨身碟上的 fossil.exe 啟動 ui 或 server 伺服器, 練習管理 Fossil SCM 的伺服端管理.

基本的 ANSI C 與 Python3 程式

針對最基本的 C 與 Python3 程式介紹, 我們採用了三本電子書, 分別為 C 程式語言基礎Programming in ANSI CLean Python, 讓學員可以利用上述可希隨身開發環境, 練習書中所提供的範例, 逐步了解兩種程式語言的特性.

其次, 為了讓學員之間可以互相交流學習成果, 特別要求各學員將操作程式執行的過程, 以 Portable ShareX 錄製成 .mp4 影片檔, 並且送到各組的廣域 Fossil SCM 伺服器, 除了紀錄各自練習過程外, 能夠提供給其他學員參考. (學員操作影片範例: 1, 2. 檔案管理範例: W11 練習程式檔)

分組期末專案提示

W11 完成以 Tiny C 編譯 ANSI C 程式為動態連結庫之後, 可以讓 Python3 程式呼叫執行的練習後, 本學期的期末專案將以 Python3 程式為主, 並且採 Brython 架構, 各組必須利用 Python3 網際程式介面 開發程式, 測試完成後以 ShareX 影片進行與 Fossil SCM Wiki 進行簡報, 並將所完成的程式碼推送到各組對應 Fossil SCM 倉儲中的 final project 目錄下.

https://astronomy.stackexchange.com/questions/7806/exercise-2d-orbital-mechanics-simulation-pythonhttp://helloworldbookblog.com/lunarlander-2/ (程式碼) 可以找到許多與 Python 程式應用有關的範例.

以下就舉利用網際 Python3 程式執行環境, 開發一個簡單的"猜數字遊戲"程式專案, 應該如何構思並完成開發.

猜數字遊戲

程式透過亂數模組產生一組介於 1~100 之間的數字, 讓使用者以 input 輸入猜這個電腦所產生的數字, 若使用者直接猜對, 則回應恭喜猜對, 並列出一次就猜對的訊息, 若使用者猜的數字大於或小於電腦所產生的數字, 則提示比標準答案大或小的提示, 整個遊戲進行到使用者猜對為止, 或達到一定的猜測次數, 程式就會終止並列出相關訊息.

使用者在設計這個程式時, 必須透過 random 模組說明 學會如何讓程式產生介於 1~100 的整數, 知道如何利用 input() 取得使用者所輸入的數字字串, 然後以 int() 轉為整數後, 以 if 判斷輸入與標準答案煎的大小後傳回適當的訊息, 並且設計合理的程式控制回圈, 並且了解如何利用 local storage 儲存電腦所產生的標準答案等技術.

上述猜簡單整數的程式完成後, 若想增加程式的複雜度, 則可以讓電腦以亂數產生一組由左至右排列好的四個數字, 數字可以重複或不重複, 然後讓使用者透過 input() 猜該數字, 當使用者輸入所猜的數字後, 程式則設法回應位置正確或數字正確的回應, 直到使用者完全猜對該 4 個數字為止.

最後若使用者可以利用程式邏輯, 由程式亂數產生數字, 並以亂數程式模組及合理的邏輯設計來猜測該數字, 列印猜測過程直到猜對為止, 就應該不難想像許多程式對應遊戲的編寫與設計流程了.