班級連結 | 2024計算機基礎與程式設計 |
---|---|
作業要求 | 第五週作業 |
作業目標 | ①Pep/9虛擬機器 ②機器語言與組合語言 ③演算法與虛擬碼 ④測試:黑盒,白盒 |
教材學習內容總結
《電腦科學概論》第六章
- 計算機操作:
- 介紹了計算機的基本操作,包括機器語言的基本概念。
- 機器語言是由一系列二進位制程式碼組成,計算機可以直接理解和執行的語言,但它難以編寫和理解。
- Pep/9虛擬機器:
- 作為一臺虛擬機器,Pep/9用來說明機器語言的輸入/輸出操作。
- 組合語言:
- 組合語言是一種低階語言,使用助記符代替機器語言的二進位制程式碼,使得程式更易於編寫和理解。
- 組合語言需要透過彙編器轉換成機器語言才能被計算機執行。
- 表達演算法:
- 介紹了虛擬碼的功能,包括變數、賦值、輸入/輸出、重複和選擇等。
- 虛擬碼是一種表達演算法的語言,它使得演算法的描述更加接近自然語言,易於理解。
- 測試:
- 討論了所有程式都必須經過測試以確定其正確性。
- 測試計劃是一個文件,說明了要全面測試程式需要執行的次數以及執行程式使用的資料。
- 每套輸入的資料稱為測試用例。
《C語言程式設計》第四章
- 單個字元的輸入/輸出:
- 介紹字元常量的概念。
- 講解如何進行字元的輸入和輸出操作。
- 資料的格式化螢幕輸出:
- 討論如何使用不同的格式符(如%d、%f、%s等)來格式化輸出資料。
- 介紹printf函式的使用,包括字串、數值、字元等不同型別資料的輸出。
- 資料的格式化鍵盤輸入:
- 討論如何使用scanf函式進行格式化輸入,包括如何處理輸入的數值、字元和字串。
- 介紹輸入時的格式控制和輸入驗證。
- 擴充內容:
- 討論使用%c格式符輸入字元時可能遇到的問題,例如緩衝區讀取換行符的問題。
- 提供解決%c格式符存在問題的解決方法,比如如何正確讀取單個字元。
教材學習中的問題與解決過程
問題1:如何將演算法轉換為虛擬碼?
AI:
- 理解演算法:
在開始之前,確保你完全理解演算法的邏輯流程和目標。 - 確定輸入和輸出:
確定演算法的輸入(即演算法開始時需要的資料)和預期的輸出(即演算法完成後應產生或返回的資料)。 - 分解演算法:
將演算法分解為更小的步驟或邏輯塊,例如初始化、迭代、條件判斷、計算等。 - 使用控制結構:
使用順序結構(步驟按順序執行)、選擇結構(如if-else語句)和迭代結構(如for或while迴圈)來控制演算法的流程。 - 描述操作:
用簡單的英語描述每個步驟的操作。例如,“計算總和”,“檢查是否滿足條件”等。 - 使用虛擬碼關鍵字:
引入虛擬碼關鍵字,如 if, else, while, for, function, return 等,來表示不同的控制結構。 - 定義變數和資料結構:
為演算法中使用的資料定義變數和資料結構,並在演算法中適當位置進行初始化。 - 註釋和清晰性:
在需要的地方新增註釋,以提高虛擬碼的可讀性。 - 檢查邏輯:
檢查虛擬碼的邏輯是否與原始演算法一致,確保沒有遺漏任何步驟。 - 迭代和最佳化:
根據需要對虛擬碼進行迭代和最佳化,以提高畫質晰度和效率。
問題2:為什麼使用兩次scanf時第二次會出現故障?
AI:
存在輸入緩衝區問題:在使用scanf函式時,可能會遇到輸入緩衝區中殘留的換行符或其他字元,導致程式行為異常。
可以在scanf之後使用getchar()函式迴圈讀取並丟棄緩衝區中的字元,直到遇到換行符或檔案結束符(EOF)。另一種方法是使用scanf的格式字串來忽略緩衝區中的特定字元。
基於AI的學習
學習進度條
計劃學習時間:20h
實際學習時間:20h