Presentation is loading. Please wait.

Presentation is loading. Please wait.

南华大学计算机学院 软件工程系 QQ讨论群:

Similar presentations


Presentation on theme: "南华大学计算机学院 软件工程系 QQ讨论群:"— Presentation transcript:

1 蒋良卫(187365067@qq.com) 南华大学计算机学院 软件工程系 2016.03 QQ讨论群:526542338

2 课程安排(32课时) 总学时数:32 理论部分24学时 实验部分8学时

3 教材: 支持资源: C#程序设计教程(第3版) 李春葆等编著 清华大学出版社 2015 1. PPT课件 2.书中所有示例源程序
  李春葆等编著   清华大学出版社 2015   支持资源:   1. PPT课件   2.书中所有示例源程序   3.书中所有编程练习题和上机实验题源程序

4 C#语言创始人简介 Anders Hejlsberg(安德斯,海斯博格 ) 早期 2008年

5 Anders的生平 1、基本简历   出生于哥本哈根,安德斯·海尔斯伯格曾在丹麦技术大学学习工程,但没有毕业,大学时期他曾替 Nascom microcomputer撰写程式,他曾为Nascom-2电脑撰写蓝标签(Blue Label) Pascal compiler,到了DOS时代他又重新改写这套compiler。   当时他在丹麦拥有个叫Poly Data的公司,他编写了Compass Pascal编译器核心,后来叫Poly Pascal。1986年他首次认识了Philippe Kahn。

6 2、Anders在Borland公司   安德斯·海尔斯伯格把Compass Pascal编译器核心授权给了美国Borland公司,并作为雇员加入Borland公司,并且是后来所有Turbo Pascal版本与Delphi前3个版本的架构师。   Philippe Kahn为第一个版本的Turbo Pascal添加了用户界面与编辑器。

7 3、加入微软公司   1996年Hejlsberg加入微软公司。据说,比尔·盖茨亲自参与了这次挖角行动,年薪三百万美金,并许诺安德斯·海尔斯伯格在微软将得到技术上的足够自由和资源支持。   据说该事件也是微软公司和Borland公司后续官司的导火索。

8 4、在微软公司   进入微软公司后,首先主持了Visual J++的开发工作,后来由于在Java开发工具授权问题上和Sun公司的纠纷,微软停止了Visual J++的后续开发。   这之后,作为.NET概念的发起人之一,安德斯·海尔斯伯格被任命为微软.NET的首席架构师,主持.NET的开发工作。

9 第1章 C#概述 1.1 什么是C#语言 1.2 .NET Framework概述
1.3 Visual Studio 2012的安装、启动和退出操作 1.4 Visual C#集成开发环境(IDE) 1.5 一个简单的C#程序

10 1.1 什么是C#语言 C#的发展历程 C/C++ C# Java 。。。

11 2000年2月,微软才正式将这种语言命名为C#(据说是因为C#开发小组的人员讨厌搜索引擎,因此把大部分搜索引擎无法识别的“#”字符作为该语言名字的一部分;还有一种说法是音乐中“#”是升调记号,表达了微软希望它在C的基础上更上一层楼的美好愿望)。2000年7月,微软发布了C#的第一个预览版。 2002年2月,微软发布了.NET Framework开发平台Visual Studio .NET 2002和C#语言的第一个正式版C#1.0。

12 2007年8月,微软发布了. NET Framework 3. 0和C#3. 0。2007年11月,微软推出了Visual Studio
2007年8月,微软发布了.NET Framework 3.0和C#3.0。2007年11月,微软推出了Visual Studio .NET 2008,同时发布了.NET Framework 3.5和C#3.5。 2010年4月,微软推出了Visual Studio .NET 2010,同时发布了.NET Framework 4.0和C#4.0。 2012年9月,微软推出了Visual Studio .NET 2012,同时发布了.NET Framework 4.5和C#5.0。 后续又推出了Visual Studio .NET 2013(没有更新C#5.0)和Visual Studio .NET 2014以及C#6.0等。

13 本书以C#5.0为背景介绍C#程序设计。在C#各版本的演化过程中,每个版本都新增了一些特性,如图1.1所示给出了各版本新增的主要特性。
新增主要特性 5.0 异步 4.0 命名参数和可选参数 3.0 LINQ 2.0 泛型 1.0 C#基本特性

