1041 (104/09-105/01) 課程內容摘要

download all pdf slides 4up for print, color

  課程摘要
第一週 (104/09/09)
  1. 課程簡介, 課程大綱

  2. 認識 C 語言、程式設計概觀、第一個 C 程式 (bw)

  3. 語言的基本語法、關鍵字 vs. 識別字、程式碼錯誤 (bw)

  4. 程式範例
    1. miles2kms (bw) (exe)
    2. for loop and division test (bw) (exe)
    3. ASCII graph (bw) (exe1, exe2 data2 資料和程式要下載在同一個資料匣裡才能正確執行)

  5. Homeworks:

這學期開始系上把這個課程分成四班,目的是希望讓大家能夠確實掌握基本的程式設計方法,並不是因為這個課程難度特別高,需要你每星期投資 n 個小時在上面,而是因為這個課程的學習的方法和你先前的學習方法會有差異,第一個差別就是遇到不太能解釋的問題就要提出來,如果不是這樣,有可能 n 大於 20 都還是學不會,你遇見問題可以在課堂中提出,也可以線上問 (趕快加入 FB 的群組 『NTOUCSE 1041 程式設計 1C』),一定盡量在最短的時間裡回答你,你不需要因為遇見困難沒有人可以問就讓那個 n 的數值一直增加,沒有需要讓那個 n 的數值大到影響你其他科目的學習、影響你課外活動的參與,最後因為不想浪費時間而讓自己覺得不適合唸資訊系

你很聰明、電腦很笨,堅持用你那國的思考方式很多時候是不容易知道為什麼電腦不接受你的命令的,那個時間就有一點點浪費;那麼為什麼要學著控制笨電腦呢? 它處理速度很快、記憶量很大、24 小時待命、一旦用對的方式控制它、它不會因為疲勞而出錯...

All programmers are playwrights and all computers are lousy actors. (Anonymous Hack Actor)

另外這個課程絕對是為了沒有接觸過程式的同學開的,不要覺得好像東西的份量很多,一直想等到自己看完以後再提出問題,有問題沒有解釋的話你的接受度就會降低,一個問題會衍生其它的問題,進度就會慢上很多,你也不用管那些有基礎的同學,有基礎的同學自然會在課程中找到他需要的知識

第二週 (104/09/16)
  1. 變數概念、變數型態、資料表示法、與資料的轉換 (bw)

  2. 標準函數庫,格式化輸出 printf 與格式化輸入 scanf (bw)

  3. 資料串流模型 (bw)

  4. Homeworks:
第三週 (104/09/23)
  1. 運算式與運算子、運算子的優先順序、強制的資料型態轉換 (bw)

  2. 條件控制敘述 (bw)

  3. 程式範例
    1. Arabic to Chinese (bw) (exe1, exe2)
    2. Zodiac Determination (bw) (exe)
    3. The 12 days of Xmas (bw) (exe)

  4. Homeworks:
    • 閱讀課本 5, 6
第四週 (104/09/30)
  1. 結構化程式設計、迴圈控制 (bw)

  2. 模擬 (Simulation) (bw)

  3. 迴圈綜合應用
    1. 最大公因數 (bw)
    2. Spiral Tap (bw)
    3. 二分法勘根 (bw)
    4. 其他 (bw)

  4. 程式範例
    1. while loop and if test (bw) (exe)
    2. series approximation (bw) (exe)
    3. calendar printing (bw) (exe)

  5. Homeworks:
    • 閱讀課本第 7
第五週 (104/10/07)
  1. 撰寫 C 程式用到 的核心語法 (bw)

  2. Spiral Tap (bw)

  3. 設計程序式程式的基本方法 (bw)

  4. 程式範例
    1. 羅馬數字 (bw) (exe)

  5. Homeworks:
    • 閱讀課本第 7
第六週 (104/10/14)
  1. 模擬 (Simulation) (bw)

  2. 區塊、函數、參數傳遞 (bw)

  3. 陣列使用 (bw)
    1. 為何需要陣列 (bw)
    2. 陣列應用 (bw)

  4. 程式範例
    1. 時間長度加法器 (bw) (exe)
    2. dice rolling (bw) (exe)
    3. multi-dimensional array (bw) (exe)
    4. number guessing (bw) (exe1, exe2)
    5. blind chess shuffling (bw) (exe)
  5. Homeworks:
    • 閱讀課本第 8, 9
第七週 (104/10/21)

實習 INS203

第八週 (104/10/28)
  1. 字串處理 (bw)

  2. 什麼是好程式? (bw)

  3. 程式範例
    1. 隨機漫步 (bw) (exe)
    2. 撲克牌洗牌程式 (bw) (exe)
    3. 撲克牌型判斷 (bw) (exe, exe for utf-8)

  4. Homeworks:
    • 期中考考古題 (這份考題裡沒有陣列, 但是我們的期中考有包含陣列, 也會包含我們實習過的內容)
第九週 (104/11/04)

期中考 (13:20-16:00)

請提早 10 分鐘到 INS101 找你的座位

第十週 (104/11/11)
  1. 期中考參考答案, 成績分佈

  2. 排列的產生 (bw)

  3. 數獨應用 (bw)

  4. 程式範例
    1. 三角函式列表 (bw) (exe)
    2. 刪除多餘空格 (bw) (exe)
    3. 數獨遊戲 (Sudoku) (bw) (exe, data4_12.txt, data4_10397.txt, data4_634211.txt) (demo, data4_6.txt) (GUI demo)

  5. Homeworks:
