本書是計(jì)算機(jī)基礎(chǔ)教材,系統(tǒng)、通俗地介紹了最新計(jì)算機(jī)軟件技術(shù)的基礎(chǔ)知識(shí)和應(yīng)用,內(nèi)容包括軟件技術(shù)概論,C語言回顧,數(shù)據(jù)結(jié)構(gòu),遍歷、查找和排序,操作系統(tǒng),數(shù)據(jù)庫(kù)系統(tǒng),計(jì)算機(jī)網(wǎng)絡(luò),軟件工程及網(wǎng)絡(luò)新技術(shù)等。本書講解由淺入深,循序漸進(jìn),通俗易懂,將原理、方法與實(shí)例相結(jié)合,圖文并茂,書中的案例都在 Dev-C 環(huán)境下測(cè)試通過,并附有案例對(duì)應(yīng)的 Python程序。
本書既可作為高等院校非計(jì)算機(jī)專業(yè)本科生的教材,又可作為從事工程應(yīng)用領(lǐng)域計(jì)算機(jī)軟件開發(fā)工作的科研技術(shù)人員的參考書。
伴隨著信息化時(shí)代的到來,計(jì)算機(jī)技術(shù)高速發(fā)展,隨著互聯(lián)網(wǎng)和手機(jī)等智能終端設(shè)備的廣泛應(yīng)用,計(jì)算機(jī)軟件與日常工作和生活緊密地結(jié)合在一起,改變了人們的生活和工作方式。這種發(fā)展趨勢(shì)還將進(jìn)一步擴(kuò)大和深入,對(duì)于絕大多數(shù)非計(jì)算機(jī)專業(yè)的人士來說,掌握必要的軟件技術(shù)基礎(chǔ)知識(shí)是了解和提高軟件開發(fā)與應(yīng)用水平的重要途徑。
軟件技術(shù)包含的內(nèi)容非常豐富,涉及程序設(shè)計(jì)語言、數(shù)據(jù)結(jié)構(gòu)及算法、操作系統(tǒng)、計(jì)算機(jī)網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)系統(tǒng)和軟件工程等知識(shí),軟件技術(shù)發(fā)展迅猛,新技術(shù)不斷涌現(xiàn),如何在一本教材中讓非計(jì)算機(jī)專業(yè)的學(xué)生理解和掌握最新的軟件技術(shù)基礎(chǔ)知識(shí)和技能是軟件技術(shù)教學(xué)的難點(diǎn)及重點(diǎn)。作者在高校長(zhǎng)期從事計(jì)算機(jī)軟件技術(shù)基礎(chǔ)課程的教學(xué)和研究工作,熟悉該課程的教學(xué)需求和學(xué)生體會(huì),本書是根據(jù)高等院校非計(jì)算機(jī)專業(yè)對(duì)計(jì)算機(jī)軟件技術(shù)的知識(shí)要求,結(jié)合多年的教學(xué)和實(shí)踐經(jīng)驗(yàn)集體編寫而成的。
本書共分為9章。第1章介紹軟件的概念及分類,軟件技術(shù)的發(fā)展歷史,并對(duì)教材各章內(nèi)容、學(xué)習(xí)目的及學(xué)習(xí)方法做了介紹; 第2章為方便讀者更好地理解書中案例程序,對(duì)C語言中相對(duì)復(fù)雜的數(shù)組、結(jié)構(gòu)體及指針的運(yùn)用等知識(shí)進(jìn)行簡(jiǎn)單回顧; 第3章介紹數(shù)據(jù)結(jié)構(gòu)的概念、數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu),線性表(棧、隊(duì)列)、樹和圖結(jié)構(gòu)的基本術(shù)語與相關(guān)運(yùn)算; 第4章結(jié)合數(shù)據(jù)結(jié)構(gòu)講述了算法的概念和分析方法以及各種結(jié)構(gòu)數(shù)據(jù)的遍歷、查找與排序方法; 第5章介紹操作系統(tǒng)的工作原理、主要功能、與硬件的關(guān)系及典型操作系統(tǒng)Linux的使用方法; 第6章介紹數(shù)據(jù)庫(kù)的基礎(chǔ)知識(shí)、數(shù)據(jù)模型、關(guān)系數(shù)據(jù)庫(kù)、結(jié)構(gòu)化查詢語言等。第7章從使用者的角度介紹了計(jì)算機(jī)網(wǎng)絡(luò)的基本概念、拓?fù)浣Y(jié)構(gòu)與通信協(xié)議,無線網(wǎng)絡(luò)、IPv6及網(wǎng)絡(luò)安全等常識(shí)。第8章介紹軟件工程的起源及主要思想,常用系統(tǒng)開發(fā)模型及開發(fā)步驟和工具等。第9章介紹大數(shù)據(jù)、云計(jì)算、物聯(lián)網(wǎng)等近年來興起的網(wǎng)絡(luò)新技術(shù)。
在第1版兩年多的使用中,我們發(fā)現(xiàn)了書中不足之處,同時(shí)采納了一些專家和讀者的建議,結(jié)合國(guó)家對(duì)課程思政的新要求,對(duì)書中部分章節(jié)內(nèi)容進(jìn)行了修改和補(bǔ)充。主要增加的內(nèi)容如下:
第4章增加了4.3.5節(jié)二叉排序樹查找。
第5章增加了5.5節(jié)華為鴻蒙系統(tǒng)。
第9章增加了9.4節(jié)國(guó)內(nèi)發(fā)展現(xiàn)狀。
考慮到目前Python語言的廣泛流行,書后附有全書C程序案例對(duì)應(yīng)的Python程序案例。
本書第1、2、3、6、8章由瞿亮編寫,第4章由王紹源編寫,第5章由唐璐編寫,第7章由梁橋康編寫,第9章由瞿永新編寫。
本書內(nèi)容翔實(shí),圖文并茂,在編寫過程中注重由淺入深,循序漸進(jìn),書中的實(shí)例源于工程實(shí)踐,所有案例都在DevC 環(huán)境下測(cè)試通過。本書既可作為高等院校本、?朴(jì)算機(jī)軟件技術(shù)基礎(chǔ)課程的教材,也可作為各類計(jì)算機(jī)應(yīng)用人員或相關(guān)人員的技術(shù)參考書。
由于作者水平有限,編寫時(shí)間倉(cāng)促,書中難免存在不足和疏漏之處,懇請(qǐng)各位專家和廣大讀者指正。另外,在編寫中我們也參考了許多同類圖書,在此一并表示最誠(chéng)意的感謝。
本書配有電子課件,需要者可在清華大學(xué)出版社官網(wǎng)下載。
作者
2024年1月
于湖南大學(xué)
第1章軟件技術(shù)概論
1.1軟件的定義及分類
1.2軟件技術(shù)及其發(fā)展
1.3章節(jié)內(nèi)容及學(xué)習(xí)方法
第2章C語言回顧
2.1運(yùn)行環(huán)境
2.2數(shù)組與結(jié)構(gòu)
2.2.1數(shù)組
2.2.2結(jié)構(gòu)體
2.3指針
2.3.1指針的定義及運(yùn)算
2.3.2數(shù)組指針和指針數(shù)組
2.3.3結(jié)構(gòu)體指針
2.3.4函數(shù)指針與指針函數(shù)
2.4遞歸
2.4.1遞歸的定義
2.4.2應(yīng)用遞歸的問題類型
2.4.3遞歸與回溯
2.4.4遞歸與非遞歸程序的轉(zhuǎn)換
第3章數(shù)據(jù)結(jié)構(gòu)
3.1數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲(chǔ)結(jié)構(gòu)
3.1.1基本概念
3.1.2數(shù)據(jù)的邏輯結(jié)構(gòu)
3.1.3數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)
3.2線性表
3.2.1線性表的順序存儲(chǔ)和操作
3.2.2線性表的鏈?zhǔn)酱鎯?chǔ)和操作
3.2.3小結(jié)
3.2.4棧
3.2.5隊(duì)列
3.2.6棧和隊(duì)列的應(yīng)用
3.3樹
3.3.1常用術(shù)語
3.3.2二叉樹
3.3.3森林、樹與二叉樹的轉(zhuǎn)換
3.3.4樹的應(yīng)用舉例
3.4圖
3.4.1常用術(shù)語
3.4.2圖的存儲(chǔ)結(jié)構(gòu)
3.4.3圖的應(yīng)用舉例
第4章遍歷、查找和排序
4.1算法
4.1.1算法的定義及描述
4.1.2算法設(shè)計(jì)的要求
4.1.3算法的效率度量
4.2遍歷
4.2.1二叉樹的遍歷
4.2.2圖的遍歷
4.3查找
4.3.1查找的基本概念
4.3.2順序查找
4.3.3二分查找
4.3.4分塊查找
4.3.5二叉排序樹查找
4.3.6哈希查找
4.4排序
4.4.1排序的基本概念
4.4.2插入排序
4.4.3交換排序
4.4.4選擇排序
4.4.5歸并排序
4.4.6多關(guān)鍵字排序
4.4.7小結(jié)
第5章操作系統(tǒng)
5.1操作系統(tǒng)簡(jiǎn)介
5.1.1操作系統(tǒng)的功能
5.1.2操作系統(tǒng)的發(fā)展歷史
5.1.3操作系統(tǒng)的分類
5.2操作系統(tǒng)與計(jì)算機(jī)硬件
5.2.1處理器
5.2.2內(nèi)存
5.2.3磁盤
5.2.4I/O設(shè)備
5.2.5總線
5.2.6計(jì)算機(jī)的啟動(dòng)過程
5.3操作系統(tǒng)的相關(guān)概念
5.3.1進(jìn)程
5.3.2地址空間
5.3.3文件
5.3.4輸入/輸出
5.3.5Shell
5.4系統(tǒng)調(diào)用
5.5華為鴻蒙操作系統(tǒng)
5.2.1鴻蒙操作系統(tǒng)簡(jiǎn)介
5.2.2技術(shù)特性
5.6小結(jié)
第6章數(shù)據(jù)庫(kù)系統(tǒng)
6.1數(shù)據(jù)庫(kù)系統(tǒng)概述
6.1.1數(shù)據(jù)、數(shù)據(jù)模型與數(shù)據(jù)庫(kù)
6.1.2數(shù)據(jù)庫(kù)系統(tǒng)
6.2關(guān)系數(shù)據(jù)庫(kù)
6.2.1關(guān)系概念模型
6.2.2關(guān)系結(jié)構(gòu)模型
6.3結(jié)構(gòu)化查詢語言SQL
6.3.1SQL概述
6.3.2數(shù)據(jù)定義
6.3.3數(shù)據(jù)操縱
6.3.4數(shù)據(jù)控制
6.4數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開發(fā)
6.4.1數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的結(jié)構(gòu)
6.4.2數(shù)據(jù)庫(kù)產(chǎn)品的選擇
6.4.3數(shù)據(jù)庫(kù)訪問標(biāo)準(zhǔn)
第7章計(jì)算機(jī)網(wǎng)絡(luò)
7.1計(jì)算機(jī)網(wǎng)絡(luò)和因特網(wǎng)
7.1.1計(jì)算機(jī)網(wǎng)絡(luò)的定義
7.1.2計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展歷史
7.1.3因特網(wǎng)的組成
7.1.4計(jì)算機(jī)網(wǎng)絡(luò)的性能
7.1.5計(jì)算機(jī)網(wǎng)絡(luò)的體系結(jié)構(gòu)
7.2應(yīng)用層
7.2.1域名系統(tǒng)
7.2.2Web和HTTP
7.2.3文件傳輸協(xié)議
7.2.4因特網(wǎng)中的電子郵件標(biāo)準(zhǔn)
7.3傳輸層
7.3.1傳輸層協(xié)議概述
7.3.2Internet傳輸協(xié)議UDP
7.3.3Internet傳輸協(xié)議TCP
7.3.4TCP擁塞和流量控制
7.4網(wǎng)絡(luò)層
7.4.1網(wǎng)絡(luò)層提供的服務(wù)
7.4.2網(wǎng)絡(luò)協(xié)議
7.4.3IPv6
7.4.4因特網(wǎng)的路由選擇協(xié)議
7.4.5虛擬專用網(wǎng)絡(luò)
7.5數(shù)據(jù)鏈路層
7.5.1數(shù)據(jù)鏈路層的基本結(jié)構(gòu)
7.5.2數(shù)據(jù)鏈路和幀
7.5.3數(shù)據(jù)鏈路控制協(xié)議
7.5.4高速以太網(wǎng)
7.6無線網(wǎng)絡(luò)和移動(dòng)網(wǎng)絡(luò)
7.6.1無線傳輸
7.6.2衛(wèi)星通信
7.6.3無線局域網(wǎng)
7.6.4移動(dòng)網(wǎng)絡(luò)
第8章軟件工程
8.1軟件工程概述
8.1.1軟件危機(jī)
8.1.2軟件工程的思想
8.2軟件的生命周期
8.2.1問題定義及可行性分析
8.2.2需求分析
8.2.3概要設(shè)計(jì)
8.2.4詳細(xì)設(shè)計(jì)
8.2.5編程
8.2.6軟件測(cè)試
8.2.7軟件維護(hù)
8.3軟件開發(fā)方法
8.3.1常用的軟件開發(fā)方法
8.3.2軟件開發(fā)方法的選擇及評(píng)價(jià)
8.4計(jì)算機(jī)輔助軟件工程
8.4.1CASE工具的功能
8.4.2常用CASE工具
8.4.3CASE工具的使用策略
第9章網(wǎng)絡(luò)新技術(shù)
9.1大數(shù)據(jù)
9.1.1大數(shù)據(jù)概述
9.1.2大數(shù)據(jù)的關(guān)鍵技術(shù)
9.1.3大數(shù)據(jù)的典型應(yīng)用
9.2云計(jì)算
9.2.1云計(jì)算概述
9.2.2云計(jì)算的關(guān)鍵技術(shù)
9.2.3云計(jì)算的服務(wù)模型和部署模式
9.2.4云計(jì)算的典型應(yīng)用
9.3物聯(lián)網(wǎng)
9.3.1物聯(lián)網(wǎng)概述
9.3.2物聯(lián)網(wǎng)的關(guān)鍵技術(shù)
9.3.3物聯(lián)網(wǎng)的典型應(yīng)用
9.3.4互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、大數(shù)據(jù)、云計(jì)算的關(guān)系
9.4國(guó)內(nèi)發(fā)展現(xiàn)狀
附錄書中案例對(duì)應(yīng)的Python程序
參考文獻(xiàn)