5800计算程序.docx

上传人:b****7 文档编号:10144809 上传时间:2023-02-08 格式:DOCX 页数:33 大小:30.30KB
下载 相关 举报
5800计算程序.docx_第1页
第1页 / 共33页
5800计算程序.docx_第2页
第2页 / 共33页
5800计算程序.docx_第3页
第3页 / 共33页
5800计算程序.docx_第4页
第4页 / 共33页
5800计算程序.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

5800计算程序.docx

《5800计算程序.docx》由会员分享,可在线阅读,更多相关《5800计算程序.docx(33页珍藏版)》请在冰豆网上搜索。

5800计算程序.docx

5800计算程序

1引言

2004年初上市的fx-4850P是fx-4800P的小改进产品,主要改进内容有:

①内存容量由4500字节扩充到28500字节;②新增六十进制角度显示命令与;③将测量常用的Pol与Rec函数移至键面;④改进赋值显示命令功能,如在fx-4800P中,语句C"SLOPE(m)"=(A2+B2)的功能是将(A2+B2)的计算结果赋值给C变量,同时显示字符“SLOPE(m)”与变量C的值,而在fx-4850P中,实现上述功能的语句改为C=(A2+B2):

"SLOPE(m)=":

C,也即,fx-4850P是将赋值与显示功能分开进行。

在卡西欧的fx编程计算器系列产品中,fx-4500PA、fx-4800P与fx-4850P统称为fx-4000机型,设计fx-4000机型的初衷是满足最基本的便携编程计算需求。

fx-4000机型使用的简BASIC语言只有、、、Goto、Lbl、Dsz、Isz、Pause、Fixm、{、}等11个语句,而、、、、、只是条件符,缺少逻辑运算语句——And、Or、Not。

从最早进入我国市场的fx-4500PA算起,fx-4000机型在中国已累计销售了10多年,尤其是2003年夏普公司停产PC-E500后,fx-4000机型销量的增长非常显著,其中,2007年的销量达到了9万台,其中大部分用户分布在与测绘、工程建设企业与学校。

在卡西欧的fx编程计算器产品系列中,卡西欧图形编程机——fx-7400G、fx-9750G、fx-9860G等使用的是类BASIC语言,其程序语言有?

、、If、Then、Else、IfEnd、Lbl、Goto、Dsz、Isz、、Locate、Cls、And、Or、Not、For、To、Step、Next、While、WhileEnd、Do、LpWhile、Break、Return、Stop、Getkey,条件符仍为、、、、、。

显然,类BASIC语言属于结构化程序语言,比简BASIC语言的功能要丰富且强大得多,尤其是If~IfEnd、For~Next、Do~LpWhile、While~WhileEnd控制结构语句与And、Or、Not逻辑运算语句,对简化编程有非常重要的作用。

fx-4000机型在我国测绘与工程建设行业应用的日益普及,其功能缺陷带来的问题也逐渐浮出水面:

①内存不是闪存,机内程序需备用电池维护,更换备用电池时如果同时取出了主电池就会丢失机内程序。

程序一旦丢失就不可恢复,唯一的办法只有重新输入。

fx-4800P的内存只有4500字节,重新输入程序的工作量还可以接受,而fx-4850P有28500字节内存,重新输入丢失程序的工作量是非常惊人的。

专著[1]出版后,我们已收到了很多fx-4850P用户的电子邮件,反映在更换

*广东省高等教育教学改革项目(2006036),“十一五”国家级规划教材建设项目(703)

作者简介:

覃辉,1962年11月生,男,壮族,广西南宁,教授,硕士,主要从事测量计算、成图与数字化放样研究。

备用电池时丢失了机内程序,询问卡西欧工厂是否可以恢复,并且愿意承担一切高额的费用。

