1。1测绘程序设计的意义
①计算机在现代测绘科学中的广泛应用带来极大便利
方便、快速、准确,可重复性
②测绘软件不通用
测绘相关软件丰富数据计算、制图、遥感影像处理、数字摄影测量、地理信息系统(GIS)、 GPS平差计算等软件。
实际工作遇到的问题千差万别,特定应用需要掌握一门编程语言,设计相应的程序解决实际问题。
③编写相关专业程序,深化测量知识的过程
2.1类型
C#数据类型分为值类型与引用类型;
①CTS( Common Type System )公共类型系统
②值类型与引用类型
从概念上看,值类型直接存储其值,而引用类型存储对值的引用;从在内存中的存储位置上看,值类型变量把数据存储在栈中,引用类型变量把数据存储在堆中。
③预定义类型
值类型13个:Short Int类型; Float double类型;char类型 等等
引用类型2个:object类型;string类型
通过加前缀@,使编译器严格按照原样对其编译。
string s=@“hello\nworld";结果输出hello\nworld
2.2变量与常量
变量与内存
每次声明变量时,计算机都会给它分配一块足够大的内存空间,来保存该类型的变量.
相同类型的不同变量总是占据相同大小的内存。
但不同类型的变量需要分配的内存空间就不一样了。这就需要划分类型.
使用变量
使用变量就是声明他们.即给变量指定名称和类型。修饰符—数据类型—标识符 public int I;
标识符
变量名首字符必须是字母、下划线(“_”)或 “@”;
其后字符必须是字母、下划线或数字;
切忌使用C#关键字。如果需要使用,须在标识符前边加上“@"(如@abstract).
命名变量的一些约定:
给变量分配有意义的名称;
命名类和方法时使用PascalCase样式,命名变量使用camelCase样式;
不要通过大小写的不同来区分变量。
初始化变量
注意初始值要与声明的类型相一致 decimal bankBalance=34。50; //错误
可以通过附加后缀来指定数值类型 decimal bankBalance=34.50M; //正确
可以使用的后缀:U无符号 L长整型 UL无符号长整型 F浮点型 D双精度型 M十进制
常量
声明常量时必须对其赋值const float pi=3.14f
2.3类型转换
显式转换方式:
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 参数为 "” 时,抛出异常;
Int。Parse 参数为 "” 时,抛出异常。
Convert。ToInt32 可以转换的类型较多;
int.Parse 只能转换数字类型的字符串。
3。1方位角算法
方位角计算
{
Console.WriteLine("Please Enter X1:”);
double X1 = Convert。ToDouble(Console.ReadLine());
Console。WriteLine(”Please Enter Y1:”);
double Y1 = Convert.ToDouble(Console。ReadLine());
Console.WriteLine("Please Enter X2:”);
double X2 = Convert。ToDouble(Console.ReadLine());
Console。WriteLine(”Please Enter Y2:");
double Y2 = Convert。ToDouble(Console。ReadLine());
double detX = X2 - X1;
double dexY = Y2 — Y1;
double fwj;
if (Math。Abs(detX) 〈 0.0000001)
{
if (dexY 〉 0)
fwj = 90;
else
fwj = 270;
}
else
{
fwj = dexY / detX;
fwj = Math。Atan(fwj);
fwj = fwj * 180 / Math。PI;
if (detX < 0)
fwj = fwj + 180;
else if (dexY < 0) //若detY>0,fwj没做处理,fwj=fwj
fwj = fwj + 360;
}
Console.WriteLine("fwj of two point is \n{0}”, fwj);
Console.ReadKey();
}
3.2字符串的处理
GetLength 获得指定维度的长度 IndexOf 返回指定值第一次出现的索引值
Lengh获取元素个数
<string>.Trim()可以使用这个命令删除其他字符,只要在一个char数组中指定这些字符即可;
〈string〉.PadLeft() 〈string〉。PadRight()他们可以在字符串左边或者右边添加空格,使字符串达到指定长度。
myString=“Aligned”; myString=myString.PadLeft(10); //补3个空格
4。1函数构成
C#中函数的参数有4种类型:
值参数,不含任何修饰符;引用型参数,以ref修饰符声明.
输出参数,以out修饰符声明;数组型参数,以params修饰符声明
Ref 关键字
class Program
writeline输出数值变量 {
static void Main(string[] args)
{
int a = 3;
int b = 5;
change(ref a , ref b);
Console。WriteLine(”a={0}, b={1}”, a, b);
}
static void change(ref int a1 , ref int b1)
{
int t; t = a1; a1 = b1; b1 = t;
}
}
Out关键字
static void Main(string[] args)
{
Console。WriteLine(" out 参数输出 ”);
int a, b;
UseOut(out a,out b);
Console。WriteLine(”调用UseOut函数后返回主程序:a={0}, b={1}”,a,b);
Console。ReadLine();
}
private static void UseOut(out int x,out int y)
{
int temp;
x = 20;
y = 30;
Console.WriteLine("\n 函数内交换前 x={0}, y={1}", x,y);
temp = x; x = y;
y = temp;
Console.WriteLine("\n 函数内交换后 x={0}, y={1}”, x, y);
}
Param关键字
class Program
{
static int Max(params int[] Age)
{
int temp=0;
for (int i = 0; i < Age。Length; i++)
{
if (temp 〈 Age[i])
temp = Age[i];
}
return temp;
}
static void Main(string[] args)
{
int maxAge = Max(18, 23, 19, 22, 27);
Console.WriteLine("the max of age is : {0}",maxAge);
}
}
4.2常用的测量函数设计
坐标正算
class Program
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论