宜宾工程测绘其实有蛮多的乐趣,尽管要耗费很多的时间和精力。宜宾工程测绘可以强化人的逻辑思维能力,可以在如今的信息时代更多强化计算机基础能力,更重要的是,对于各种行业专业人员而言,可以促进对某些技术或理论的深入掌握。
近期有一些时间可以尝试一些新的学习内容,想起在Anew中做一个计算器,因为在电脑上用程序时很多时候计算器没有在旁边,颇多不便,当然可以用微软提供的计算器,也可以使用excel单元格计算功能,但他们都不能很方便支持角度输入,于是决定自己动手造一个。
初入手时没有头绪,想来想去,.后归结为就是一个支持角度的表达式计算,如:314.023*cos(125°31′5″)+562.841*sin(235°26′34″)角度°′″在输入中很不方便,识别倒是没有问题,这也是大多数测量软件将角度表示简化为小数表示的原因,但是在表达式里是不能这样的,因为会和正常的小数数值相混淆,必须加以区分。如cos(125.2632),究竟是角度的还是弧度的,无法区分。这样的问题解决方案有两个:
1、用某个键盘上易输入的符号代替°′″。
2、使用函数形式包括小数等形式角度表达。
计算一个角度值(小数角度格式)的余弦值,再求反余弦值,转换成°′″验证一下。对于Anew的表格,也可以提供临时公式计算功能,在应用一些程序如线路定义时需要临时计算可以在表格中如Excel一样输入公式,也可以使用表达式计算器计算出结果复制黏贴。
04总结其实大多数的技术人员在学校里学过编程课程,在实际工作中却很少使用,以致于越来越难以去强化编程技术。编程可以带给工作很多方便,即便不再从事工程测量,在其他业务领域的作用也是一样的
编程技术需要学习,更需要积累。老骥伏枥,可以从厘米开始。选择了第二种,使用dms()函数形式。当然..种也可以。这样当在表达式中使用°′″时,便写成dms(小数角度)即可,如上例中cos(125°31′5″)写成:cos(dms(125.3105))
01学习新的程序设计技术:说是“新”的,其实并不新,只是相对自己而言,不熟知的便是新的东西。对于解决表达式计算来说,看起来简单,其实不然。目前解决表达式计算有两种主流技术
1、使用堆栈数据结构分析表达式。
2、使用正则表达式识别表达式。
对于使用上述任何一种技术,对于非计算机专业人员都是困难的。堆栈方式程序实现更为复杂,测试也较困难,而正则表达式则相当于要学习一门新的程序设计语言,而且这语言极为晦涩。对于以学习为目的,自然选择后者。
02正则表达式,以简驱繁
无论表达式如何复杂,在一个表达式中,只要能正确识别子表达式并不断用子表达式的计算结果代替即可,这给程序设计带来方便,如识别出dms(125.3105)子表达式,便计算出弧度值代替这个表达式,不断循环,直到.后是数值或不能再识别的表达式为止。
问题是如何才能正确识别不同的子表达式,这便是正则表达式要完成的任务。如[-]?\d*\.?\d+表示匹配一个数值。
[-]?\d*\.?\d+\s*([*/])\s*[-]?\d*\.?\d+表示匹配数值的乘除运算[-]?\d*\.?\d+\s*([-+])\s*[-]?\d*\.?\d+表示匹配数值的加减运算[-]?\d*\.?\d+\s*(\^)\s*表示匹配乘方运算cos\(\s*" & Num & "\s*\)表示匹配余弦计算,其他函数替换关键词即可。
初看根本看不懂,甚至责怪为什么发明那么难懂的正则表达式。但了解了各种元符号的意义,也就变得简单了,相比掌握一门高级程序设计语言还是简单了不少。有兴趣的小伙伴可以在网上找到相关正则表达式的知识。
其实在一个我们要计算的表达式中,并没有更多复杂的正则表达式,上述几个正则式足以帮助我们实现常规表达式的计算。
实现首先,表达式计算器在网络上有一些现成的程序,手机app也见过。我们的实现是基于使用方便,更多基于学习的目的。以上关于宜宾工程测绘就介绍到这里,欢迎大家来电咨询更多的产品信息,我公司竭诚为您服务。