1. 程式人生 > 其它 >20212322《網空導論》第三週學習總結

20212322《網空導論》第三週學習總結

第六章:低階程式設計語言與虛擬碼

  1. 計算機操作
    首先我們重溫一下計算機的定義:

計算機是能夠儲存、檢索和處理資料的可程式設計電子裝置。

那麼因為資料和操作資料在指令邏輯上是相同的,它們儲存在相同的地方。要改變計算機對資料的處理,只需要改變指令即可。控制單元執行的指令能夠把資料儲存到機器的記憶體當中,在機器記憶體中檢索資料,在算術/邏輯單元中以某種方式處理資料。在機器層,處理涉及在資料值上執行算術和邏輯操作。
2計算機語言
計算機真正執行的程式設計指令是用機器語言
每種處理器都有自己專用的機器指令集合,這些指令是處理器真正能夠執行的指令。
但是事實上目前幾乎沒有程式是用機器語言編寫的,大多數程式是用高階語言編寫的,然後再翻譯成機器語言。
3虛擬機器


虛擬機器:為了模擬真實機器的重要特徵而設計的假想機器
Pep/9的基本特性
Pep/9有7個暫存器,在這裡重點研究三個。
①程式計數器 ,其中包含下一條即將被執行的指令的地址。
②指令暫存器,其中包含正在被執行的指令的一個副本。
③累加器,用來儲存資料和運算的結果。
儲存器的地址本身並不儲存在儲存器中,它們只是其中獨立位元組的名字。當涉及記憶體中某一個特定的位元組時,實際使用它的地址替代的。
一條指令由兩部分組成,即八位的指令說明符和十六位的運算元說明符。因此Pep/9的指令在長度上是1位元組或3位元組,取決於是否需要用運算元說明符。
指令說明符說明了要執行什麼操作和如何解釋運算元的位置。運算元說明符存放的是運算元本身或者運算元的地址。有些指令沒有運算元說明符。
操作程式碼長度從4位到8位不等,3位的定址模式說明符表示了怎樣解析指令中的運算元部分。
如果定址模式是000,那麼指令的運算元說明符中儲存的就是運算元。這種定址模式叫立即定址
如果定址模式是001,那麼運算元說明符中儲存的事運算元所在的記憶體地址名稱。這種定址模式叫直接定址
沒有運算元的指令稱為一元指令,沒有運算元說明符,也就是說它的長度是1位元組。
4. 建立和執行組合語言程式的步驟
選擇彙編器,使用助記碼編寫程式,適當添加註釋和標籤增加可讀性,選擇“執行原始碼”。

  1. 區分給彙編器的指令和要翻譯的指令
    給彙編器的指令稱為彙編器指令(assembler directive),這是指導彙編器完成功能所使用的指令,而要翻譯的指令則是彙編器在指導下發揮功能翻譯的指令。

  2. 區分執行一個演算法和開發一種演算法
    演算法(algorithm):解決方案的計劃或概要,或解決問題的邏輯步驟程式。

執行一個演算法是按照演算法的邏輯順序進行,而開發一種演算法是開發一種解決問題邏輯順序。

  1. 描述表達演算法時使用的虛擬碼結構。
    虛擬碼(pseudocode):一種表達演算法的語言。

輸入——判斷——操作——輸出(個人向理解)

  1. 兩種測試方式
    程式碼覆蓋(明箱)測試法(code-coverage(clear-box)testing):通過執行程式碼中的所有語句測試程式或子程式的測試方法。
    資料覆蓋(暗箱)測試法(data-coverage(black-box)testing):把程式碼作為一個暗箱,基於所有可能的輸入資料測試程式或子程式的測試方法。
    第七章 問題求解與演算法設計

    1.結合Polya提出的如何解決問題的列表,描述計算機問題求解的過程
    計算機問題求解過程包括四個階段,即分析和說明階段、演算法開發階段、實現階段和維護階段,詳見附圖。

2.簡單型別與複合型別
簡單型別:包括語言的基本型別和抽象資料型別。
複合型別:由簡單型別構成。

3.遞迴
遞迴(recursion):演算法呼叫它本身的能力。

每個遞迴演算法至少由兩種情況:基本情況和一般情況。基本情況是答案已知的情況;一般情況則是呼叫自身來解決問題的更小版本的解決方案。因為一般情況下解決的是原始問題越來越小的版本,所以程式最終達到基本情況,即答案是已知的,所以遞迴停止。

4.無序陣列和有序陣列
前者是雜亂無序排列的陣列,後者是以一定的順序排列的陣列。

5.選擇排序和插入排序
選擇排序:依次查詢符合順序的個體,每找到一個便將之以所需順序排列,之後再重新經行查詢,反覆操作直至排序成功。需要兩個完整列表的空間。
插入排序:每次迭代後,一個元素將被放在相對於其他元素來說適當的位置上。

6.快速排序演算法
其為對氣泡排序的一種改進。它的基本思想是:通過一趟排序將要排序的數分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序數列。

7.二分檢索
二分檢索是快速排列的基礎。

二分檢索(binary search):演算法假設要檢索的陣列是有序的,其中每次比較操作可以找到要找的專案或把陣列減少一半。二分檢索不是從陣列開頭開始順序前移,而是從陣列中間開始。如果要搜尋的專案小於陣列的中間項,那麼可以知道這個專案一定不會出現再陣列的後半部分,因此只需要搜尋陣列的前半部分即可