14 1.1.2 C#语言特点 简洁的语法(抛弃了不明确的表示符和伪关键字-指针) 完全的面向对象程序设计(单继承,无全局变量和常量)
与Web紧密结合(简化了网络编程) 充分的安全性与错误处理(可消除许多软件开发错误) 灵活性(可定义非安全性方法,使用指针) 兼容性(遵守.Net Framework公共语言规范)

15 用C#编写的应用程序类型 控制台应用程序 Windows窗体应用程序 ASP.NET Web窗体应用程序 ……

16 1.2 .NET Framework 1.2.1 什么是.NET Framework 1. .NET Framework的功能和目标

17 简言之,.NET平台是一种面向网络,支持各种用户终端的开发环境,其功能如图1.1所示。

18 2. 托管代码和非托管代码 托管代码(managed code)是指为.NET Framework编写的代码,在.NET Framework的公共语言运行库(CLR)控制之下运行,类似于JAVA的虚拟机机制。托管代码应用程序可以获得CLR服务,例如自动垃圾回收、类型检查和安全支持等。 非托管代码(unmanaged code)是指不在CLR控制之下运行的代码,如Win32 C/C++ DLL。非托管代码由操作系统直接运行,因此必须提供自己的垃圾回收、类型检查、安全支持等服务。

19 3. .NET Framework的组成

20 3. .NET Framework类库(FCL) FCL(.NET Framework Class Library)是一个全面的类库。程序员可以十分方便地使用FCL中的类型及其成员,而不必编写大量代码来处理常见的低级编程操作。它是生成.NET Framework应用程序、组件和控件的基础。 FCL由命名空间组成。每个命名空间都包含可在程序中使用的类型,如类、结构、枚举、委托和接口等。

21 4. 公共语言运行库(CLR) CLR是.NET Framework的核心组件,它在操作系统的顶层,负责管理程序的执行。 CLR主要由公共语言规范(CLS)和通用类型习题(CTS)两部分组成。

22 (1)公共语言规范(Common Language Specification,简写为CLS)

23 (2)通用类型系统(Common Type System,简写为CTS)
CTS定义了一套可以在中间语言中使用的预定义数据类型,所有面向.NET Framework的语言都可以生成最终基于这些类型的编译代码。也就是说,通用类型系统用于解决不同编程语言的数据类型不同的问题,从而实现跨语言功能。 例如,无论VB中的integer类型(VB中的整型)还是C#中的int类型(C#中的整型),编译后都映射为System.Int32。所以CTS实现了不同语言数据类型的最终统一。

24 5. 面向开发人员的.NET Framework和面向用户的.NET Framework
(1)面向开发人员的 .NET Framework:首先要安装应用程序面向的.NET Framework的版本,如 .NET Framework 4.5.2。其次要选择并安装用于创建应用程序并支持所选程序语言的开发环境,如适用于.NET Framework应用程序的Microsoft集成开发环境是 Visual Studio。 (2)面向用户的.NET Framework:需要在计算机上安装应用程序特定版本的.NET Framework。

25 开发托管代码的过程 1. 选择编译器 为获得CLR提供的优点,必须使用一个或多个针对CLR的语言编译器,如C#、VB、或C++等编译器。这些针对CLR的语言称为.NET Framework兼容语言,相应的编译器称为.NET Framework兼容编译器。

26 2. 将代码编译为中间语言 使用.NET Framework语言编译器把源代码编译成与机器无关的中间语言MSIL(Microsoft Intermediate Language),它不是本机代码。如图1.4所示,这个编译步骤产生程序集,程序集是在CLR中可执行的文件,存储在磁盘上,通常具有的扩展名为.exe或.dll。

27 程序集(assembly)是.NET Framework应用程序的构造块,是为协同工作而生成的类型和资源的集合,这些类型和资源构成了一个逻辑功能单元。
程序集向CLR提供了解类型实现所需要的信息。

28 3. 将MSIL编译为本机代码 运行Microsoft中间语言(MSIL)之前,必须先根据CLR将其编译为适合目标计算机体系结构的本机代码。
.NET Framework 提供了使用JIT(即时编译)和NGen.exe(预编译)两种方式来执行此类转换。

29 .Net程序在运行时会实时(JIT)编译,将.Net程序文件编译成cpu认识的汇编机器码。实时编译需要消耗额外的cpu和内存资源
如果你在做的是一个较大的winform程序或silverlight等客户端程序时就需要考虑提前编译 C:\Windows\Microsoft.NET\Framework\v )有一个ngen.exe工具

