PLC編程培訓(xùn)VisualBasic數(shù)組_第1頁
PLC編程培訓(xùn)VisualBasic數(shù)組_第2頁
PLC編程培訓(xùn)VisualBasic數(shù)組_第3頁
PLC編程培訓(xùn)VisualBasic數(shù)組_第4頁
PLC編程培訓(xùn)VisualBasic數(shù)組_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、5.1 數(shù)組的特點一、數(shù)組的概念在實際應(yīng)用中,常常需要處理相同類型的一批數(shù)據(jù)。例如,為了處理100個員工的工資,可以用s(1),s(2),s(100)來分別代表每個員工的工資,其中s(1)代表第一個員工的工資,s(2)代表第二個員工的工資。數(shù)組并不是一種數(shù)據(jù)類型,而是一組相同類型數(shù)據(jù)的集合。用一個統(tǒng)一的名字(數(shù)組名)代表邏輯上相關(guān)的一批數(shù)據(jù)。每個元素用下標(biāo)變量來區(qū)分;下標(biāo)變量代表元素在數(shù)組中的位置。數(shù)組中的每一個數(shù)據(jù)稱為數(shù)組元素,用數(shù)組名和該數(shù)據(jù)在數(shù)組中的序號來標(biāo)識。序號又稱為下標(biāo),數(shù)組元素又稱為下標(biāo)變量。例如,s(2)是一個數(shù)組元素,其中的s稱為數(shù)組名,2是下標(biāo)。在使用數(shù)組元素時,必須把下標(biāo)

2、放在一對緊跟在數(shù)組名之后的括號中。s(3)是一個數(shù)組元素,而s3是一個簡單變量。如果只用一個下標(biāo)就能確定某個數(shù)組元素在數(shù)組中的位置,這樣的數(shù)組稱為一維數(shù)組。如果用兩個或多個下標(biāo)才能確定某個數(shù)組元素在數(shù)組中的位置,則數(shù)組分別稱為二維數(shù)組或多維數(shù)組。其表示形式: 一維數(shù)組:s(2),s(3),s(10) 二維數(shù)組:x(1,1), x1(1,10), x(2,10) 多維數(shù)組:y(0,0,0),y(1,2,5),y(2,3,4)二、visual basic中的數(shù)組,按不同的方式可分為以下幾類1、按數(shù)組的大小(元素個數(shù))是否可以改變來分為:定長數(shù)組、動態(tài)(可變長)數(shù)組。2、按元素的數(shù)據(jù)類型可分為:數(shù)值

3、型數(shù)組、字符串?dāng)?shù)組、日期型數(shù)組、變體數(shù)組等。3、按數(shù)組的維數(shù)可分為:一維數(shù)組、二維數(shù)組、多維數(shù)組。4、對象數(shù)組:菜單對象數(shù)組、控件數(shù)組。5.2.1 一維數(shù)組的聲明數(shù)組應(yīng)當(dāng)先定義后使用,數(shù)組的定義又稱為數(shù)組的聲明或說明。形式: dim 數(shù)組名(to)as 或: dim 數(shù)組名(to)例如:與上面聲明等價形式:dim a%(1 to 10)定義了一個一維數(shù)組,該數(shù)組的名字為a,類型為integer,占據(jù)10個整型變量的空間。說明: “說明符”為保留字,可以為dim,public,private,static中的任意一個。在使用過程中可以根據(jù)實際情況進行選用。這里主要講述用dim聲明數(shù)組。定義數(shù)組后

4、,數(shù)值數(shù)組中的全部元素都初始化為0,字符串?dāng)?shù)組中的全部元素都初始化為空字符串。 “數(shù)組名”的命名規(guī)則與變量的命名相同。 “下標(biāo)”的一般形式為“下界 to 上界”。 下標(biāo)的上界、下界為整數(shù),不得超過long數(shù)據(jù)類型的范圍,并且下界應(yīng)該小于上界。如果不指定下界,下界默認為0。 要注意區(qū)分“可以使用的最大下標(biāo)值”和“元素個數(shù)”。 和不能使用變量,必須是常量,常量可以是直接常量、符號常量,一般是整型常量。 “as類型”用來說明“數(shù)組元素”的類型,可以是integer,long,single,double,currency,string(定長或變長)等基本類型或用戶定義的類型,也可以是variant類型

