版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
測(cè)量程序基本算法第一頁,共四十三頁,編輯于2023年,星期日2.1算法(Algorithm)及其表示2.1.1概念廣義地講:算法是為完成一項(xiàng)任務(wù)所應(yīng)尊循的一步一步的、規(guī)則的、精確的、無歧異的描述,它的總步數(shù)是有限的。狹義地講:算法是解決一個(gè)問題采取的方法和步驟的描述。第二頁,共四十三頁,編輯于2023年,星期日例1:找出三個(gè)數(shù)中的最大的數(shù)。
假如三個(gè)數(shù)已存放在數(shù)組a(2)中了,用Max存儲(chǔ)最大的數(shù)。
算法設(shè)計(jì)如下:
1)比較a(0)與a(1),將大的數(shù)放到Max中;
2)比較Max與a(2),若Max小于a(2),將a(2)賦值給Max。
例2:輸入10個(gè)數(shù),輸出其中最大的數(shù)。算法設(shè)計(jì)如下:
1)輸入一個(gè)數(shù),存入變量A中,將記錄數(shù)據(jù)個(gè)數(shù)的變量N賦值為1,即N=1;第三頁,共四十三頁,編輯于2023年,星期日
2)將A存入表示最大值的變量Max中,即Max=A;
3)再輸入一個(gè)值給A,如果A>Max則
Max=A,否則Max不變;
4)讓記錄數(shù)據(jù)個(gè)數(shù)的變量增加1,即N=N+1;
5)判斷N是否小于等于10,若成立則轉(zhuǎn)到第(3)步執(zhí)行,否則轉(zhuǎn)到第(6)步;
6)輸出max。第四頁,共四十三頁,編輯于2023年,星期日2.1.2算法的特性有窮性
對(duì)于任意一組合法輸入值,在執(zhí)行有窮步驟之后一定能結(jié)束,即:算法中的每一步驟都能在有限時(shí)間內(nèi)完成。確定性
對(duì)于每種情況下所應(yīng)執(zhí)行的操作,在算法中都有確切的規(guī)定,使算法的執(zhí)行者或閱讀者都能明白其含義以及如何執(zhí)行。第五頁,共四十三頁,編輯于2023年,星期日可行性算法中的所有操作都必須足夠基本,都可以通過已經(jīng)實(shí)現(xiàn)的基本操作運(yùn)算有限次實(shí)現(xiàn)它。有輸入作為算法加工對(duì)象的量值,通常體現(xiàn)為算法中的一組變量。有些輸入量需要在算法執(zhí)行過程中輸入,而有的算法表面上可以沒有輸入,實(shí)際上已經(jīng)被嵌入算法中。有輸出它是一組與“輸入”有確定關(guān)系的量值,是算法進(jìn)行信息加工后得到的結(jié)果,這種確定關(guān)系即為算法的功能。第六頁,共四十三頁,編輯于2023年,星期日2.1.3算法設(shè)計(jì)的原則設(shè)計(jì)算法時(shí),通常應(yīng)考慮達(dá)到以下目標(biāo):1、正確性對(duì)算法是否“正確”的理解可以有以下四個(gè)層次:a.程序中不含語法錯(cuò)誤;b.程序?qū)τ趲捉M輸入數(shù)據(jù)能夠得到出滿足要求的結(jié)果;c.程序?qū)τ诰倪x擇的、典型、苛刻且?guī)в械箅y性的幾組輸入數(shù)據(jù)能夠得出滿足要求的結(jié)果;d.程序?qū)τ谝磺泻戏ǖ妮斎霐?shù)據(jù)都能得出滿足要求的結(jié)果;第七頁,共四十三頁,編輯于2023年,星期日2、可讀性
算法主要是為了人的閱讀與交流,其次才是為計(jì)算機(jī)執(zhí)行。因此算法應(yīng)該易于人的理解;另一方面,晦澀難度的程序易于隱藏較多錯(cuò)誤而難以調(diào)試;3、健壯性當(dāng)輸入的數(shù)據(jù)非法時(shí),算法應(yīng)當(dāng)恰當(dāng)?shù)刈鞒龇磻?yīng)或進(jìn)行相應(yīng)處理,而不是產(chǎn)生莫名其妙的輸出結(jié)果。并且,處理出錯(cuò)的方法不應(yīng)是中斷程序的執(zhí)行,而應(yīng)是返回一個(gè)表示錯(cuò)誤或錯(cuò)誤性質(zhì)的值,以便在更高的抽象層次上進(jìn)行處理。第八頁,共四十三頁,編輯于2023年,星期日4、高效率與低存儲(chǔ)量需求
通常,算法的效率指的是算法執(zhí)行時(shí)間;存儲(chǔ)量指的是算法執(zhí)行過程中所需的最大存儲(chǔ)空間。兩者都與問題的規(guī)模有關(guān)。第九頁,共四十三頁,編輯于2023年,星期日2.1.4算法的表示1)用自然語言及偽代碼來表示
自然語言:是指人們?nèi)粘J褂玫恼Z言,可以是漢語、英語或其它語言。
偽代碼:是用介于自然語言和計(jì)算機(jī)語言之間的文字和符號(hào)(包括數(shù)學(xué)符號(hào))來描述算法。
例1用偽代碼表示
Begin算法開始
Ifa(0)>a(1)則a(0)->Max
否則a(1)->MaxIfa(2)>Max則a(2)->MaxEnd算法結(jié)束第十頁,共四十三頁,編輯于2023年,星期日2)用傳統(tǒng)流程圖來表示
1、傳統(tǒng)流程中的基本符號(hào)起止框I/O框流程線處理框判斷框第十一頁,共四十三頁,編輯于2023年,星期日
2、三種基本結(jié)構(gòu)的表示
順序結(jié)構(gòu)選擇結(jié)構(gòu)語句1語句2條件語句1語句2YN第十二頁,共四十三頁,編輯于2023年,星期日循環(huán)結(jié)構(gòu)當(dāng)循環(huán)
直道循環(huán)條件(a)YN語句組條件語句組YN(b)第十三頁,共四十三頁,編輯于2023年,星期日三種基本結(jié)構(gòu)的特點(diǎn):只有一個(gè)入口只有一個(gè)出口不存在死語句不存在死循環(huán)從10個(gè)數(shù)中選出最大的數(shù)的算法流程圖N<10Max=AN=1A>MaxMax=A輸入A再輸入給AN=N+1結(jié)束YNNY開始打印Max第十四頁,共四十三頁,編輯于2023年,星期日3)用N—S流程圖表示
將全部算法寫在一個(gè)矩形框內(nèi),在矩形內(nèi)還可包含其它從屬于它的框。三種基本結(jié)構(gòu)的N—S圖表示:
語句A語句B循序結(jié)構(gòu)選擇結(jié)構(gòu)語句A語句B條件YN第十五頁,共四十三頁,編輯于2023年,星期日循環(huán)結(jié)構(gòu)
當(dāng)循環(huán)直道循環(huán)語句組當(dāng)條件成立語句組直到當(dāng)條件成立例4畫出從10個(gè)數(shù)中選出最大的數(shù)的N—S流程圖第十六頁,共四十三頁,編輯于2023年,星期日傳統(tǒng)流程圖N<10Max=AN=1A>MaxMax=A輸入A開始再輸入給AN=N+1輸出Max結(jié)束YNNY輸入A當(dāng)N<10Max=AN=N+1打印MaxMax=A,N=1N—S流程圖A>MaxYN輸入A第十七頁,共四十三頁,編輯于2023年,星期日2.2測(cè)量程序中幾種常用算法2.2.1數(shù)據(jù)文件操作(讀寫文件)
數(shù)據(jù)在計(jì)算機(jī)里的存儲(chǔ)格式五花八門。如Image,它可以以Bmp、Jpeg、Tif等格式來存儲(chǔ);又如對(duì)于GPS數(shù)據(jù)文件,不同的儀器型號(hào),它的數(shù)據(jù)記錄格式一般是不一樣的。
測(cè)量程序處理的對(duì)象主要為野外采集原始數(shù)據(jù)。(外業(yè)觀測(cè)數(shù)據(jù)、已知數(shù)據(jù)以及網(wǎng)形數(shù)據(jù))。計(jì)算的開始、結(jié)束以及計(jì)算過程中,會(huì)涉及數(shù)據(jù)的讀取、存儲(chǔ)(中間計(jì)算結(jié)果)以及輸出(成果)。那么我們進(jìn)行程序設(shè)計(jì)時(shí)以哪種形式的文件來存儲(chǔ)數(shù)據(jù)呢?數(shù)據(jù)在存儲(chǔ)到文件中又怎樣來組織呢?第十八頁,共四十三頁,編輯于2023年,星期日在VB6.0中讀取該格式的文本數(shù)據(jù)要到:CommonDialog外部控件、For循環(huán)、While…loop以及l(fā)ineInput語句第十九頁,共四十三頁,編輯于2023年,星期日文本操作算法流程N(yùn)YYN第二十頁,共四十三頁,編輯于2023年,星期日2.2.2矩陣運(yùn)算
對(duì)矩陣運(yùn)算進(jìn)行編程實(shí)現(xiàn)時(shí),一般需在內(nèi)存中申請(qǐng)一塊連續(xù)的空間來存儲(chǔ)矩陣中各個(gè)元素。在C++語言中,可以定義一個(gè)指針來指向內(nèi)存中所申請(qǐng)的地址;在VB中,可利用數(shù)組(可以用一維數(shù)組,也可以用二維數(shù)組)存儲(chǔ)矩陣中的各個(gè)元素。A(0)A(1)A(2)A(n)….
一維數(shù)組在內(nèi)存中存放的順序第二十一頁,共四十三頁,編輯于2023年,星期日1)兩矩陣相加
矩陣A、B相加就是矩陣對(duì)應(yīng)的元素相加即可實(shí)現(xiàn)。
fori=0tom-1forj=0ton-1c(i,j)=a(i,j)+b(i,j)nextnextN矩陣相加流程第二十二頁,共四十三頁,編輯于2023年,星期日2)兩矩陣相減矩陣A、B相加就是矩陣對(duì)應(yīng)的元素相加即可實(shí)現(xiàn)。
fori=0tom-1forj=0ton-1c(i,j)=a(i,j)-b(i,j)
nextnextN矩陣相減流程第二十三頁,共四十三頁,編輯于2023年,星期日3)矩陣轉(zhuǎn)置
通過將a(i,j)元素放到b(j1,i1)即可實(shí)現(xiàn)矩陣轉(zhuǎn)置。在VB實(shí)現(xiàn)時(shí)先定義一個(gè)存儲(chǔ)a(i,j)轉(zhuǎn)置后的矩陣b(j,i)。
fori=0tom-1forj=0ton-1b(i,j)=a(j,i) nextnext第二十四頁,共四十三頁,編輯于2023年,星期日4)矩陣相乘
矩陣A有m*l個(gè)元素,矩陣B有l(wèi)*n個(gè)元素,則矩陣C=A*B有m*n個(gè)元素,矩陣C中任一元素
(i=1,2,…,m;j=1,2,…,n)
兩矩陣相乘流程
fori=1tomforj=1tonc(i,j)=0fork=1tolc(i,k)=c(i,j)+a(i,k)*b(k,j)nextk:nextj:Nexti第二十五頁,共四十三頁,編輯于2023年,星期日
定義四個(gè)變量b,c,d,M分別存儲(chǔ)度、分、秒以及最終結(jié)果。2.2.3不同單位角度的轉(zhuǎn)化度分秒轉(zhuǎn)度
M=a+c/60+d/3600度分秒轉(zhuǎn)弧度
定義四個(gè)變量b,c,d,M分別用來存儲(chǔ)度、分、秒及最終結(jié)果。M=a+c/60+d/3600M=M*3.1415/180第二十六頁,共四十三頁,編輯于2023年,星期日DimAnyString,MyStrAnyString="HelloWorld"'Definestring.MyStr=Left(AnyString,1)'Returns"H".MyStr=Left(AnyString,7)'Returns"HelloW".MyStr=Left(AnyString,20)'Returns"HelloWorld".*************************DimAnyString,MyStrAnyString="HelloWorld"'Definestring.MyStr=Right(AnyString,1)'Returns"d".MyStr=Right(AnyString,6)'Returns"World".MyStr=Right(AnyString,20)'Returns"HelloWorld".
VB中字符串操作函數(shù):Left()、Mid()、Split()、Right()類型轉(zhuǎn)換函數(shù):CDbl(expression)、CInt(expression)、CLng(expression)、CStr(expression);Str(number)第二十七頁,共四十三頁,編輯于2023年,星期日Mid(string,start[,length])DimMyString,FirstWord,LastWord,MidWordsMyString="MidFunctionDemo"'Createtextstring.FirstWord=Mid(MyString,1,3)
'Returns"Mid".LastWord=Mid(MyString,14,4)'Returns"Demo".MidWords=Mid(MyString,5)'Returns"FunctionDemo".第二十八頁,共四十三頁,編輯于2023年,星期日2.2.4排序算法1)選擇法排序(升序)
基本思想:(1)對(duì)有n個(gè)數(shù)的序列(存放在數(shù)組a(n)中),從中選出最小的數(shù),與第1個(gè)數(shù)交換位置;753468
91排序開始前a(n):第1遍交換后:753468
9171第二十九頁,共四十三頁,編輯于2023年,星期日(2)第二遍時(shí),除第1個(gè)數(shù)外,其余n-1個(gè)數(shù)中選最小的數(shù),與第2個(gè)數(shù)交換位置;735468
9171第2遍交換后:(3)依次類推,選擇了n-1遍后,這個(gè)數(shù)列已按升序排列。第三十頁,共四十三頁,編輯于2023年,星期日
選擇法排序算法的流程圖第三十一頁,共四十三頁,編輯于2023年,星期日選擇法排序(升序)的VB程序:fori1=1ton-1‘n-1趟遍歷
P=i1 fori2=i1+1ton‘1次遍歷
ifa(P)>a(i2)then P=i2endif nexti2temp=a(i1):a(i1)=a(P):a(P)=tempnexti1思考:選擇排序降序算法怎樣?第三十二頁,共四十三頁,編輯于2023年,星期日2)冒泡排序(升序)基本思想:(將相鄰兩個(gè)數(shù)比較,小的調(diào)到前頭)(1)有n個(gè)數(shù)(存放在數(shù)組a(n)中),第一趟將每相鄰兩個(gè)數(shù)比較,小的放到前頭,經(jīng)n-1次兩兩相鄰比較后,最大的數(shù)已“沉底”,放在最后一個(gè)位置,小的數(shù)上升“浮起”;(2)第二趟對(duì)余下的n-1個(gè)數(shù)(最大的數(shù)已“沉底”)按上法比較,經(jīng)n-2次兩兩相鄰比較后得次大的數(shù);(3)依次類推,n個(gè)數(shù)共進(jìn)行n-1趟比較,在第j趟中要進(jìn)行n-j次兩兩比較。
第三十三頁,共四十三頁,編輯于2023年,星期日冒泡排序(升序)VB程序:
fori=1ton-1'n-1趟遍歷
forj=1ton-i‘每1次遍歷過程
ifa(j)>a(j+1)then temp=a(j+1)a(j+1)=a(j)a(j)=tempendifnextjnexti第三十四頁,共四十三頁,編輯于2023年,星期日3)合并法排序(將兩個(gè)有序數(shù)組A、B合并成另一個(gè)有序的數(shù)組C,升序)基本思想:(1)先在A、B數(shù)組中各取第一個(gè)元素進(jìn)行比較,將小的元素放入C數(shù)組;(2)取小的元素所在數(shù)組的下一個(gè)元素與另一數(shù)組中上次比較后較大的元素比較,重復(fù)上述比較過程,直到某個(gè)數(shù)組被先排完;(3)將另一個(gè)數(shù)組剩余元素抄入C數(shù)組,合并排序完成。
第三十五頁,共四十三頁,編輯于2023年,星期日兩個(gè)有序數(shù)組A、B合并成一個(gè)有序數(shù)組C,VB實(shí)現(xiàn)的程序:
DoWhileia<=UBound(A)Andib<=UBound(B)'當(dāng)A和B數(shù)組均未比較完
IfA(ia)<B(ib)ThenC(ic)=A(ia):ia=ia+1ElseC(ic)=B(ib):ib=ib+1EndIfic=ic+1Loop
第三十六頁,共四十三頁,編輯于2023年,星期日DoWhileia<=UBound(A)'A數(shù)組中的剩余元素抄入C數(shù)組
C(ic)=A(ia)ia=ia+1ic=ic+1LoopDoWhileib<=UBound(B)'B數(shù)組中的剩余元素抄入C數(shù)組
C(ic)=B(ib)ib=ib+1:
ic=ic+1Loop第三十七頁,共四十三頁,編輯于2023年,星期日2.2.5坐標(biāo)方位角計(jì)算坐標(biāo)方位角MN:是指坐標(biāo)北到某一向量的角度,范圍為0~360o。假若存在兩點(diǎn)M(xm,ym)與N(xn,yn),求取方位角……(1)……(2)第三十八頁,共四十三頁,編輯于2023年,星期日……..(3)………(4)其中,
從(2)、(3)、(4)式計(jì)算求得的方位角都有一定的局限性,就是計(jì)算的結(jié)果不一定是真正的坐標(biāo)方位角,都要進(jìn)行象限判斷后加上一定的數(shù)值后,才能變成真正的坐標(biāo)方位角。第三十九頁,共四十三頁,編輯于2023年,星期日改進(jìn)后的計(jì)算公式:式中,sgn()為取符號(hào)函數(shù),即,
通過以上分析,應(yīng)用式(5)計(jì)算時(shí),除第1象限結(jié)果大于360度外,其它象限,計(jì)算出的方位角都是真方位角,即使在大于360時(shí),-360也為第一象限真方位角?!?.(5)a=Atan((YN-YM)/(XN-XM))+180*2(1+sgn(x
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)戰(zhàn)略規(guī)劃手冊(cè)編寫作業(yè)指導(dǎo)書
- 人力資源招聘渠道拓展與優(yōu)化指南
- POCT醫(yī)療質(zhì)量控制對(duì)醫(yī)療資源的影響
- 【嶺南版】美術(shù)四年級(jí)上冊(cè)教案教學(xué)設(shè)計(jì)
- qc成果解決懸挑卸料平臺(tái)安全技術(shù)問題ser
- 沙龍分享會(huì)主持詞(3篇)
- 小學(xué)天氣氣象知識(shí)常識(shí)測(cè)驗(yàn)
- 小學(xué)音樂唱歌節(jié)奏檢測(cè)題
- 高中模擬試卷:英語詞匯考試模擬題
- 財(cái)務(wù)管理專業(yè)的實(shí)習(xí)報(bào)告
- 胎兒神經(jīng)管畸形疾病演示課件
- 透析器過敏反應(yīng)護(hù)理查房課件
- 國有獨(dú)資公司管理制度
- 砂礫石臺(tái)背回填方案、交底
- 湖北省宜昌市協(xié)作體2023-2024學(xué)年高一上學(xué)期期中考試物理試題(原卷版)
- 《鼴鼠的月亮河》
- 公司非洲海外項(xiàng)目現(xiàn)場(chǎng)安全及人身安全管理辦法
- 績(jī)效管理常用方法和工具課件
- 中學(xué)物理實(shí)驗(yàn)室應(yīng)急預(yù)案
- 貨物驗(yàn)收、入庫、出庫流程
- 物聯(lián)網(wǎng)工程-基于52單片機(jī)的智能手環(huán)設(shè)計(jì)與實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論