《21世紀高等學校計算機教育實用規(guī)劃教材:程序設(shè)計基礎(chǔ)實驗教程(C語言)》以程序設(shè)計基礎(chǔ)為中心,輔助學習程序設(shè)計的基本方法和基本原理。本書適用于那些擁有很少或沒有編程經(jīng)驗的學習者,使初學編程的學生或愛好者能夠循序漸進,逐步完成小型程序的編寫,最終掌握程序設(shè)計方法并用C語言實現(xiàn)。
本書共24個實驗單元及1個綜合項目演練單元。內(nèi)容包含簡單C程序、順序程序設(shè)計、分支結(jié)構(gòu)程序設(shè)計、循環(huán)結(jié)構(gòu)、一維數(shù)組、二維數(shù)組、字符數(shù)組和字符串、函數(shù)、指針、結(jié)構(gòu)體、鏈表、文件等章節(jié),其中對于有一定難度的章節(jié)(如指針)有更細致的劃分。
《21世紀高等學校計算機教育實用規(guī)劃教材:程序設(shè)計基礎(chǔ)實驗教程(C語言)》強調(diào)標準化、軟件工程思想,服務(wù)應(yīng)用、程序通用方法,確立面向工程和應(yīng)用的培養(yǎng)定位。本書適合作為本科和大專院校“程序設(shè)計基礎(chǔ)”課程的c語言版實驗教材,也適合程序設(shè)計自學者參考。
《21世紀高等學校計算機教育實用規(guī)劃教材:程序設(shè)計基礎(chǔ)實驗教程(C語言)》強調(diào)標準化和程序通用方法,適合于面向工程和應(yīng)用的培養(yǎng)目標。每個實驗單元包括多道典型例題,覆蓋本單元的關(guān)鍵知識點。每個實驗單元包括一個Q&A部分,匯集本單元相關(guān)的常見問題及其解答,對難點進一步解釋說明。
【定位】
“程序設(shè)計基礎(chǔ)”是計算機專業(yè)、軟件工程專業(yè)、電子信息類等專業(yè)的基礎(chǔ)課程,目前C語言仍然是計算機領(lǐng)域的通用語言之一。本書是為大學本科階段的“程序設(shè)計基礎(chǔ)”課程編寫的C語言版實驗教材,配合“程序設(shè)計基礎(chǔ)”理論教學,以程序設(shè)計基礎(chǔ)為主,介紹程序設(shè)計的基本方法和基本理論,使初學編程的學生或愛好者能夠循序漸進,最終掌握程序設(shè)計并用C語言實現(xiàn)的普遍方法。
本書強調(diào)標準化、軟件工程、服務(wù)應(yīng)用、程序通用方法,不強調(diào)編程技巧,不追求大而全的知識面,確立面向工程和應(yīng)用的培養(yǎng)定位。本書也非常適于作為其他一些課程的輔助用書。
【內(nèi)容提要】
“程序設(shè)計基礎(chǔ)”課程適用于那些擁有很少或沒有編程經(jīng)驗的學生,本實驗教程致力于使學生理解計算機在解決問題中的作用,并且?guī)椭鷮W生,不論其專業(yè)是什么,都能逐步建立信心以完成小型程序的編寫。
本書內(nèi)容分為簡單C程序、順序程序設(shè)計、分支結(jié)構(gòu)程序設(shè)計、循環(huán)結(jié)構(gòu)、一維數(shù)組、二維數(shù)組、字符數(shù)組和字符串、函數(shù)、指針、結(jié)構(gòu)體、鏈表、文件等章節(jié),其中對于有一定難度的章節(jié)有更細致的劃分,如指針等,具體請參考本書目錄。
【主要特色】
(1) 簡單易學的組織結(jié)構(gòu)。強調(diào)循序漸進,針對有難度的主題,以螺旋式漸進方式組織主題,逐漸增加細節(jié)內(nèi)容,并前后呼應(yīng)。
(2) 強調(diào)編程基礎(chǔ),弱化C語法特色。本課程主題在于程序設(shè)計的基本思想方法,雖然離不開C的語言特色,但不再致力于語法學習,摒棄常用的陷阱設(shè)計以及為了出題而出題的局限,努力致力于實用與實踐。
(3) 突出關(guān)鍵,擇去旁枝。在實現(xiàn)同一種程序設(shè)計的方法較多時,不再追求大而全、面面俱到的學習方法,舍棄次要內(nèi)容,選擇最常用的一到兩種,對比加強,用好用透即可。
(4) 強調(diào)通用方法,弱化技巧。本教程試圖采用通用規(guī)范的方法輔助學生學習并實踐程序設(shè)計思想,而不是注重于技巧,并以范例的形式為學生解讀個別經(jīng)典的程序設(shè)計技巧。
(5) 注重標準化,強調(diào)編寫風格,強調(diào)軟件工程思想。本教程注重以軟件工程的思想進行程序設(shè)計,并逐步引導學生建立某種編程風格,堅持程序易讀、可維護。
(6) 選例適當,便于自學。每個實驗通常有三個以上的典型例題,覆蓋本實驗的關(guān)鍵知識點。典型例題注解清晰,知識點明確易懂,風格良好,幫助學生掌握知識點。
(7) QandA解問答疑。每個實驗中都有一個QandA部分,匯集本實驗相關(guān)的常見問題及其答案,對一些難以理解的問題予以進一步解釋說明。
【培養(yǎng)目標及學習成果】
本書介紹程序設(shè)計的基本方法和基本理論,及C語言實現(xiàn),幫助學習者循序漸進地將程序設(shè)計方法運用于實踐,使學習者逐步掌握運用軟件工程的思想進行程序設(shè)計的能力,同時培養(yǎng)學生具備IT行業(yè)要求的職業(yè)素養(yǎng),主動培養(yǎng)以下多方面的能力: 學習能力、問題描述能力、問題分析能力、選擇合適的方法解決問題的能力、多種方案的比較能力、編碼能力、測試能力、交流溝通能力、文檔表達能力、模塊復用能力等。
1. 技能
(1) 能夠清楚軟件工程思想解決問題的各個步驟,并行之有效地運用于程序設(shè)計。
(2) 能夠熟悉一些常用的算法,如輾轉(zhuǎn)相除法、冒泡排序法、插入排序法、選擇排序法、二分查找法等。
(3) 具備一定的程序閱讀與分析能力,以及對比分析能力。
(4) 能夠按照一定步驟進行程序設(shè)計。
(5) 熟悉編譯器,具備一定的程序調(diào)試能力。
2. 分析問題的能力
(1) 能夠根據(jù)通用算法步驟合理劃分子問題。
(2) 能夠?qū)Τ霈F(xiàn)的問題予以討論和分析,列出各種自行解決方案及結(jié)果,以便于分析并尋求解決方案。
(3) 根據(jù)程序運行結(jié)果判別程序輸出是否符合要求。
3. 表達能力
(1) 能夠使用結(jié)構(gòu)化程序設(shè)計思想,結(jié)合偽碼、代碼或者自然語言,正確描述一個簡單的問題或小課題。
(2) 能夠使用自然語言描述問題。
(3) 能夠使用自然語言表達解決思路。
(4) 能夠用算法表述解決步驟。
(5) 能夠使用程序設(shè)計語言表達解決思路。
4. 交流溝通能力
(1) 能夠向他人陳述問題和想法,并確認對方能夠理解。
(2) 能夠耐心傾聽他人的描述,理解其描述,并及時反饋。
(3) 能夠理解他人的問題,并陳述問題產(chǎn)生的原因和解決辦法。
5. 程序調(diào)試、測試能力
(1) 編譯器報錯或警告時,能夠理解出錯或警告信息。
(2) 能夠根據(jù)編譯器信息對源代碼錯誤進行定位,修改后,再編譯。
(3) 能夠單步調(diào)試程序。
(4) 能夠設(shè)計各種測試數(shù)據(jù)檢驗程序是否設(shè)計正確。
【教學安排】
本教程由24個實驗單元和一個項目演練單元構(gòu)成。但是實驗單元序號并非線性排列,這是考慮到主題相同的知識單元,一次實驗課未必能夠掌握,比如循環(huán)結(jié)構(gòu),通常會對初學者構(gòu)成一個關(guān)卡,于是我們根據(jù)教學經(jīng)驗和學生反饋拆分成為兩個單元,即實驗41和實驗42,將雙重循環(huán)等內(nèi)容放在了實驗42中。另如數(shù)組,也按照知識單元總章劃分為實驗51一維數(shù)組、實驗52 二維數(shù)組,以及實驗53字符數(shù)組和字符串。以后其他章節(jié)也如此安排,比如指針、結(jié)構(gòu)體以及鏈表等。
如果課程安排為5個學分,即實驗課程為68個學時,拋去習題課和節(jié)假日沖突,則本教程基本對應(yīng)于一課一練,即每次實驗課一個實驗單元?梢粋學期使用,也可以拆分為兩個學期使用。也可供其他學分安排的課程作為實驗參考。
項目演練可以作為學期綜合大作業(yè),也可以用于課程實踐環(huán)節(jié)的內(nèi)容,主旨是將所學的零散知識點有機組織起來,完成一個較具規(guī)模的綜合應(yīng)用型項目。
本教程中有部分實驗習題或?qū)嶒瀱卧?號出現(xiàn),意為選學或選做內(nèi)容,學習者可以根據(jù)自己的學習能力和學習時間靈活安排。
【學習策略】
通過程序設(shè)計基礎(chǔ)這門課程,希望培養(yǎng)學習者良好的學習習慣和職業(yè)素養(yǎng)。
學習是一個循序漸進的過程,對初學者而言,內(nèi)容均為新概念、新知識、新思維方式,若完全靠自己看書、閱讀教材,可能比較艱苦,有一定的難度,有些內(nèi)容甚至完全看不懂。
學習沒有捷徑可走,學習者不要因為個別問題搞不懂,不能一下子掌握知識就望而生畏、停滯不前,有些內(nèi)容需要有一個消化過程。學習者應(yīng)充分利用各種資源,做好預習和復習工作,提高學習效率,再輔之以適當?shù)莫毩W習時間,才能學好本課程,為后繼專業(yè)學習打下堅實的基礎(chǔ)。對平時學習內(nèi)容結(jié)合實驗教程反復思考,吃透每一知識點,深刻理解每一個基本概念、基本原理的要領(lǐng)。
寫程序從哪里開始?大多數(shù)新手看到問題或者題目后,立刻開始編碼,然后調(diào)試程序,希望馬上得到正確的結(jié)果。其實,這不是個好習慣。
正確的方法是應(yīng)用軟件工程的思想分析和解決問題。有一個大致的算法分析或者解決步驟后,再進行編碼,沒有方案設(shè)計就進行編碼,將增加無謂的調(diào)試時間。
另外,需要注意合理分配學習時間,掌握學習節(jié)奏。
一般地,在本課程學習活動中,每周應(yīng)保持約10小時的學習時間,大致參考如下。
理論課: 1.5小時
上機實踐: 1.5小時
課后自習: 7小時
【致謝】
首先,要感謝清華大學出版社,感謝出版社對書稿改版的支持和理解,以及對書稿所做的文字編輯工作。
本書的形成是教學過程逐漸累積的過程,感謝曾經(jīng)一起工作的同事賀貫中、胡明慶,他們嚴謹?shù)闹螌W態(tài)度,以及針對學生特色對教材的定制和裁剪方法對本書產(chǎn)生了比較重要的影響。
感謝一同工作在同一課程及后繼課程的各位老師: 姚暢、應(yīng)新洋、江左文、周國兵、劉慰、高巍、聶琰、孫霞、胡旭昶、蔣偉鋼等,他們?yōu)楸緯暙I了大量有價值的反饋信息和修改建議,同時感謝袁一峰、徐麗寧和蔡麗雅等給予的熱情支持。感謝學院主管部門領(lǐng)導趙一鳴、楊相生和張戰(zhàn)等給予的支持和鼓勵。
感謝眾多的學生,他們使用了早期的書稿,并提供了大量的反饋信息,幫助作者更好地調(diào)整知識結(jié)構(gòu)和出題策略,感謝歷年來參與輔助答疑的學生助教們。感謝陳曉、林榆竣、胡啟淵、周亮等幫助編寫并調(diào)試程序。
此外,本教程受到2009年度寧波大學科學技術(shù)學院計算科學與技術(shù)省重點建設(shè)專業(yè)項目、2010年度寧波大學教材建設(shè)項目以及2010年度寧波大學科學技術(shù)學院軟件工程重點專業(yè)建設(shè)項目資助。
編者
2012年6月
實驗1 簡單C程序
【知識點回顧】
【典型例題】
【Q&A】
【實驗內(nèi)容】
【課后練習】
實驗2 順序結(jié)構(gòu)
【知識點回顧】
【典型例題】
【Q&A】
【實驗內(nèi)容】
【課后練習】
實驗3 分支結(jié)構(gòu)
【知識點回顧】
【典型例題】
【Q&A】
【實驗內(nèi)容】
【課后練習】
實驗4-1 循環(huán)結(jié)構(gòu)
【知識點回顧】
【典型例題】
【Q&A】
【實驗內(nèi)容】
【課后練習】
實驗4-2 循環(huán)結(jié)構(gòu)
【知識點回顧】
【典型例題】
【Q&A】
【實驗內(nèi)容】
【課后練習】
實驗5-1 一維數(shù)組
【知識點回顧】
【典型例題】
【Q&A】
【實驗內(nèi)容】
【課后練習】
實驗5-2 二維數(shù)組
【知識點回顧】
【典型例題】
【Q&A】
【實驗內(nèi)容】
【課后練習】
實驗5-3 字符數(shù)組和字符串
【知識點回顧】
【典型例題】
【Q&A】
【實驗內(nèi)容】
【課后練習】
實驗6-1 函數(shù)
【知識點回顧】
【典型例題】
【Q&A】
【實驗內(nèi)容】
【課后練習】
實驗6-2 函數(shù)
【知識點回顧】
【典型例題】
【Q&A】
【實驗內(nèi)容】
【課后練習】
實驗6-3 函數(shù)
實驗7-1 指針基本概念
實驗7-2 指針與一維數(shù)組
實驗7-3 指針與二維數(shù)組
實驗7-4 指針與字符數(shù)組
實驗7-5 其他指針
實驗8-1 結(jié)構(gòu)體
實驗8-2 結(jié)構(gòu)體
實驗9-1 鏈表初步
實驗9-2 單鏈表
實驗9-3 單鏈表
實驗9-4 其他鏈表
實驗10 文件
實驗11 預處理
實驗12 項目演練
參考文獻