這個作業希望你用 C 語法, 用程序化的程式設計方法寫一個簡單的程式, 列印 {1,2,...,n} n個整數所有的排列, 產生排列的基本方法可以是 迭代式 (iterative) 或是 遞迴式 (recursive) 的, 在這次作業裡你必須把這兩種演算法都完成, 相互比較, 方式請參考 投影片 (4up) 裡的說明, 其中遞迴式的已經給你程式碼, 迭代式的程式需要和遞迴式的程式產生一模一樣順序的答案。
這個課程不是演算法的課程, 所以要求你寫的這個演算法並不需要最有效率的, 不過這個演算法有兩個特性, 第一是他需要運用相當的程式控制敘述, 第二是 Google 不太到 (你找到的應該都不是我要求的)
這個作業主要希望你能夠回憶一下 C 的語法, 回憶一下 C 程式的製作環境, 重新整理一下怎樣把一個演算法轉換為 C 程式的步驟, 怎樣逐步地設計, 測試, 和修改自己的程式, 並且熟悉一下這學期作業繳交的流程。
這個作業並不會特別困難, 但是要求每位同學自己獨立動手完成 (不是分組完成, demo 時是每一位同學自己 demo 自己的程式), 同時你需要達成下面的要求, 請注意除了程式的 "正確性" 之外, 另外還要求許多項目, 請趕快開始做, 不要最後因為時間不夠而胡亂繳交一份, 不好的開始通常不是成功的一半。
這個作業主要也是印證和練習 "撰寫程式時無形的規範 (b&w)", 請你拿簡單的 "產生 n 個數字排列" 的程式當作練習, 按照投影片中對於 Selection Sort 演算法的實作所作的逐步修改, 依樣畫葫蘆一番, 相信你更能夠了解設計程式時除了正確性以外一些比較形而上的要求, 嘗試去想像這些要求可能帶來的好處, 後續課程中還會逐步闡述這些要求代表的意義。
其次, 這個作業裡也希望你練習第一次以及第二次實習的 iostream/fstream 函式庫 的用法, 以及 assert 的使用。
這次作業提示比較多, 大部分是過去學過的, 使得它比較像一個習題, 挑戰性會比較少, 除了上面談到希望你練習的, 其實也希望能夠透過這個作業建立一個與我、與助教溝通討論的管道, 程式課程的成績不太能夠客觀地代表程式設計和撰寫的能力, 但是程式設計的課程的確要求你透過實習/作業/以及課堂討論來建立自己的程式能力, 過了這個學期, 你有沒有建立起這種能力其實你自己是最清楚的, 希望你在這個時候能夠跳脫以前修課時讓考試被動催促的習慣, 主動參與這個課程, 如果你撰寫程式時遇見問題, 歡迎你隨時找我或是助教詢問, 上課後, 實習課, 補強教學, 電話, email, FB 訊息, ... 都可以運用, 我們這學期的課程中共同的目標是 - 讓你學到一些東西, 讓你對於程式設計有更多的想法。
回
C++ 物件導向程式設計課程 首頁 製作日期: 03/01/2018 by 丁培毅 (Pei-yih Ting) E-mail: pyting@mail.ntou.edu.tw TEL: 02 24622192x6615 海洋大學 電機資訊學院 資訊工程學系 Lagoon |