1. 程式人生 > 其它 >2021-2022-1學期 20212422《電腦科學概論》第四周學習總結

2021-2022-1學期 20212422《電腦科學概論》第四周學習總結

本週內,我學習了《電腦科學概論》第八、九章的知識。第八章的知識主要聚焦了計算機的抽象資料型別與子程式,介紹了它們的屬性與操作以及這些操作是如何實現的。第九章的內容主要是關於較高層次的程式設計語言以及面向物件設計的有關概念及操作方法。

第八章
抽象資料型別與子程式
以下為知識體系腦圖

抽象資料型別
在計算機領域,能夠實現複合結構的抽象的容器叫做抽象資料型別
(Abstract Data Type,ADT)
是屬性(資料與操作)明確地與特定實現分離的容器
資料結構:一種抽象資料型別中的符合資料域的實現
容器:存放和操作其他物件的物件

(一)資料結構
1.棧
LIFO(意為後進先出),可在第一個位置插入元素(Push),也可以刪除第一個元素(Pop)。
一種訪問方式的說法為只能從一端訪問;另一種訪問方式的說法為刪除的項總是在棧中時間最短的專案
整個LIFO行為都體現在了刪除操作上

2.佇列
FIFO(先進先出)佇列中的專案從一端入,從另一端出;另一種說法是刪除的項總是在丟列中時間最長的專案。
插入操作在佇列尾部進行,而刪除操作在佇列頭部進行

3.列表
列表有三個屬性特徵:專案是同構的,專案是線性的,列表是變長的
線性:每個專案除了第一個都有一個獨特的組成部分在它之前,除了最後一個也都有一個獨特的組成部分在它之後
列表可以被形象化為鏈式結構
鏈式結構(linked structure):一個將資料項和找到下一項位置的資訊儲存到同一容器的實現方法

4.樹
分類一般發生在高層,隨著不斷向下的移動,標籤會變得更加具體,每一個節點下方都可能會有許多的節點
這種分層體系叫做樹
(1)二叉樹(binary tree)
具有唯一起始點(根節點)的抽象複合結構,其中每個節點都可以有兩個子女節點,根節點和每個節點之間有且只有一條路徑

根(root):樹中唯一的開始節點
葉節點(leaf node):沒有子女的樹節點

(2)二叉檢索樹

二叉檢索樹就類似於已排序的列表,節點與節點之間存在語義排序

·二叉檢索樹的構造
·輸出二叉檢索樹中的資料

(二)圖
圖(graph):有一組節點和一組把節點相互連線起來的邊構成的資料結構
頂點(vertex):圖中的節點
邊(弧):表示圖中兩個節點的連線的頂點對
無向圖(undirected graph):其中的邊沒有方向的圖
有向圖(directed graph):其中的邊是從一個頂點指向一個頂點(或同一個頂點)的圖

1.建立圖

2.圖演算法
(1)深度優先搜尋
下圖為英文語句解釋

把一個頂點的所有相鄰的頂點都放到棧內,就標記這個頂點被訪問過

(2)廣度優先搜尋
下圖為英文語句解釋

在此種搜尋中,棧不再是一個適合尋找最早路徑的資料結構。它是按照元素出現的相反順序來儲存元素。

(3)單源最短路搜尋
一種可以顯示最短步數的演算法
我們想檢索離當前頂點最近的頂點,也就是說,於此頂點相連的邊權值最小的頂點,我們稱這種抽象容器為優先佇列(priority queue),被檢索的元素是佇列中有最高優先度的元素。
此演算法相較前兩種較為複雜

(三)子程式
1.引數傳遞
引數列表:程式中兩部分之間的通訊機制
形參:列在子程式名後的括號中的識別符號
實參:子程式呼叫中列在括號中的識別符號

由於實參和形參是根據位置匹配的,所以它們的名字不必一致
當需要多次調動一個子程式而每次呼叫的實參不同時,這點非常有用。以這種方式傳遞的形參通常叫做位置形參。

2.值參與引用引數
值參:由調動單元傳入實參的副本(寫在留言板上)的形參
引用:由調動單元傳入實參的地址(寫在留言板上)的形參

第九章
面向物件設計與高階程式設計語言

一、面向物件方法
(一)面向物件
物件:在問題背景中相關的事物或實體
物件類或類:一組具有相似屬性和行為的物件的描述
欄位:表示類的屬性
方法:定義了類的一種行為的特定演算法

(二)設計方法
1.頭腦風暴

2.過濾

3.場景

4.責任演算法

5.總結
面向物件設計的重點是要轉換的資料物件,結果生成的是物件的體系結果

二、翻譯過程
(一)編譯器
定義:把用高階語言編寫的程式翻譯成機器碼的程式

(二)直譯器
定義:輸入用高階語言編寫的程式,指導計算機執行每個語句指定的動作的程式

位元組碼:編譯Java原始碼使用的標準機器語言

第二代高階語言可以分為兩種,一種是要編譯的,一種是要解釋的。用要解釋的語言編寫的程式通常比要編譯的程式的執行速度慢很多

三、程式設計語言範型
(一)命令式範型
1.面向過程的範型
2.面向物件的範型

(二)宣告式範型
1.函式式模型
2.邏輯程式設計

四、高階程式設計語言的功能性
(一)布林表示式

布林表示式:一個識別符號序列,標示符之間由相容的運算子分隔,求得的值是true或false

(二)資料歸類
強型別比:每個變數都有一個型別,只有這種型別的值才能儲存到該變數中
資料型別:一組值以及能夠應用與這種型別的值的基本操作集合的說明
1.資料型別
整數
實數
字元
布林型
字串

2.宣告
把變數、動作或語言中的其他實體與識別符號關聯起來的語句,使程式設計師可以通過名字引用這些專案
保留字:一種語言中具有特殊意義的字,不能用它作為識別符號
區分大小寫:大寫字母與小寫字母被看作是不同的;兩個拼寫方法相同但大小寫形式不同的識別符號被看作是兩個不同的識別符號

(三)輸入/輸出結構

(四)控制結構

1.巢狀邏輯

2.非同步處理
非同步:不與計算機中的其他操作同時發生;換句話說,與程式的操作不同步

五、面嚮物件語言的功能性
(一)封裝
封裝:實施資訊隱蔽的語言特性
物件(問題求解階段):與問題背景相關的事物或實體
類(實現階段):物件的模式
物件類或類(問題求解階段):屬性和行為相似的一組物件的說明
物件(實現階段):類的一個例項

(二)類
例項化:建立類的物件

(三)繼承
繼承:類獲取其他類的屬性(資料欄位和方法)的機制

(四)多型
多型:語言在執行時確定給定呼叫將執行哪些可能的方法的能力

以下為本章知識的腦圖

總結
第八、九章的內容承接了第六、七章,知識仍舊十分抽象,在研讀教材的過程中,我依然感到十分吃力,我希望在以後的每一堂課上都能夠有所收穫,而自己也能夠慢慢地理解書中的這些內容。