2021-2022-1學期 20212424《網路空間安全專業導論》第三週學習總結
學習收穫
一,第六章
6·1計算機操作:
計算機的定義:
能夠儲存,檢索和處理資料的可程式設計電子裝置。
可程式設計的(programmable)
儲存(store)
檢索(retrieve)
處理(process)
儲存,檢索和處理是計算機對資料能夠執行的動作。
6·2機器語言:
機器語言(machine language):由計算機直接使用的二進位制編碼指令構成的語言。
虛擬機器(virtual computer machine):為了模擬真實機器的重要特徵而設計的假象機器。
*Pep/9的基本特性:
程式計數器(PC),包含下一條即將被執行的指令的地址。
指令暫存器(IR),包含正在被執行指令的一個副本。
累加器(A),用來儲存資料和運算的結果。
Pep/9的CPU
Pep/9的儲存器
Pep/9的指令格式:
指令說明符(instruction specifier)8位
運算元說明符(operand specifier)16位
操作程式碼(operation code)4位或8位操作碼,暫存器,定址模式說明符(addressing mode specifier)+指令的指令說明符部分
一些示例指令:
Pep/9的輸入/輸出:
遵循的設計原則是記憶體對映輸入/輸出(memory-mapped I/O)將輸入裝置與主存中特定的、固定的地址聯絡起來。在Pep/9中輸入裝置地址在FC15,輸出裝置在地址FC16。
模型:
將輸入裝置中的值載入累加器中,將字元載入累加器中,將累加器中的值儲存到輸出裝置的地址中。使用ASCII字符集來表示字元,我們可以通過使用載入位元組和儲存位元組的操作來實現Pep/9的輸入和輸出。
6·4組合語言
組合語言(assembly language):一種低階語言,用助記碼錶示特定計算機的機器語言指令。
彙編器(assembler):把組合語言程式翻譯成機器程式碼的程式。
Pep/9組合語言:
運算元用0x和十六進位制表示,接下來是逗號,最後是定址模式(由字母i(立即定址)或d(直接定址)說明)。
彙編器指令(assembler directive):有時也稱為偽操作(pseudo-operation),翻譯程式時用的指令。
Pep/9彙編器忽視在分號後面的任何字元,這就允許我們在指令旁邊添加註釋(comment):為讀者提供解釋性的文字。
數字資料、分支、標籤:
分支(branch):指出執行下一條指令的指令。
標籤(label):對記憶體位置起的名字,可以將這個名字當作運算元。標籤和它對應的地址會在程式碼清單後以符號表(symbol table)的形式進行展示。
列印錯誤資訊的標籤:BRLT指令被用來在累加器包含附屬的時候進行跳轉。在列印錯誤資訊後,一條無條件分支將會跳轉到程式的最後,標籤為finish。
組合語言中的迴圈:程式首先從使用者那裡讀取一個數字,用來說明將會有多少個數被加到sum中。每一次迴圈,計數器都加1並使用BREQ指令檢查它是否到達極限,如果到了極限值,那麼迴圈終止,程式停止。如果沒有,那麼回到迴圈頂部繼續處理下一個值。
6·5表達演算法
演算法(algorithm):解決方案的計劃或概要,或解決問題的邏輯步驟順序。
虛擬碼(pseudocode):一種表達演算法的語言。
6·6測試
測試計劃(test plan):說明如何測試整個程式的文件。
程式碼覆蓋(明箱)測試法(code-coverage(clear-box testing):通過執行程式碼中所有語句的程式或子程式的測試法。
資料覆蓋(暗箱)測試法(data-coverage(black-box)testing):把程式碼作為一個暗箱,基於所有可能的輸入資料測試程式或子程式的方法。
測試計劃實現(test-plan implementation):用測試計劃中規定的測試用例驗證程式是否輸出預期的結果。
第七章、問題求解與演算法設計
7·1如何解決問題
提出問題:
尋找相似的情況
分治法
演算法(解決方案):在有限的時間內,用有限的資料解決問題或子問題的明指令集合。
7·2有簡單變數的演算法
簡單變數是指那些不能被分開的變數,是儲存在一個地方的值。
帶有選擇的演算法 Determine
帶有迴圈的演算法:
1·計數控制迴圈:使用一個特殊的變數叫做迴圈控制變數(loop control variable)
第一部分是初試化,第二部分是測試,第三部分是增量
while迴圈被稱為前測試迴圈(pretest loop)
2`事件控制迴圈
事件必須初始化,事件必須被測試,事件必須更新
巢狀結構(nested structure): 控制結構嵌入另一個控制結構,又稱為巢狀邏輯(nested logic)
3`平方根
抽象步驟(abstract step):細節仍未明確的演算法步驟。
具體步驟(concrete step):細節完全明確的演算法步驟。
7·3複雜變數
陣列是同構專案中的有名集合,可以通過單個專案在集合中的位置訪問它們。專案在集合中的位置叫做索引。
記錄是異構專案中的有名集合,可以單獨訪問其中的專案。所謂異構,就是指集合中的元素不必相同。集合可以包括 整數或其他型別的資料。
第三個複合資料結構,是面向程式設計物件中的類。
7·4搜尋演算法
順序搜尋
有序陣列中的順序搜尋
二分檢索(binary search)
7`5排序
選擇排序法,只有三個抽象步驟,即確定陣列是否已經排好序了、找到最小元素索引、和互換兩者位置
氣泡排序法:從陣列的最後一個元素開始,比較相鄰的元素對,如果下面的元素小於上面的元素,則交換兩者位置。
在進入迴圈之前,我們把一個不二變數設為FALSE,發生交換操作,便把它設定為TURE,若布林變數仍未=為FALSE,則陣列有序。
插入排序 類似於冒泡過程。
7·6遞迴演算法
遞迴(recursion):演算法呼叫它本身的能力。
子程式語句
遞迴階乘
遞迴二分檢索
7·7幾個重要思想
資訊遮蔽(informaiton hiding):隱蔽模組中的細節以控制對這些細節的訪問的做法。
抽象(abstraction):複雜系統的一種模型,只包括對觀察者來說必須的細節。
資料抽象(data abstraction):把資料的邏輯檢視和它的實現分離開。
過程抽象(procedural abstraction):把動作的邏輯資料區和它的實現分離開。
控制抽象(control abstraction):把控制結構的邏輯檢視和它的實現分離開。
控制結構(control structure):用於改變正常的順序控制流的語句。
學習問題
1.第六、七章的內容很抽象很複雜。
2.知識點難以理解。
解決方法
與同學交流,上課時將不懂的地方提出來。