普通高等教育“十一五”國家級規(guī)劃教材:C語言及程序設(shè)計基礎(chǔ)
定 價:38 元
- 作者:譚成予 著
- 出版時間:2010/2/1
- ISBN:9787307075634
- 出 版 社:武漢大學(xué)出版社
- 中圖法分類:TP312C
- 頁碼:384
- 紙張:膠版紙
- 版次:1
- 開本:16開
程序設(shè)計概述,數(shù)據(jù)、類型和運算,簡單程序設(shè)計,控制流,函數(shù).程序設(shè)計方法概述、數(shù)組,結(jié)構(gòu)和聯(lián)合類型,文件,問題求解策略和算法設(shè)計。相對于以往的版本,《C語言及程序設(shè)計基礎(chǔ)》增加了對模塊化的程序設(shè)計方法、C語言實現(xiàn)的軟件開發(fā)技術(shù),以及窮舉法、局部搜索、回溯法、分治法和人工智能問題求解三個方面的內(nèi)容。新加入的內(nèi)容,通過實例的代碼來講解理論概念的方法,是《C語言及程序設(shè)計基礎(chǔ)》的-大特色,有利于促進學(xué)生參與到程序設(shè)計中來。
《C語言及程序設(shè)計基礎(chǔ)》合作為高等院校計算機科學(xué)與技術(shù)、信息安全及相關(guān)專業(yè)學(xué)習(xí)高級語言程序設(shè)計的教科書,也可作為廣大軟件開發(fā)人員和自學(xué)人員的參考書。
作者在武漢大學(xué)為一年級本科生教授程序設(shè)計時,發(fā)現(xiàn)很多初學(xué)者熱衷于學(xué)習(xí)各種語言工具以及語法細節(jié),但是卻常常陷入對語言工具極為熟悉而無法寫出高質(zhì)量程序的困境,因而萌發(fā)了編寫本書的想法。
怎樣才能通過學(xué)習(xí)成為一個優(yōu)秀的程序員?對這個問題,初學(xué)者常常存在一些認識上的誤區(qū),即只要花費大量的時間學(xué)習(xí)語言工具就能成為一個程序設(shè)計的高手。這個觀點有些荒謬,識字很多的人一定是最好的作家嗎?能演奏最多音符的人一定是最好的音樂家嗎?顯然不是。編程工作不僅僅只是編寫代碼,它應(yīng)當(dāng)是恰當(dāng)?shù)膯栴}解決策略和正確的語言細節(jié)的完美結(jié)合,其中最困難的部分并不是學(xué)習(xí)語言細節(jié),而是理解問題的解決之道。
本書從一開始就注重程序設(shè)計方法,從準備完整且準確的程序說明開始,并強調(diào)測試計劃和程序驗證的重要性。本書以C語言為樣例,著重講解高級語言程序設(shè)計的基本理論,結(jié)合程序設(shè)計的基本思想、問題表達、設(shè)計方法以及解決問題能力為主線條,配合C語言的文法及描述方法,組織全書的內(nèi)容。
本書在介紹程序設(shè)計的基本概念的基礎(chǔ)上,強調(diào)算法的重要性及其在程序設(shè)計中的作用;強調(diào)“以算法帶動文法”、“學(xué)思想用細節(jié)”的思想。并通過大量的數(shù)學(xué)、工程和算法方面的完整樣例程序,為讀者展示如何通過編程技巧闡述問題的解決策略。
本書為水平各不相同的所有程序設(shè)計人員編寫。無論是程序設(shè)計的初學(xué)者、教師還是成熟的專業(yè)人士,我們相信本書及其輔導(dǎo)教材將提供一種內(nèi)容豐富而具有挑戰(zhàn)性的學(xué)習(xí)經(jīng)歷
作者在每學(xué)年授課時,常被學(xué)生問到一個問題:為什么選擇C語言作為第一門編程課程?筆者認為,C語言比C++或者Java等更適合作為編程的入門語言。實際上,由于好奇的天性,人們更容易注意到那些新的事物,而忽視了用以構(gòu)筑未來的堅實基礎(chǔ)。C語言正是這樣的基礎(chǔ),很多的程序代碼是用C語言運行的,C++正是在此基礎(chǔ)上建立的,C語言的語法構(gòu)成了Java的基礎(chǔ)。但是,C語言不僅僅只是其他語言的起點,它到今天仍然至關(guān)重要,仍然具有其他計算機語言無法比擬的魅力。除此之外,從C語言開始學(xué)起,可以有助于為隨后學(xué)習(xí)的C++或者Java奠定理論基礎(chǔ),這樣更容易理解抽象的數(shù)據(jù)類型。
為了系統(tǒng)地介紹結(jié)構(gòu)化程序設(shè)計方法和c語言,全書共分11章,下面簡單介紹這些章節(jié)的內(nèi)容:
第一部分:程序設(shè)計概述
第1章介紹了計算機的基本組成和原理、程序和計算機語言、高級語言源程序的組成、C語言的發(fā)展史、C程序的基本組成、程序規(guī)范、測試計劃和編程的基本步驟。初學(xué)者通過第1章的學(xué)習(xí),為深入了解C語言的技術(shù)細節(jié)打下堅實的基礎(chǔ),有經(jīng)驗者可快速瀏覽本章。
第1章 程序設(shè)計概述
1.1 什么是計算機
1.1.1 物理計算機
1.1.2 系統(tǒng)軟件和應(yīng)用軟件
1.1.3 網(wǎng)絡(luò)和計算模式
1.2 程序和程序設(shè)計概述
1.2.1 什么是程序
1.2.2 計算機語言
1.2.3 C語言的發(fā)展歷史和特點
1.2.4 程序設(shè)計
1.3 程序的組成
1.3.1 程序的語法對象
1.3.2 程序的基本結(jié)構(gòu)
1.3.3 程序的基本語法單位
1.4 程序設(shè)計的步驟
1.4.1 問題說明
1.4.2 設(shè)計測試計劃
1.4.3 設(shè)計方案
1.4.4 開發(fā)環(huán)境
1.4.5 構(gòu)造程序
1.4.6 執(zhí)行和測試程序
1.5 本章小結(jié)
習(xí)題1
第2章 數(shù)據(jù)、類型和運算
2.1 計算機中的數(shù)與數(shù)制
2.1.1 計算機中的整數(shù)
2.1.2 計算機中的實數(shù)
2.1.3 計算機中的文字
2.2 C的數(shù)據(jù)類型和基本數(shù)據(jù)類型
2.2.1 C的數(shù)據(jù)類型
2.2.2 C的基本數(shù)據(jù)類型
2.3 變量
2.3.1 數(shù)學(xué)中的變量和計算機中的變量
2.3.2 變量的定義形式
2.3.3 變量的定義位置
2.3.4 變量的初始化
2.3.5 類型限定詞
2.3.6 變量的左值和右值
2.4 常量
2.4.1 整型常量
2.4.2 浮點數(shù)常量
2.4.3 字符型常量
2.4.4 字符串常量
2.4.5 符號常量(不帶參數(shù)的宏)
2.5 數(shù)值問題的計算誤差
2.5.1 整數(shù)上溢
2.5.2 浮點數(shù)的可表示誤差
2.5.3 浮點數(shù)上溢
2.5.4 浮點數(shù)下溢
2.5.5 數(shù)據(jù)類型的選擇
2.6 表達式的基本概念
2.6.1 運算符和算元
2.6.2 優(yōu)先級別、括號和結(jié)合性
2.6.3 C語言中的運算符概述
2.7 C語言中的運算符
2.7.1 算術(shù)運算、增量和減量運算符
2.7.2 賦值運算符
2.7.3 關(guān)系運算符和邏輯運算符
2.7.4 條件運算符和逗號運算符
2.7.5 位運算符
2.7.6 其他運算符
2.8 表達式中的自動類型轉(zhuǎn)換和強制類型轉(zhuǎn)換
2.8.1 自動類型轉(zhuǎn)換
2.8.2 強制類型轉(zhuǎn)換
2.9 本章小結(jié)
2.9.1 主要知識點
2.9.2 難點和常見錯誤
習(xí)題2
第3章 簡單程序設(shè)計
3.1 結(jié)構(gòu)化的三種基本結(jié)構(gòu)
3.1.1 結(jié)構(gòu)化程序設(shè)計的基本思想
3.1.2 三種基本結(jié)構(gòu)
3.2 語句
3.2.1 表達式語句
3.2.2 塊語句
3.2.3 跳轉(zhuǎn)語句
3.2.4 其他控制語句
3.3 控制臺I/O
3.3.1 讀寫字符
3.3.2 格式化控制臺輸出
3.3.3 格式化控制臺輸入
3.4 程序原型
3.4.1 程序原型
3.4.2 程序書寫風(fēng)格
3.4.3 程序布局與規(guī)范
3.5 編寫簡單的C程序
3.6 本章小結(jié)
3.6.1 主要知識點
3.6.2 難點和常見錯誤
習(xí)題3
第4章 流程控制
4.1 if條件語句
4.1.1 雙分支if語句
4.1.2 單分支if語句
4.1.3 嵌套if語句
4.1.4 if-else-if梯次
4.1.5 代替if語句的條件運算符
4.2 switch多重選擇語句
4.2.1 switch語句基本語法
4.2.2 使用switch語句的三個要點
4.3 循環(huán)語句
4.3.1 for語句
4.3.2 while語句
4.3.3 do-while語句
4.3.4 goto語句構(gòu)建循環(huán)結(jié)構(gòu)
4.4 循環(huán)結(jié)構(gòu)中的break和continue語句
4.4.1 break語句
4.4.2 continue語句
4.5 應(yīng)用實例
4.5.1 哨兵循環(huán)
4.5.2 查詢循環(huán)
4.5.3 計數(shù)循環(huán)
4.6 本章小結(jié)
4.6.1 主要知識點
4.6.2 難點和常見錯誤
習(xí)題4
第5章 函數(shù)
5.1 模塊化的程序設(shè)計
5.1.1 從構(gòu)造計算機說起
5.1.2 C語言中的程序模塊
5.1.3 程序“模塊化”的目的
5.2 創(chuàng)建函數(shù)
5.2.1 C語言中函數(shù)分類
5.2.2 函數(shù)定義的一般形式
5.2.3 定義無參函數(shù)
5.2.4 定義有參函數(shù)
5.2.5 理解函數(shù)的作用域規(guī)則
5.3 函數(shù)調(diào)用
5.3.1 函數(shù)調(diào)用的一般形式
5.3.2 函數(shù)原型
5.4 函數(shù)之間的數(shù)據(jù)通信
5.4.1 模塊間的數(shù)據(jù)通信方式
5.4.2 C函數(shù)中形參和實參間的值傳遞
5.4.3 C函數(shù)的返回值
5.5 函數(shù)的遞歸調(diào)用
5.5.1 運行棧
5.5.2 直接遞歸和間接遞歸
5.5.3 遞歸與迭代
5.5.4 較復(fù)雜的遞歸范例:Hanoi問題
5.6 數(shù)據(jù)的模塊化
5.6.1 什么是數(shù)據(jù)模塊化
5.6.2 標識符的作用域和可視性
5.6.3 變量的存儲類別
5.6.4 由多個源文件組成的程序的編譯問題
5.7 編譯預(yù)處理
5.7.1 宏
5.7.2 文件嵌入
5.7.3 條件編譯
5.7.4 其他編譯預(yù)處理命令
……
第6章 程序設(shè)計方法概述
第7章 數(shù)組
第8章 指針
第9章 結(jié)構(gòu)、聯(lián)合、枚舉和typedef
第10章 流與文件
第11章 問題求解策略和算法設(shè)計
附錄A ASII碼表
附錄B C要unsuan符的優(yōu)先級和結(jié)核性
附錄C C關(guān)鍵字
附錄D 常用C庫函數(shù)
附錄E C/C++互聯(lián)網(wǎng)資源
參考文獻
第2章 數(shù)據(jù)、類型和運算
計算是計算機編程的核心。本章主要介紹如何為一個程序定義命名對象,例如變量、常量等,以及如何在計算中使用這些對象。
表達式是計算機程序中計算的最基本形式,表達式由計算機語言的基本元素——數(shù)據(jù)和運算符構(gòu)成。數(shù)據(jù)可由變量、常量或函數(shù)返回的值來表達。運算符通常由圖形化符號表示,代表對數(shù)據(jù)執(zhí)行的操作種類。這里將討論如何對變量、常量運用C語言的各種運算操作,C的表達式比多數(shù)計算機語言的表達式更豐富、更強、更靈活。
本章介紹的主要內(nèi)容包括:
·計算機中的數(shù)和數(shù)制。
·C的數(shù)據(jù)類型和基本數(shù)據(jù)類型。
·變量的定義、初始化等基本概念。
·常量的表達。
·計算誤差的基本概念,數(shù)據(jù)的上溢、下溢以及可表示誤差等。
·表達式的基本概念,C語言中的算術(shù)運算、賦值運算、關(guān)系和邏輯運算、條件運算符、逗號運算符、位運算以及其他運算符。
·自動類型轉(zhuǎn)換和強制類型轉(zhuǎn)換。
2.1 計算機中的數(shù)與數(shù)制
一般來說,用計算機解決一個具體問題時,基本步驟之一就是正確地描述現(xiàn)實問題中的數(shù)據(jù)。為了編寫一個“好”的程序,必須首先了解計算機中的數(shù)據(jù)表達和數(shù)學(xué)意義上的數(shù)據(jù)表達有哪些異同。
從數(shù)學(xué)意義來看,數(shù)據(jù)是對現(xiàn)實世界中的人物、事件、其他對象或概念的描述。它是對客觀事物的符號表示,如圖形符號、數(shù)字、字母等。例如統(tǒng)計武漢大學(xué)在校學(xué)生的平均年齡,需要處理的對象包括每個學(xué)生的年齡以及學(xué)生人數(shù),分別用實數(shù)和整數(shù)來表示。
從數(shù)學(xué)意義來看,數(shù)據(jù)的表示范圍和計算精度僅受到待處理問題計算要求的限制,F(xiàn)實世界中數(shù)據(jù)含義極為廣泛,除了我們所熟知的整數(shù)以及實數(shù)等數(shù)值數(shù)據(jù)(常用十進制數(shù)制來表示)外,還包括圖像、視頻、聲音等各種表示形式。
用計算機程序解決實際問題時,首先需要將現(xiàn)實問題抽象成一個適當(dāng)?shù)臄?shù)學(xué)模型,然后為此數(shù)學(xué)模型設(shè)計一個相應(yīng)的算法,以便將數(shù)據(jù)和相應(yīng)的操作轉(zhuǎn)換成計算機可“識別”的表示形式。從這個意義來看,計算機中的數(shù)據(jù)不僅是客觀事物的符號表達,同時也是所有能輸入到計算機并被計算機程序處理的符號介質(zhì)的總稱。計算機中的數(shù)據(jù)不僅受到待處理問題的計算要求的限制,同時受到計算機物理部件的限制。