《大學計算機基礎教程》以培養(yǎng)學生的計算思維能力為目標,以計算機中信息的表示、存儲、壓縮、處理和傳輸為主線,以易得易用且前景看好的Python、SQLite等語言和軟件為工具,系統(tǒng)講解了“大學計算機基礎”課程涵蓋的知識和技術。本書的主要內容包括3個方面:計算機軟件、硬件的概念及基本工作方式;算法的概念、算法與數(shù)據(jù)結構以及常用算法的基本思想;數(shù)據(jù)庫系統(tǒng)的概念、工作方式及基本操作方法。
本書著重講解計算機科學技術的基礎知識和基本思想方法,對涉及的程序設計語言和軟件工具的介紹也力圖準確、清晰,便于讀者學習和運用。本書可用作高等院校非計算機專業(yè)“大學計算機基礎”課程的教材,也可作為科技工作者或其他工作人員的參考書。本書封面貼有清華大學出版社防偽標簽,無標簽者不得銷售。
前言
大學計算機基礎教程對于早期的計算機使用者來說,只要了解某種計算機程序設計語言并能使用專門的軟件來編輯和運行程序,就可以應付工作了。而今天,面對無所不在的普適計算、無遠弗屆的云計算,以及各種各樣綜合性的或者個性化的計算機應用和基于計算機技術的信息技術應用,每個使用者(實際上是每個人)的時間和條件都是有限的,學習的只能是從浩如煙海的知識和技能中篩選出來的核心的基礎知識和基本技能,而且必須在正確的思想方法指導下學習和研究,才能有效地構建以計算機技術為主體的能夠支持終生工作與繼續(xù)學習的信息技術的知識基礎和能力基礎。“大學計算機基礎”這門課程需要幫助大學生理解和掌握基于計算機技術的信息技術的基礎知識和基本技能。有鑒于此,作者在自編的多本同類教材見參考文獻\\[1\\]、\\[3\\]、\\[7\\]、\\[8\\]。的基礎上,依據(jù)教育部高等學校計算機課程教學指導委員會的相關文件見參考文獻\\[4\\]。,結合多年來的教學實踐,編寫了這本教材。
“大學計算機基礎”課程應以培養(yǎng)學生的計算思維能力為基本教學目標,但正像以培養(yǎng)邏輯思維能力為目標的“高等數(shù)學”課程并不討論什么是邏輯思維一樣,本書不打算顯式地討論計算思維的概念,甚至也不謀求建立“體現(xiàn)計算思維的知識體系”,而是按照基于計算機技術的信息技術的固有規(guī)律,考慮教學過程中的實際需求,重新梳理已有的和新增的教學內容,編排出既有利于實現(xiàn)基本教學目標,又便于學生理解和掌握的知識體系。本書的主要內容包括: 計算機軟件、硬件的概念及基本工作方式;算法的概念、算法與數(shù)據(jù)結構及常用算法的基本思想;數(shù)據(jù)庫系統(tǒng)的概念、工作方式及基本操作方法。全部內容編排為8章,每章中除了詳盡的講解之外,還包括了精心編排的習題。
第1章介紹計算機的基本工作方式,計算機程序設計語言的概念和分類,以及計算機應用的現(xiàn)狀和前景。
第2章介紹用于描述算法及各種計算模型的Python程序設計語言的概念、主要功能及使用方法。
第3章介紹邏輯電路與邏輯運算,數(shù)字、文字、圖片和聲音的計算機表示方法,信息量、信息熵的概念及基于信息熵的編碼方法。
第4章介紹數(shù)據(jù)結構的概念及常用數(shù)據(jù)結構(線性表、二叉樹、圖等)的概念和應用,常用的查找算法和排序算法。
第5章介紹數(shù)據(jù)庫系統(tǒng)及關系數(shù)據(jù)庫的概念,SQL語言的功能與特點,使用SQLite數(shù)據(jù)庫管理系統(tǒng)和Python語言實現(xiàn)SQL數(shù)據(jù)定義、數(shù)據(jù)查詢和數(shù)據(jù)操縱的一般方法。
第6章介紹算法的概念與特點,利用計算機的主要特點實現(xiàn)的遞推、迭代和遞歸算法,常用的算法策略——窮舉法、分治法、貪心法、回溯法、動態(tài)規(guī)劃法和分支限界法。
第7章介紹計算機網(wǎng)絡的概念、組成及主要應用,數(shù)字信號編碼、檢錯糾錯編碼和常用加密方法,網(wǎng)絡分類及網(wǎng)址的概念。
第8章介紹計算機操作系統(tǒng)的概念、主要功能及基本工作方式。
本書第2、3、4、5、6章由姚普選編寫,第1、7、8章由喬亞男編寫。
本書可作為高等院校“大學計算機基礎”課程的教材,也可作為計算機科學技術愛好者以及從事相關工作的工程技術人員的參考書。采用本書作為教材的課程以48~64(包括上機時數(shù))學時為宜。如果少于64學時,則可不講以“”標記的內容;如果少于56學時,則可少講或不講以“”標記的內容。本書中每章都配備了內容豐富的習題,不同類型的讀者可按自己的需求選作部分習題。
信息技術博大精深且仍處于不斷發(fā)展變化之中,受篇幅、時間、讀者定位、使用環(huán)境以及作者水平等種種限制,一本書所涵蓋的內容及所表達的思想總會有所局限。因而,本書作者希望傳達給讀者的信息是否到位或者是否得體,還要經(jīng)過讀者的檢驗。望廣大讀者批評指正。
姚普選
2016年9月
大學計算機基礎教程第1章計算機與信息化社會1
1.1計算機的誕生和發(fā)展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從互聯(lián)網(wǎng)思維談起9
1.3.2無所不在的計算設備12
1.3.3無遠弗屆的云計算13
1.3.4與人綁定15
1.3.5線上到線下17
習題119
第2章Python語言20
2.1Python編程環(huán)境和解釋器20
2.1.1Python編程環(huán)境的使用20
2.1.2Python程序的一般結構22
2.1.3Python解釋器的使用23
2.2數(shù)據(jù)的表示及輸入輸出26
2.2.1常量與變量26
2.2.2數(shù)據(jù)的輸入輸出28
2.2.3常用函數(shù)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循環(huán)語句41
2.4.3for循環(huán)語句42
2.4.4用戶自定義函數(shù)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章數(shù)據(jù)的計算機表示61
3.1邏輯電路及邏輯運算61
3.1.1門電路及基本邏輯運算61
3.1.2組合邏輯電路63
3.1.3時序邏輯電路64
3.2數(shù)值的計算機表示67
3.2.1二進制數(shù)68
3.2.2十六進制數(shù)及數(shù)制轉換70
3.2.3數(shù)的補碼表示71
3.2.4定點數(shù)73
3.2.5浮點數(shù)74
3.2.6IEEE標準浮點數(shù)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圖片與聲音的數(shù)字化93
3.4.1數(shù)字化圖形和圖像93
3.4.2圖像的采樣及存儲96
3.4.3數(shù)字化音頻98
3.5信息量與數(shù)據(jù)壓縮101
3.5.1信息量101
3.5.2信息熵103
3.5.3信息熵與數(shù)據(jù)壓縮105
3.5.4熵編碼算法108
習題3112
第4章數(shù)據(jù)結構115
4.1數(shù)據(jù)結構的概念115
4.1.1數(shù)據(jù)及數(shù)據(jù)元素115
4.1.2數(shù)據(jù)結構的研究對象117
4.1.3數(shù)據(jù)結構的定義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章數(shù)據(jù)庫160
5.1數(shù)據(jù)庫系統(tǒng)組成與結構160
5.1.1數(shù)據(jù)庫的概念160
5.1.2數(shù)據(jù)庫系統(tǒng)組成163
5.1.3數(shù)據(jù)庫系統(tǒng)的三級模式結構165
5.2數(shù)據(jù)庫管理系統(tǒng)167
5.2.1關系數(shù)據(jù)庫167
5.2.2數(shù)據(jù)庫管理系統(tǒng)的功能170
5.2.3常見數(shù)據(jù)庫管理系統(tǒng)171
5.3SQL語言及數(shù)據(jù)庫操作173
5.3.1SQL語言的功能與特點174
5.3.2SQL語言的語句175
5.3.3創(chuàng)建SQLite數(shù)據(jù)庫179
5.3.4SQLite數(shù)據(jù)庫的數(shù)據(jù)查詢與更新183
5.3.5Python程序操作SQLite數(shù)據(jù)庫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遞推法與代數(shù)解法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動態(tài)規(guī)劃算法222
6.3.5回溯法228
6.3.6分支限界法234
6.3.7分支限界法求解單源最短路徑問題241
習題6245
第7章數(shù)據(jù)的傳輸248
7.1計算機網(wǎng)絡概述248
7.1.1計算機網(wǎng)絡的歷史發(fā)展248
7.1.2計算機網(wǎng)絡的功能250
7.1.3計算機網(wǎng)絡的傳輸介質251
7.1.4網(wǎng)絡體系結構與網(wǎng)絡協(xié)議252
7.2編碼與加密255
7.2.1編碼與解碼255
7.2.2檢錯與糾錯260
7.2.3加密與解密技術262
7.3網(wǎng)絡結構266
7.3.1網(wǎng)絡的分類266
7.3.2網(wǎng)絡地址269
習題7272
第8章操作系統(tǒng)275
8.1操作系統(tǒng)概述275
8.1.1操作系統(tǒng)的歷史回顧275
8.1.2無所不在的操作系統(tǒng)277
8.1.3操作系統(tǒng)的目標與功能279
8.2進程與線程281
8.2.1進程的概念281
8.2.2線程的概念283
8.2.3多線程285
8.2.4生產(chǎn)者消費者問題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分布式操作系統(tǒng)299
習題8301
參考文獻303