书签 分享 收藏 举报 版权申诉 / 83
上传文档赚钱

类型测绘程序设计复习过程课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:2952169
  • 上传时间:2022-06-14
  • 格式:PPT
  • 页数:83
  • 大小:1.23MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《测绘程序设计复习过程课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    测绘 程序设计 复习 过程 课件
    资源描述:

    1、第 二 章 编程基础概要内容概要内容本章主要介绍了C#语言的基础知识,内容主要包括C#基本语法、数据类型、运算符和表达式。本章是后续章节的基础,学习完本章后,应可以编写简单C#应用程序。目录目录v2.1 C#基本语法v2.2 变量简介v2.3 C#数据类型v2.4 运算符与表达式v小结2.1 C#程序结构程序结构v C#代码的外观和操作方式与C+和JAVA类似v C#编译器不考虑代码中的空格、回车符或者Tab字符。v C#代码由一系列语句组成,每个语句用分号来结束。v C#是一种块结构的语言,所有的语句都是代码块的一部分。这些块用花括号来界定 ,代码块可以包含任意多行语句,或者不包含语句。注意

    2、花括号不需要带分号。v 在C代码中,经常出现注释语句。编译器会忽略这些内容。/XXXXX/*这段代码由XXX编写*/v 还需要说一点,C#代码是区分大小写的。必须使用正确的大小写形式输入代码。Console.WriteLine(“hello world!”);console.WriteLine(“hello world!”);2.1 C#基本语法基本语法目录目录v2.1 C#基本语法v2.2 变量简介v2.3 C#数据类型v2.4 运算符与表达式v小结2.2 变量简介变量简介v 数据是程序的必要组成部分,也是程序处理的对象v 变量关系到数据的存储。实际上,可以把计算机内存中的变量看作架子上的盒

    3、子。2.2 变量简介变量简介v 尽管计算机中所有数据事实上都是相同的东西,但变量有不同的内涵,称为类型(数据类型)。 用盒子来类比,盒子有不同的形状和尺寸,某些东西只能放在特定的盒子中。v 这个类型系统的另一个原因是,不同类型的数据需要不同的方法来处理。变量限定为不同的类型,可以避免混淆。 例如,组成数字图片的0和1序列与组成声音文件的0和1序列,其处理方式是不同的。2.2 变量简介变量简介v 变量与内存v 使用变量 使用变量就是声明他们。 可以使用的变量类型是无限多的。其原因是可以自己定义类型,存储各种复杂数据。尽管如此,总有一些数据类型是每个人都要使用的简单的预定义类型102.3 C#数据

    4、类型数据类型CTS类型值类型与引用类型预定义类型变量常量类型转换复合类型装箱和拆箱112.3.1 CTS类型类型vCTS简介:简介:CTS( Common Type System )公共类型系统,它公共类型系统,它定义了可以在中间语言使用的预定义数据类定义了可以在中间语言使用的预定义数据类型,用于型,用于.NET语言都可以生成最终基于这些语言都可以生成最终基于这些类型的编译代码。类型的编译代码。公共类型系统不仅指定基本数据类型,还定义公共类型系统不仅指定基本数据类型,还定义了一个内容丰富的类型层次结构。了一个内容丰富的类型层次结构。12CTS类型层次引用类型值类型内置值类型枚举用户定义的值类型

    5、指针类型接口类型自我描述类型委 托封箱的值类型用户定义的引用类型数 组类类型CTS类型层次结构图类型层次结构图132.3 C#数据类型数据类型CTS类型值类型与引用类型预定义类型变量常量类型转换复合类型装箱和拆箱142.3.2 值类型与引用类型值类型与引用类型v数据类型分为值类型和引用类型两种。 从概念上看,值类型直接存储其值,而引用类型存储对值的引用。 从在内存中的存储位置上看,值类型变量把数据存储在栈中,引用类型变量把数据存储在堆中。152.3.2 值类型与引用类型值类型与引用类型v值类型与引用类型在内存中的存储int i20int i=20;“hello”string s=“hello”

    6、;int j=i;string t=s;string ssint j20string tt162.3 C#数据类型数据类型CTS类型值类型与引用类型预定义类型变量常量类型转换复合类型装箱和拆箱172.3.3 预定义类型预定义类型v 预定义数据类型是由C#语言和.NET框架提供的,每个预定义类型都映射为CTS中定义的类型。v C#中有15个预定义类型,其中有13个值类型和两个引用类型(string和object)。182.3.3 预定义类型预定义类型(值类型值类型)v预定义的值类型C#关键字关键字.NET CTS类型类型值类型值类型位数位数SbyteSystem.SByte整数整数8shortS

    7、ystem.Int16整数整数16intSystem.Int32整数整数32longSystem.Int64整数整数64byteSystem.Byte整数整数8ushortSystem.Uint16整数整数16uintSystem.Uint32整数整数32ulongSystem.Uint64整数整数64floatSystem.Single浮点浮点32doubleSystem.Double浮点浮点64decimalSystem.Decimal高精度小数高精度小数128boolSystem.Boolean布尔值布尔值1charSystem.Char整数整数16说明说明-128127-3276832

    8、767-21474836482147483647 -9 223 372 036 854 775 8089 223 372 036 854 775 807025506553504 294 967 295018 446 744 073 709 551 615true或或false表示一个表示一个16位位(Unicode)的字符的字符45381.5*103.4*10 ;7个有效位3243085.0*10 1.7*10 ;1516个有效位28281.0*107.9*1019(1) short int类型v Short和int 类型分别对应CTS中的int16和int32,当你需要一个整数变量时,可以这

    9、样声明:v 一些变量名称前的u表示不能在这些类型中存储负数,相应的整数存储范围变大。int myInt=32768;20(2) float double类型v Float和double 类型对应CTS中的single和double,当你需要一个浮点数时,而不是整数时可以这样声明:v 一些其他的类型bool是C#中最常见的一种变量类型,但编写应用程序的逻辑流程时,一个可以是ture或false的变量具有非常重要的分支作用。2.3.3 预定义类型预定义类型(值类型值类型)double myDouble=3.14159262;212.3.3 预定义类型预定义类型(值类型值类型)(3)char类型v

    10、存储单个字符。v 一些字符不能直接放在引号中,必须使用转义字符,这些转义字符如下表所示。char的双重身份:的双重身份: char的具有双重身份。它表示字符但却被看作是整数家族的的具有双重身份。它表示字符但却被看作是整数家族的一部分,它表示的值是一个无符号的整数,范围在一部分,它表示的值是一个无符号的整数,范围在065535。它。它可以参与计算,并可以隐式转换成可以参与计算,并可以隐式转换成int、long、ushort、uint和和ulong。222.3.3 预定义类型预定义类型(值类型值类型)(2)char类型 转义字符表232.3.4 预定义类型预定义类型 (引用类型引用类型)v预定义的

    11、引用类型 C#支持两个预定义引用类型,如下表所示: 242.3.4 预定义类型预定义类型 (引用类型引用类型)(1)object类型v object类型是从所有内在和用户定义的类型中派生而来的 最 终 父 类 型 , 所 有 类 型 都 隐 含 地 最 终 派 生 于System.Object类。(1)object类型vobject类型可用于两个目的: 1)使用object引用绑定任何特定子类型的对象,例如: 2)object类型执行基本用途的方法,Equals()、GetHashCode()、GetType()和ToString()等等。 252.3.4 预定义类型预定义类型 (引用类型引用

    12、类型)int i=20;object o=i;262.3.4 预定义类型预定义类型 (引用类型引用类型)(2)string类型v 字符串变量是包含字母或数字字符的序列,它可以用来存放计算机或查询操作的输入信息。 注意:对组成字符串的字符数没有限制。272.3.4 预定义类型预定义类型 (引用类型引用类型)(2)string类型v 声明字符串变量:string myStr1=“hello”;string myStr2=“world”;string myStr3=myStr1+myStr2;C#的string类型可以用“”直接连接,结果myStr3= “helloworld”(2)string类型

    13、v 字符串中也可以包括转义字符:v 结果如下:282.3.4 预定义类型预定义类型 (引用类型引用类型)string的永恒性C#中,创建一个string对象后,它所代表的字符集不能修改。当把一个字符串变量赋给另一个字符串时,会得到内存中同一个字符串的两个引用。但是,修改其中一个字符串,注意这会创建一个全新的string对象,而另一个字符串没有改变。string sample=“hellonworld”;helloworld2.3.4 预定义类型预定义类型 (引用类型引用类型)(2)string类型v 请考虑下边的过程: string s1=“a string”;string s2=s1;s1=

    14、“another string”;string s1s1string s2s2“anothe string”“a string”对s1的修改是通过String类的各种方法来实现的,预定义的方法不会直接修改内存中的这个String,而是构造一个新的String。所以在表面上看上去象是修改没有影响到原字符串。 (2)string类型v verbatim字符串 通过加前缀,使编译器严格按照原样对其编译。字符串各种格式和转义字符将按原样输出。如:302.3.4 预定义类型预定义类型 (引用类型引用类型)string s=“hellonworld”;hellonworld 结果输出:(2)string类

    15、型v verbatim字符串 注意:引号是唯一例外,编译器必须将其转义,例如,生成字符串“Hello”的代码如下: 输出结果为:312.3.4 预定义类型预定义类型 (引用类型引用类型)string s=“ “ “Hello” ” ”;注意:Hello的两边都有3个引号Hello”注:转义字符处理一对322.3 C#数据类型数据类型CTS类型值类型与引用类型预定义类型变量常量类型转换复合类型装箱和拆箱(1)声明变量v 语法:v 例如:该语句用public访问级声明int变量i。332.3.5 变量变量modifiers datatype identifier;public int i;342.

    16、3.5 变量变量(2)标识符(identifier)v 标识符是给变量、用户定义的类型和这些类型的成员指定的名字。v C#变量命名的基本规则:变量名首字符必须是字母、下划线(“_”)或 “”;其后字符必须是字母、下划线或数字;切忌使用C#关键字。如果需要使用,须在标识符前边加上“”(如abstract)。352.3.5 变量变量(2)标识符(identifier)v 练习:下边哪些变量的命名是正确的 myBigVar 99BottleOfBeer namespace VAR1 _test Its-All-Over带红色下划线的变带红色下划线的变量名是正确的量名是正确的362.3.5 变量变量(

    17、2)标识符(identifier)v 以下列出了命名变量的一些约定: 给变量分配有意义的名称; 命名类和方法时使用PascalCase样式,命名变量使用camelCase样式。 不要通过大小写的不同来区分变量。变量命名的两种常用大小写样式变量命名的两种常用大小写样式Pascal样式名字中每个单词的第一个单词大写,样式名字中每个单词的第一个单词大写,AverageSpeed;Camel样式与样式与Pascal样式基本相同,不同的是标识符的第一个单样式基本相同,不同的是标识符的第一个单词小写,如词小写,如averageSpeed.(3)初始化变量v 变量声明后,我们必须初始化该变量。372.3.5

    18、 变量变量class Test static void Main() int myTest = 8;System.Console.WriteLine(myTest); Error cs0165:Use of unassigned local variable myTestint myTest;(3)初始化变量v 另外,注意初始值要与声明的类型相一致v 可以通过附加后缀来指定数值类型 382.3.5 变量变量string myString=34.50; /错误错误string myString=“34.50”; /正确正确392.3.5 变量变量(3)初始化变量v 可使用的后缀如下表:402.3

    19、.5 变量变量(4)变量的作用域v class Programv v static void Main(string args)v v string myString = string defined in Main;v write();v Console.ReadKey();v v static void write()v v Console.WriteLine(myString =0, myString);v v v static void Main(string args)v v string myString = string defined in Main;v write();v C

    20、onsole.WriteLine(n Now in the Main);v Console.WriteLine(myString =0, myString);v Console.ReadKey();v v static void write()v v string myString = string defined in Write;v Console.WriteLine(myString =0, myString);v 示示 例例422.3.5 变量变量(4)变量的作用域v 变量的作用域是可以访问该变量的代码区域。作用域的确定规则: 只要字段所属的类在某个作用域内,其字段也在该作用域内; 局

    21、部变量存在于表示声明该变量的块语句结束的封闭花括号之前的作用域内; 在循环或类似的语句中声明的局部变量存在于该循环体内。(5)字段和局部变量v 考虑下边的代码:432.3.5 变量变量using System;Class ScopeTest static int j=20; public static void Main() int j=30; Console.WriteLine(j); return; 定义了两个j,能通过编译吗?442.3.5 变量变量(5)字段和局部变量v C使得在变量之间有一个基本的区分,它把声明为类型级的变量看作是字段,而把在方法中声明的变量看作局部变量。v 所以前边

    22、的代码可以通过编译,运行结果是30!此时,在Main方法中声明的变量j隐藏了同名的类级别的变量。Program.j ?(6) 修饰符v 修饰符用于限定类型以及类型成员的声明。C#语言共有13种修饰符,按功能可以分成3部分:类修饰符成员修饰符访问修饰符452.3.5 变量变量462.3.5 变量变量(6)修饰符v 访问修饰符472.3.5 变量变量( (6)修饰符v 以下是访问修饰符的一些规则: 命名空间总是默认为public; 类总是默认为public; 类成员默认为private;(与C+不同) 对于一个类成员只能使用一个访问修饰符,protected internal尽管是2个单词,但它是

    23、单个访问修饰符; 成员的作用域永远不超出包含它的类。482.3 C#数据类型数据类型CTS类型值类型与引用类型预定义类型变量常量类型转换复合类型装箱和拆箱v语法: 注意:声明常量时必须对其赋值。v例: 492.3.6 常量常量const type-name constant = value;const float pi=3.14f;const int earthRadius=6378;502.3 C#数据类型数据类型CTS类型值类型与引用类型预定义类型变量常量类型转换复合类型装箱和拆箱512.3.7 类型转换类型转换p隐式转换隐式转换(implicit conversion)p显式转换显式转换

    24、(explicit conversion)(2)显式转换方式:语法如下:例:522.3.7 类型转换类型转换type variable1=(cast-type)variable2;int x=500;short z=(short)x;532.3.7 类型转换类型转换(2)显式转换方式:v 考虑下边的代码: decimal d=1234.56M;int x=(int)d;转换的结果是,x值为1234long val=3000000000;int i=(int)val;编译器不会报错,但i中结果却是-1294967296542.3.7 类型转换类型转换(2)显式转换方式:v 注意:显式转换是一种危

    25、险操作,它可能导致数据丢失,或数据溢出,从而得不到所需的结果,所以在执行显式转换之前一定要清楚自己在做什么。552.3.7 类型转换类型转换(2)显式转换方式:v Convert.ToInt32、int.Parse、int.TryParse、(int) 四者都可以将类型转换为 int,其区别是:Convert.ToInt32 与 int.Parse 较为类似,实际上 Convert.ToInt32 内部调用了 int.Parse:Convert.ToInt32 参数为 null 时,返回 0;int.Parse 参数为 null 时,抛出异常。Convert.ToInt32 参数为 时,抛出异

    26、常;Int.Parse 参数为 时,抛出异常。Convert.ToInt32 可以转换的类型较多;int.Parse 只能转换数字类型的字符串。562.3 C#数据类型数据类型CTS类型值类型与引用类型预定义类型变量常量类型转换复合类型装箱和拆箱572.3.8 复合类型复合类型v除了前面介绍的预定义类型外,C#和.NET Framework还允许用户根据这些简单类型定义复合类型。v与基本类型一样,复合类型可以分为值类型和引用类型(1)结构(struct)v语法:582.3.8 复合类型复合类型(值类型值类型)modifier struct identifier:interface member

    27、 of struct;592.3.8 复合类型复合类型(值类型值类型)(1)(1)结构结构( (struct) )v member of struct包括:包括: 构造函数构造函数(Constructor)、常数、常数(Destructor)、 字段字段(Fields)、方法、方法(Methods)、 属性属性(Attribute)、索引、索引(Indexes)、 操作符操作符(Operators)和嵌套和嵌套(Nested)类型。类型。602.3.8 复合类型复合类型(值类型值类型)(1)结构(struct)v 示例:定义一个水准网间接平差的结构类型,用于保存某条路线的信息,包括:起始点号、

    28、终止点号、高差、权。61 class Program struct LevelLine public string qPoint; public string zPoint; public double lDispersion; public double lWeight; public double getlWeight() return 1 / lWeight; static void Main(string args) LevelLine abc; abc.qPoint = A; abc.zPoint = B; abc.lDispersion = 0.25; abc.lWeight =

    29、4; Console.WriteLine(0到到1路线的权为路线的权为2, abc.qPoint, abc.zPoint, abc.getlWeight(); Console.ReadKey(); p 程序代码如下:622.3.8 复合类型复合类型(值类型值类型)(1)结构(struct)v 从功能上看结构就像一个小型的类,但二者还是有很大区别: 第一,结构是一个值类型,它存储在栈中,而类是一个引用类型,它存储在堆中。 第二,结构不允许继承。 第三,在结构中不允许声明一个没有参数的构造函数,而类是允许的。v第四,在结构中不允许不允许有实例字段初始值设定项。 632.3.8 复合类型复合类型(值

    30、类型值类型)public struct Rect public int x1=1; Error CS0573:“Rect.x1”:结构中不能有实例字段初始值设定项642.3 C#数据类型数据类型CTS类型值类型与引用类型预定义类型变量常量类型转换复合类型装箱和拆箱(1)装箱(Boxing)v 考虑下边的代码: v 问题: j不过是栈上一个4字节的值,它是如何调用方法的?652.3.9 装箱和拆箱装箱和拆箱 Int j=10;string s=j.ToString();(1)装箱(Boxing)v C#提供了一个有点魔术性的方式装箱!v 装箱可以把值类型转换为引用类型,上例中的该转换是隐式进行的

    31、,还可以手工转换:662.3.9 装箱和拆箱装箱和拆箱int i=20;object o=i;672.3.9 装箱和拆箱装箱和拆箱(1)装箱(Boxing)v 第二条初始化语句中,o包含的引用并不指向i,因为i在栈中,引用指向栈将严重影响程序的健壮性(还会产生潜在的安全漏洞)。v 作为替代,在堆中会产生i的一个精确拷贝,并将变量o的引用指向该拷贝 这种自动拷贝就是装箱!(1)装箱(Boxing)v 装箱过程如下图所示682.3.9 装箱和拆箱装箱和拆箱栈堆int i20object oint i=20;object o=i;装箱20(2)拆箱(Unboxing)v 拆箱用于把引用类型转换为值类

    32、型,其中引用类型的值转换为值类型。v 其语法类似于显式类型转换: 692.3.9 装箱和拆箱装箱和拆箱 object o=42; int i=(int)o;702.3.9 装箱和拆箱装箱和拆箱(2)拆箱(Unboxing)v 拆箱过程如下图所示栈堆object oint i=(int)o;object o=42;42int i=(int)o42拆箱712.3.9 装箱和拆箱装箱和拆箱(2)拆箱(Unboxing)v 需要注意的是,在把引用类型转为值类型的时候,必须确保得到的值变量有足够的空间存储值类型中所有的字节。例:long a=33333423;object b=(object)a;int

    33、 c=(int)b;CLR会抛出一个异常:“未处理的异常:system.InvalidCastException:指定的转换无效”目录目录v2.1 C#基本语法v2.2 变量简介v2.3 C#数据类型v2.4 运算符与表达式v小结732.4 运算符与表达式运算符与表达式 前面介绍了如何声明和初始化变量,下面讨论如何处理它们。 C#包含许多进行这类处理的运算符。把变量和字面值与运算符组合起来,就可以创建表达式,他们是计算的基本构件。742.4.1 运算符运算符v C#语言继承了C/C+原有所有运算符,并在此基础上增添了几个新的运算符,详见下页表。v 另外,根据运算符所使用的操作数(运算符所操作的

    34、变量或常量) 个数,可分为3类:一元运算符二元运算符三元运算符75vC#运算符762.4 运算符与表达式运算符与表达式运算符运算符的优先级772.4.2 运算符的优先级运算符的优先级v运算符的优先级:是指在不同运算符混合使用时,运算进行时的顺序。vC#运算符的优先级如下页表所示。表的顶部的运算符有最高的优先级。78vC#C#运算符优先级运算符优先级优先级优先级运算符运算符优先级由高到低+,-(前缀),+,-(一元)*,/,%+,-=,*=,/=,%=,+=,-=+,-(后缀)2.4.2 运算符的优先级运算符的优先级System.ConsoleSystem.Console类类v 前面已经使用过C

    35、onsole类,虽然CUI不如GUI或基于Web的前端吸引人,但将程序示例限制在CUI,可以将重点集中在其他方面。v Console类封装了基于控制台的应用程序的输入、输出和错误流操作。v输入、输出 Writeline() Write()(无回车) ReadLine() Read()(一个字符)v格式化控制台输出 0 1 嵌入在字符串字面量中 花括号语法在内部指定占位符练习:用数学运算符处理变量求三角形面积求三角形面积v 海伦公式: 其中,v 代码分析: 海伦公式的表达式: s = Sqr(p - a) * (p - b) * (p - c) * p) p = (a + b + c) / 2

    36、cpbpappS2cbap示例代码示例代码高斯投影分带计算高斯投影分带计算v 高斯投影的分带: 高斯投影是我国采用的地图投影方法,它从0子午线起,每隔经差6自西向东分带,成为6带。带号 依次编为160。位于各带中央的子午线,称为中央子午线,其经度 可按照下式计算: 若已知某点的经度L,求该点所在的6带的带号可以用下式计算: N=Int(L+3)/6+0.5)v 界面分析: 输入带号输出中央经度,输如经度输出带号v 代码分析: L = N*6 -3; N =int( ( L + 3 ) / 6 + 0.5 )360eNL小结小结v 本章介绍了创建有效C#应用程序的大量基础知识,讲述了C#的基本语法。v 重点讲述变量的用法。描述了变量的含义,阐述了如何创建变量,如何给它们赋值,如何处理它们以及它们包含的值。支持所有工作都是顺序完成的,之后介绍使用循环技术和条件分支控制程序的流程。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:测绘程序设计复习过程课件.ppt
    链接地址:https://www.163wenku.com/p-2952169.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库