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