1、信息学院 测绘系 董超 Marchac- 文理楼1213 西v 学时:理论 36 实验 18 v 学分:3v 1、课程内容简介 以.NET平台上的C#语言来介绍测绘程序的编程思路、方法、步骤和技巧。主要内容分为C#语言基础及测绘程序设计两部分。学习的测绘程序包含简单测量程序、测量平差、坐标转换、路线测量计算程序及简单影像处理程序。v 2、课程教学的任务 学习掌握基本测绘程序实现。培养独立编写其它常用的测量应用程序的技能。提高利用计算机技术实际问题的能力,为今后的学习和工作打下基础。v 3、课程的考核方法与要求 平时成绩(包括提问、作业、出勤情况等)占30%,期末笔试试卷考核成绩占70%。v 4
2、、注意事项 编程语言 VB、C、C+、C#、PAD IDE Visual Stidio 2010,SharpDevelop 练习实验 认真练习,亲自编写,不要复制粘贴。课程教材v1.1 测 绘 程 序 设 计 的 意 义v1.2.NET概述v1.3.NET体系结构v1.4 C#及编程环境v1.5 创建控制台应用程序v1.6 创建windows应用程序v小结1.计算机在现代测绘科学中的广泛应用带来极大便利方便、快速、准确,可重复性2.测绘软件不通用1.测绘相关软件丰富数据计算、制图、遥感影像处理、数字摄影测量、地理信息系统(GIS)、GPS平差计算等软件。2.实际工作遇到的问题千差万别,特定应用
3、需要掌握一门编程语言,设计相应的程序解决实际问题。3.编写相关专业程序,深化测量知识的过程。v1.1 测 绘 程 序 设 计 的 意 义v1.2.NET概述v1.3.NET体系结构v1.4 C#及编程环境v1.5 创建控制台应用程序v1.6 创建windows应用程序v小结.NET之前的世界 讨论.net之前,先思考一下现有这个平台诞生的原因。1.2.1 C/WINDOWS API程序员的生活 联合使用C编程语言和Windows API是一种非常复杂的工作。C语言非常简练,程序员要手动内存管理,讨厌的指针运算和语法结构。C语言不具备面向对象开发的优点。Windows API定义的数以千计的全局
4、函数和数据类型。1.2.2 C+/MFC程序员的生活 C+编程语言对原始软件开发模式有很大的提升。C+是在C之上的面向对象层。但有了OOP带来的好处,还是无法避免上面的痛苦。MFC的主要作用是把基本的Windows API的一个健全子集包装成类、宏和很多代码生成工具,但是无论多么强大,用他开发还是艰难并且容易犯错的过程。1.2.3 VB6程序员的生活 因为简单,VB6开始流行,用户花费最少的功夫创建复杂的用户界面、代码库以及数据库访问逻辑。最大不足是他是基于对象而不是面向对象,例如,VB6不允许程序员在类之间建立“is-a”的关系。v 1.2.4 COM程序员的生活 COM是微软的前一个应用程
5、序开发框架。是一种可复用的二进制模块。优点是以语言无关的形式可以被访问。COM被认为是一个非常成功的数据模型,但是背后太过于复杂,而且脆弱的组件注册问题和很多部署相关的问题(DLL地狱)。即简单又复杂。简单是相对于使用者,复杂是对于开发者,这被称为不对称的开发方式。举个例子,C+要调用VB里创建返回整型数组的方法,需要调用COM API创建SafeArray结构体,一下导致几十行代码,但这是唯一能兼容的方式。类似复杂性还体现在boolean值上!基于上述原因,微软在2001年首次提出了“.NET”的概念。Steve Ballmer微软CEOSteve Ballmer:.NET代表一个集合,一个
6、环境,一个可以作为平台支持下一代Internet的可编程结构。.NET最终目标:让用户在任何地方、任何时间,利用任何设备都能访问所需信息、文件和程序。用户无需知道这些信息存放在何处,所有后台的复杂性是完全屏蔽的。v1.1 测 绘 程 序 设 计 的 意 义v1.2.NET概述v1.3.NET体系结构v1.4 C#及编程环境v1.5 创建控制台应用程序v1.6 创建windows应用程序v小结v 1.3.1 Visual Studio.NET 是一套完整的开发工具,用于创建各种类型的应用程序,包括 ASP Web 应用程序、XML Web services、桌面应用程序和移动应用程序。.NET
7、Framework是生成、部署和运行各种应用程序的平台.NET Framework 具有两个主要组成部分:通用语言运行时(Common Language Runtime-CLR),是.NET Framework 的基础.NET Framework 类库。Base Class Library(System.IO,System.Drawing,System.Threading)Data Classes(ADO.NET,XML,SQL)Windows FormsWeb Applications Web ServicesWeb Forms ASP.NET Mobile OS公共语言运行库公共语言运行库
8、CLR.NET类库类库ADO.NETASP.NET公共语言规范公共语言规范(CLS)C#.NET FrameworkVBC+.Windows FormXMLCLS定义了在.NET平台上运行的语言所必须支持的最小规范,用以避免不同语言特性产生的错误,实现语言之间互操作性。Common Language SpecificationCLR是应用程序的执行引擎,负责程序安全地载入和运行用户程序代码,包括内存分配、垃圾收集和安全检查等,并保证应用和底层操作系统之间必要的分离。Common Language RuntimeC+VB编译器编译器可执行代码可执行代码RUNTIMERUNTIME代码被执行C+V
9、B编译器编译器可执行可执行代码代码可执行可执行代码代码RUNTIMERUNTIMEIL+元数据CLR代码被执行.NET 程序被编译两次,第一次编译很慢,而第二次编译较快!MSIL+元数据机器代码代码 被执行CLRMSIL帮助语言实现互操作IL不是字节代码,但很接近字节代码。因此,执行应用程序时,IL 到机器码的转换速度非常快!通过 CLR将 MSIL 转换为具体 CPU 的代码CPU 无关的指令集语言编译器.NET 源代码 IL_0000:nop IL_0001:call IL_0006:nop IL_0007:ldc.i4.0 IL_0008:call IL_000d:nop IL_000e
10、:ldnull IL_000f:ldftn IL_0015:newobj IL_001a:call IL_001f:nop IL_0020:newobj IL_0025:call IL_002a:nop IL_002b:newobj IL_0030:throwCLR.NET 源代码MSIL+元数据机器代码代码被执行管理内存易于设计组件和应用程序,其对象可以跨语言互动跨语言集成(特别是跨语言继承)JIT 编译器:一次编译,就可运行在支持运行库的任何 CPU 和操作系统上语言编译器v 实现一个程序的过程n(1)使用某种.NET兼容语言(如C#)编写应用程序代码n(2)把代码编译为CIL,存储在程序
11、集中n(3)在执行代码时,首先必须使用JIT编译器将代码编译为本机代码n(4)在托管的CLR环境下运行本机代码,以及其他应用程序或进程C#代码编译C#应用程序代码程序集程序集本机代码JIT编译系统运行库.NET CLR本机代码本机代码本机代码v1.1 测 绘 程 序 设 计 的 意 义v1.2.NET概述v1.3.NET体系结构v1.4 C#及编程环境v1.5 创建控制台应用程序v1.6 创建windows应用程序v小结v C#可用于创建要运行在.NET CLR上的应用程序的语言之一,它从C和C+语言演化而来,是微软专门为使用.NET平台而创建的。v C#开发应用程序比使用C+简单,因为语法比
12、较简单v 在C+中能完成的任务几乎都能利用C#完成v C#代码比C+略长,因为C#是一种类型安全的语言。在类型之间转换时,必须遵守严格的规则。在C#中不能完成诸如把4字节的内存分配给这个数据后,使其有10个字节长,并把它解释为“X”的任务。v C#能写什么程序n Web程序:主要是利用ASP.NET技术开发的动态网站,用户可以使用IE浏览器进行访问,是B/S模式的应用程序。n Windows程序:这种程序运行在客户机上,常有一到多个Form元素,是一种典型的C/S模式应用。n 移动数字设备程序:为智能手机、PDA、便携式游戏机等开发的应用程序。n 局域网应用程序:局域网中的分布式计算机之间需要
13、互相通过.NET Remoting(.NET远程)等技术进行通信。n Web Services应用程序:基于XML Web Services技术开发的跨平台、跨系统的分布式系统。n VS安装n 略n Sharpdevelop安装v1.1 测 绘 程 序 设 计 的 意 义v1.2.NET概述v1.3.NET体系结构v1.4 C#及编程环境v1.5 创建控制台应用程序v1.6 创建windows应用程序v小结v 要生成 C#项目,请从菜单中选择“生成”“生成解决方案”v 该过程将编译项目中包括的所有文件,编译结果显示在“输出”窗口中 v 如果结果显示“生成:1 成功或最新,0失败,0被跳过”,则
14、说明已经成功生成,然后即可交付该应用程序1.5 创建控制台应用程序v 创建一个与项目同名的文件夹。v 该文件夹包含项目文件“xx.csproj”和其他关联文件 v 每个新项目都创建了 bin、obj和Properties 三个文件夹。v Bin和obj这两个文件夹下都有一个 Debug 子目录,其中包含可执行文件 HelloWorld.exe v 在解决方案资源管理器中启用“显示所有文件”选项,可查看项目的结构 1.5 创建控制台应用程序/这是用 C#编写的一个简单的 HelloWorld 程序using System;namespace Notepadclass HelloWorldstat
15、ic void Main()Console.WriteLine(Hello World);声明 HelloWorld 类描述代码的注释程序入口点,Main 的返回类型为 void控制台类的 WriteLine()方法用于显示输出结果导入 System 命名空间声明命名空间 Notepad将文件保存为*.cs 说明:1.程序一般包括以下几部分:名称空间的引用:使用using关键字指明引用的名称空间。名称空间的声明:使用namespace关键字声明名称空间。类:使用class关键字声明类。Main方法:Main方法是C#程序的入口。2.类中包含了程序所要用到的数据和所要执行的方法的定义。每个类中可
16、以有:(1)变量声明(2)构造函数(3)方法(4)属性(5)事件3.一个文件中可以有1个或者多个类。4.所有语句都以分号;结束。1.5 创建控制台应用程序v1.1 测 绘 程 序 设 计 的 意 义v1.2.NET概述v1.3.NET体系结构v1.4 C#及编程环境v1.5 创建控制台应用程序v1.6 创建windows应用程序v小结v1.1 测 绘 程 序 设 计 的 意 义v1.2.NET概述v1.3.NET体系结构v1.4 C#及编程环境v1.5 创建控制台应用程序v1.6 创建windows应用程序v小结 本章主要内容包括.NET的基本概念及体系 C#程序的概念 C#的编程环境 控制台程序与winform程序的实现。作业,安装编程环境,创建一个控制台程序与WinForm程序(输出自己的姓名)