30 (1)使用.NET Framework 实时(JIT)编译器进行编译
在应用程序运行时,JIT编译可以在加载和执行程序集内容的过程中根据需要将MSIL 转换为本机代码,如图1.5所示。

31 (2)使用 NGen.exe(本机映像生成器)的安装时代码生成
由于JIT编译器会在调用程序集中定义的单个方法时将该程序集的MSIL转换为本机代码,因而必定会对运行时的性能产生不利影响。可以使用Ngen.exe将MSIL程序集转换为本机代码,其作用与JIT编译器极为相似。

32 4. 运行应用程序代码 运行应用程序代码的过程如图1.6所示。非托管代码直接由操作系统执行。

33 C#语言与.NET Framework 开发人员以C#项目作为基本开发单位,其过程以前面介绍的开发托管代码的过程类似。如图1.7所示说明了C#项目、.NET Framework类库、程序集和CLR的编译时与运行时的关系。

34

35 1.3 Visual Studio 2012的安装、启动和退出操作
首先安装.NET Framework 4.5。 然后安装Visual Studio 2012。

36 最新版:Visual Studio 2015 免费下载:

37

38 1.3.2 配置Visual C#开发环境

39 Visual Studio 2013的启动 在安装好Visual Studio 2013后,启动“开始”菜单,选择“所有程序”|Microsoft Visual Studio 2013|Microsoft Visual Studio 2013 命令,即可启动Visual Studio 2013系统。

40

41 Visual Studio 2013的退出 在Visual Studio 2013集成开发环境中单击“关闭”按钮或者选择“文件”|“退出”菜单命令时,Visual Studio 2013会自动判断用户是否修改了项目的内容,并询问用户是否保存文件或直接退出。

42 1.4 Visual C#集成开发环境(IDE) 1.4.1 启动Visual C#集成开发环境
启动Visual Studio 2013后,选择“文件”|“新建”|“项目”菜单命令,打开“新建项目”对话框,如图1.10所示。

43 选中左边列表框中的“Visual C#”选项,表示新建的是Visual C#项目。中间窗口列出Visual Studio已安装的Visual C#模板。

