計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言是高校理工科本科生必修的一門(mén)核心課程。傳統(tǒng)上,高校主要教授C/C++,但C++既非純粹的面向?qū)ο笳Z(yǔ)言,編程界面也需依賴外部工具。將大量時(shí)間投入在面向過(guò)程的程序設(shè)計(jì)上,限制了學(xué)生對(duì)面向?qū)ο蠛涂梢暬缑婢幊痰恼莆。近年?lái),Python 和C#受到青睞,后者作為微軟推出的面向?qū)ο笳Z(yǔ)言,為理工科應(yīng)用軟件開(kāi)發(fā)提供了全方位支持。本書(shū)作者根據(jù)多年教學(xué)經(jīng)驗(yàn),編寫(xiě)了這本以C#面向?qū)ο蟪绦蛟O(shè)計(jì)為核心的高校教材,并包含了習(xí)題練習(xí),旨在系統(tǒng)地講解C#基本語(yǔ)法及其應(yīng)用,并培養(yǎng)學(xué)生面向?qū)ο蟮某绦蛟O(shè)計(jì)能力。本書(shū)可作為高等院校電子信息類、計(jì)算機(jī)類、自動(dòng)化類、機(jī)電類等專業(yè)的C#語(yǔ)言教材,也可作為相關(guān)技術(shù)培訓(xùn)教材,還可供從事相關(guān)技術(shù)開(kāi)發(fā)的工程技術(shù)人員參考。
。本書(shū)作者根據(jù)多年教學(xué)經(jīng)驗(yàn),編寫(xiě)了這本以C#面向?qū)ο蟪绦蛟O(shè)計(jì)為核心的高校教材,并包含了習(xí)題練習(xí),旨在系統(tǒng)地講解C#基本語(yǔ)法及其應(yīng)用,并培養(yǎng)學(xué)生面向?qū)ο蟮某绦蛟O(shè)計(jì)能力。
計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言是高校理工科本科生必修的且唯一(非計(jì)算機(jī)專業(yè)) 的一門(mén)信息類課程,對(duì)于處處離不開(kāi)計(jì)算機(jī)的時(shí)代,這樣的學(xué)習(xí)機(jī)會(huì)顯得尤為珍貴。通過(guò)該課程的學(xué)習(xí),可以掌握程序設(shè)計(jì)的方法以及一門(mén)設(shè)計(jì)語(yǔ)言的語(yǔ)法,同時(shí)也具備了開(kāi)發(fā)小型計(jì)算應(yīng)用軟件、管理軟件的能力,如機(jī)械優(yōu)化設(shè)計(jì)軟件、齒輪設(shè)計(jì)軟件、圖書(shū)與人事管理軟件等。近十多年來(lái),高校非計(jì)算機(jī)類的理工科專業(yè)主要開(kāi)設(shè)C/C++ 計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言課程。C/C++ 是一種介于低級(jí)語(yǔ)言和高級(jí)語(yǔ)言之間的中級(jí)語(yǔ)言,其為工業(yè)控制程序的設(shè)計(jì)以及底層應(yīng)用程序的開(kāi)發(fā)提供了便利,使控制程序的設(shè)計(jì)不再需要掌握匯編語(yǔ)言。但在程序設(shè)計(jì)方法上,C++ 不是純粹的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,且界面開(kāi)發(fā)需要借助第三方工具或軟件如MFC,其界面開(kāi)發(fā)糾錯(cuò)難度大。另外,所有C++ 語(yǔ)言教學(xué)都是用面向過(guò)程的程序設(shè)計(jì)方法開(kāi)展語(yǔ)句、語(yǔ)法的教學(xué),然后再用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,介紹類、對(duì)象的概念及其高級(jí)編程技術(shù),且在用面向過(guò)程程序設(shè)計(jì)方法進(jìn)行C++ 語(yǔ)法學(xué)習(xí)與編程實(shí)踐訓(xùn)練中花費(fèi)的教學(xué)時(shí)數(shù)占總課程時(shí)數(shù)的70%,這是不可否認(rèn)的事實(shí)。多年的教學(xué)經(jīng)驗(yàn)告訴我們,這樣的教學(xué)結(jié)果是學(xué)生僅掌握了C++ 面向過(guò)程的程序設(shè)計(jì)方法,可以開(kāi)發(fā)簡(jiǎn)單的控制臺(tái)界面下的應(yīng)用程序,而對(duì)于C++ 面向?qū)ο蟮某绦蛟O(shè)計(jì)、可視化界面程序設(shè)計(jì)等基本無(wú)從下手。導(dǎo)致這種結(jié)果的原因是在面向過(guò)程的程序設(shè)計(jì)應(yīng)用實(shí)踐上花費(fèi)了太多的時(shí)間,雖然這是學(xué)習(xí)C++ 基本語(yǔ)法必須經(jīng)歷的過(guò)程,但是制約了大學(xué)生計(jì)算機(jī)語(yǔ)言程序設(shè)計(jì)能力的培養(yǎng)。近年來(lái),Python、C# 受到大學(xué)生的青睞和高校的關(guān)注。二者都是全面面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,Python 具有開(kāi)源式代碼,深受程序設(shè)計(jì)者喜愛(ài),但主要面向人工智能領(lǐng)域,不太適用工業(yè)控制軟件的開(kāi)發(fā)。C# 是微軟公司于2000 年推出的、為新一代技術(shù)平臺(tái)Micosoft.NET 提供的優(yōu)秀的編程開(kāi)發(fā)語(yǔ)言之一。微軟對(duì)C# 的定義是:C# 是一種類型安全的、現(xiàn)代的、簡(jiǎn)單的,由C 和C++ 衍生出來(lái)的面向?qū)ο蟮木幊陶Z(yǔ)言,其系統(tǒng)含有可視化界面設(shè)計(jì)模塊。這就為理工科類應(yīng)用軟件的開(kāi)發(fā)提供了全方位能力,編者認(rèn)為這是非計(jì)算機(jī)類理工科大學(xué)生應(yīng)該學(xué)習(xí)的最具價(jià)值的程序設(shè)計(jì)語(yǔ)言。編者從事計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言的教學(xué)二十多年,應(yīng)用C++ 開(kāi)發(fā)過(guò)機(jī)械優(yōu)化設(shè)計(jì)軟件,應(yīng)用VB 在ANSYS、Fluent、SolidWorks 等后臺(tái)開(kāi)發(fā)過(guò)相應(yīng)的專業(yè)軟件,具備豐富的計(jì)算機(jī)語(yǔ)言教學(xué)經(jīng)驗(yàn)和程序設(shè)計(jì)經(jīng)驗(yàn)。編者在認(rèn)真閱讀了目前出版的C# 書(shū)籍(含培訓(xùn)教材) 后發(fā)現(xiàn),目前還沒(méi)有一本以面向?qū)ο蟪绦蛟O(shè)計(jì)方法為程序架構(gòu)、系統(tǒng)介紹C# 基本語(yǔ)法與程序訓(xùn)練的高校教材。鑒于此,編者組織具有良好的程序設(shè)計(jì)實(shí)戰(zhàn)經(jīng)驗(yàn)和教學(xué)經(jīng)驗(yàn)的團(tuán)隊(duì)編寫(xiě)了本書(shū)。本書(shū)的特點(diǎn)包括:真正講清楚了面向?qū)ο蟮某绦蛟O(shè)計(jì)思想,真正講清楚了利用抽象獲取類成員的技術(shù)以及類的封裝、繼承與派生、多態(tài)等作用,真正系統(tǒng)介紹了C# 基本語(yǔ)法和應(yīng)用案例,真正講清楚了類聲明中修飾符的作用與應(yīng)用場(chǎng)合,每章配有一定數(shù)量的習(xí)題供讀者練習(xí)。編者對(duì)本書(shū)內(nèi)容進(jìn)行了全面的規(guī)劃,并得到了多所高校計(jì)算機(jī)課程負(fù)責(zé)人的認(rèn)可。夏建芳教授負(fù)責(zé)全書(shū)各章節(jié)內(nèi)容的策劃與編排,并編寫(xiě)了第1 章、第7 章、第8 章、第9 章,盧知來(lái)博士(副教授) 編寫(xiě)了第2 章、第3 章、第4 章,陳力銘博士(副教授) 編寫(xiě)了第6 章、第10 章、第11 章,潘晴博士(副教授) 編寫(xiě)了第5 章,宋佳楠博士和陳龍庭博士編寫(xiě)了各章習(xí)題。夏建芳教授對(duì)本書(shū)進(jìn)行了認(rèn)真的統(tǒng)合。雖然團(tuán)隊(duì)在本書(shū)的編寫(xiě)過(guò)程中付出了很多的時(shí)間和精力,但難免有考慮不周的地方,敬請(qǐng)讀者批評(píng)指正,以在教學(xué)過(guò)程中及時(shí)糾正,再版時(shí)及時(shí)改正。
高等院校教師
目 錄前言第1 章 面向?qū)ο蟪绦蛟O(shè)計(jì)思維及C# 概述 11.1 面向?qū)ο笏季S如何模擬世界 11.2 NET 與C# 編程語(yǔ)言 41.3 開(kāi)發(fā)環(huán)境的搭建 61.4 計(jì)算機(jī)語(yǔ)言中的標(biāo)識(shí)符與關(guān)鍵字 91.5 類的定義與對(duì)象的建立 101.6 C# 的組織架構(gòu)與項(xiàng)目創(chuàng)建 101.7 創(chuàng)建新項(xiàng)目 121.8 命名空間 161.9 控制臺(tái)程序中的標(biāo)準(zhǔn)輸入輸出 20習(xí)題 22第2 章 C# 的數(shù)據(jù)類型與表達(dá)式 252.1 計(jì)算機(jī)內(nèi)存結(jié)構(gòu)與管理 252.2 常量 262.3 變量 302.4 值類型變量與引用類型變量 362.5 變量的類型轉(zhuǎn)換 372.6 變量的作用域與生存期 402.7 運(yùn)算符與表達(dá)式 412.8 運(yùn)算符的優(yōu)先級(jí)與結(jié)合性 492.9 復(fù)雜表達(dá)式的計(jì)算實(shí)例 51習(xí)題 52第3 章 類的聲明與成員訪 543.1 類的概述 543.2 類的字段變量 603.3 類的方法聲明及構(gòu)造、析構(gòu)函數(shù) 713.4 方法深度學(xué)習(xí) 783.5 靜態(tài)類 963.6 Lambda 表達(dá)式——匿名函數(shù) 983.7 委托及其應(yīng)用 983.8 C# 中常用的預(yù)定義類 1003.9 類庫(kù)文件(.dll) 的創(chuàng)建與引用操作 1063.10 含多個(gè)源程序的項(xiàng)目創(chuàng)建過(guò)程 107習(xí)題 108第4 章 C# 程序流程控制語(yǔ)句 1114.1 C# 程序常用語(yǔ)句概述 1114.2 賦值語(yǔ)句 1134.3 復(fù)合語(yǔ)句 1144.4 選擇結(jié)構(gòu)語(yǔ)句 1144.5 循環(huán)結(jié)構(gòu) 1194.6 跳轉(zhuǎn)語(yǔ)句 1234.7 using 語(yǔ)句 1274.8 選擇、循環(huán)結(jié)構(gòu)的嵌套 1284.9 方法的遞歸調(diào)用 1304.10 綜合應(yīng)用 132習(xí)題 136第5 章 字符及字符串操 1395.1 char 字符類 1395.2 string 字符串類型 1425.3 可變字符串類StringBuilder 153習(xí)題 155第6 章 結(jié)構(gòu)體和枚 1586.1 結(jié)構(gòu)體類型定義 1586.2 結(jié)構(gòu)體變量及其使用 1626.3 枚舉及其應(yīng)用 1686.4 綜合應(yīng)用 170習(xí)題 174第7 章 數(shù)組和集 1777.1 數(shù)組概述與數(shù)組的聲明 1777.2 一維數(shù)組和二維數(shù)組的實(shí)例化與初始化 1787.3 數(shù)組元素的訪問(wèn) 1807.4 數(shù)組常用屬性與方法 1817.5 數(shù)組的應(yīng)用 1837.6 交錯(cuò)數(shù)組 1937.7 Array 類 1967.8 泛型集合 2007.9 綜合應(yīng)用 205習(xí)題 208第8 章 類的繼承與派 2118.1 基類與派生類 2118.2 抽象類及其派生類 2198.3 接口及其實(shí)現(xiàn)類 2218.4 接口和抽象類的區(qū)別 2258.5 虛方法的聲明及其在派生類中的重寫(xiě) 2268.6 多態(tài) 2318.7 對(duì)象數(shù)組的聲明及其實(shí)例化與初始化 2378.8 設(shè)計(jì)范例 2388.9 綜合應(yīng)用 241習(xí)題 243第9 章 文件操 2479.1 文本數(shù)據(jù)文件與二進(jìn)制數(shù)據(jù)文件概述 2479.2 File 類和FileInfo 類 2529.3 Directory 類和DirectoryInfo 類 2579.4 FileStream 類及其數(shù)據(jù)文件讀寫(xiě) 2629.5 StreamReader/StreamWriter 類讀寫(xiě)文本數(shù)據(jù)文件 2739.6 BinaryReader/BinaryWriter 類讀寫(xiě)二進(jìn)制數(shù)據(jù)文件 2779.7 讀寫(xiě)Excel 文件 2849.8 綜合應(yīng)用 286習(xí)題 288第10 章 程序調(diào)試與異常處 29110.1 使用Visual Studio 調(diào)試C# 代碼 29110.2 異常處理 295第11 章 實(shí)踐安排 30211.1 實(shí)驗(yàn)一:流程控制語(yǔ)句程序設(shè) 30211.2 實(shí)驗(yàn)二:數(shù)組、方法及參數(shù)傳遞程序設(shè) 30311.3 實(shí)驗(yàn)三:繼承與派生程序設(shè) 30311.4 實(shí)驗(yàn)四:文件操作程序設(shè) 304附錄 ACSII 編碼表 305參考文 306