《學會 C 語言》學習筆記(一):程式與程式邏輯

前言

本文為《學會 C 語言》一書的學習筆記。

認識程式

  1. 程式(Programs)或稱為電腦程式(Computer Programs)可以描述電腦如何完成指定工作。
  2. 程式是使用指定程式語言(Program Language)所撰寫的特殊符號,再進一步編寫成程式碼,程式碼可以告訴電腦解決指定問題的步驟。
  3. 電腦程式的內容主要分為兩大部分:資料(Data)與處理資料的操作(Operations)。
  4. 為了讓電腦能夠看懂程式,程式需要依據程式語言的規則、結構和語法,以指定文字或符號來撰寫程式。

電腦真正的名稱應該是「計算機」。

程式是如何執行

  1. 程式語言建立的程式碼最後都會編譯成電腦看得懂的機器語言,這些指令是 CPU 支援的「指令集」(Instruction Set)。
  2. 不同的 CPU 支援不同的指令集。
  3. CPU 只懂一種語言,也就是它能執行的機器語言。
  4. CPU 使用匯流排(Bus)連接周邊裝置。
  5. 在電腦的主記憶體會儲存機器語言的程式碼和資料。
  6. CPU 會從記憶體取出一個個的機器語言指令,然後依序地執行它。

程式邏輯的基礎

使用程式語言的主要目的是撰寫程式碼來建立程式,需要使用電腦的程式邏輯(Program Logic)來撰寫程式碼。電腦才是真正的「目標執行者」(Target Executer),負責執行寫好的程式。

中央處理器

  1. 電腦的 CPU 提供實際的運算功能,個人電腦都是使用晶片 IC(Integrated Circuit),主要功能是使用 ALU(Arithmetic Logic Unit)的邏輯電路進行運算,來執行機器語言的指令。
  2. CPU 擁有很多暫存器(Registers),暫存器是位在 CPU 中的記憶體,可以暫時儲存資料或機器語言的指令。
  3. CPU 還擁有一些控制「取出和執行」(Fetch & Execute)用途的暫存器。
暫存器 說明
IR(Instruction Register) 指令暫存器,儲存目前執行的機器語言指令
IC(Instruction Counter) 指令計數暫存器,儲存下一個執行指令的記憶體位址
MDR(Memory Data Register) 記憶體資料暫存器,儲存目前從記憶體取得的資料
MAR(Memory Address Register) 記憶體位址暫存器,儲存從記憶體取得資料的記憶體位址

CPU 執行速度是依據 Clock 產生的時脈,以 MHz 為單位的速度來執行儲存在 IR 的機器語言指令。在執行後,以 IC 暫存器儲存的位址,透過 MDRMAR 暫存器從匯流排取得記憶體的下一個指令,然後執行指令,只需重複此過程即可執行完整的程式。

記憶體

當電腦執行程式時,作業系統將儲存在硬碟或軟碟的執行檔案載入電腦主記憶體(Main Memory),這就是 CPU 執行的機器語言指令,CPU 從記憶體依序載入指令並執行。

事實上,程式碼本身和使用的資料都是儲存在 RAM(Random Access Memory),每一個儲存單位有數字編號,稱為「位址」(Address)。

電腦 CPU 存取記憶體資料的步驟如下:

  1. 送出讀寫的記憶體位址:當 CPU 讀取程式碼或資料時,需要取得記憶體位址,例如位址 4
  2. 讀寫記憶體儲存的資料:CPU 從指定位址讀取記憶體內容,例如位址 4 的內容是 01010101

每一個 01 是一個「位元」(Bit),八個位元稱為「位元組」(Byte)。

每次 CPU 從記憶體讀取的資料量,視 CPU 與記憶體間的匯流排而定,所謂 32 位元或 64 位元的 CPU,就是指每次可以讀取 4 個位元組或 8 個位元組資料來進行運算。CPU 每次可讀取的資料越多,效率也就越高。

輸入/輸出裝置

電腦的輸入/輸出裝置(Input/Output Devices)是程式的窗口,讓使用者輸入資料和顯示程式的執行結果。

對於電腦來說,當鍵盤被按下大寫字母 A 時,傳入的是一個位元組的數字(01000001)。個人電腦主要是使用 ASCII(American Standard Code for Information Interchange)碼作為電腦編碼系統。

中文字比較多,需要使用兩個位元組的數值來代表常用的中文字,繁體中文的內碼是 Big5,簡體中文有 GBHZ

目前 Windows 作業系統支援「統一字碼」(Unicode),是由 Unicode Consortium 組織所制定的一個包括全世界文字的內碼集,即 ISO 10646 內碼集。常用的兩種編碼方式有:UTF-88 位元編碼;UTF-1616 位元編碼。

次儲存裝置

次儲存裝置是一種能夠長時間和提供高容量儲存資料的裝置,如硬碟機和光碟機等。

儲存在電腦的主記憶體在關閉電源後,資料就消失了,所以需要將資料儲存在次儲存裝置,直到需要編譯和執行程式時,再將檔案內容載入主記憶體來執行。

參考資料

  • 陳會安(2016)。學會 C 語言。台北市:旗標。