第十一週 (104/11/18)
  1. 遞迴 (bw)

  2. 遞迴設計方法與範例 (bw)

  3. 程式範例
    1. Ackermann function (bw) (exe)
    2. 大樂透投資報酬率模擬計算 (bw) (exe1, exe2, exe3)

  4. Homeworks:
    • 請閱讀投影片
第十二週 (104/11/25)
  1. 遞迴設計方法與範例 (bw)

  2. 程式範例
    1. xn (bw)

  3. Homeworks:
    • 請閱讀投影片
第十三週 (104/12/02)
  1. 二分搜尋法與遞迴 (bw)

  2. 程式範例

  3. Homeworks:
    • 請閱讀投影片
第十四週 (104/12/09)
  1. 遞迴: Counting (數獨遊戲, 動畫程式解釋, msvc100d_dlls.zip), Permutation, Combination, 數獨, 迷宮(動畫), 馬, 八后, 一筆畫 (Hamiltonian Path) --- Backtracking

  2. 指標 (bw)

  3. 程式範例
    1. Iterative Hanoi (bw) (exe)

  4. Homeworks:
第十五週 (104/12/16)
  1. 動態記憶體配置 (bw)

  2. 二維陣列 (bw)

  3. 程式範例
    1. 踩地雷 (bw) (exe1, exe2, exe3, exe4(msvc100d_dlls.zip), exe5, winmine_xp , utilwin32.zip, vc2010使用簡介, dbwin32 工具, 971013win32mine_C_FacadeOnly.rar)

  4. Homeworks:
第十六週 (104/12/23)
  1. 結構 (bw)

  2. 程式範例

  3. Homeworks:
第十七週 (104/12/30)
  1. 結構 (bw)

  2. 動態記憶體配置 (bw)

  3. Dev-C++ 和 GCC/G++ 的問題 (bw)

  4. Homeworks:
第十八週 (105/01/06) 期末考 (13:30-15:30)

請提早 10 分鐘到 INS101 找你的座位

查詢自己的期末考考卷與成績

1041期末考參考答案, 成績分佈

其它資源及練習
  1. 大學程式能力檢定 (Collegiate Programming Examination, CPE), 1star 選集, local advices

  2. 瘋狂程設

  3. 你所不知道的 C 語言

  4. UVa 線上測試, Lucky貓的 UVa(ACM)園地, Ruby兔的ACM園地

  5. UVa problem solver: UVA toolkit, uDebug

  6. Algorithmist - method to solve -- UVa解題方法提示

  7. 演算法筆記

  8. Codeforces Online Judge

  9. TIOJ

  10. POJ

  11. Topcoder

  12. Timus Online Judge

  13. ZeroJudge 高中生程式解題系統

一個學期很快結束了, 這個學期裡很多同學辛苦地調整過去所建立的學習方式, 過去的各種科目都有考試作為目標, 一方面也作為課程內容的界限, 超過考試範圍的都不需要花腦筋, 不會也就算了, 考試前來不及會的, 考試後當然也就算了, 從這個課程開始你需要發現不是這樣的了, 未來的各種課程裡, 你需要在這個課程裡學到的基本方法, 你不能邊學邊就把它忘了, 你需要提升自己的學習能力, 這比起成績來說更有價值, 寒假裡其實我們是沒有放假的, 如果你覺得你想要在假期裡加強一些什麼, 歡迎你和我討論, 遇見問題當然也歡迎你來討論, 有的時候自己一個人在做很多事都會遇見很大的阻力, 有人可以討論的話情況就完全不一樣了, 你可以拿這學期做過的練習, 也可以去看 CPE 或是 UVa 的線上題目作為練習, 有一些參考書籍是為這些設計的, 需要的話告訴我, 如果幾個同學一起有興趣的話, 也可以幫你們講一些需要的資料結構和演算法, 如果你對於物件導向程式或是介面程式有興趣, 也可以來討論這些, 如果你對於物聯網以及一些網路裝置有興趣, 同樣歡迎你來討論, 最後, 如果你對於密碼學, 資訊安全有興趣, 更歡迎你加入我們的研究。

在接下來的資料結構, 組合語言, 演算法課程裡, 如果你覺得我可能對你會有幫助, 直接告訴我, 跟我約時間聊一聊, 試看看我們這個課程能不能變成一種保證班的概念, 也許你覺得這學期上課好像睡得挺好, 沒有學得很好, 擔心我會不太理你, 覺得實習或是課輔的時候很少幫你看程式, 不如說掰掰了吧! 其實你想多了, 我相信很多同學在這個學期裡, 因為學習環境的變化, 生活環境的變化, 還沒有放下太多的精力去學習, 或是覺得投入的力氣好像沒有相對的成果, 相信你開始熟悉以後, 決定到底自己要什麼以後, 自然能夠有自己能夠滿意的表現, 當老師其實最辛苦的就是要等候了....相信你想要會的時候, 你的學習一定會有突破的, 以往有很多學長在幾年的學習失敗以後, 仔細想想就會發現其實關鍵在於遇見問題都沒有人可以問, 每一個課程的時間都很短, 還來不及進入狀況就結束了, 真的發現問題時課程已經結束了, 表現又不怎麼樣, 就不好意思去找老師問了. 最後以失敗收場, 希望你們在接下來的時間裡都不會遇到這樣的狀況......過去幾年一直有學長會持續和我討論, 害我都對其他老師的課程和作業有點熟悉了, 不過相信他們所花的時間也都有相當的收穫 (換個人談談, 常常就是會讓自己有突破的)。

程式設計課程 首頁

製作日期: 09/13/2015 by 丁培毅 (Pei-yih Ting)
E-mail: pyting@mail.ntou.edu.tw TEL: 02 24622192x6615
海洋大學 電機資訊學院 資訊工程學系 Lagoon