工程測(cè)量:培養(yǎng)自己的編程能力 - 副本_第1頁
工程測(cè)量:培養(yǎng)自己的編程能力 - 副本_第2頁
工程測(cè)量:培養(yǎng)自己的編程能力 - 副本_第3頁
工程測(cè)量:培養(yǎng)自己的編程能力 - 副本_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論