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