5、。如果省略“as類型”,則數(shù)組為variant類型。 在同一個過程中,數(shù)組名不能與變量名同名,否則會出錯。 可以通過類型說明符來指定數(shù)組的類型。例如:dim a%(5),b?。? to 5),c#(12)其中:% 表示為integer 數(shù)組類型!表示為single 數(shù)組類型# 表示為double 數(shù)組類型 數(shù)組中各元素在內(nèi)存占一片連續(xù)的存儲空間,一維數(shù)組在內(nèi)存中存放的順序是下標(biāo)大小的順序,如圖5-1所示:a(0)a(1)a(2)圖5-1 數(shù)組中各元素的存儲順序5.2.2 一維數(shù)組元素的引用數(shù)組的引用通常是對數(shù)組元素的引用。一維數(shù)組元素的表示形式為: 數(shù)組名(下標(biāo))其中:下標(biāo)可以是整型變量、常量

6、或表達式。一般通過循環(huán)語句及inputbox函數(shù)、文本框給數(shù)組輸入數(shù)據(jù)。數(shù)組的輸出一般用print方法、標(biāo)簽或文本框?qū)崿F(xiàn)?!纠吭O(shè)有下面的數(shù)組b(10) as integer則下面的語句都是正確的。a(1)=a(2)+b(1)+5取數(shù)組元素運算a(i)=b(i)下標(biāo)使用變量b(i+1)=a(i+2) 下標(biāo)使用表達式【例】編寫程序,把輸入的10個整數(shù)按逆序輸出。private sub command1_click()dim a(10)as integer,i%print 輸入的數(shù)據(jù)為for i=1 to 10a(i)=inputbox(請輸入一個整型數(shù))print a(i),next iprin

