《平差程序设计第一篇A.ppt》由会员分享,可在线阅读,更多相关《平差程序设计第一篇A.ppt(30页珍藏版)》请在三一办公上搜索。
1、测量平差程序设计课程介绍,现代测绘工程随着数据采集设备的进步,对仪器设备操作技能的要求已有所降低,而数据处理与过去相比则具有数据量大、处理方法多样、处理过程更加复杂的特点,这使得从业人员的数据计算能力成了衡量其业务水平的重要标志。本课程培养学生运用流行的程序设计语言设计测量数据处理程序的能力,是测绘工程专业的一门重要专业基础课程。,测量平差程序设计课程介绍,学习本课程,要求学生掌握全部测量平差计算程序设计的方法与技能,初步具备数值计算程序的设计技能。设计复杂的数值计算程序,要求思维严密、逻辑清晰及创造性地解决问题的能力,所以学习本课程将有力地促进学生分析问题、解决问题、创造性工作能力的发展,并
2、使其对测量数据处理与误差理论的认识与理解达到一个新的高度。,测量平差程序设计课程介绍,考虑到基础课阶段学习的VB知识,尚不能满足本课程需要,所以作为复习和提高,本课程首先讲解一些较深入VB知识,使学生全面系统地对VB的运行流程、程序结构框架、人机信息交流的方法、文件的输入输出处理等问题有一清晰的认识,然后结合一个导线网平差程序的实例,就平差计算的各个环节程序设计的技巧做详尽的学习,具体内容主要有:数据的读入与组织、任意导线网近似坐标的推算、误差方程组成、法方程组成、法方程解算、法方程系数阵求逆、平差参数精度评定等。,测量平差程序设计课程介绍,本课程配套有8学时的上机实践,最后要求任选完成一个老
3、师指定的参考设计题目,通过理论与实践相结合的学习过程,小部分学生可以深刻理解并掌握测量平差程序设计的理论与方法,并具备一定的设计技巧,而大部分学生可以理解设计的思路、方法,熟悉设计平差程序的流程、重点和难点,并具备熟练使用平差程序进行数据处理的能力。,本课程相关的VB知识,一、VB应用程序的组织结构,VB应用程序的组织结构,模块是相对独立的程序单元,VB应用程序将代码储存在三种不同的模块中:窗体模块、标准模块、类模块,它们形成了工程的模块层次结构。1、窗体模块:每个窗体对应一个窗体模块,窗体模块包含窗体及其控件的属性设置、窗体变量的说明、事件过程(代码部分)、窗体内的通用过程和外部过程的窗体级
4、声明等。,VB应用程序的组织结构,2、标准模块:简单的应用程序通常只有一个窗体,这时所有的代码都存放在该窗体模块中。复杂的程序需要多个窗体,一些过程需要在不同窗体中应用,为此需由创建标准模块。在大型应用程序中,主要操作在标准模块中执行,窗体模块用来实现与用户间的通信。VB通常从设计时的第一个窗体开始执行程序,或通过“工程”“工程属性”制定启动窗体,也可以设定首先执行sub main过程。,VB应用程序的组织结构,3、类模块:VB中对象是用类定义的,工具箱上每个控件都是一个类,但在窗体上画出一个控件之前,以该控件命名的对象是不存在的。具体的、可以引用的对象实际上是类的一个拷贝或实例。类模块是面向
5、对象编程的基础.VB允许用户通过类模块自定义对象,这些对象可包含自定义的属性和方法,每个类模块只能定义一个对象。,3、类模块:,类模块定义的对象不可视,应用需要通过声明对象型变量的方法。类与过程有共同之处,但有本质区别,过程是将逻辑上有关的语句与数据集合在一起,主要用于执行;而类则是逻辑上有关的过程及其数据的集合,主要不是用于执行而是提供所需的资源。,VB应用程序的组织结构,类模块与标准模块的区别在于:标准模块仅仅含代码,而类模块既含过程又含数据,类模块可视为没有物理表示的对象。类的过程对用户是隐蔽的,用户只能使用不能修改,对 象,二、对象将数据和处理数据的过程打包在一起而生成的新数据类型称之
6、为对象。对象中的数据称之为“属性”,过程称之为“方法”。所有的窗体和控件都是对象。访问对象的属性和方法、在对象和属性、方法之间加一个“.”号。Label1.caption=“Name”访问属性Text1.setfocuse 访问方法控件:用户操作对象的图形表示,有的控件没有图形表示,事 件,三、事件 VB程序的运行通过事件来驱动,程序运行的流程完全取决于事件发生与否及发生的顺序。VB定义了众多的事件,用户程序设计者通常只需对所选择的事件设计一段响应程序(过程),由用户操作对象驱动相应的事件发生来完成特定的功能;或由事件过程中的指令调用通用程序来执行指定的操作。事件指窗口或控件能识别的活动,通常
7、事件发生在用户与应用程序交互时,但也有些事件由系统产生,如计时器事件。事件驱动程序设计是图形用户界面的本质,即用户控制事件产生,而代码做出反应。,过 程,四、过 程1、事件过程:事件由VB自行声明,当操作对象产生一个事件时,VB自动调用该事件的过程。语法:Private Sub _()End Sub.,过 程,2、通用过程:过程不与特定事件相联系,只能由别的过程中的指令来调用。语法为:Private PublicStatic Sub()语句列 Exit Sub 语句列 End Sub。,过 程,3、函数过程(Function)Function过程与Sub过程的差异在于函数名本身作为一个变量可返
8、回一个值。其语法为:Private PublicStatic Function()As 类型 语句列 函数名=表达式 Exit Function 语句列 函数名=表达式 End Function。,对象的属性,五、对象的属性属性是对象的数据成员,也是对象的外部数据接口,通过改变属性值,可以使对象(控件)的外观或对外部的反应有所改变。每个对象都有它的属性,属性随对象不同而不尽相同,但是“Name”属性是共有的,有了“Name”属性才可以在程序中进行调用。对于属性,可以在窗体的布局操作中完成,也可以在程序运行中改变,这取决你的需要,但有些属性是只读的,它只能在控件布局时改变。当对象的属性被修改后,
9、其封装的处理属性值的过程自动运行。,变量的类型与声明,六、变量的类型与声明1、简述VB常用的数据类型有:整型(Integer,表示-32768至32767之间的整数)、长整型(Long,表示-2,147,483,648至2,147,483,647之间的整数)、实型(Single,表示-3.37E+38至3.37E+38之间的实数)、双精度实型(Double,表示-1.67E+308至1.67E+308之间的实数),字符(String,每个字符占一字节,可以储存065,535个字符),布尔(Boolean,只有两个值True/-1,或False/0)。,变量的类型与声明,2、传值与传址:(1)、
10、传址:传址是让过程根据变量的内存地址去访问实际变量的内容,即形参和实参使用相同的地址,但实参必须是变量,常量和表达式无法传址。(2)、传值:传值传递实参的值而不是它的地址。系统将变量复制到一个临时单元,然后将临时单元地址传给被调用的过程。由于过程没有访问变量(实参)的原始地址,因而不会改变变量原始的值。传址比传值效率高,但传址过程,形参不是真正的局部变量,有可能对程序的执行产生不必要的干扰,比如在过程中对形参赋值,就会改变对应的实参值,但反过来利用这一点,也可以从过程中传递值出来。,变量的类型与声明,3、参数的使用(1)、使用可选参数:形参表中加入optional关键字,则可为参数指定一个缺省
11、值。若指定某一参数可选,则此后的其它参数也必是可选的,都要用关键字optional 来加以说明。(2)、使用不定数量参数:一般来说,过程调用中的参数应等于过程说明中的参数。但若使用ParamArray关键字,则过程可接受任意多个参数。(3)、传递数组:VB允许数组作为实参传递到过程中。传递数组中所有值时,省去数组的上下界,但必须保留括号。若传递单个数值,则要指明上下标。,变量的类型与声明,4、数据类型的定义方法:定义变量最简单的方法是用“Dim”关键字,它的语法:Dim 变量名As 数据类型如:Dim Index As Integer也可以在一行中定义多个变量,如:Dim Index As I
12、nteger,Dim Number As Long把多个变量定义成同一类型可以写成:Dim Index,Number As Integer 更可以在定义时进行初赋值:Dim Index=3,变量的类型与声明,数组的定义类似于变量定义,所不同的是数组需要指定数组中的元素个数,例如:Dim IntegerArray(99)As Integer这个数组中包含100个元素,脚标从0到99。也可以指定脚标的起始值,例如:Dim IntegerArray(2 to 10)As Integer这个数组含有九个元素,脚标从2到10。,变量的类型与声明,动态数组:在使用过程中重新声明数组的大小。其步骤如下:(1
13、)、声明一个未指明大小及维数的数组。其格式为:PublicPrivateDimStatic 数组名()As 类型。(2)、用ReDim语句分配实际的元素个数。格式为:ReDim Private 数组名(维数定义)As类型。ReDim语句将清除数组内容,若想改变数组大小而又不丢失数组中数据,则应使用Private关键字。但注意只能改变多维数组中最后一维的上界。,变量的类型与声明,6、变量的作用域:变量的作用范围与声明的方式与声明的位置有关,一般的原则是应尽可能的限定变量的作用范围,少用“全局”变量,多用“局部”变量,更有利于程序的维护与调试。变量的作用域与声明方式和位置的关系见下表。,变量的类型
14、与声明,变量的类型与声明,7、变量的生存期动态变量:使用Dim关键字在过程中声明的局部变量属于动态变量,在过程结束后变量值不予保留,在每一次执行过程时,变量重新声明。静态变量:过程退出后,变量所占内存单元没有释放,以后再次进入过程,原来变量的值可以继续使用。使用Static关键字在过程中声明的局部变量属于静态变量。,过程的作用域,七、过程的作用域和变量一样,过程也有作用域:VB中,过程的作用域分模块级和全局级。1、模块级:在某个模块内定义的过程。若在Sub或 Function前加关键字Private,则该过程只能被本模块中定义的过程调用。及作用域为本模块。2、全局级过程:定义过程时,在前加关键字Public(可省,即不加说明时实际为全局级过程),则该过程可被整个应用程序的各个模块中定义的过程所调用。即作用域是整个应用程序,称全局过程。同样的,过程的作用域与声明方式和位置的关系见下表,过程的作用域,