《大學計算機基礎教程》以培養學生的計算思維能力為目標,以計算機中信息的表示、存儲、壓縮、處理和傳輸為主線,以易得易用且前景看好的Python、SQLite等語言和軟件為工具,系統講解了“大學計算機基礎”課程涵蓋的知識和技術。本書的主要內容包括3個方面:計算機軟件、硬件的概念及基本工作方式;算法的概念、算法與數據結構以及常用算法的基本思想;數據庫系統的概念、工作方式及基本操作方法。
本書著重講解計算機科學技術的基礎知識和基本思想方法,對涉及的程序設計語言和軟件工具的介紹也力圖準確、清晰,便于讀者學習和運用。本書可用作高等院校非計算機專業“大學計算機基礎”課程的教材,也可作為科技工作者或其他工作人員的參考書。本書封面貼有清華大學出版社防偽標簽,無標簽者不得銷售。
前言
大學計算機基礎教程對于早期的計算機使用者來說,只要了解某種計算機程序設計語言并能使用專門的軟件來編輯和運行程序,就可以應付工作了。而今天,面對無所不在的普適計算、無遠弗屆的云計算,以及各種各樣綜合性的或者個性化的計算機應用和基于計算機技術的信息技術應用,每個使用者(實際上是每個人)的時間和條件都是有限的,學習的只能是從浩如煙海的知識和技能中篩選出來的核心的基礎知識和基本技能,而且必須在正確的思想方法指導下學習和研究,才能有效地構建以計算機技術為主體的能夠支持終生工作與繼續學習的信息技術的知識基礎和能力基礎。“大學計算機基礎”這門課程需要幫助大學生理解和掌握基于計算機技術的信息技術的基礎知識和基本技能。有鑒于此,作者在自編的多本同類教材見參考文獻\\[1\\]、\\[3\\]、\\[7\\]、\\[8\\]。的基礎上,依據教育部高等學校計算機課程教學指導委員會的相關文件見參考文獻\\[4\\]。,結合多年來的教學實踐,編寫了這本教材。
“大學計算機基礎”課程應以培養學生的計算思維能力為基本教學目標,但正像以培養邏輯思維能力為目標的“高等數學”課程并不討論什么是邏輯思維一樣,本書不打算顯式地討論計算思維的概念,甚至也不謀求建立“體現計算思維的知識體系”,而是按照基于計算機技術的信息技術的固有規律,考慮教學過程中的實際需求,重新梳理已有的和新增的教學內容,編排出既有利于實現基本教學目標,又便于學生理解和掌握的知識體系。本書的主要內容包括: 計算機軟件、硬件的概念及基本工作方式;算法的概念、算法與數據結構及常用算法的基本思想;數據庫系統的概念、工作方式及基本操作方法。全部內容編排為8章,每章中除了詳盡的講解之外,還包括了精心編排的習題。
第1章介紹計算機的基本工作方式,計算機程序設計語言的概念和分類,以及計算機應用的現狀和前景。
第2章介紹用于描述算法及各種計算模型的Python程序設計語言的概念、主要功能及使用方法。
第3章介紹邏輯電路與邏輯運算,數字、文字、圖片和聲音的計算機表示方法,信息量、信息熵的概念及基于信息熵的編碼方法。
第4章介紹數據結構的概念及常用數據結構(線性表、二叉樹、圖等)的概念和應用,常用的查找算法和排序算法。
第5章介紹數據庫系統及關系數據庫的概念,SQL語言的功能與特點,使用SQLite數據庫管理系統和Python語言實現SQL數據定義、數據查詢和數據操縱的一般方法。
第6章介紹算法的概念與特點,利用計算機的主要特點實現的遞推、迭代和遞歸算法,常用的算法策略——窮舉法、分治法、貪心法、回溯法、動態規劃法和分支限界法。
第7章介紹計算機網絡的概念、組成及主要應用,數字信號編碼、檢錯糾錯編碼和常用加密方法,網絡分類及網址的概念。
第8章介紹計算機操作系統的概念、主要功能及基本工作方式。
本書第2、3、4、5、6章由姚普選編寫,第1、7、8章由喬亞男編寫。
本書可作為高等院校“大學計算機基礎”課程的教材,也可作為計算機科學技術愛好者以及從事相關工作的工程技術人員的參考書。采用本書作為教材的課程以48~64(包括上機時數)學時為宜。如果少于64學時,則可不講以“”標記的內容;如果少于56學時,則可少講或不講以“”標記的內容。本書中每章都配備了內容豐富的習題,不同類型的讀者可按自己的需求選作部分習題。
信息技術博大精深且仍處于不斷發展變化之中,受篇幅、時間、讀者定位、使用環境以及作者水平等種種限制,一本書所涵蓋的內容及所表達的思想總會有所局限。因而,本書作者希望傳達給讀者的信息是否到位或者是否得體,還要經過讀者的檢驗。望廣大讀者批評指正。
姚普選
2016年9月
大學計算機基礎教程第1章計算機與信息化社會1
1.1計算機的誕生和發展1
1.2了解計算機3
1.2.1計算機是如何工作的3
1.2.2什么是程序設計語言5
1.2.3什么是機器語言6
1.2.4什么是匯編語言7
1.2.5什么是高級語言8
1.3信息化生存9
1.3.1從互聯網思維談起9
1.3.2無所不在的計算設備12
1.3.3無遠弗屆的云計算13
1.3.4與人綁定15
1.3.5線上到線下17
習題119
第2章Python語言20
2.1Python編程環境和解釋器20
2.1.1Python編程環境的使用20
2.1.2Python程序的一般結構22
2.1.3Python解釋器的使用23
2.2數據的表示及輸入輸出26
2.2.1常量與變量26
2.2.2數據的輸入輸出28
2.2.3常用函數29
2.2.4運算符與表達式31
2.3序列34
2.3.1字符串34
2.3.2列表36
2.3.3元組37
2.3.4字典39
2.4程序的控制結構40
2.4.1分支語句40
2.4.2while循環語句41
2.4.3for循環語句42
2.4.4用戶自定義函數44
2.4.5模塊46
2.5類和對象47
2.5.1類的定義和使用48
2.5.2面向對象程序設計方法50
2.5.3類的繼承性52
2.5.4異常處理54
習題256
大學計算機基礎教程目錄
第3章數據的計算機表示61
3.1邏輯電路及邏輯運算61
3.1.1門電路及基本邏輯運算61
3.1.2組合邏輯電路63
3.1.3時序邏輯電路64
3.2數值的計算機表示67
3.2.1二進制數68
3.2.2十六進制數及數制轉換70
3.2.3數的補碼表示71
3.2.4定點數73
3.2.5浮點數74
3.2.6IEEE標準浮點數76
3.2.7BCD碼79
3.3文字的計算機表示81
3.3.1ASCII碼81
3.3.2GB 2312—1980漢字編碼標準83
3.3.3GB 18030漢字編碼標準84
3.3.4Unicode標準88
3.3.5Unicode字符的存儲格式90
3.4圖片與聲音的數字化93
3.4.1數字化圖形和圖像93
3.4.2圖像的采樣及存儲96
3.4.3數字化音頻98
3.5信息量與數據壓縮101
3.5.1信息量101
3.5.2信息熵103
3.5.3信息熵與數據壓縮105
3.5.4熵編碼算法108
習題3112
第4章數據結構115
4.1數據結構的概念115
4.1.1數據及數據元素115
4.1.2數據結構的研究對象117
4.1.3數據結構的定義118
4.2線性表119
4.2.1線性表的概念120
4.2.2線性表的順序存儲結構121
4.2.3線性表的鏈式存儲結構123
4.2.4棧127
4.2.5隊列129
4.3樹與二叉樹131
4.3.1樹的概念131
4.3.2二叉樹的概念及性質133
4.3.3二叉樹的存儲結構135
4.3.4二叉樹的遍歷136
4.4圖138
4.4.1圖的概念138
4.4.2圖的存儲結構140
4.4.3圖的遍歷142
4.5查找143
4.5.1查找的概念144
4.5.2順序查找145
4.5.3折半查找147
4.6排序148
4.6.1排序的概念148
4.6.2插入排序150
4.6.3交換排序152
4.6.4選擇排序154
習題4156
第5章數據庫160
5.1數據庫系統組成與結構160
5.1.1數據庫的概念160
5.1.2數據庫系統組成163
5.1.3數據庫系統的三級模式結構165
5.2數據庫管理系統167
5.2.1關系數據庫167
5.2.2數據庫管理系統的功能170
5.2.3常見數據庫管理系統171
5.3SQL語言及數據庫操作173
5.3.1SQL語言的功能與特點174
5.3.2SQL語言的語句175
5.3.3創建SQLite數據庫179
5.3.4SQLite數據庫的數據查詢與更新183
5.3.5Python程序操作SQLite數據庫185
習題5188
第6章算法設計191
6.1算法的特征及評價191
6.1.1算法的概念191
6.1.2算法的特征193
6.1.3算法求解與解析解194
6.1.4算法的表示196
6.1.5算法的復雜度198
6.2遞推、迭代和遞歸202
6.2.1遞推法202
6.2.2遞推法與代數解法205
6.2.3迭代法207
6.2.4遞歸法208
6.2.5尾遞歸法211
6.3構造算法的常用方法212
6.3.1窮舉法212
6.3.2貪心法215
6.3.3分治法218
6.3.4動態規劃算法222
6.3.5回溯法228
6.3.6分支限界法234
6.3.7分支限界法求解單源最短路徑問題241
習題6245
第7章數據的傳輸248
7.1計算機網絡概述248
7.1.1計算機網絡的歷史發展248
7.1.2計算機網絡的功能250
7.1.3計算機網絡的傳輸介質251
7.1.4網絡體系結構與網絡協議252
7.2編碼與加密255
7.2.1編碼與解碼255
7.2.2檢錯與糾錯260
7.2.3加密與解密技術262
7.3網絡結構266
7.3.1網絡的分類266
7.3.2網絡地址269
習題7272
第8章操作系統275
8.1操作系統概述275
8.1.1操作系統的歷史回顧275
8.1.2無所不在的操作系統277
8.1.3操作系統的目標與功能279
8.2進程與線程281
8.2.1進程的概念281
8.2.2線程的概念283
8.2.3多線程285
8.2.4生產者消費者問題286
8.3死鎖問題291
8.3.1死鎖的概念291
8.3.2銀行家算法292
8.4設備管理294
8.4.1I/O控制方式294
8.4.2緩沖技術296
8.5分布式操作系統299
習題8301
參考文獻303