宜賓工程測繪其實有蠻多的樂趣,盡管要耗費很多的時間和精力。宜賓工程測繪可以強化人的邏輯思維能力,可以在如今的信息時代更多強化計算機基礎(chǔ)能力,更重要的是,對于各種行業(yè)專業(yè)人員而言,可以促進對某些技術(shù)或理論的深入掌握。
近期有一些時間可以嘗試一些新的學(xué)習(xí)內(nèi)容,想起在Anew中做一個計算器,因為在電腦上用程序時很多時候計算器沒有在旁邊,頗多不便,當然可以用微軟提供的計算器,也可以使用excel單元格計算功能,但他們都不能很方便支持角度輸入,于是決定自己動手造一個。
初入手時沒有頭緒,想來想去,.后歸結(jié)為就是一個支持角度的表達式計算,如:314.023*cos(125°31′5″)+562.841*sin(235°26′34″)角度°′″在輸入中很不方便,識別倒是沒有問題,這也是大多數(shù)測量軟件將角度表示簡化為小數(shù)表示的原因,但是在表達式里是不能這樣的,因為會和正常的小數(shù)數(shù)值相混淆,必須加以區(qū)分。如cos(125.2632),究竟是角度的還是弧度的,無法區(qū)分。這樣的問題解決方案有兩個:
1、用某個鍵盤上易輸入的符號代替°′″。
2、使用函數(shù)形式包括小數(shù)等形式角度表達。
計算一個角度值(小數(shù)角度格式)的余弦值,再求反余弦值,轉(zhuǎn)換成°′″驗證一下。對于Anew的表格,也可以提供臨時公式計算功能,在應(yīng)用一些程序如線路定義時需要臨時計算可以在表格中如Excel一樣輸入公式,也可以使用表達式計算器計算出結(jié)果復(fù)制黏貼。
04總結(jié)其實大多數(shù)的技術(shù)人員在學(xué)校里學(xué)過編程課程,在實際工作中卻很少使用,以致于越來越難以去強化編程技術(shù)。編程可以帶給工作很多方便,即便不再從事工程測量,在其他業(yè)務(wù)領(lǐng)域的作用也是一樣的
編程技術(shù)需要學(xué)習(xí),更需要積累。老驥伏櫪,可以從厘米開始。選擇了第二種,使用dms()函數(shù)形式。當然..種也可以。這樣當在表達式中使用°′″時,便寫成dms(小數(shù)角度)即可,如上例中cos(125°31′5″)寫成:cos(dms(125.3105))
01學(xué)習(xí)新的程序設(shè)計技術(shù):說是“新”的,其實并不新,只是相對自己而言,不熟知的便是新的東西。對于解決表達式計算來說,看起來簡單,其實不然。目前解決表達式計算有兩種主流技術(shù)
1、使用堆棧數(shù)據(jù)結(jié)構(gòu)分析表達式。
2、使用正則表達式識別表達式。
對于使用上述任何一種技術(shù),對于非計算機專業(yè)人員都是困難的。堆棧方式程序?qū)崿F(xiàn)更為復(fù)雜,測試也較困難,而正則表達式則相當于要學(xué)習(xí)一門新的程序設(shè)計語言,而且這語言極為晦澀。對于以學(xué)習(xí)為目的,自然選擇后者。
02正則表達式,以簡驅(qū)繁
無論表達式如何復(fù)雜,在一個表達式中,只要能正確識別子表達式并不斷用子表達式的計算結(jié)果代替即可,這給程序設(shè)計帶來方便,如識別出dms(125.3105)子表達式,便計算出弧度值代替這個表達式,不斷循環(huán),直到.后是數(shù)值或不能再識別的表達式為止。
問題是如何才能正確識別不同的子表達式,這便是正則表達式要完成的任務(wù)。如[-]?\d*\.?\d+表示匹配一個數(shù)值。
[-]?\d*\.?\d+\s*([*/])\s*[-]?\d*\.?\d+表示匹配數(shù)值的乘除運算[-]?\d*\.?\d+\s*([-+])\s*[-]?\d*\.?\d+表示匹配數(shù)值的加減運算[-]?\d*\.?\d+\s*(\^)\s*表示匹配乘方運算cos\(\s*" & Num & "\s*\)表示匹配余弦計算,其他函數(shù)替換關(guān)鍵詞即可。
初看根本看不懂,甚至責(zé)怪為什么發(fā)明那么難懂的正則表達式。但了解了各種元符號的意義,也就變得簡單了,相比掌握一門高級程序設(shè)計語言還是簡單了不少。有興趣的小伙伴可以在網(wǎng)上找到相關(guān)正則表達式的知識。
其實在一個我們要計算的表達式中,并沒有更多復(fù)雜的正則表達式,上述幾個正則式足以幫助我們實現(xiàn)常規(guī)表達式的計算。
實現(xiàn)首先,表達式計算器在網(wǎng)絡(luò)上有一些現(xiàn)成的程序,手機app也見過。我們的實現(xiàn)是基于使用方便,更多基于學(xué)習(xí)的目的。以上關(guān)于宜賓工程測繪就介紹到這里,歡迎大家來電咨詢更多的產(chǎn)品信息,我公司竭誠為您服務(wù)。