计算机程序设计语言是高校理工科本科生必修的一门核心课程。传统上,高校主要教授C/C++,但C++既非纯粹的面向对象语言,编程界面也需依赖外部工具。将大量时间投入在面向过程的程序设计上,限制了学生对面向对象和可视化界面编程的掌握。近年来,Python 和C#受到青睐,后者作为微软推出的面向对象语言,为理工科应用软件开发提供了全方位支持。本书作者根据多年教学经验,编写了这本以C#面向对象程序设计为核心的高校教材,并包含了习题练习,旨在系统地讲解C#基本语法及其应用,并培养学生面向对象的程序设计能力。本书可作为高等院校电子信息类、计算机类、自动化类、机电类等专业的C#语言教材,也可作为相关技术培训教材,还可供从事相关技术开发的工程技术人员参考。
。本书作者根据多年教学经验,编写了这本以C#面向对象程序设计为核心的高校教材,并包含了习题练习,旨在系统地讲解C#基本语法及其应用,并培养学生面向对象的程序设计能力。
计算机程序设计语言是高校理工科本科生必修的且唯一(非计算机专业) 的一门信息类课程,对于处处离不开计算机的时代,这样的学习机会显得尤为珍贵。通过该课程的学习,可以掌握程序设计的方法以及一门设计语言的语法,同时也具备了开发小型计算应用软件、管理软件的能力,如机械优化设计软件、齿轮设计软件、图书与人事管理软件等。近十多年来,高校非计算机类的理工科专业主要开设C/C++ 计算机程序设计语言课程。C/C++ 是一种介于低级语言和高级语言之间的中级语言,其为工业控制程序的设计以及底层应用程序的开发提供了便利,使控制程序的设计不再需要掌握汇编语言。但在程序设计方法上,C++ 不是纯粹的面向对象的程序设计语言,且界面开发需要借助第三方工具或软件如MFC,其界面开发纠错难度大。另外,所有C++ 语言教学都是用面向过程的程序设计方法开展语句、语法的教学,然后再用面向对象的程序设计方法,介绍类、对象的概念及其高级编程技术,且在用面向过程程序设计方法进行C++ 语法学习与编程实践训练中花费的教学时数占总课程时数的70%,这是不可否认的事实。多年的教学经验告诉我们,这样的教学结果是学生仅掌握了C++ 面向过程的程序设计方法,可以开发简单的控制台界面下的应用程序,而对于C++ 面向对象的程序设计、可视化界面程序设计等基本无从下手。导致这种结果的原因是在面向过程的程序设计应用实践上花费了太多的时间,虽然这是学习C++ 基本语法必须经历的过程,但是制约了大学生计算机语言程序设计能力的培养。近年来,Python、C# 受到大学生的青睐和高校的关注。二者都是全面面向对象的程序设计语言,Python 具有开源式代码,深受程序设计者喜爱,但主要面向人工智能领域,不太适用工业控制软件的开发。C# 是微软公司于2000 年推出的、为新一代技术平台Micosoft.NET 提供的优秀的编程开发语言之一。微软对C# 的定义是:C# 是一种类型安全的、现代的、简单的,由C 和C++ 衍生出来的面向对象的编程语言,其系统含有可视化界面设计模块。这就为理工科类应用软件的开发提供了全方位能力,编者认为这是非计算机类理工科大学生应该学习的最具价值的程序设计语言。编者从事计算机程序设计语言的教学二十多年,应用C++ 开发过机械优化设计软件,应用VB 在ANSYS、Fluent、SolidWorks 等后台开发过相应的专业软件,具备丰富的计算机语言教学经验和程序设计经验。编者在认真阅读了目前出版的C# 书籍(含培训教材) 后发现,目前还没有一本以面向对象程序设计方法为程序架构、系统介绍C# 基本语法与程序训练的高校教材。鉴于此,编者组织具有良好的程序设计实战经验和教学经验的团队编写了本书。本书的特点包括:真正讲清楚了面向对象的程序设计思想,真正讲清楚了利用抽象获取类成员的技术以及类的封装、继承与派生、多态等作用,真正系统介绍了C# 基本语法和应用案例,真正讲清楚了类声明中修饰符的作用与应用场合,每章配有一定数量的习题供读者练习。编者对本书内容进行了全面的规划,并得到了多所高校计算机课程负责人的认可。夏建芳教授负责全书各章节内容的策划与编排,并编写了第1 章、第7 章、第8 章、第9 章,卢知来博士(副教授) 编写了第2 章、第3 章、第4 章,陈力铭博士(副教授) 编写了第6 章、第10 章、第11 章,潘晴博士(副教授) 编写了第5 章,宋佳楠博士和陈龙庭博士编写了各章习题。夏建芳教授对本书进行了认真的统合。虽然团队在本书的编写过程中付出了很多的时间和精力,但难免有考虑不周的地方,敬请读者批评指正,以在教学过程中及时纠正,再版时及时改正。
高等院校教师
目 录前言第1 章 面向对象程序设计思维及C# 概述 11.1 面向对象思维如何模拟世界 11.2 NET 与C# 编程语言 41.3 开发环境的搭建 61.4 计算机语言中的标识符与关键字 91.5 类的定义与对象的建立 101.6 C# 的组织架构与项目创建 101.7 创建新项目 121.8 命名空间 161.9 控制台程序中的标准输入输出 20习题 22第2 章 C# 的数据类型与表达式 252.1 计算机内存结构与管理 252.2 常量 262.3 变量 302.4 值类型变量与引用类型变量 362.5 变量的类型转换 372.6 变量的作用域与生存期 402.7 运算符与表达式 412.8 运算符的优先级与结合性 492.9 复杂表达式的计算实例 51习题 52第3 章 类的声明与成员访 543.1 类的概述 543.2 类的字段变量 603.3 类的方法声明及构造、析构函数 713.4 方法深度学习 783.5 静态类 963.6 Lambda 表达式——匿名函数 983.7 委托及其应用 983.8 C# 中常用的预定义类 1003.9 类库文件(.dll) 的创建与引用操作 1063.10 含多个源程序的项目创建过程 107习题 108第4 章 C# 程序流程控制语句 1114.1 C# 程序常用语句概述 1114.2 赋值语句 1134.3 复合语句 1144.4 选择结构语句 1144.5 循环结构 1194.6 跳转语句 1234.7 using 语句 1274.8 选择、循环结构的嵌套 1284.9 方法的递归调用 1304.10 综合应用 132习题 136第5 章 字符及字符串操 1395.1 char 字符类 1395.2 string 字符串类型 1425.3 可变字符串类StringBuilder 153习题 155第6 章 结构体和枚 1586.1 结构体类型定义 1586.2 结构体变量及其使用 1626.3 枚举及其应用 1686.4 综合应用 170习题 174第7 章 数组和集 1777.1 数组概述与数组的声明 1777.2 一维数组和二维数组的实例化与初始化 1787.3 数组元素的访问 1807.4 数组常用属性与方法 1817.5 数组的应用 1837.6 交错数组 1937.7 Array 类 1967.8 泛型集合 2007.9 综合应用 205习题 208第8 章 类的继承与派 2118.1 基类与派生类 2118.2 抽象类及其派生类 2198.3 接口及其实现类 2218.4 接口和抽象类的区别 2258.5 虚方法的声明及其在派生类中的重写 2268.6 多态 2318.7 对象数组的声明及其实例化与初始化 2378.8 设计范例 2388.9 综合应用 241习题 243第9 章 文件操 2479.1 文本数据文件与二进制数据文件概述 2479.2 File 类和FileInfo 类 2529.3 Directory 类和DirectoryInfo 类 2579.4 FileStream 类及其数据文件读写 2629.5 StreamReader/StreamWriter 类读写文本数据文件 2739.6 BinaryReader/BinaryWriter 类读写二进制数据文件 2779.7 读写Excel 文件 2849.8 综合应用 286习题 288第10 章 程序调试与异常处 29110.1 使用Visual Studio 调试C# 代码 29110.2 异常处理 295第11 章 实践安排 30211.1 实验一:流程控制语句程序设 30211.2 实验二:数组、方法及参数传递程序设 30311.3 实验三:继承与派生程序设 30311.4 实验四:文件操作程序设 304附录 ACSII 编码表 305参考文 306