1. 程式人生 > 其它 >2021-2022-1學期 20212424《網路空間安全專業導論》第三週學習總結

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.知識點難以理解。
解決方法
與同學交流,上課時將不懂的地方提出來。