7、tprint 逆序輸出為for i=10 to 1 step-1print a(i),next iend sub5.2.3 一維數(shù)組的基本操作一、可通過循環(huán)給數(shù)組元素的初值for i=1 to 10 a(i)=1 a數(shù)組的每個元素值為1next i 二、數(shù)組的輸入 輸入100個數(shù),并存入到數(shù)組a中。for i=1 to 100a(i)=val(inputbox(“輸入a(” & i & “) 的值”)next i三、求數(shù)組中最大元素及所在下標(biāo)dim max as integer,imax as integer max=a(1):imax=1for i=2 to 105.2.4 一維數(shù)組的應(yīng)用一

8、、分類統(tǒng)計【例】從鍵盤上輸入40人的考試成績,輸出高于平均成績的分數(shù)。分析:該問題可分三部分處理:一是輸入40個人的成績;二是求平均分;三是把這40個分數(shù)逐一和平均成績進行比較,若高于平均成績,則輸出。private sub command1_click()dim score(40)as single,aver!,i% aver=0for i=1 to 40score(i)=inputbox(請輸入成績)aver=aver+score(i)next iaver=aver/40for i=1 to 40if score(i)aver then print score(i)next iend su

9、b二、排序問題【例】從鍵盤上輸入10個整數(shù),把這些數(shù)按由小到大的順序排序輸出。分析:排序的方法很多,如選擇法、冒泡法等。這里介紹最容易理解的“冒泡法”。設(shè)10個數(shù)存放在a數(shù)組中,分別為:a(1)、a(2)、a(3)、a(4)、a(5)、a(6)、a(7)、a(8)、a(9)、a(10)。第1輪:先將a(1)與a(2)比較,若a(1)a(2),則將a(1)、a(2)的值互換,否則,不作交換;這樣處理后,a(1)一定是a(1)、a(2)中的較小者。再將a(1)分別與a(3)、a(10)比較,并且依次作出同樣的處理。最后,10個數(shù)中的最小者放入了a(1)中。第2輪:將a(2)分別與a(3)、a(10

10、)比較,并依次作出同第1輪一樣的處理。最后,第1輪余下的9個數(shù)中的最小者放入a(2)中,亦即a(2)是10個數(shù)中的第二小的數(shù)。照此方法,繼續(xù)進行第3輪直到第9輪后,余下的a(10)是10個數(shù)中的最大者。至此,10個數(shù)已從小到大順序存放在a(1)a(10)中。為簡單起見,我們以7,5,3三個數(shù)為例,再做說明:第1輪:找出最小值3作為第一個數(shù)組元素。7 5 3 比較7和5,75,需要交換,交換后的序列為5 7 3;5 7 3 比較5和3,53,需要交換,交換后的序列為3 7 5;第2輪:找出剩下的元素中的最小值5作為第二個數(shù)組元素。3 7 5 比較7和5,75,需要交換,交換后的序列為3 5 7。

11、剩下的一個元素7為三個元素中的最大者,排序完成。參見動畫演示private sub command1_click()dim t%,i%,j%,a(10)as integer for i=1 to 10a(i)=inputbox(輸入一個整數(shù))next iprint 輸入的10個整數(shù)為for i=1 to 10print a(i),next iprintfor i=1 to 9for j=i+1 to 10if a(i)a(j)then t=a(i):a(i)=a(j):a(j)=tnext jnext iprint 排序后的結(jié)果為for i=1 to 10print a(i),next ien

12、d sub【例】隨機產(chǎn)生10個兩位整數(shù),找出其中最大值、最小值。分析:該問題可以分為兩部分處理:一是產(chǎn)生10個隨機整數(shù),并保存到一維數(shù)組中;二是對這10個整數(shù)求最大、最小值。private sub command1_click()dim min%,max%,i%,a(10)as integerrandomizefor i=1 to 10a(i)=int(rnd*90)+10next iprint 產(chǎn)生的隨機數(shù)為for i=1 to 10print a(i),next iprintmin=a(1):max=a(1)for i=2 to 10if a(i)max then max=a(i)if a

13、(i)a(row,column) thenmax=a(i,j)row=icolumn=jend ifnext jnext iprint 最大元素是; maxprint 在第 & row & 行,; 第 & column & 列三、計算兩矩陣相乘設(shè)有矩陣a有ml個元素,矩陣b有l(wèi)n個元素,則矩陣c=ab有mn個元素。矩陣c中任一元素:(i=1,2,m;j=1,2,n)下面是兩矩陣相乘的程序段: for i=1 to mfor j=1 to nc(i,j)=0for k=1 to lc(i,j)=c(i,j)a(i,k)* b(k,j)next knext jnext i四、矩陣的轉(zhuǎn)置 設(shè)a是m*

14、n的矩陣,要重新定義一個n*m的二級數(shù)組b,將a轉(zhuǎn)置得到b的程序代碼如下:for i=to for j=to nb(j,i)=a(i,j) next jnext i設(shè)如果是方陣,即a是mm的二維數(shù)組,則可以不必定義另一數(shù)組,否則就需要再定義新數(shù)組。方陣的轉(zhuǎn)置的程序代碼如下:for i= to for j= to ntemp=a(i,j) a(i, j)=a(j, i)a(j, i)=tempnext j next i5.3.3 二維數(shù)組的基本操作 一、二維數(shù)組數(shù)據(jù)的輸入const n=4, m=5, l=6dim a(1 to n,1 to m) as integer, i as intege

15、r, j as integer,k%二維數(shù)組a輸入數(shù)據(jù)的程序段如下:for i=1 to 4for j=1 to 5 a(i,j)=val(inputbox(a(& i &, & j & )=?)next jnext i二、求最大元素及其所在的行和列用變量max存放最大值,row,column存放最大值所在行列號max=a(1,1): row=1: column=1 for i=1 to nfor j=1 to mif a(i,j)a(row,column) thenmax=a(i,j)row=icolumn=jend ifnext jnext iprint 最大元素是; maxprint 在

16、第 & row & 行,; 第 & column & 列三、計算兩矩陣相乘設(shè)有矩陣a有ml個元素,矩陣b有l(wèi)n個元素,則矩陣c=ab有mn個元素。矩陣c中任一元素:(i=1,2,m;j=1,2,n)下面是兩矩陣相乘的程序段: for i=1 to mfor j=1 to nc(i,j)=0for k=1 to lc(i,j)=c(i,j)a(i,k)* b(k,j)next knext jnext i四、矩陣的轉(zhuǎn)置 設(shè)a是m*n的矩陣,要重新定義一個n*m的二級數(shù)組b,將a轉(zhuǎn)置得到b的程序代碼如下:for i=to for j=to nb(j,i)=a(i,j) next jnext i設(shè)如果

17、是方陣,即a是mm的二維數(shù)組,則可以不必定義另一數(shù)組,否則就需要再定義新數(shù)組。方陣的轉(zhuǎn)置的程序代碼如下:for i= to for j= to ntemp=a(i,j) a(i, j)=a(j, i)a(j, i)=tempnext j next i5.4.1 動態(tài)數(shù)組的建立及使用一、 動態(tài)數(shù)組 動態(tài)數(shù)組:在聲明時未給出數(shù)組的大小。定長數(shù)組是在程序編譯時分配存儲空間,而動態(tài)數(shù)組是在程序執(zhí)行時分配存儲空間。二、動態(tài)數(shù)組的建立及使用 建立動態(tài)數(shù)組包括聲明和大小說明兩步:(一)在使用dim、private或public語句聲明括號內(nèi)為空的數(shù)組。格式:dim | private|public 數(shù)組名(

18、)as 數(shù)據(jù)類型例:dim a() as integer(二)在過程中用redim語句指明該數(shù)組的大小。格式:例:redim a(10) redim preserve a(20) 說明: redim語句是一個可執(zhí)行語句,只能出現(xiàn)在過程中,并且可以多次使用,改變數(shù)組的維數(shù)和大小。 定長數(shù)組聲時中的下標(biāo)只能是常量,而動態(tài)數(shù)組redim 語句中的下標(biāo)是常量,也可以是有了確定值的變量。例如:private sub form_click()dim n as integern=val(inputbox(“輸入n=?”)dim a(n) as integer.end sub5.4.2 與數(shù)組操作有關(guān)的幾個函

19、數(shù)與數(shù)組操作有關(guān)的幾個函數(shù):一、array函數(shù)array函數(shù)可方便地對數(shù)組整體賦值,但它只能給聲明variant的變量或僅由括號括起的動態(tài)數(shù)組賦值。賦值后的數(shù)組大小由賦值的個數(shù)決定。 【例】要將1,2,3,4,5,6,7 這些值賦值給數(shù)組a,可使用下面的方法賦值。dim a()a=array(1,2,3,4,5,6,7)dim a a=array(1,2,3,4,5,6,7)二、求數(shù)組的上界ubound( )函數(shù)、下界lbound( )函數(shù) ubound( )函數(shù)和lbound( )函數(shù)分別用來確定數(shù)組某一維的上界和下界值。使用形式如下:ubound(,)lbound(,)其中: :必需的。數(shù)

20、組變量的名稱,遵循標(biāo)準變量命名約定。 :可選的;一般是整型常量或變量。指定返回哪一維的上界。1表示第一維,2表示第二維,如此等等。如果省略默認是1。三、split函數(shù)使用格式:split( ,)說明: 使用split函數(shù)可從一個字符串中,以某個指定符號為分隔符,分離若干個子字符串,建立一個下標(biāo)從零開始的一維數(shù)組。5.5 控件數(shù)組一、控件數(shù)組的概念(一)控件數(shù)組是一組相同類型的控件組成這些控件共用一個控件名字,具有相似的屬性設(shè)置,共享同樣的事件過程。控件數(shù)組中各個控件相當(dāng)于普通數(shù)組中的各個元素,同一控件數(shù)組中各個控件的index屬性相當(dāng)于普通數(shù)組中的下標(biāo)。例如:設(shè)有一個包含3個按鈕的控件數(shù)組co

21、mmand1,它的3個元素就是command1(0),command1(1),command1(2)。但command1,command2,command3不是控件數(shù)組。(二)控件數(shù)組具有以下特點: 相同的控件名稱(即name屬性) 控件數(shù)組中的控件具有相同的一般屬性 所有控件共用相同的事件過程二、控件數(shù)組的建立控件數(shù)組中每一個元素都是控件,它的定義方式與普通數(shù)組不同。建立控件數(shù)組有三種方法: 給控件起相同的名稱,name屬性設(shè)置為同一值。 復(fù)制已有的控件并將其粘貼到窗體上。 將控件的index屬性設(shè)置為非null數(shù)值,以下標(biāo)索引值(index)來標(biāo)識各個控件,第一個下標(biāo)索引號為0。三、控件數(shù)

22、組的應(yīng)用建立了控件數(shù)組之后,控件數(shù)組中所有控件共享同一事件過程。例如,假定某個控件數(shù)組含有10個命令按鈕,則不管單擊哪個命令按鈕,系統(tǒng)都會調(diào)用同一個click過程。由于每個命令按鈕在程序中的作用不同,系統(tǒng)會將被單擊的命令按鈕的index屬性值傳遞給過程,由事件過程根據(jù)不同的index值執(zhí)行不同的操作。【例】設(shè)計一個簡易計算器,能進行整數(shù)的加、減、乘、除運算。其運行界面如圖5-3所示。1、界面設(shè)計:一個標(biāo)簽用于計算器輸出;數(shù)字按鈕控件數(shù)組cm;操作符控件數(shù)組cmfh ;一個“=”按鈕用于計算結(jié)果;一個“cls”按鈕用于清屏。圖5-3 運行界面表5-2 計算器界面設(shè)計表操作步驟屬性設(shè)置添加一個標(biāo)簽

23、namelabel1caption空添加一個命令按鈕namecm caption0操作:復(fù)制該命令按鈕。然后在窗體上粘貼9次,把每個按鈕的caption分別設(shè)置為1,2,3,4,5,6,7,8,9添加一個命令按鈕namecmfhcaption+操作:復(fù)制該命令按鈕。然后在窗體上粘貼3次,把每個按鈕的caption分別設(shè)置為,添加一個命令按鈕namecmccaptioncls添加一個命令按鈕namecm等號caption=2、窗體級變量聲明dim number(1 to 6) as single存儲一個數(shù)字字符,運算符dim simple(1 to 10), yunsuan(1 to 6) as stringdim i, j, p, q, n as integerd

溫馨提示

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

最新文檔

評論

0/150

提交評論