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