用户丢失程序的心情是可以理解的,因为很多程序都是用户在工程建设中经过多年实践工作积累的,工程用户在程序调试通过后普遍很少留有程序的文字记录,丢失程序后,又需要重新编写与调试,还不仅仅是简单地照单输入的问题,更多的是需要重新编写;②没有数据通讯功能,只能以手工按键方式输入程序,不便于用户相互交流程序。

针对fx-4000机型应用中的问题,卡西欧于2006年10月推出了换代机型fx-5800P,并于2008年3月在全球范围停产了全部fx-4000机型,国内100多万fx-4000机型用户很快都将面临如何将自己的fx-4000机型程序转换为fx-5800P程序的问题,专著[2]出版后,笔者也收到了很多询问如何转换fx-4000机型程序的电子邮件。

本文以fx-4850P为例,用案例方式介绍了fx-4850P与fx-5800P程序语言的主要差异与程序转换方法。

2fx-5800P的内存与数据通讯

fx-5800P的内存容量为28500字节,虽然与fx-4850P的内存容量相同,但fx-5800P是用闪存作为内存,就像普通U盘一样,机内的程序与数据可以脱离电源保存。

fx-5800P使用一节7号电池供电,没有备用电池,只要用户不手工删除程序,机内程序永远不会丢失,确保了程序的安全。

由于采用闪存作内存,fx-5800P还设计有现场保护与恢复功能,在任意模式或状态下,甚至在运行程序的中途,都可以按键关机,机器自动保存当前模式与状态,再次按键开机时,机器自动恢复最近一次关机的模式、状态与数据。

fx-5800P能实现两台机器相互数据通讯。

用SB-62数据线连接两台fx-5800P的3Pin音频通讯口,在接收机上按(LINK)(Receive)键,使接收计算器处于接受数据状态,在发送计算器上,按(LINK)(Transmit)(All)键,发送计算器开始发送机内的全部程序、自定义公式及设置内容。

数据传输完成后,发送计算器与接收计算器同时显示“Complete!

”,分别在发送计算器与接收计算器上按键退出数据传输状态。

虽然fx-5800P没有卡西欧图形编程机——fx-7400G、fx-9750G、fx-9860G与PC机双向数据通讯的功能,但相比fx-4850P还是前进了一步,至少给用户相互交流程序带来了很大的便利。

3程序语言

fx-4850P使用简BASIC语言,fx-5800P使用类BASIC语言,与卡西欧图形编程机——fx-7400G、fx-9750G、fx-9860G的程序语言完全相同,用户学会了fx-5800P的使用,就很容易触类旁通地学习图形编程机的使用。

①按(PROG)键调出程序命令菜单,共3页,内容见图1所示。

图1fx-4850P的程序命令菜单

②按(PROG)键调出程序命令菜单,共5页,内容见图2所示。

图2程序输入与编辑状态下的程序命令菜单

其中,①代表fx-4850P,②代表fx-5800P,下同。

(1)相同功能程序命令的转换

1)赋值语句案例:

①C=(A2+B2);②(A2+B2)C。

2)变量输入语句案例:

①{A}:

A"SIDE(m)=";②"SIDE(m)="?

A或"SIDE(m)="?

A。

3)简单条件语句案例:

①J0J=J+360;②J0J+360J或IfJ0:

ThenJ+360J:

IfEnd。

4)复杂条件语句案例:

①J0F=J+360:

F=J;②IfJ0:

ThenJ+360F:

ElseJF:

IfEnd。

5)逻辑运算案例:

①A0B0C=(A+B);②A0AndB0(A+B)C

6)定义扩充变量案例:

①Defmn,n=1~2850,n只能是数字,不能是变量;②nDimZ,n=1~2372,n可以是数字,也可以是变量。

7)计数转移命令:

①Dsz,Isz;②Dsz,Isz,功能完全相同。

8)清屏命令:

①Cls;②Cls,功能完全相同。

9)标记与转移命令:

①Lbln,Goton;②Lbln,Goton,功能完全相同。

10)暂停命令:

①Pausen;②Locate与Getkey配套使用,功能更强。

11)子程序返回调用主程序命令:

①无;②Return。

12)终止程序命令:

①无;②Stop。

(2)fx-5800P的控制结构命令

1)For~To~Step~Next

句法1:

For<始值><控制变量>To<终值><语句块>Next

控制变量的取值从始值开始,步长为1,重复执行语句块,直至终值为止。

一般始值小于终值,如始值大于终值,则不执行语句块而是直接执行Next后的语句。

句法2:

For<始值><控制变量>To<终值>Step<步长><语句块>Next

它与For~To~Next句法的功能相同,唯一区别是增加了步长语句Step。

2)Do~LpWhile

句法:

Do<语句块>LpWhile<条件>

先执行语句块,然后测试条件,条件为真时重复执行语句块,否则执行<条件>后的语句。

无论条件是否为真,语句块至少被执行一次。

3)While~WhileEnd

句法:

While<条件><语句块>WhileEnd

先测试条件,当条件为真时执行语句块,然后再测试条件,条件为真时重复执行语句块,直到条件为假时执行WhileEnd后的语句结束循环。

熟悉PC机程序语言的读者都知道,控制结构命令是编写大型复杂程序必须具备的,fx-4850P没有控制结构命令,编写大型复杂程序时,只能使用Dsz、Isz或条件语句加Lbl、Goto语句代替,这样编写的程序逻辑较乱,不易读懂。

4)Break

中断For、Do、While控制结构命令,Break一般位于控制结构命令的条件命令中。

4基本计算

1)省略乘号的运算级别

①省略乘号的运算级别高于×,÷运算,如执行A=12:

B=2:

C=3:

A÷BC的结果为2。

②省略乘号的运算级别等于×,÷运算,如执行12A:

2B:

3C:

A÷BC的结果为18。

2)带括号函数:

①sin,cos,Log等均为不带括号函数,sin30的结果为0.5;②sin(,cos(,Log(等均为带括号函数,sin(30)的结果为0.5。

3)清除存储器命令:

①Scl清除统计存储器,Mcl清除存储器;②ClrStat清除统计串列ListX、ListY、ListFreq,ClrMemory清除存储器,ClrMat清除矩阵存储器,ClrVar清除公式变量。

5矩阵计算

fx-4850P没有矩阵功能,fx-5800P的矩阵功能是从图形机fx-9750G与fx-9860G移植过来的,可以在COMP模式或程序中使用矩阵功能。

fx-5800P内置了MatA~MatF六个矩阵,最多可以定义10行×10列矩阵,可以对矩阵进行加、减、乘、平方、绝对值与转置运算,还可以对方阵求行列式与逆。

将矩阵功能应用到测量平差的组成与解算法方程是很方便的。

例如,设水准网条件方程为,高差观测值的协因数阵为,当系数阵已输入到矩阵MatA,闭合差阵已输入到矩阵MatB,协因数阵已输入到矩阵MatC。

由条件平差原理可知,法方程联系数的解为,可以在COMP模式执行矩阵表达式(MatAMatCTrn(MatA))-1MatBMatE求出;观测值改正数的计算公式为,可以执行矩阵表达式MatCTrn(MatA)MatEMatB求出。

6统计计算

(1)样本数据的输入与编辑

①用键输入样本数据,不能查看已输入的样本数据。

单变量统计(SD模式)按<数值>或<数值><频率>键删除已输入的样本数据;双变量统计(LR模式)按<数值x><数值y>或<数值x><数值y><频率>键删除已输入的样本数据。

②单变量统计(SD)模式,在统计串列ListX中输入样本数据,ListFreq中输入样本数据频率;双变量统计与回归(REG)模式,在统计串列ListX与ListY中输入样本数据,ListFreq中输入样本数据频率,可对已输入的样本数据与频率进行实时编辑。

(2)回归方程

①实际只能进行线性回归(),对数回归()、指数回归()与乘方回归()需要输入样本变量或的函数符。

例如,输入对数回归方程样本数据的格式为:

<数据><数据>;对指数回归方程两边取自然对数为,样本数据输入格式为:

<数据><数据>;对乘方回归方程两边取自然对数为,样本数据输入格式为:

<数据><数据>。

②有线性回归(Line)、二次回归(Quad)、对数回归(Log)、e指数回归(eExp)、ab指数回归(abExp)、乘方回归(Power)、逆性回归(Inv)共七种回归类型,无论哪种回归类型,都是将数据输入到ListX串列,数据输入到ListY串列,频率输入到ListFreq串列,回归类型是在事后按(RESULT)(REG)键,在图3的回归菜单中,按~键选择需要的回归类型计算。

图3fx-5800P回归菜单

这种事后选择回归类型的方法也可用于程序中,在程序输入模式,按(STAT)(REG)键调出与图5类似的回归命令菜单,按~键分别为输入回归命令:

LinearReg、QuadReg、LogReg、ExpReg、abExpReg、PowerReg、InvReg。

7fx-4850P与fx-5800P程序转换案例

如果只要将fx-4850P程序简单地转换为fx-5800P程序,则只需要转换变量输入语句、赋值语句、条件语句即可。

表1程序A-12的功能是根据用户输入的任意直线两端点的平面坐标计算直线的平距与方位角,将其转换为fx-5800P的程序A-13列于表中。

表1坐标反算程序A-12转换案例

fx-4850P程序A-12fx-5800P程序A-13语句差异说明

Deg:

Fix3

Deg:

Fix3

A"XO(m)=":

B"YO(m)="

"XO(m)="?

A:

"YO(m)="?

B

?

为fx-5800P的变量输入命令

I=0:

J=0

fx-5800P只提示输入?

后的变量

Lbl0:

{CD}:

C"X(m)=,0END"

Lbl0:

"X(m)=,0END"?

C

fx-5800P用?

命令代替了{}命令

C0Goto1

C0Goto1

fx-5800P没有命令

D"Y(m)="

"Y(m)="?

D

?

为fx-5800P的变量输入命令

Pol(C-A,D-B):

Cls

Pol(C-A,D-B):

Cls

相同

J<0J=J+360

J<0J+360J

为fx-5800P的赋值命令

"DIST(m)=":

I

"DIST(m)=":

I

相同

"BEAR(DMS)=":

J

"BEAR(DMS)=":

J

基本相同

Goto0

Goto0

相同

Lbl1:

"A-12END"

Lbl1:

"A-12END"

相同

由表1可知,简单转换是很容易实现的。

28

 

程序浏览:

FileName:

RESET初始化程序

Norm1:

50→C:

12345→J

"RESETPW"?

I:

I=J=>500→DimZ为数据库增加额外变量500个,在SET、SETPFDYS程序根据实际再增减变量

50→Z[C+22]

"PASSWORDS"?

I:

I→Z[C+39]重设要素保护密码

Cls:

Stop

FileName:

DATLOCK要素保护密码确定认程序

Cls:

Norm1:

50→C

"PASSWORDS"?

J:

Cls:

J≠Z[C+39]=>Stop2008-08-07修改

FileName:

SHELL(外壳程序)

50→C;在扩充变量预留前50个给别的程序用。

如不够就适量加大。

RESET,SHELL,SET,SETPFDYS,这几个程序中C值必需一致

Z[C+35]→I:

"STATION-N"?

I:

I→Z[C+35]设置测站N坐标

Z[C+36]→I:

"STATION-E"?

I:

I→Z[C+36]设置测站E坐标

Z[C+44]→I:

"STATION-Z"?

I:

I→Z[C+44]   设置测站Z坐标

Z[C+45]→I:

"STATION-HI"?

I:

I→Z[C+45]设置仪高

Z[C+41]→I:

"GC-DH"?

I:

I→Z[C+41]放样点高差常数

 

Norm1

Z[C+23]→N 当前分段要素N坐标

Z[C+24]→E 当前分段要素E坐标

Z[C+25]→M 当前分段要素起点桩号

Z[C+26]→H 当前分段要素起点方位角(正北)单位:

弧度

Z[C+27]→A 当前分段要素起点曲率有左偏负右偏正(注意不半径)

Z[C+28]→R 当前分段要素终点曲率有左偏负右偏正(注意不半径)

Z[C+29]→L 当前分段要素长度

Z[C+3]→W

Z[C+32]→I:

"DAT123"?

I:

I→Z[C+32]平曲线要素数库类型选择1为内置式,2文件式,3实时输入(查看当前要素值)

0→I

Z[C+4]→I:

"123"?

I:

I→Z[C+4]选择本程序模式默认为坐标正算,1坐标反算,2横向边仰坡放样,3,纵向边仰坡放样(隧道进出口用到)

Lbi1

Z[C+4]→I

I=1=>Prog"TURNZH"

I=2=>Prog"HXBYP"

I=3=>Prog"ZXBYP"

LbiA

Deg:

Norm1:

Cls

Z[C+1]→G:

"ZH"?

G:

G→Z[C+1]    ;G桩求桩号

Z[C+2]→B:

"JL"?

B:

B→Z[C+2]    ;B横向距离,左正右负

LbiB

Prog"ZBJS";坐标正算

Prog"GCJS";高程计算

Fix3:

Cls          ;设置三位小数

"ZH=":

Locate4,1,G   ;第一行显示桩号

"X=":

Locate3,2,X;第二行显示X(N)坐标

"Y=":

Locate3,3,Y    ;第三行显示Y(E)坐标

Prog"GCJS";高程计算

"Z":

Locate2,4,Z+Z[C+41]  ;第四行显示Z坐标

Locate10,4,Z[C+2];第四行显示横向距离

0→I

Do:

I+1→I:

I=1000=>Goto1:

LpWhileNot(Getkey=57OrGetkey=27);锁定键盘,并在几十秒后自动返回

Getkey=57=>Goto1

Z+Z[C+41]+Z[C+49]-Z[C+44]-Z[C+45]→Z[C+48]

Pol(Z[C+35]-X,Z[C+36]-Y)

Cls:

"DL":

Locate3,1,I:

Locate12,1,Z[C+45]

"DH":

Locate3,2,Z[C+48]:

Locate12,2,Z[C+49]

"FWJ"

J<0=>J+360→J:

J◤DMS◢2008-08-07修改

J→Z[C+46]

I→Z[C+47]

Goto1

FileName:

ZBJS坐标计算程序

Prog"READDAT"

Rad

G-M→Q

IFAR=0:

ThenIfA=R:

Then1→J:

Else3→J:

IfEnd:

ElseIfA=R:

Then2→J:

Else3→J:

IfEnd:

IfEnd

IfJ=1:

ThenH→F:

N+QCos(H)→X:

E+QSin(H)→Y:

IfEnd直线段直接计算

IfJ=2:

ThenH+QR→F:

Rec(Abs(2Sin(Abs(0.5QR))÷R),H+QR÷2):

N+I→X:

E+J→Y:

IfEnd圆弧段直接计算

IfJ=3:

ThenGoto5:

IfEnd

X+BCos(F+W)→X

Y+BSin(F+W)→Y

Deg:

Return

Lbi5用五点通用坐标计算计算缓和段

0.5(R-A)÷L→K

AQ→I

KQ2→J

0.0469100770→P:

H+IP+JP2→U

0.2307653449→P:

H+IP+JP2→V

0.5→P:

H+IP+JP2→D

0.7692346551→P:

H+IP+JP2→F

0.9530899230→P:

H+IP+JP2→T

0.1184634425→I

0.2393143352→J

0.2844444444→O

N+Q(ICos(U)+JCos(V)+OCos(D)+JCos(F)+ICos(T))→X

E+Q(ISin(U)+JSin(V)+OSin(D)+JSin(F)+ISin(T))→Y

H+AQ+KQ2→F

X+BCos(F+W)→X

Y+BSin(F+W)→Y

Deg:

Return

FileName:

TURNZH(坐标反算)

Norm1

Z[C+37]→I:

"DQD-N"?

I:

I→Z[C+37]输入待求点N坐标

I=-1=>Prog"INFWJDLDH"

Z[C+38]→I:

"DQD-E"?

I:

I→Z[C+38]输入待求点E坐标

0→B:

M+L÷2→G:

Prog"ZBJS"

LbiS:

Rad

Z[C+37]-X→I:

Z[C+38]-Y→J

IfI=0AndJ=0:

ThenGotoA:

IfEnd

Pol(I,J)

LbiA:

Rec(I,J-F):

J→Z[C+2]

G+I→G:

IFAbs(I)>0.0001:

ThenProg"ZBJS":

GotoS↙

G→Z[C+1]

FileName:

INFWJDLDH   实测坐标(用方位角,距离,高差)输入程序

Deg:

Norm1:

Cls

Z[C+46]→J:

"DQD-FWJ"?

J:

J→Z[C+46]

Z[C+47]→I:

"DQD-DL"?

I:

I→Z[C+47]

Z[C+48]→K:

"DQD-DZ"?

K:

K→Z[C+48]

Z[C+49]→P:

"RHT"?

P:

P→Z[C+49]

Rec(I,J)

Z[C+35]+I→Z[C+37]

Z[C+36]+J→Z[C+38]

Z[C+44]+Z[C+45]+K-P→Z[C+43]

FileName:

HXBYP横向边仰坡放样程序

Cls:

Norm1

Z[C+40]→I:

"QPD-DL"?

I:

I→Z[C+40]输入起坡点与中桩距离常数

Z[C+41]→I:

"QPD-DZ"?

I:

I→Z[C+41]输入起坡点与中桩高差常数

Z[C+42]→I:

"i"?

I:

I→Z[C+42]输入边仰坡坡度,左仰坡(路堑)为正,右仰坡(路堑)为负,左边坡为负,右边坡为正

Cls:

Z[C+43]→I:

"DQD-Z"?

I:

I→Z[C+43]输入实测高程

Prog"TURNZH"

Prog"GCJS"

(Z[C+43]-Z-Z[C+41])Z[C+42]+Z[C+40]→B

Fix3:

B-Z[C+2]◢显示与上一次测点的偏差

B→Z[C+2]

FileName:

ZXBYP纵向仰坡放样程序(隧道进口使用)

Cls:

Norm1:

Z[C+33]→I:

"QPD-ZH"?

I:

I→Z[C+33]输入起坡点桩号

Z[C+34]→I:

"QPD-Z"?

I:

I→Z[C+34]输入起坡点高程

Z[C+42]→I:

"i"?

I:

I→Z[C+42]仰坡时(隧道进出口仰坡),进口为正,出口为负)

Cls:

Z[C+43]→I:

"DQD-Z"?

I:

I→Z[C+43]输入实测高程

Prog"TURNZH"

Z[C+42](Z[C+43]-Z[C+34])+Z[C+33]→G

Fix3:

G-Z[C+1]◢显示与上一次测点的偏差

G→Z[C+1]

 

FileName:

SET设置程序

1\LbiS

2\Norm1

3\50→C

4\50→Z[C+22]

5\0→K

6\Z[C+5]→I:

"1Or2"?

I:

I→Z[C+5];选择1线或者2线

7\180Z[C+3]÷π→J:

"XZJJ"?

J:

Jπ÷180→Z[C+3]      ;斜桩夹角

8\IfI=1:

ThenZ[C+8]→Z[C+6]:

Z[C+9

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1