- 學校 : 國立中央大學
- 開課單位 : 機械工程學系
- 課程名稱 : 程式設計與應用
- 授課教授 : 林錦德 助理教授
- 修課時間 : 2021年02月~2021年06月
- 最終成績 : 99
名稱 | 分數 | 名稱 | 分數 | 名稱 | 分數 |
---|---|---|---|---|---|
作業02 | 100 | 小考02 | 100 | 期中模擬考 | 100 |
作業03 | 100 | 小考03 | 100 | 期中考試 | 79 |
作業04 | 100 | 小考04 | 100 | 期末考試 | 94 |
作業05 | 100 | 小考05 | 100 | 期末觀念測試 | 79.9 |
作業07 | 80 | 小考07 | 100 | ||
作業10 | 100 | 小考10 | 100 | ||
作業11 | 100 | 小考11 | 100 | ||
作業12 | 100 | 小考12 | 100 | ||
作業13 | 95 | 小考13 | 100 | ||
作業14 | 95 | 小考14 | 100 | ||
作業15 | 100 | 小考15 | 90 | ||
作業16 | 100 | 小考16 | 100 |
課程內容歸錦德老師所有,本人僅整理出大綱以供自己回顧
- Week1 - Hello World! C#
學習C#基礎語法(變數/判斷式/迴圈/陣列/指標/參考)
- Week2 - 程式測試與除錯技巧
學習如何使用Visual Studio的除錯功能
- Week3 - WINDOWS FORM 設計(1) - 基本Windows Form 設計
學習如何使用Winform中的Container/Tab/TextBox/Timer/Button
- Week4 - WINDOWS FORM 設計(2) - 常用控制項介紹與實作
學習如何使用Winform中的Label/CheckBox/ComboBox/ListBox/Event/DataTable
- Week5 - 讀寫操作 - 字串操作
學習字串建立/格式化/拆解/正則表示式/型別轉換
- Week7 - 讀寫操作 - 檔案系統的操作與管理(2)
學習檔案系統(檔案讀取/資料流)
- Week8 - Midterm Mock Exam
- Week9 - Midterm Exam
- Week10 - 程式設計架構 - 命名空間、物件與DLL
學習命名空間/類別/靜態方法/委派/事件/動態連結檔的製作與使用
- Week11 - 第三方函式庫(1) - 擷取與顯示麥克風訊號
學習使用第三方函式庫/Chart Control
- Week12 - 多執行緒程式設計(1) - 使用與控制單一工作執行緒
學習執行緒啟動/控制
- Week13 - 資源管理 - 物件生命週期與管理,GC 機制
學習物件週期及Garbage Collection(GC)
- Week14 - 多執行緒程式設計(2) - 多執行緒互動、異常與設計樣本
學習多執行緒的互動/鎖定/死結/非同步程序/異常處理
- Week15 - 第三方函式庫(2) - 使用第三方組件的注意事項
- Week16 - 使用SQLite的C語言DLL
- Week17 - 觀念測試
- Week18 - Final Exam
-
Week02_Debug
EX03為二分逼近法,找出原始程式中的部分錯誤,並修正
f(x) = x^2 - 2.8x + 5
Theoretical Minimum:x=1.4, f(x) = 3.04
Program Result:Find min value 3.04000002518296 at x = 1.39984130859375
-
Week03_WinFormDesign
EX03為模擬機械手臂的狀態及位置,狀態分為靜止/移動/夾持/放置,位置分為原點/輸送帶/紅色倉儲區/綠色倉儲區- 夾取紅色(狀態/位置): 移動/原點 (wait for 5 sec) -> 夾持/紅色倉儲區 (wait for 2 sec) -> 移動/紅色倉儲區 (wait for 8 sec) -> 放置/輸送帶 (wait for 2 sec) -> 移動/輸送帶 (wait for 7 sec) -> 靜止/原點
- 夾取綠色(狀態/位置): 移動/原點 (wait for 8 sec) ->綠色倉儲區 (wait for 2 sec) ->綠色倉儲區 (wait for 5 sec) -> 放置/輸送帶 (wait for 2 sec) -> 移動/輸送帶 (wait for 7 sec) -> 靜止/原點
-
Week04_WinFormDesign2
EX04為一個dataGridView,並且具有四個欄位(Name/Height/Weight/Age),當第一次開啟時會載入預設的10人資料,當使用者按下儲存會保留表格內的資料,載入會恢復上次儲存的資料,若沒有儲存過則是預設資料。 -
Week06_StringManipulator
HW為一個密碼強度檢察功能視窗,須滿足密碼條件(至少1個英文大寫、至少2個英文小寫、至少2個數字字元) -
Week10_ProgrammingStructure
HW為將Box.dll加入參考,可透過文字框顯示長度寬度發生改變的時間及數值 -
Week12_BasicThread
HW為使用者在文字框輸入文字內容並按下按鈕,執行緒會將文字內容呈現在第一個文字框裡面 -
Week13_ResourceManagement
HW為設計一個能夠寫入資料的類別(MyDataWriter),當異常狀態發生(未正常關閉檔案)皆能釋放資源 -
Week14_AdvancedThreadingProgramming
避免兩個線程搶占資源,透過資源方式來避免Thrd#3: 預備從帳戶_A_轉帳到帳戶_B_,轉帳金額100 Thrd#3: 預備lock 資源: _A_ Thrd#3: 已經lock 資源: _A_ Thrd#3: 預備lock 資源: _B_ Thrd#3: 已經lock 資源: _B_ Thrd#4: 預備從帳戶_B_轉帳到帳戶_A_,轉帳金額10 Thrd#4: 預備lock 資源: _B_ Thrd#3: 從帳戶_A_提出100, 餘額:900 Thrd#3: 從帳戶_B_存入100, 餘額:1100 Thrd#3: unlock 資源: _B_ Thrd#3: unlock 資源: _A_ Thrd#3: 完成從帳戶_A_轉帳到帳戶_B_,轉帳金額100 Thrd#3: 預備從帳戶_A_轉帳到帳戶_B_,轉帳金額100 Thrd#3: 預備lock 資源: _A_ Thrd#3: 已經lock 資源: _A_ Thrd#3: 預備lock 資源: _B_ Thrd#4: 已經lock 資源: _B_ Thrd#4: 預備lock 資源: _A_
-
Week15_UseFFT
僅需繳交使用FFT函式時的注意事項
-
Week02_Exam
採用黃金比例法來求根號值,找出原始程式中的部分錯誤,並修正Input a value between 0 and 10 to find its root:2 The root of [2] is 1.41421615290795
-
Week03_Exam
設計一個計算機,具有十三個按鍵(0~9, +, =, CE),並可以讓使用者進行加法運算,按下CE時會清除結果
-
Week06_Exam
設計一個Numerical Control(NC) Program可以將G-Code中的座標透過regular expression提取出來
G-Code資料
-
Week07_Exam
設計一個座標轉換程式,可以將原本的直角座標(x, y, z),轉換成球座標(r, theta, phi)並輸出成二進制檔案(LittleEndian or Big Endian)
直角坐標資料
-
Week08_MidtermMockExam
-
Week09_MidtermExam
題目卷被收回 -
Week10_ProgrammingStructure
共分為三個專案,輸出dll,輸出exe及完成1A2B的遊戲 -
Week11_UseNAudio
將作業的單聲道改成雙聲道,並且可以設定聲音強度門檻,當超過門檻時,將紀錄的聲道/時間/強度寫入log.txt
-
Week12_BasicThread
將Week11_UseNAudio作業的內容改成按下開始錄音,再按一次則停止錄音。錄音過程中,執行緒會持續寫入使用者指定的檔案 -
Week13_ResourceManagement
可以透過與CncSimulator.dll取得handle,模擬多個CNC機台返回速度/溫度/執行時間,並且最大同時連線數為3 -
Week14_AdvancedThreadingProgramming
解決執行緒異常(檔案不存在/檔案被占用) -
Week15_UseFFT
可錄製聲音,並存檔成WAV格式(取樣率44100Hz, 樣本深度16-bits, 單聲道),可選擇開一份WAV格式的檔案,並經過濾波器後,重新存成Filtered.WAV
-
Week16_UsingSQLite
使用dllImport建立sqlite3_open、sqlite3_close、sqlite3_exec與sqlite3_free,並且可以完成"Insert into record Values ('Age','30') "。執行完成後,使用SQLLiteStudio查看week16.db可以看已添增的數值 -
Week18_FinalExam
-
分析資料夾中學生的檔案,檔案中具有一萬筆資料(學號/生日/手機號碼/學校Email),學號須由9位數字組成,生日須由YYYY-MM-DD,手機號碼須由4位數字,6位數字中間以"-"分隔。若資料符合則移動至OK,否則記錄錯誤資訊到log.txt
-
設計StudentInfo,並輸出StudentInfo.dll
BBBBBB AAA was born on 1979/10/17 上午 12:00:00, and his/her id is 111111111 2025-06-26 16689.4986898425 days from birthday. DDDDD CCC was born on 2021/6/21 上午 12:00:00, and his/her id is 999999999
-
- Visual Studio
- .NETFramework,Version=v4.8
- SQLiteStudio
Week16_Exam中會使用到SQLiteStudio查看database
SQLiteStudio - Official Website - DLL/DB位置
為了簡化重複上傳部分不必要的文件,請自行複製dll/database-
Week09_MidtermExam
cp ncu-course-programmingAndItsApplications/Week09_MidtermExam/data/student_info.csv ncu-course-programmingAndItsApplications/Week09_MidtermExam/Program_4/bin/Debug
-
Week10_ProgrammingStructure
cp ncu-course-programmingAndItsApplications/Week10_ProgrammingStructure/HW/data/* ncu-course-programmingAndItsApplications/Week10_ProgrammingStructure/HW/HW/bin/Debug
-
Week13_Exam
cp ncu-course-programmingAndItsApplications/Week13_Exam/data/* ncu-course-programmingAndItsApplications/Week13_Exam/Test13/bin/Debug
-
Week16_Exam
cp ncu-course-programmingAndItsApplications/Week16_Exam/data/* ncu-course-programmingAndItsApplications/Week16_Exam/bin/Debug
-
Week18_FinalExam
cp ncu-course-programmingAndItsApplications/Week18_FinalExam/data/data.csv ncu-course-programmingAndItsApplications/Week18_FinalExam/Test02/bin/Debug
-
我是大推錦德老師的所有課程!這門的loading其實算蠻重,畢竟很多時候都需要自己看完課前影片並完成作業,上課時間會拿來小考,老師會更改作業中的部分內容並需要現場實做出來。老師的影片算是很用心在錄影片及教材讓人淺顯易懂的學會c#及winform的基礎。走完這學期算是很有感的學會一門程式語言,雖然現在(修完課的4年)回過頭來看,有些內容又還給老師,但至少需要用到的時候還可以回來翻講義。