首页 計算機概論與C語言簡介

計算機概論與C語言簡介

举报
开通vip

計算機概論與C語言簡介 1 第一章 計算機概論與C語言簡介 2 目標 在本章中,我們將回顧一些計算機概論的基 本知識,藉由這些基本知識,進而學習電腦 的程式設計。除此之外,我們也將針對C語 言的編譯器及執行環境做一些說明,加強讀 者在往後章節中練習範例時所需要的基本知 識。 3 大綱  1.1電腦硬體  1.2電腦軟體  1.3程式語言  1.4C語言簡介 4 大綱(續)  1.5程式開發流程與編譯器  1.6本章回顧及下章預覽 5 1.1電腦硬體  電腦硬體就是您可以看到的電腦設備(...

計算機概論與C語言簡介
1 第一章 計算機概論與C語言簡介 2 目標 在本章中,我們將回顧一些計算機概論的基 本知識,藉由這些基本知識,進而學習電腦 的程式設計。除此之外,我們也將針對C語 言的編譯器及執行環境做一些說明,加強讀 者在往後章節中練習範例時所需要的基本知 識。 3 大綱  1.1電腦硬體  1.2電腦軟體  1.3程式語言  1.4C語言簡介 4 大綱(續)  1.5程式開發流程與編譯器  1.6本章回顧及下章預覽 5 1.1電腦硬體  電腦硬體就是您可以看到的電腦設備(拆開外 殼),不過若光是這樣形容電腦硬體未免過於簡 單。實際上,若從功能面加以區分,可將電腦硬 體分為5大單元(如下圖),5個單元分別負責不 同的工作。 6 算數邏輯單元(簡稱ALU)是執行程式中各 類運算的實體單位。這些運算則可以分為 兩大類:算數運算與邏輯運算。算數運算 包含加、減、乘、除等等的數值運算,而 邏輯運算則包含AND、OR、NOT、移位等 位元/位元組的邏輯運算。 1.1.1 算數邏輯單元 7 1.1.2 控制單元 控制單元(簡稱CU)的功能為控制流程及 協調輸入、輸出、記憶、算數邏輯等4大單 元的運作。控制單元中包含(1)記錄指令運 作順序的微程式(microprogram)、(2)取 得下一指令的邏輯電路 (3)驅動元件的解碼 器(decoder)及(4)眾多選擇器 (multiplexer)。 8 1.1.3 記憶體單元 記憶體單元分為主記憶體(main memory)與 輔助記憶體(secondary memory),主要功 能是用來儲存資料 主記憶體(又稱為內部記憶體),目前以半導 體元件制成,特性為存取速度快、成本高。主 記憶體依照存取特性又可以分為隨機存取記憶 體(Random Access Memory;簡稱RAM)及唯 讀記憶體(Read Only Memory;簡稱ROM)。 9 1.1.3 記憶體單元  RAM的成本較低,但是無法於電力消失時保存資料, 故為揮發性記憶體的一種。ROM成本較高,但卻可以 在無電力的狀況下保存資料,傳統的ROM只能寫入資 料一次,因此通常只會把啟動電腦所需要的小程式儲 存在ROM裡面,例如BIOS就是使用ROM做為記憶 體。 輔助記憶體(又稱為外部記憶體),目前以磁性物體 或光學材料組成,例如:硬碟機、軟碟片、光碟片。 輔助記憶體的存取速度相對於主記憶體慢了數十倍以 上,但製作成本則比主記憶體低了數十倍以上,因此 適合儲存大量的資料。 10 1.1.4 輸入單元 輸入單元是「具有輸入功能的週邊設 備」,例如鍵盤、滑鼠、搖桿等等。使用 者可以藉由這些輸入裝置與電腦取得溝通 的管道。 11  輸出單元恰與輸入單元相反,所有「具有輸出功 能的設備」皆屬輸出單元的元件,主要功能是將 程式執行的結果(文字、聲音、影像)輸出或顯 示。常見的輸出裝置有螢幕、印 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 機等等。某些 週邊設備同時具有輸入與輸出的功能,例如:觸 控式螢幕、會震動的搖桿等等。 1.1.5 輸出單元 12  電腦軟體分為資料與程式兩大類,事實上不論是 哪一類,都是以0、1的二位元表示法儲存在電腦 設備中(例如:儲存於硬碟機中)。  而程式又可以分為系統程式(System Program) 與應用程式(Application Program)。 系統程式一般為較接近硬體底層的低階程式,例如: 作業系統(Operating System)、編譯程式(Compiler)、 組譯程式(Assembler),連結程式(Linker)等都屬於系統 程式。 應用程式則是架構在系統程式之上,依據某種特殊需 求而開發出來的軟體,例如:Office、帳務系統、電腦 遊戲等等。 1.2電腦軟體 13 1.3程式語言 語言的用途是做為人與人溝通的橋樑,例 如:和美國人交談就要用英文溝通。同樣 地,人若要和電腦溝通的話,就必須使用 電腦『懂』的語言,這種語言稱為程式語 言(Programming Language)。而一般我 們用來與人溝通的語言則稱為自然語言 (Natural Language)。 14 1.3程式語言 圖1-6 程式語言分類 15 機器語言(Machine Language)是電腦硬 體唯一看得懂的語言,換句話說,機器語 言就是一連串的0、1二進位數字組合,因 此又稱為機器碼。一般人通常看不懂這些 0、1所代表的特殊涵義,其實對於電腦而 言,這些0、1的組合數字,可能代表某種 資料,也可能代表某個指令。由於大多數 的人無法了解或記憶這一連串0、1數字所 代表的涵義,因而發展了低階語言與高階 語言。 1.3.1 機器語言 16 1.3.2 低階語言 低階語言(Low-level Language)是一種接 近於機器語言的表示方法,不過卻使用人 類比較容易記憶的單字形式來對應一連串 的0、1組合。最典型的低階語言就是組合 語言(Assembly Language)。在組合語 言中,使用運算子與運算元來表示一連串 的0、1組合,而這些運算子則使用類似英 文的縮寫以利人類的記憶與理解,例如: 使用INC來代表Increment(累加指令)。 17 1.3.2 低階語言(續) 在上表中,很明顯的可以看出,組合語言的指 令與機器語言的指令是一對一的對應關係,但 是卻比機器語言容易記憶,除此之外,其他組 合語言的設計都與機器語言的設計相同,我們 可以從下表中更明確地看出兩者的相同與相異 處: 執行除法DIV10000100 執行累加1INC00000100 意義8051組合語言指令8051機器語言指令 8051組合語言指令與機器語言指令的對應 18 組合語言與機器語言一對一的特性,使得 組合語言可以完全掌控電腦的硬體結構, 如此一來,在執行效率上自然也就完全交 由程式設計師決定。不過,由於不同的 CPU必須使用不同的組合語言並且必須對 於該CPU的組織結構有充分認知,因此, 這種低階語言仍舊無法被絕大多數的人所 接受,因而發展了更接近於人類自然語言 的高階語言。 1.3.2 低階語言(續) 19  組合語言雖然比機器語言更接近於自然語言,但 組合語言的程式設計師必須對於執行程式的處理 器有更多的了解,並且每個處理器的組合語言並 不相同,因此,一種比組合語言更接近自然語言 且不因更換機器而改變語法的程式語言也被發展 出來,此種語言就是高階語言。  高階語言(High-level Language)使用更接近人 類思維的方式來設計程式,當程式設計完成之 後,必須通過另外一些翻譯程式的翻譯後才能夠 被電腦執行。高階語言的運算子通常具有比較強 大的功能,因此,單一行的高階語言程式可能被 翻譯成許多的機器碼以便完成複雜的工作。 1.3.3 高階語言 20 編譯式語言 編譯器採用整批作業(Batch)方式來處理程 式翻譯的工作,換句話說,當我們將程式設計 完畢並交由編譯器翻譯之後,編譯器會將翻譯 結果存成一個目的檔(object file),而這個目 的檔可經由連結其他目的檔及程式庫之後形成 可執行檔(execute file),並由電腦直接執 行。常見的編譯式語言有C、C++(編譯器為 gcc、g++、VC++、BCB)、Pascal、Object Pascal(編譯器為Delphi、Kylix)等等。 1.3.3 高階語言(續) 21 1.3.3 高階語言(續)  編譯式語言 編譯式語言使用模組化技巧,也就是把某些具有特殊 功能的片段程式獨立成一個個的函式,並將之集合成 一個函式庫檔案,如此一來,就可以讓需要使用該功 能的程式透過連結的方式加以結合,縮短撰寫程式的 時間。例如:ANSI-C的math函式庫中就包含許多求三 角函數的函式,所以我們並不需要自行撰寫求三角函 數的詳細步驟,只要在需 要求 对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗 三角函數值時,引用 Math函式庫即可。一個基本編譯式語言的程式處理流 程如下圖。 22 1.3.3 高階語言(續) 編譯式語言的程式處理流程 23 1.3.3 高階語言(續)  直譯式語言 直譯器與編譯器處理程式的步驟不同,當我們使用直 譯式語言撰寫程式完畢並使用直譯器來翻譯程式時, 並不會產生目的檔或可執行檔。直譯器會將程式一行 一行的讀入,逐行翻譯並送交由電腦執行,因此,每 一次要執行編譯式語言程式時,都必須啟動直譯器來 重新翻譯程式。 直譯式語言的程式處理流程 24 1.4 C語言簡介  C語言與C++語言有著奧妙的關係,因此有人說, C++是C語言的延伸,也有人說,C++是一種全新 的語言。這兩種說法都算正確,因為C++是使用 基本的C語言語法,但C++更重要的是一種全新的 物件導向觀念。在本節中,我們將分別介紹這兩 種語言的特色與歷史背景。  C語言是在70年代,由貝爾實驗室的Ken Thompson與Dennis Ritchie共同發展的一套電腦 語言,該版本稱為K & R C。之後美國國家標準協 會(ANSI)於1983年將C語言標準化,制訂出一 套標準的C語言,稱為ANSI-C(於1988年完成制 定)。 25 C語言的發展歷史有其特殊背景,C語言原本不 叫做C語言,而是另一種程式語言B語言,Ken Thompson與Dennis Ritchie兩人為了設計 UNIX作業系統,因此將B語言加以延伸為C語 言,由於具有容易開發、效率高及可操控硬體 等特性,因此同樣是由貝爾實驗室所發展的 UNIX系統,系統核心的大部分程式碼都是使用 C來撰寫,並且在UNIX作業系統中的公用程式 及C語言的編譯器也是由C所撰寫的。 1.4 C語言簡介(續) 26 命令式型態程式語言(Imperative Paradigm Programming Language) 命令式型態的程式語言是透過一連串指定敘述 (assign statement)組合而成,指定敘述是表示 式(expression),將一些子運算式加以組合,只 要依序執行這些敘述就可以得到結果,C語言 是一種命令式型態的程式語言,其他諸如 BASIC、Pascal、FORTRAN、COBOL等也都 屬於此類程式語言。 1.4 C語言簡介(續) x=x+1; 27 結構化程式語言(Structural Programming Language) C語言是一種結構化程式語言,也就是採用結 構化分析設計的方法,將問題由上向下,由大 到小切割成許多子問題,分別尋得子問題的解 答,最後再結合起來解決所要解決的問題。這 種方法,也可以稱為模組化設計。解決子問題 的方法被分成一個個的模組,在C語言中則稱 為函式。在C的程式設計中,程式設計師必須 設計並組合這些函式來解決問題。 1.4 C語言簡介(續) 28 1.5程式開發流程與編譯器 開發C語言程式完成後,必須經過編譯才能 夠被執行,在附錄中,我們列出了許多可 以編譯C語言的編譯器,除此之外,在本節 中,我們也將針對C語言編譯器的基本觀念 加以說明,建立一些關於C語言編譯器的基 本觀念。 29 1.5.1 C語言程式的開發流程 開發任何編譯式語 言程式都有一定的 流程(如右圖), 開發C語言的應用 程式也同樣可以透 過下圖流程加以完 成。 C語言程式開發流程 30 1.5.1 C語言程式的開發流程(續)  Step1:  編輯與設計程式,您可以使用任何的純文字編輯器來編輯 C/C++程式(例如:Windows的筆記本、Linux的Vim或pico等 等),然後存成副檔名為『.c』與『.cpp』的原始程式檔,其 中純C語言程式可存檔為『.c』,而包含C++語法或函式庫的 程式則存檔為『.cpp』。  Step2:  使用編譯器來編譯原始程式(例如:GCC的gcc/g++),編譯 結果將是一個目的檔案(object file)。  Step3:  使用連結器將目的程式及其他目的程式與程式庫共同連結成一 個可執行檔,目前大多數的編譯器都具有連結器的功能。  Step4:  不論您是在編譯過程或連結過程中發生錯誤或甚至是程式本身 的邏輯出現錯誤而無法達到程式需求時,都必須進入偵錯階 段,重新檢查並修正原始程式中的錯誤。如此週而復始,直到 程式完成您的需求為止。 31 1.5.2 編譯器(Compiler)【補 充】  傳統編譯器的功能是將原始程式轉換為目的碼 (如下圖為C語言編譯器的工作),目的碼中則 包含了機器指令、資料值及相關位址。就程式設 計師而言,設計高階語言程式比較不需要考慮程 式執行的機器平台,只要在不同的硬體結構,使 用不同的編譯器產生適合於該平台的目的碼即 可。 圖1-11 C語言編譯器的工作 32 1.5.2 編譯器(Compiler)【補 充】 編譯器的工作主要分為下列5個階段,並透 過符號表記錄程式中相關的名稱。 編譯器的處理流程 33 1.5.3 整合開發環境(IDE)  傳統的編譯程式開發流程有些繁複,程式設計師 必須先用文書編輯器撰寫原始程式檔,然後再交 由編譯器、連結器將原始程式檔編譯為具有除錯 功能的可執行檔,最後經過除錯無誤後,才重新 編譯連結為最終的可執行檔。不過這個流程通常 不會一次就完成,因為程式可能發生語法、語意 等錯誤,而必須在編輯器、編譯器、除錯器間切 換許多次,才能夠得到最後正確的原始程式與執 行檔。 34 1.5.3 整合開發環境(IDE) (續)  整合開發環境(Integrated Development Environment;簡稱IDE)是一套整合性軟體,它 將編輯器、編譯器、連結器、除錯器、執行程式 等功能整合在同一套軟體之內,以方便程式設計 師開發程式之用。 目前大多數的視窗程式整合開發環境除了提供上述功 能之外,還提供了許多的視窗套件供程式設計師使用 (這些套件也都被整合在IDE之中)。例如:Borland 公司所推出的Builder C++ Builder就是一套包含許多元 件的視窗程式整合開發環境。 35 1.5.3 整合開發環境(IDE) (續) Microsoft Visual C++ 6.0圖 36 1.5.3 整合開發環境(IDE) (續) 【編譯器與整合開發環境】 由於整合開發環境已經包含了編譯器的功能,因 此我們常常會用整合開發環境的名稱作為編譯器 的名稱,例如Microsoft Visual C++ 6.0是一個整 合開發環境,但我們也可以稱它為一種編譯器, 因為它同樣具有編譯器的功能。但反之則較為不 當,例如GCC只具有編譯器的功能,而未將編輯 器等其他功能納入,因此,我們只會稱GCC為一 種編譯器,而不會稱GCC為整合開發環境。 37 1.5.3 整合開發環境(IDE) (續) 【C語言與C++語言的編譯器】 除了少數的古老編譯器(例如Turbo C)之 外,大部分的程式設計師都使用C++編譯器 來編譯C語言程式,因為,C++本身已經包 含了所有的C語言程式語法。在本書的附錄 中,我們介紹了非常多種類的C++編譯器, 在本章中,我們只簡單示範、Dev C++及 Microsoft Visual C++ 6.0整合開發環境。 38 1.6本章回顧及下章預覽  在本章中,我們介紹了組織電腦系統的兩大元 件,分別是硬體與軟體。其中軟體可以分為程式 與資料,而程式又可以分為系統程式與應用程 式。使用C語言不但可以開發應用程式,甚至連 系統程式也可以使用C語言來開發,例如Unix作 業系統就是其中一例。 39 1.6本章回顧及下章預覽(續)  使用C語言開發程式最大的優點就是程式效率 高,而且C語言又比組合語言更容易撰寫,因此 獲得眾多程式設計師的喜愛。C語言從早期的K & R C演變為ANSI C標準,使得眾多編譯器有了依 循的標準,這同時使得C語言的可攜性得以提 高。  C語言的原始程式是副檔名為『.c』的純文字檔, 它必須經過編譯器、連結器的處理才能夠變成可 執行檔。目前大多數的編譯器都具備了連結器的 功能,以及某些在正式編譯前的前置處理功能, 而這些額外功能其實都可以在編譯器的設定中加 以指定。 40 1.6本章回顧及下章預覽(續)  C語言後來被衍生發展為C++程式語言(加入了物 件導向技術),因此目前大多數的編譯器都是 C++的編譯器,但由於C++包含了所有的C語法, 因此,我們也可以使用C++編譯器來編譯C語言程 式,或甚至將原始程式儲存為C++程式檔(副檔 名為『.cpp』)。  在本章中,我們實際練習了如何使用整合開發環 境來開發C語言程式,但我們並不了解所輸入C語 言程式有何用途,這些C語言敘述的實際功能, 我們將從下一章開始陸續學習。 41 本章習題
本文档为【計算機概論與C語言簡介】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_261921
暂无简介~
格式:pdf
大小:550KB
软件:PDF阅读器
页数:0
分类:互联网
上传时间:2011-06-12
浏览量:47