44 当选中一个模板后(例如选中“控制台应用程序”),在下方的“名称”文本框中输入项目名称(例如example),单击“浏览”按钮选择一个存放项目的位置(如D:\C#程序\ch1\),再单击“确定”按钮,即可进入Visual C#集成开发环境,如图1.11所示。

45 标题栏 属性 窗口 代码编 辑窗口 工具栏 错误列 表窗口 菜单栏 解决方案 资源管理

46 Visual C#菜单栏 (1)“文件”菜单 (2)“编辑”菜单 (3)“视图”菜单 (4)“团队”菜单 (5)“工具”菜单

47 Visual C#工具栏 1. 常用的工具栏 (1)“标准”工具栏

48 (2)“调试”工具栏

49 (3)文本编辑器工具栏

50 2. 工具栏的显示与隐藏 如果需要显示或隐藏某些工具栏,只要选择“视图|工具栏”命令,然后选中菜单项中相应的工具栏的名称就可以了(也可以在工具栏上击鼠标右键,在弹出的快捷菜单中选择相应的的工具栏名称)。

51 1.4.4 解决方案资源管理器 在Visual Studio 2013中,项目是一个独立的编程单位,其中包含有程序文件和其他若干相关文件,若干个项目就组成了一个解决方案。 如图1.11所示的解决方案资源管理器指出解决方案名称为example,它以树状的结构显示整个解决方案中包括哪些项目,以及每个项目的组成信息。包含在项目内的组件成员会依据建立它们所使用的开发语言不同而有所不同,这些成员包括引用、数据连接、数据夹和文件等。

52

53 1.4.5 编辑器设置 设置方法是选择“工具|选项”菜单命令,显示如图1.15所示的“选项”对话框。

54

55

56 1.5 一个简单的C#程序 本小节通过一个简单的示例介绍C#控制台应用程序的创建过程。
【例1.1】创建一个控制台应用程序,求用户输入的两个整数的和。

57 解:其设计过程如下: ① 启动Visual Studio 2013。 ② 创建项目。在“文件”菜单上,单击“新建项目”,此时将打开“新建项目”对话框,选择“控制台应用程序”,输入项目名称proj1-1,指定位置为“D:\C#程序\ch1”,然后单击“确定”按钮。 ③ 将光标移到代码编辑窗口中Main函数内,输入程序代码,如图1.18所示。

58

59 ④ 单击标准工具栏中的 按钮保存项目。按Ctrl+F5键执行程序,输入10和20,输出结果如图1.19所示。

60 1.5.1 代码分析 引用部分 using System; using System.Collections.Generic;
using System.Linq; using System.Text; using System.Threading.Tasks; 引用部分

61 namespace proj1_1 { class Program static void Main(string[] args) int a, b, c; //定义变量 Console.Write("a:");//输出屏幕提示信息 a = int.Parse(Console.ReadLine());//从键盘获取字符串并转换成整数 Console.Write("b:"); b = int.Parse(Console.ReadLine()); c = a + b; //加法运算 Console.WriteLine(“a+b={0}”, c);//输出结果 }

62 说明:如果按F5和单击工具栏的 按钮运行程序,会发现程序执行完后没有停顿,可在Main方法最后加上Console
说明:如果按F5和单击工具栏的 按钮运行程序,会发现程序执行完后没有停顿,可在Main方法最后加上Console.ReadKey()语句。而按Ctrl+F5键程序执行完后会自动停顿。

63 1.5.2 项目构成 在解决方案资源管理器中指出了proj1-1项目的构成。

64 1. Properties部分 其中只有一个名称为AssemblyInfo.cs的C#文件(所有C#程序文件的默认扩展名为.cs),它的位置是“D:\C#程序\ch1\proj1-1\proj1-1\Properties\AssemblyInfo.cs”,用于保存程序集的信息,其中包含程序集版本号、说明和版权信息等。

65 2. 引用部分 指出程序的引用的命名空间,用户可以在此添加或移除命名空间。

66 3. Program.cs部分 它是C#应用程序文件,包含前面介绍的C#源代码。用户可以双击它进入代码编辑窗口进行代码的编辑和修改。

67 1.5.3 控制台应用程序中的基本元素 1. 注释 2. Mian方法 它为入口主函数,其特点如下:
控制台应用程序中的基本元素 1. 注释 2. Mian方法 它为入口主函数,其特点如下: Main方法是.exe程序的入口点,程序控制在该方法中开始和结束。 Main方法方法在类或结构的内部声明。它必须为静态方法,而不应为公共方法(在前面的例子中,它接受默认访问级别 private)。 Main方法具有void或int返回类型。 所声明的 Main 方法可以具有包含命令行实参的 string[] 形参,也可以不具有这样的形参。形参读取为零索引的命令行参数。

68 3. 输入方法Console.ReadLine 4. 输出方法Console.WriteLine

69 Console.WriteLine方法类似于C语言的printf函数,可以采用“{N[,M][:格式化字符串]}”的形式来格式化输出字符串,其中的参数含义如下。
花括号({}):用来在输出字符串中插入变量的值。 N:表示输出变量的序号,从0开始。 [,M][:格式化字符串]:可选项,其中M表示输出的变量所占的字符个数。 [:格式化字符串]:可选项,因为在向控制台输出时,常常需要指定输出字符串的格式。

70 格式字符 含义 示例 输出结果 c或c 将数据转换成货币格式 Console.WriteLine("{0,5:c}", ); ¥123.46 D或d 整数数据类型格式 Console.WriteLine("{0:D4}", 123); 0123 E或e 科学计数法格式 Console.WriteLine("{0:E4}", ); 1.2346E+002 F或f 浮点数据类型格式 Console.WriteLine("{0:f4}", ); G或g 通用格式 Console.WriteLine("{0:g}", ); N或n 自然数据格式 Console.WriteLine("{0:n}", ); 123.46 X或x 十六进制数据格式 Console.WriteLine("{0:x}", 12345); 3039

71 5. 数据转换 由于ReadLine方法只能输入字符串,为了输入数值,需要进行数据类型的转换。C#中每个数据类型都是一个结构,它们都提供了Parse方法,以用于将数字的字符串表示形式转换为等效数值。例如:   int d = int.Parse(“12”); 方法

72


Download ppt "南华大学计算机学院 软件工程系 QQ讨论群:"

Similar presentations


Ads by Google