學期(如2024-2025-1) 學號(20241418) 《計算機基礎與程式設計》第八週學習總結
教材學習內容總結
彙編:組合語言(Assembly Language)
組合語言是一種低階程式語言。它與計算機硬體緊密相關,是介於機器語言和高階程式語言之間的一種程式設計語言。機器語言是由 0 和 1 組成的二進位制程式碼,計算機硬體可以直接識別和執行。而組合語言使用助記符(Mnemonic)來代替機器語言的二進位制指令,使得程式設計師能夠更方便地編寫程式,這些助記符通常是一些英文縮寫,它們對應著特定的機器指令。
例如,在 x86 架構的組合語言中,“MOV” 是資料傳送指令的助記符。它用於將資料從一個位置傳送到另一個位置。如果要將暫存器 AX 中的內容傳送到暫存器 BX 中,可以寫成 “MOV BX, AX”,而這條指令在機器語言層面可能對應的是一串二進位制程式碼,如 “1000100111011000”(這只是示例,實際的機器碼因處理器和指令格式等因素而不同)。
面嚮物件語言三要素:面嚮物件語言主要包含封裝、繼承和多型這三個要素。
封裝(Encapsulation)
定義
封裝是指將資料(屬性)和運算元據的方法(函式)組合在一起,形成一個獨立的單元,也就是類(Class)。透過這種方式,類內部的資料結構和實現細節對外界是隱藏的,只有透過類提供的公共介面才能訪問和操作這些資料。這樣可以有效地保護資料的完整性,防止外部程式碼對資料進行不恰當的訪問和修改。
示例
以一個簡單的 “銀行賬戶(BankAccount)” 類為例。這個類可能有兩個屬性:賬戶餘額(balance)和賬戶所有者(owner),還有兩個方法:存款(deposit)和取款(withdraw)。
在程式碼實現中,賬戶餘額(balance)這個屬性通常是被封裝起來的,外部程式碼不能直接訪問和修改它。例如在 Python 中,可以使用雙下劃線(__)來表示私有屬性,像 “self.__balance”。外部程式碼如果要改變賬戶餘額,必須透過類提供的存款(deposit)和取款(withdraw)方法來操作。
這樣做的好處是可以確保賬戶餘額的更新是符合銀行賬戶的業務規則的。比如,在取款(withdraw)方法中可以新增驗證邏輯,防止賬戶餘額變為負數,從而保證了資料的完整性和安全性。
繼承(Inheritance)
定義
繼承是一種在已有類的基礎上建立新類的機制。新類(稱為子類或派生類)可以繼承已有類(稱為父類或基類)的屬性和方法,並且可以根據需要新增新的屬性和方法,或者重寫(Override)父類的方法。繼承體現了類之間的層次關係,它可以幫助我們複用程式碼,減少程式碼的冗餘。
示例
考慮一個 “動物(Animal)” 類作為父類,它有屬性 “物種(species)” 和方法 “發出聲音(make_sound)”。然後可以建立 “狗(Dog)” 類和 “貓(Cat)” 類作為 “動物(Animal)” 類的子類。
“狗(Dog)” 類和 “貓(Cat)” 類繼承了 “動物(Animal)” 類的 “物種(species)” 屬性和 “發出聲音(make_sound)” 方法。同時,“狗(Dog)” 類可以重寫 “發出聲音(make_sound)” 方法,使其返回 “汪汪” 的聲音,而 “貓(Cat)” 類可以重寫這個方法,使其返回 “喵喵” 的聲音。這樣就透過繼承實現了程式碼的複用和個性化的擴充套件。
在物件導向的程式語言中,不同語言實現繼承的語法有所不同。例如在 Java 中,使用 “extends” 關鍵字來表示繼承關係,如 “class Dog extends Animal”。
教材學習中的問題和解決過程(先問 AI)
第一個問題:組合語言的優勢?
解答:執行效率高
組合語言能夠直接操作計算機硬體,程式設計師可以精確地控制 CPU 的暫存器、記憶體單元等硬體資源。例如,在編寫對時間要求極高的程式,如實時作業系統的核心部分或高速資料採集系統時,透過組合語言可以將指令安排得緊湊高效。因為它沒有高階語言中諸如編譯器最佳化不徹底、執行時環境等因素的干擾,能夠以最快的速度執行指令序列。
以一個簡單的加法運算為例,在高階語言中,編譯器可能會生成一系列複雜的指令來實現加法,包括載入資料、檢查資料型別、進行運算等步驟。而在組合語言中,可以直接使用如 “ADD”(x86 架構下的加法指令)指令對暫存器中的資料進行相加,減少了不必要的中間環節,大大提高了運算速度。
硬體控制精準
組合語言與計算機硬體緊密相連,不同的 CPU 架構都有對應的組合語言指令集。這使得它在開發需要與特定硬體深度互動的程式時具有不可替代的優勢。
比如在嵌入式系統開發中,開發人員需要對微控制器的各種外設(如定時器、串列埠通訊模組、模數轉換器等)進行精確控制。使用匯編語言可以直接對這些外設的暫存器進行讀寫操作。以控制定時器為例,透過寫入特定的暫存器值來設定定時器的計數初值、工作模式等引數,能夠精準地實現定時功能,滿足諸如工業控制中的精確定時取樣等需求。