whxrocar 之阵列

上传人:t****d 文档编号:243017093 上传时间:2024-09-13 格式:PPT 页数:41 大小:209.50KB
返回 下载 相关 举报
whxrocar 之阵列_第1页
第1页 / 共41页
whxrocar 之阵列_第2页
第2页 / 共41页
whxrocar 之阵列_第3页
第3页 / 共41页
点击查看更多>>
资源描述
按一下以編輯母片,第二層,第三層,第四層,第五層,*,按一下以編輯母片標題樣式,RoCar之陣列&副程式,1,一、陣列簡介,(,1/2,),陣列,是由一群資料型別相同的陣列元素所組成,每一個陣列元素可存入一個資料項目,這些資料項目通常會儲存在電腦相鄰的記憶體中,存取陣列元素時,必須使用陣列的,註標,陣列名稱:,A,陣列元素,陣列註標,0,1,2,3,4,第,3,個元素(陣列註標為,2,)中存放的資料為,30,2,一、陣列簡介,(,2/2,),使用陣列的好處:,方便管理程式中需使用多個相同資料型別的資料項目,Dim,pro_grade(0,To,39),As Integer,Dim,pro_grade1,As,Integer,Dim,pro_grade2,As Integer,Dim,pro_grade3,As Integer,Dim,pro_grade40,As Integer,使用陣列,使用變數,3,二、一維陣列,(,1/3,),最基本的陣列形式,其註標只有,1,個,適用時機:當在程式中,需要使用多個相同類型之資料項目時,例如:宣告一個陣列,A,來存放,12,個月份的天數,31,28,31,30,31,陣列:A,陣列註標,0,1,2,3,4,A(1)=28,30,31,31,30,5,6,7,8,31,30,31,9,10,11,4,二、一維陣列,(,2/3,),語法,1,:,語法,2,:,例:,Dim A(3) as Short,Dim A As Short( ) = New Short( ) 1, 2, 3, 4,Dim,陣列名稱,(,註標上限,) ,As,資料型別,Dim,陣列名稱,As,資料型別,( ) =,New,資料型別,( ) ,陣列元素初始值,5,二、一維陣列,(,3/3,),應用範例:儲存自己喜愛歌手的排名,Private Sub,Form1_Load(,ByVal,sender),Handles MyBase.,Load,Dim,i,As Short,Dim,singer(9), rank,As String,rank = ,For,i = 0,To,9,singer(i) = InputBox(,請依序輸入自己喜歡的歌手;第, & i + 1_,& ,名:, ,人氣歌手普查,),rank &= ,第, & i + 1 & ,名:, + singer(i) + vbCrLf,Next,MsgBox(rank, , ,我最喜歡的歌手排行榜,),End,End Sub,6,三、多維陣列,(,1/9,),當陣列的註標個數超過,1,個時,即稱之為,多維陣列,只有,1,個註標的陣列,稱為,一維陣列,;,2,個註標的陣列,稱為,二維陣列,,依此類推,7,三、多維陣列,(,2/9,),適用時機:當程式中的資料需要使用,2,個以上的註標值來識別時,例如:儲存全班同學的國、英、數三科成績,陣列名稱:score,score(0, 2)=75,表示座號為1之同學的數學成績,80,82,75,90,85,0,1,2,88,70,65,82,71,78,76,0,1,2,3,第,1,維註標值代表座號,第,2,維註標值代表科目別,(,國、英、數,),8,設定陣列初值,方法一:Dim x(2,3) As Integer,x(0,0)=1 : x(0,1)=2 : x(0,2)=3 :,x(1,0)=5 : x(1,1)=6 : x(1,2)=7 : x(1,3)=8,x(2,0)=9 : x(2,1)=10 : x(2,2)=11 : x(2,3)=12,方法二:Dim x(,)=1,2,3,4,5,6,7,8,9, 10,11,12,9,三、多維陣列,(,3/9,),例:,Dim B(2, 1) As Integer Dim B As Integer( , ) = New Integer( , ) 1, 3, 2, 4, 7, 9,設定,B(0, 0),及,B(0, 1),等,2,個陣列元素初始值,設定,B(1, 0),及,B(1, 1),等,2,個陣列元素初始值,設定,B(2, 0),及,B(2, 1),等,2,個陣列元素初始值,10,三、多維陣列,(,4/9,),語法,1,:,語法,2,:,Dim,陣列名稱,(N, M, L, ) ,As,資料型別,Dim,陣列名稱,As,資料型別,(, ,) =,New,資料型別,(, ,) ,陣列元素初始值,11,三、多維陣列,(,5/9,),二維陣列示意圖,(,存放男女星座速配指數,),:,可將第一維及第二維假想成表格中的橫列與直行,90,68,79,52,97,61,85,60,43,43,72,71,75,88,76,82,56,91,74,80,97,97,41,78,82,72,89,78,79,76,98,68,70,70,91,46,0,1,2,0,1,2,3,4,5,6,7,8,9,10,11,陣列名稱:,match,第二維註標代表女性,12,星座(白羊座雙魚座),第一維註標代表男性,12,星座(白羊座,雙魚座),12,三、多維陣列,(,6/9,),應用範例:輸入並儲存各個星座速配指數,Dim,match(11, 11), i, j,As Short,Dim,sign,As String(),=,New String(),白羊, ,金牛, ,雙子, ,巨蟹, ,獅子, ,處女, _,天秤, ,天蠍, ,射手, ,魔羯, ,水瓶, ,雙魚,Label1.Text = ,男,/,女, + , ,設定星座速配指數表的標題列,For,i = 0,To,11,Label1.Text &= sign(i) + ,Next,For,i = 0,To,11 ,利用巢狀,For-Next,迴圈讀取星座速配指數並設定速配指數表的內容,TextBox1.Text &= sign(i) ,設定速配指數表的第,1,欄,For,j = 0,To,11,match(i, j) = InputBox(,男性為, & sign(i) & ,及女性為, & sign(j) & _,的星座速配指數,:, ,建立星座速配指數表,),TextBox1.Text &= StrDup(2, ,) & Format(match(i, j), #),Next,TextBox1.Text &= vbCrLf,Next,13,三、多維陣列,(,7/9,),三維陣列示意圖,(,存放英文不規則動詞三態變化,),:,陣列名稱:,verb,第三維註標代表動詞三態(原形、過去式、過去分詞),0,1,級,buy,bought,bought,think,thought,thought,0,1,0,1,2,sing,sang,sung,become,became,became,0,1,0,1,go,went,gone,take,took,taken,0,第,標,代,一,表,一,註,維,至,三,年,第二維註標代表編號,14,三、多維陣列,(,8/9,),LBound( ),函數:傳回陣列註標的下限,語法:,例:傳回陣列,A,之第,2,維的下限值,MsgBox(LBound(A, 2),UBound( ),函數:傳回陣列註標的上限,語法:,例:傳回陣列,B,之第,1,維的上限值,MsgBox(UBound(B),LBound(,陣列名稱,欲查詢的維數,),UBound(,陣列名稱,欲查詢的維數,),15,三、多維陣列,(,9/9,),重新配置陣列元素的個數,可改變陣列的維度或陣列元素的個數,以機動地調整陣列的大小,靈活運用記憶體空間,語法:,例,1,:,將陣列,A,調整為含有,6,個陣列元素的陣列,ReDim A(5),例,2,:,保留原陣列,B,中的陣列元素值,並調整為,3,4,的二維陣列,ReDim Preserve B(2, 3),ReDim,Preserve,陣列名稱,(,註標上限,),16,RoCar,RC.MusicOut(110,2) 中音Do, 0.2秒,RC.MusicOut(270,5),RC.MusicOut(115,2),RC.MusicOut(0,2),17,副程式:,一段獨立的程式區塊,由Sub與End Sub之間的程式敘述所組成,使用呼叫(call)的方式來執行副程式,.,.,Call 副程式A,.,.,.,.,Sub 副程式A,.,.,.,End Sub,呼叫,返回,執行,主程式,副程式,副程式,18,副程式,語法:,定義副程式的語法,Sub,副程式名稱 (形式參數1 ,As,資料型別, 形式參數2 ,As,資料型別, ) 程式敘述區塊,End Sub,呼叫副程式的語法,Call,副程式名稱 (實際參數1, 實際參數2, ),19,副程式:,副程式的範例:,副程式,範例(1),Sub,Changetemp(F,As Integer,),F為形式參數,Dim,C,As Integer,C = (F - 32) * 5 / 9,MsgBox華氏 & F & 度 = 攝氏 & C & 度, , 溫度換算,N = InputBox(輸入N值:計算2的N次方),End Sub,Private Sub,FormActivate( ),Dim,Ftemp,As Integer,Ftemp = InputBox(請輸入華氏溫度:, 溫度換算),Call,Changetemp(Ftemp),Ftemp為實際參數,End Sub,20,Private Sub,Form1_Activated,讀取用電類型,讀取用電量,If,用電類型為家庭用電,Then,呼叫副程式F_Expense( ),ElseIf,用電類型為營業用電,Then,呼叫副程式C_Expense( ),End If,End Sub,副程式,範例(2),範例:計算家庭用電費與營業用電費,主程式,副程式,計算家庭用電費,Sub,F_Expense,End Sub,計算營業用電費,Sub,C_Expense,End Sub,21,副程式,範例(2),主程式,Private Sub,Form1_Activated(,ByVal,sender,),Handles Me,.Activated,10:,Dim,ecase,As Short,20:,Dim,usage,As Single,30: ecase = InputBox(,請輸入用電類型:,1),家庭用電,2),營業用電, _ ,電費試算,),40: usage = InputBox(,請輸入用電量,單位:度, ,電費試算,),50:,If,ecase = 1,Then,60:,Call,F_Expense(usage),呼叫副程式計算家庭用電費,70:,Else,80:,Call,C_Expense(usage),呼叫副程式計算營業用電費,90:,End If,100:,End,End Sub,22,副程式,範例(2),副程式,F_Expense( ),Sub,F_Expense(,ByVal,volume,As Single,),計算家庭用電,110:,Dim,fee,As Integer,120:,If,volume 500,Then,用電量超過,500,度,130: fee = 110 * 2.1 + 390 * 2.875 + (volume - 500) * 3.6,140:,ElseIf,volume 110,Then,用電量超過,110,度,150: fee = 110 * 2.1 + (volume - 110) * 2.875,160:,Else,用電量在,110,度以內,170: fee = volume * 2.1,180:,End If,190: MsgBox(,電費為, & fee & ,元, , ,電費試算,),End Sub,23,副程式,範例(2),副程式,C_Expense( ),Sub,C_Expense(,ByVal,volume,As Single,),計算營業用電費,200:,Dim,fee,As Integer,210:,Const,rate,As Single,= 3.1,220: fee = rate * volume,計算電費,230: MsgBox(,電費為, & fee & ,元, , ,電費試算,),End Sub,24,自定函數,自定函數,的功能與副程式類似;差別在於自定函數在執行結束後會產生一個,傳回值,給呼叫它的程式,1.,呼叫,主程式,Public Class,Form1,X =,自定函數,A( ),End Class,自定函數,Function,自定函數,A( ),As,Short,自定函數,A = 100,End Function,3.,返回並將值,100,傳回給變數,X,2.,執行,4.,執行下一行程式敘述, , ,25,自定函數語法,語法:,定義自定函數的語法,Function,自定函數名稱(形式參數1As 資料型別, 形式參數2_As 資料型別, ) As 資料型別,程式敘述區塊,自定,函數名稱,=,傳回值,End Function,呼叫自定函數的語法,變數名稱 = 自定函數名稱(實際參數1, 實際參數2, ),26,自定函數:,自定函數的範例:,自定函數範例(1),Function,CalCircle(r As Single),As Single,F為形式參數,Const,pi = 3.14159,CalCircle = r 2 * pi,End Function,Private Sub,FormActivate( ),Dim,X,As Single, area,As Single,X = InputBox(請輸入圓的半徑:, 計算圓面積),Area = CalCircle(X),X為實際參數,MsgBox 半徑為 & X & 的圓面積 = & area, , 計算圓面積,End Sub,27,自定函數範例(2),範例:華氏溫度換算為攝氏溫度,Function,Convert_temp(,ByVal,F,As Short,),As Short,F,為形式參數,60: Convert_temp = (F - 32) * 5 / 9,攝氏溫度,= (,華氏溫度,- 32 ) * 5 / 9,End Function,Private Sub,Form1_Activated(,ByVal,sender,),Handles Me,.Activated,10:,Dim,F_temp, C_temp,As Short,20: F_temp = InputBox(,請輸入華氏溫度:, ,溫度換算,),30: C_temp = Convert_temp(F_temp),F_temp,為實際參數,40: MsgBox(,華氏, & F_temp & ,度,=,攝氏, & C_temp & ,度, , _ ,溫度換算,),50:,End,End Sub,28,副程式vs自定函數,Sub,Changetemp(F,As Integer,),F為形式參數,Dim,C,As Integer,C = (F - 32) * 5 / 9,MsgBox華氏 & F & 度 = 攝氏 & C & 度, , 溫度換算,N = InputBox(輸入N值:計算2的N次方),End Sub,Private Sub,FormActivate( ),Dim,Ftemp,As Integer,Ftemp = InputBox(請輸入華氏溫度:, 溫度換算),Call,Changetemp(Ftemp),Ftemp為實際參數,End Sub,Function,Convert_temp(,ByVal,F,As Short,),As Short,F,為形式參數,60: Convert_temp = (F - 32) * 5 / 9,攝氏溫度,= (,華氏溫度,- 32 ) * 5 / 9,End Function,Private Sub,Form1_Activated(,ByVal,sender,),Handles Me,.Activated,10:,Dim,F_temp, C_temp,As Short,20: F_temp = InputBox(,請輸入華氏溫度:, ,溫度換算,),30: C_temp = Convert_temp(F_temp),F_temp,為實際參數,40: MsgBox(,華氏, & F_temp & ,度,=,攝氏, & C_temp & ,度, , _ ,溫度換算,),50:,End,End Sub,29,一、模組化設計的概念,模組,通常是指一段具有某種特定功能、大小適中、容易閱讀及維護的程式,將程式切割成許多個子功能後,便可分別撰寫成模組程式,模組1,模組2,模組3,模組n,大型程式,30,二、模組設計的原則,設計功能單純的模組程式,以便提供給更多程式使用,儘量減少模組之間相互影響的程度,以使模組成為獨立的程式基本單元,將模組控制在適當的大小,(,例如不超過,50,行敘述,),,以方便閱讀與維護,31,三、使用模組的優點,模組可重覆使用,程式開發易於分工,程式易於測試與偵錯,可簡化維護的工作,呼叫,模組A,模組B,模組F,呼叫,模組A,模組B,模組F,呼叫,呼叫,模組,A,具有檢查產品編號功能,產品編號的檢查規則改變時,只要修改模組,A,即可,32,四、模組設計的方法,在專案中加入空白模組檔,撰寫副程式或自定函數,以設計模組程式,(,如左下圖,),在專案中匯入某個專案中的模組檔,(,如右下圖,),表單檔,模組檔,程式專案P1,表單檔,模組檔,程式專案P2,匯入現有模組檔,撰寫模組程式,33,一維陣列,110,2,120,2,130,2,Dim a() as short()=new short() 110, 2, 120, 2, ,34,Public Class Form1,Dim WithEvents RC As New vRobots.RoCar01,Private Sub Button1_Click(,ByVal sender As System.Object, ByVal e As System.EventArgs,) Handles Button1.Click,Dim music2Tiger As Integer() = New Integer() _,110, 2, 120, 2, 130, 2, 110, 2, 110, 2, 120, 2, 130, 2, 110, 2, _,130, 2, 140, 2, 150, 4, 130, 2, 140, 2, 150, 4, _,150, 1, 160, 1, 150, 1, 140, 1, 130, 2, 110, 2, _,150, 1, 160, 1, 150, 1, 140, 1, 130, 2, 110, 2, _,110, 2, 50, 2, 110, 4, 110, 2, 50, 2, 110, 4,Dim i As Integer,For i = 0 To UBound(music2Tiger) step,RC.musicout(music2Tiger(_), music2Tiger( ),Next,End Sub,End Class,參考 source code(一維陣列),35,二維陣列,Dim a(,) as short(,)=new short(,) 110, 2, 120, 2, ,36,Public Class Form1,Dim WithEvents RC As New vRobots.RoCar01,Private Sub Button1_Click(,ByVal sender As System.Object, ByVal e As System.EventArgs,) Handles Button1.Click,Dim music2Tiger As Integer(,) = New Integer(,) _,110, 2, 120, 2, 130, 2, 110, 2, 110, 2, 120, 2, 130, 2, 110, 2, _,130, 2, 140, 2, 150, 4, 130, 2, 140, 2, 150, 4, _,150, 1, 160, 1, 150, 1, 140, 1, 130, 2, 110, 2, _,150, 1, 160, 1, 150, 1, 140, 1, 130, 2, 110, 2, _,110, 2, 50, 2, 110, 4, 110, 2, 50, 2, 110, 4,Dim i As Integer,For i = 0 To UBound(music2Tiger, 1),RC.musicout(music2Tiger(i, 0), music2Tiger(i, 1),Next,End Sub,End Class,參考 source code(二維陣列),37,作業,利用二維陣列 & 副程式,Let RoCar sing 2 songs at least.,38,月考大洩題,註標,0,1,2,3,0,2,3,0,1,1,1,3,3,0,2,3,0,2,1,DIM A(2,3) As Integer,問題一:A(1,3)=?,問題二:A(A(1,0)+1, A(3,2)=?,39,月考大洩題(續),Private Sub Form_Activate(),DIM A(5),FOR I=1 TO 5,A(I)=A(I-1)+2*I,NEXT,End Sub,40,月考大洩題(續),Private Sub Form_Activate(),DIM A(3, 2),B(2, 3),FOR I=1 TO 3,FOR J=1 TO 2,A(I,J)=I+J,B(J,I)= A(I,J),NEXT,NEXT,End Sub,41,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!