2021-2022第一學期20212310《電腦科學概論》第四周自學總結
本次自習中,我學習了抽象資料型別與子程式和麵向物件設計與高階程式設計語言兩塊內容,這兩部分是對在程式設計層中對前兩章的進一步延伸與拓展,通過自上而下的模型對程式的執行作一些初步的觀察,並且引出高階語言。
第八章
一些抽象的容器被稱為抽象資料型別。抽象資料型別(abstract data type,ADT):屬性(資料和操作)明確地與特定實現分離的容器。
資料結構(data structure):一種抽象資料型別中的複合資料域的實現。
容器(container):存放和操作其他物件的物件。
有幾種最常見的抽象結構:
棧是一種抽象複合結構,只能從一端訪問棧中的元素。處理型別為LIFO(last in first out),即刪除的項總是在棧中時間最短的專案。
佇列也是種抽象結構,佇列中的專案從一端入,從另一端出。處理型別為FIFO(first in first out),即刪除的總是在佇列中時間最長的專案。
、 列表有三個屬性:專案是同構的,專案是線性的,列表是變長的。線性(linear)表示每個專案除了第一個都有一個獨特的組成部分在它之前,除了最後一個也都有一個獨特的組成部分在它之後。列表也被稱為鏈式結構。鏈式結構(linked structure):一個將資料項和找到下一項位置的資訊儲存到同一容器的實現方法。鏈式結構以節點的概念為基礎。一個節點由兩個部分構成:使用者的資料和指向列表的下一個節點的連結或指標。
分層體系結構稱為樹。
二叉樹(binary tree):具有唯一起始節點(根節點)的抽象複合結構,其中每個節點可以有兩個子女節點,根節點和每個節點之間都有且只有一條路徑。
根(Root):樹中唯一的開始節點。
葉節點(leaf node):沒有子女的樹節點。
圖是由一組節點和連線節點的線段構成。
圖(graph):由一組節點和一組節點相互連線起來的邊構成的資料結構。
頂點(vertex):圖中的節點。
邊(弧)(edge(arc)):表示圖中兩個節點的連線的頂點對。
無向圖(undirected graph):其中的邊沒有方向的圖。
有向圖(directed graph(digraph)):其中的邊是從一個頂點指向另一個頂點(或同一個頂點)的圖。
鄰頂點(adjacent vertice):通過邊連線起來的兩個頂點。
路徑(path):連線圖中兩個頂點的一系列頂點。
而現在最經典的圖演算法有三個,分別是深度優先搜尋,廣度優先搜尋,和單源最短路搜尋。
1.深度優先演算法:用棧來儲存訪問的頂點。用深度優先搜尋來檢查第一個與起點相鄰的頂點。如果是它是終點,則搜尋結束。否則,檢查所有與第一個頂點相鄰的頂點。
2.廣度優先搜尋:用佇列來儲存元素的順序。優先檢查所有與起點相鄰的頂點,而不是檢查與這些頂點相鄰的其他頂點。
3.單元最短搜尋:被檢索的元素是佇列中擁有最高優先度的元素,稱為優先佇列(priority queue)。
子程式有以下幾種相關概念:
引數列表(parameter list):程式中兩部分之間的通訊機制。
形參(parameter):列在子程式名後的括號中的識別符號。
實參(argument):子程式呼叫中列在括號中的識別符號。
傳遞引數的基本方式有兩種,即通過值傳遞和通過引用(或地址)傳遞。
值參(value parameter):由呼叫單元傳入實參的副本(寫在留言板上)的形參。
引用引數(reference parameter):由呼叫單元傳入實參的地址(寫在留言板上)的形參。
第九章
高階語言是實現這些演算法的正式演算法,需要翻譯程式把用高階語言編寫的程式翻譯成機器碼。
物件(object):在問題背景中相關的事物或實體。
物件類(object class)或類(class):一組具有相似的屬性和行為的物件的描述。
欄位(field):表示類的屬性。
方法(method):定義了類的一種行為的特定演算法。
設計方法:1.頭腦風暴。2.過濾。3.場景。4。責任演算法。5.總結。
封裝(encapsulation):把資料和動作集中在一起,使資料和動作的邏輯屬性與它們的實現細節分離。
示例:1.問題。2.頭腦風暴和過濾。3.責任演算法。
用匯編語言編寫的程式要輸入彙編器,由它把組合語言指令翻譯成機器碼,最終執行的是彙編器輸出的機器碼。
編譯器(compiler):把用高階語言編寫的程式翻譯成機器碼的程式。
直譯器(interpreter):輸入用高階語言編寫的程式,指導計算機執行每個語句指定的動作的程式。
可植入性是Java最重要的特性。
位元組碼(bytecode):編譯Java原始碼使用的標準機器語言。
位元組碼不是某個特定硬體處理器的機器語言,任何具有JVM的機器都可以執行編譯過的Java程式。
設計程式語言有兩種規範:命令式範型:1.面向過程程式設計是一種命令式模型,在這裡語句被分組為子程式。2.面向物件視角是與物件互動的一種方式。每個物件負責執行它自己的動作,在面向過程的反省中,資料被認為是被動並且被程式所操作的。
宣告式範型:宣告式範型是一個描述結果的模型,但是完成結果的過程則不被描述。有兩種基本模型,即函式式和邏輯式。1.函式式模型基於函式的數學概念。2.邏輯程式設計基於數理邏輯的原則。
布林表示式(Boolean expression):一個識別符號序列,識別符號之間由相容的運算子分隔,求得的值是true或false。
強型別化(strong typing):每個變數都有一個型別,只有這種型別的值才有儲存到該變數中。
資料型別(data type)(整數、實數、字元、布林型、字串):一組值以及能夠應用這種型別的值的基本操作集合的說明。
宣告(declaration):把變數、動作或語言中其他實體與識別符號關聯起來的語句,使程式設計師可以通過名字引用這些專案。
保留字(reserved word):一種語言中具有特殊意義的字,不能用它作為識別符號。
區分大小寫(case sensitive):大寫字母和小寫字母被看作是不同的;兩個拼寫方法相同但大小寫形式不同的識別符號被看作是兩個不同的識別符號。
控制結構(control structure):確定程式中的其他指令的執行順序的指令。
非同步(asynchronous):不與計算機中的其他操作同時發生,與程式的操作不同步。
控制邏輯裡面有兩種方法分別是1.巢狀邏輯。2.非同步處理。
非同步(asynchronous):不與計算機中的其他操作同時發生,與程式的操作不同步。
封裝(encapsulation):實施資訊隱蔽的語言特性。
物件(問題求解階段)(object(problem-solving phase)):與問題背景相關的事物或實體。
類(實現階段)(class(implementation phase)):物件的模式。
物件類或類(問題求解階段)(object class or class(problem-solving phase)):屬性和行為相似的一組物件的說明。
物件(實現階段)(object(implementation phase)):類的一個例項。
例項化(instantiate):建立類的物件。
繼承(inheritance):類獲取其他類的屬性(資料欄位和方法)的機制。
超類是被繼承的類,派生類是繼承的類。類構成了繼承體系結構。
多型(polymorphism):語言在執行時確定給定呼叫將執行哪些可能的方法的能力。