《C#程序設計/大學計算機基礎教育規劃教材》以C#為基礎,系統地介紹了程序語言的特性以及簡單的算法與數據結構技術。全書共包含9章,以程序設計語言、程序設計方法和程序設計技術三大主題組織教材,采用“數據表示”和“程序實現”雙線索知識體系,按照應用問題求解的知識需求順序進行內容編排,優化了程序設計的知識結構。
《C#程序設計/大學計算機基礎教育規劃教材》結構清晰、圖文并茂,語言樸實簡潔,并輔有大量表格和代碼示例,全面地闡述了最新版C#語言(C#語言規范4.O版本)的各種特性,同時配套有經過多年教學實踐的程序設計綜合訓練平臺,使讀者能夠快速理解、學習和使用C#。
《C#程序設計/大學計算機基礎教育規劃教材》可作為高等院校理工類、文管類專業和信息技術類培訓機構的程序設計課程教材,也可作為計算機程序愛好者學習程序開發和編程技術的自學教材。
程序設計是大學計算機基礎教育和計算機專業的基礎核心課程,是其他專業技術課或實踐環節的軟件工具和驗證手段,也是大學生參加課程設計、畢業設計、創新實驗、科技制作和學科競賽等活動的主要實現平臺,是各類專業必修的計算機類基礎課程。
C#是近些年在國內外得到廣泛應用的計算機程序設計語言,其設計宗旨為“簡單、現代、通用”;它安全、穩定、簡單、優雅,是由C和C++衍生出來的面向對象編程語言,在繼承C和C++強大功能的同時去掉了一些復雜特性(例如,沒有宏以及不允許多重繼承)。同時,C#綜合了VB簡單的可視化操作和C++的高運行效率,以其強大的操作能力、優雅的語法風格、創新的語言特性和便捷的面向組件編程支持成為.NET開發的首選語言,在TIOBE編程語言排行榜上位列前茅。
然而,程序設計的學習難度很大,尤其C#這種完全面向對象的語言,很多學生學習結束后仍然不會編寫程序,無法把解題的思路變成代碼,更談不上利用程序設計解決實際應用問題。作者經過多年教學經驗總結發現,單調的程序語言教學、貧乏的編程技能訓練是造成教學效果不佳的重要原因。
為此,編者結合自主研發的程序設計綜合平臺和教學輔助軟件群,推出以語言為工具、以技能為目標、以編程技術為核心的系列程序設計教材。
本教材遵循編者多年提倡的“精講多練、注重技能、開拓創新”的教學理念,在程序設計語言知識體系的構建上,在算法、數據結構等與程序設計的結合上精心設計,力圖適合高等院校和計算機培訓的教學目標和培養要求,體現出以下5個特色。
1. 雙線索的程序設計知識體系
本教材的雙線索程序設計知識體系以“數據表示”和“程序實現”作為教學上的兩條主線索,螺旋上升、交叉推進,如圖0.1所示。
圖0.1雙螺旋線索C#知識體系示意首先,教材通過簡單程序引出程序基本結構,以編程為目標給出兩條線索: 數據表示和程序實現。其次,從引入簡單程序框架開始,逐步解決運算和程序組織,進而上升到程序模塊化的實現。最后,從基本類型提高到復雜數據類型,上升到結構體和類層面的數據表示。雙螺旋線索結構揭示了程序設計與應用軟件開發的一般規律。
實際教學效果表明,雙線索程序語言知識體系突出了程序設計方法學,使程序語言成為服務于編程的工具而不是目標,學習者既能獲得語言知識,又能掌握編程技能。
2. 優化程序設計知識安排
現有的多數教材中知識安排導致以技能為目標的程序設計難以實現,出現教學瓶頸。表現在語言階段冗長,使得以函數、自定義類型等內容為教學中心的編程階段在實際教學中接近期末,從而使應用程序設計教學目標落空。
本教材在程序設計語言知識方面采用了“快節奏”,在程序設計方法和編程技術方面采用了“慢節奏”,解決了多年來程序設計教與學的難題。教材中,語言基礎知識的學習被大幅度壓縮,從一開始就以簡單程序框架展開程序知識,直接進入以程序模塊化為主的教學環境。這種安排策略使得教師方便精講知識,學生方便早練多練;而較難的以編程技術為核心的專題分配更多學時,方便教師組織技能訓練,學生獲得編程技巧。
另外,本教材的所有內容安排緊密結合人類進行實際應用問題求解的認識過程和循序漸進的規律,章節知識點的名稱也體現出程序設計與自然領域的對應關系,使得學生在學習過程中更容易實現程序設計知識向編程技能的轉化。
3. 注重典型案例的精選和提煉
本教材設計了初級難度語言示范型、中等難度算法應用型以及較高難度綜合設計型三種梯度的案例。通過這些精選的案例,提高學生的程序設計學習興趣,激發學生的學習熱情,開闊其在計算機現實問題求解上的視野和思維,使之在程序設計方法和思路的開拓與編程技巧的應用上有一個深層次的鍛煉和提高。
4. 注重編程風格
本書使用C#語言規范4.0,充分體現了程序語言的最新進展和當前業界的最佳實踐。
書中廣泛采用各專業公司的編程規范優點,從語法語義、書寫形式等方面潛移默化地引導學習者與專業化接軌。
書中所有程序均在Visual Studio 2010上調試通過。同時,教材中的所有源代碼均可在清華大學出版社網站上下載。
5. 配套程序設計教學平臺、系列教學軟件和教學資源
自2001年以來,編者基于專業的軟件開發科研優勢,結合一線教學和課程改革的經驗,圍繞課堂、實驗、作業、設計、考核5個教學環節,開發了系列教育軟件。例如,“程序設計在線評測系統INPOJ”采用計算機系統使學生通過大量習題的訓練提高解題速度以解決TLOC(Total Line of Codes,累計代碼行數);“軟件設計協同開發平臺DevForge”按專業軟件開發方式引導、跟蹤、自動評閱學生課程設計程序和報告以解決SLOC(Software Lines of Code,軟件代碼的行數);“遠程網絡考試系統inTest”實現技能測試和實踐考核;“網絡硬盤inBox”實現學生作業和文檔的規范管理與存儲。這些教學平臺的使用,使得實驗機房變成了學生討論、思考、相互教授的研究場所,形成數字化課堂教學、網絡輔助教學、電子教室、智能答疑、綜合訓練等立體化教學環境,為落實教學理念和教學目標提供了先進工具。
使用本教材的高等院校和培訓機構想要進一步了解有關程序設計綜合訓練平臺和系列教育軟件的更多信息,請與作者(jxf@nwpu.edu.cn)聯系。
本書內容共分為9章,內容從結構化的程序設計逐步上升到面向對象程序設計的方法,知識體系結構和內容安排策略由劉君瑞和姜學鋒共同設計完成,第1章由姜學鋒編寫,第2~9章內容由劉君瑞編寫,全書由劉君瑞主編并統稿。在書稿的編著過程中,得到了許多專家的關心和熱情支持,西北工業大學計算機基礎教學的老師們對全書的內容提出了許多寶貴的意見和建議,特別是魏英和張秀偉對本書的編寫給了很大的幫助,清華大學出版社對本書的出版十分重視并做了周到的安排。在此,對所有鼓勵、支持和幫助過本書編寫工作的領導、專家、同事和廣大讀者表示真摯的謝意!
由于時間緊迫以及作者水平有限,書中難免有不足、疏漏之處,懇請讀者批評指正。
作者2014年1月于西北工業大學
第1章 程序設計基礎
1.1 計算機系統和工作原理
1.1.1 計算機系統的組成
1.1.2 指令、程序與軟件
1.2 信息的表示與存儲
1.2.1 計算機的數字系統
1.2.2 進位記數制的轉換
1.2.3 數值數據的表示
1.2.4 非數值數據的表示
1.3 程序設計語言
1.3.1 機器語言與匯編語言
1.3.2 高級語言
1.4 程序設計概述
1.4.1 計算機問題求解的基本特點
1.4.2 算法的定義與特性 第1章 程序設計基礎
1.1 計算機系統和工作原理
1.1.1 計算機系統的組成
1.1.2 指令、程序與軟件
1.2 信息的表示與存儲
1.2.1 計算機的數字系統
1.2.2 進位記數制的轉換
1.2.3 數值數據的表示
1.2.4 非數值數據的表示
1.3 程序設計語言
1.3.1 機器語言與匯編語言
1.3.2 高級語言
1.4 程序設計概述
1.4.1 計算機問題求解的基本特點
1.4.2 算法的定義與特性
1.4.3 算法的表示
1.4.4 程序設計技術
1.5 C#語言概述
1.5.1 C#語言的歷史與特點
1.5.2 C#語言基本詞法
1.5.3 簡單的C#程序
1.5.4 C#程序基本結構
1.5.5 C#程序開發步驟
1.5.6 C#程序編碼風格
習題
第2章 將簡單數據與計算引入C#
2.1 數據類型
2.1.1 整型
2.1.2 實數型
2.1.3 字符和字符串
2.1.4 布爾型
2.2 常量
2.2.1 整數字面常量
2.2.2 實數字面常量
2.2.3 字符字面常量
2.2.4 字符串字面常量
2.2.5 符號常量
2.3 變量
2.3.1 變量的概念
2.3.2 定義變量
2.3.3 使用變量
2.3.4 可空類型
2.4 運算符與表達式
2.4.1 運算符與表達式的概念
2.4.2 數值數據的運算與處理
2.4.3 文本數據的運算與處理
2.4.4 邏輯數據的運算與處理
2.4.5 其他運算符
2.4.6 常量表達式
2.5 賦值和類型轉換
2.5.1 賦值運算符
2.5.2 類型轉換
習題
第3章 程序控制結構
3.1 語句
3.1.1 簡單語句
3.1.2 復合語句
3.1.3 注釋
3.1.4 語句的寫法
3.2 輸入與輸出
3.2.1 輸入方法
3.2.2 輸出方法
3.3 程序順序結構
3.3.1 順序執行
3.3.2 跳轉執行
……
第4章 模塊化程序設計
第5章 批量數據的表示與處理
第6章 復雜數據的表示與處理
第7章 類和對象
第8章 規模化程序設計
第9章 永久性數據的操作
附錄A ASCII碼對照表
附錄B 常用字符的Unicode編碼表
附錄C C#語言關鍵字
附錄D C#語言運算符及其優先級、結合性
參考文獻