国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
編程的六種武器
要學(xué)VB,需對其中的控件有一個系統(tǒng)的了解,因為有了他們,我們要做的程序的外表就有了。了解了控件的特點之后,VB的基礎(chǔ)知識中的代碼問題就成了非常重要的一個問題。我們的程序好比一個有機關(guān)的木偶,控件就是其中的外表各部件,代碼就象其內(nèi)部的機關(guān)。只有外表而沒有機關(guān),木偶就是死的;只有機關(guān)沒有外表,那是幽靈或什么也不是;只有了解了外表后并據(jù)此做出了精明的機關(guān),木偶就活了。
最基本的代碼組成是什么呢?無非三大部分,三種語句,數(shù)組,函數(shù)或子程序,加上面向?qū)ο缶幊?,類模塊也應(yīng)該算做一部分。下面我們將詳細介紹他們。
下面將詳細介紹順序語句和工作程序
計算機中的所有工作都是按時間一件件一步步有條不紊地完成的,再復(fù)雜的工作也是如此的。
工作是怎樣完成的呢,由一個個的具有某種功能的語句按時間先后順序來完成,他們功能各不相同,有輸入信息的:
a=1
也有輸出信息的:
print a 或者 text1.text=str(a)。
當然這種語句太多了,VB中大部分語句都是。在這些語句中,賦值語句扮演了非常重要的角色。
順序語句和賦值語句說明了計算機中的真諦。
稍稍有點編程思想的人士都知曉計算機的工作原理是:存儲程序工作原理。要想存儲,離不開賦值語句,是他使得這一原理成為了可能。計算機中的語句從功能上分有三種,輸入,處理和輸出,賦值對輸入起著頂梁柱的作用,處理中也有眾多的賦值語句參與運算。在三大功能中兩大功能中是不可缺失的,作用不可謂不重要。
下面的案例最能說明賦值的作用:
(1)i=i+1
語句中的第一個i和第二個i是一個i,但其里面的東西卻是不同的,第一個i比第二個i多1。這在數(shù)學(xué)上可是完全行不通的,可在計算機界,可以;并且因他的存在而精彩。
(2)兩個同樣大小的茶杯中盛有滿滿的兩杯水,一個杯中是茶水,另一個杯中也是水,只不過是汽水,請將兩杯水交換。
請思考。直接交換顯然是不行的,除非我們會變戲法,象手里拿著三個帽子在頭上和兩手間輪換,不可能將第一個杯的水直接倒在第二個杯中,那不是我們所希望的結(jié)果。
僅僅只有兩個杯子是怎么也不能完成的,我們需用第三只杯子。我們的工作可以 這么做:
第一步:將茶水倒入空杯中,使茶水杯先空出來;
第二步:將汽水倒入空出來的茶水杯中,現(xiàn)在汽水杯空出來了;
第三步:將第三只杯中的茶水倒入汽水杯中。
上面事實上就是程序,通過賦值(將水賦給或者說裝入不同的杯子)運算來完成了我們的工作。同上面的過程進行對比,我們不難編出下面的小程:
示例:已知兩個變量a,b,a的值為3,b的值為5,請將a,b的值交換。
a=3 ‘a(chǎn)為茶水杯
b=5 ‘b為汽水杯
c=a ‘第一步,c為空杯
a=b ‘第二步
b=c ‘第三步
print a,b ‘輸出
從上面的兩個簡單的小例中您可能對賦值有了一定的理解。但第二個小例中很好地包含了工作程序的問題,其實這就是我們的編程,這也就是編程的真諦??梢圆豢鋸埖卣f,計算機中如果沒有其它的東東,只有順序語句,那一切可以照常工作;世界上萬事萬物雖然解決的方法不一定是一種,但只要將其分解得足夠小,一定只有一種,那也就是一組有時間先后關(guān)系的順序語句。但上面的兩種可能其實又太不可行,也有點太麻煩了,有些工作簡直不是人干的了,象讓一個人在家中用筆寫出一億個“人”字一樣,理論上可行而在現(xiàn)實中其實是不可行的。后面我們將詳細介紹。
(以上程序在VB60下調(diào)試通過)
編程的六種武器
之二——分支語句:摸索前進的探路者
作者:趙玉勇
世界上萬事萬物解決的方法不一定是一種,真正要處理問題,也不可能將他們都有分成一個個的小問題然后解決。那怎么辦呢?不要怕,因為語言中提供了分支語句,有了他們,我們就可在探索中前進了。
我們的工作不總是一成不變的,只要經(jīng)過一二三四五等等的順序就能完成,有時還有某些坎坷。可能的發(fā)展方向有好多,我們只能根據(jù)相應(yīng)的條件來選擇怎樣向下工作。
如果您面對一個流言,您的態(tài)度有多種:理他還是不理他?所得的結(jié)果應(yīng)該是不一樣的,日子是不一樣的,但仍然是要過下去的。上面的小事件可這么描述:
第一天發(fā)生了讓他人說笑的事;
if 態(tài)度=理 then
招來更多煩惱,這一天過得象二十年
else
多幾句空洞的說教,我們象他不存在一樣過日子
end if
第三天,太陽依舊燦爛。
你可能想:這個語句中僅僅只有兩種簡單的情況,多種情況怎樣表達?
這很簡單,你只要在其中的語句中再嵌入一個相同的語句,三種情況就可解決。能解決三種,四種相信沒問題,只要你有的種數(shù),估計都能應(yīng)付。
所以在使用這種語句時,還包含了多種結(jié)構(gòu)。
這就是分支。還有一種處理多種情況更好的語句:
select x
case 1
case 2
...
case else
end select
這個分支語句可直接用來解決多種情況,但從上面我們也不難看出,多分支的條件太死板,太要求規(guī)律了,所以我們最好在使用的時候慎重一點。
分支可分為兩大類,單分支和多分支。單分支也就是說問題的發(fā)展方向可能有兩種,多分支語句說明可能的發(fā)展方向有三種或三種以上。
但分支的語句在VB中卻有三種,上面列出了兩種,他們都是“塊”的形式,有開始,也有結(jié)束;其實單分支還有一種行的形式:
if   then   else
這種方式的作用和單分支的塊的形式是完全一樣的,只不過語句上看起來簡潔一點,僅僅占用一行,但卻缺乏直觀,所以使用的時候要慎重,如果用它來塑造多分支時尤其要注意,最好使用塊的形式。
小例:輸入一個數(shù),如果是非零的偶數(shù),輸出該數(shù)的三倍,如果是奇數(shù),輸出該數(shù)的三次方,如果是0,則輸出88。
代碼如下:
a = Val(Text1.Text)
If a = 0 Then
Print 88
Else
If Int(a / 2) = a / 2 Then
Print 3 * a
Else
Print a * a * a
End If
End If
上面的例程用了單分支語句的塊的形式。我們說分支語句,其實僅僅是對框架來說的,框架內(nèi)部仍然是起各種作用的順序語句。
我們還需對上面的問題注意一點:即我們在編程時,無法知曉a的值究竟是什么,僅僅知道a是非負的整數(shù)而已。正是這種不確定性,使得我們后面的編程工作中對其進行了全方位思考,也就有了分支。
(以上程序在VB60下調(diào)試通過)
編程的六種武器
之三——循環(huán)語句:機械與機智的大師
作者:趙玉勇  付深義
其實循環(huán)又象是完全沒有必要的。因為只要有了順序語句和分支,一切問題處理起來就綽綽有余了。象我家的電話是2222222,您可以怎么描述呢?我們會說7個2。事實上循環(huán)的工作和上面的電話號碼有些類似。我們通過盡量少的工作,去表示一個其實仍很完整的事例或意思。象我們下達這樣的命令:讓一個人在家中用筆寫出一億個“人”字,我們沒必要這樣下達,請你寫“人”、“人”、......“人”(說了一億個人)。
人是機智的,我們從事件中找出有利于我們工作的規(guī)律,讓我們省事省力的干什么,計算機卻仍然是老老實實地做了那么多工作。
我們最常用的一個例子是:求1+2+3+...+100的和
我們對本題的描述事實上是省略式的,我們向計算機的描述也是可以的(其中s表示和):
s=1
FOR i=2 TO 100
s=s+i
NEXT i
PRINT s
計算機真正做了99次加法運算。只不過他運算得太快,我們沒有感覺到罷了。
循環(huán)語句主要有兩大類,一種就是上面所列舉的,其特點是循環(huán)次數(shù)確定,也就是中間的部分執(zhí)行多少次編程的過程中我們就知曉了,另一種是循環(huán)次數(shù)不定的循環(huán),或者也可以為循環(huán)多少次和我們的所求有直接的關(guān)系。下面的兩個小例就說明了這樣的問題,下面的兩個小數(shù)學(xué)題目挺有意思的,簡短的幾句話,道出了循環(huán)的兩大種類型。
示例1:40個小同學(xué),相聚在一堂,相互擊一掌,總計多少響?
示例2:一班小同學(xué),相聚在一常,相互擊一掌,780響,問多少相朋友,相聚在一堂?
上面的兩個示例語句大體相同,但細細觀看,它們的輸入輸出卻正是截然相反的,前者的輸入,正是后者的輸出,前者的輸出,卻對應(yīng)了后者的輸入。由此我們得知其處理方法上應(yīng)該是相似的,但又不是完全相同的。
這是個非常有意思的小題目。前者我們可用循環(huán)次數(shù)確定的循環(huán)解決,因為我們可找出人數(shù)和響數(shù)上的規(guī)律,有多少(n)個小同學(xué),也即求1+2+3+...+(n-1)的和,所以第一個小例事實上就是讓我們求1+2+......+40的和。
后面的示例呢?我們知曉也應(yīng)該是40人,可怎樣將規(guī)律仿出來呢?自然我們可以從1個人的情況一直向下尋找,但向下找不能是無限制的,需要有一個截止的條件,這就是780響。所以它的處理過程也是個循環(huán),循環(huán)執(zhí)行多少次我們不知道,但只要數(shù)量滿足780響了,一切OK,我們就找到了那個和780響對應(yīng)的數(shù)據(jù)了。
下面是示例2的代碼(示例1的請參考上面的求和程序,一改就有了):
s = 0
i = 0
While s <= 780
s = s + i
i = i + 1
Wend
Print i
次數(shù)不確定的循環(huán)語句又可分為兩種,一種是開始循環(huán)條件判斷,另一種是結(jié)束循環(huán)條件判斷。上面的小程序經(jīng)過修改后如下:
s = 0
i = 0
Do
i = i + 1
s = s + i
Loop While s <= 780
Print i
其實三種類型的循環(huán)語句之間是完全相通的,上面的小程也可以用For循環(huán)做出,只不過其中需加上一個分支語句進行判斷。
s = 1
For i = 2 To 100
s = s + i
If s = 780 Then
Print i + 1
End If
Next i
因為我們知曉規(guī)律是什么,我們雖不能準確地判斷究竟是多少同學(xué)在班上,但范圍我們是能肯定的,不是1人,也不是100人,但一定在1-100之間,所以我們就選擇這個范圍,將符合條件的那個輸出出來了。
三種語句在這個程序中全有了,我們編程需做的是據(jù)問題的特點,選擇一個最適合我們需用的。并且因為有了循環(huán),使得問題更加復(fù)雜了,我們也可以更好地發(fā)揮自己的聰明才智了,讓自己做盡量少的工作,而讓計算機干最多的活計!
(以上程序在VB60下調(diào)試通過)
編程的六種武器
之四——數(shù)組:不可多得的規(guī)律機器
作者:趙玉勇  張久民
數(shù)組是一個非常好的可以看作工具一樣的東西,并且數(shù)組和循環(huán)配合起來,干起活來讓人心動,用規(guī)律機器來形容他真不為過。為什么要用數(shù)組呢?
我們首先來看一下數(shù)字在我們生活中的作用:一個我們無法回避的事實是,我們的生活中有許許多多的數(shù)字。我辦公室是506,我在單位的代號是331,我的身份證號碼是140104751209231等等,有了數(shù)字,好象是不便,其實還是給我們生活中帶來了方便。到辦公室找我,知道我在5樓,第6個房間,其他的數(shù)碼各有自己的含義。
數(shù)字無疑給我們的生活帶來了方便。
數(shù)組其實對我們來說非常有意思的有用的也是他們的數(shù)字,也就是他們的下標。數(shù)組有一維的,也有多維的。使用他們比較麻煩的一點是先要定義:dim a()。因為數(shù)組也有數(shù)字的優(yōu)點,所以我們用數(shù)組。
下面的例子很能說明問題。
案例:一百個數(shù),從大到小排序。
我們有一百個房間來放置一百個數(shù),房間號為1-100,將來可將1號放最大的數(shù)字,二號放第二大的,...,100號放最小的。
怎樣排序呢,只要將1號房間同后面的2,3,....,100進行比較,將大的數(shù)放到1號中,現(xiàn)在1號中一定是最大的數(shù)了;再將2號同3,4,5,...,100進行比較,現(xiàn)在2號放第二大的;...,將99號同100號比較,將大的放在99號,現(xiàn)在99號是第99大的,100號成了最小的了。
上面就是我們通過編號后找到的規(guī)律,數(shù)組就起到了這樣的作用。我們可定義一數(shù)組a(100),a(1)表示第1號房間,a(2)表示第2號房間,...,a(100)表示第100號房間。上面的規(guī)律可描述如下:
FOR i=1 to 99
For j=i+1 to 100
IF a(i)<a(j) then
d=a(i)
a(i)=a(j)
a(j)=d
END IF
NEXT j
NEXT i
正是因為有了數(shù)組,使得規(guī)律找出來了,也模擬出來了,退一步如果其中沒有數(shù)組,也就是說沒有下面的那幾個數(shù)字,然后再編出程序來,那簡直不可想象。如果再成為一百萬個數(shù)呢,那簡直是不可能的,但因為有了數(shù)組,所以在上面的代碼上我們只要動個小手術(shù),將99改成999999,將100改成1000000,一切OK。
在遇到非數(shù)字問題時,數(shù)組的作用就更大了。
題目:
大廳內(nèi)有五個人,已知戴白帽子的說真話,戴紅帽子的說假話,請據(jù)他們各自提出的線索辨別誰戴白帽子,誰戴紅帽子。
甲:我看見一個戴白帽子的;
乙:我沒看見一個戴紅帽子的;
丙:我看見一個戴白帽子的;
丁:我沒看見一個戴白帽子的;
戊:我的話和丙一樣。
如何將上面的智力測驗用程序編出呢?自然要用數(shù)組。
我們可以將五個人用一數(shù)組Cap(1)-Cap(5)來表示,將cap()設(shè)成兩個值,T代表紅帽,F(xiàn)代表白帽。這樣一來,輸出我們只要輸出Cap(1)-Cap(5)的值就行了。
怎樣將各種方案全部模擬出呢,有了數(shù)組,就容易組合了??赡艿拇髅钡那闆r有2X2X2X2X2=32種,應(yīng)該是不算很多的,如果我們一種一種進行比較的話,恐怕那樣子出來的一個順序關(guān)系的程序也夠嚇人的。所以應(yīng)該使用循環(huán),整體上是循環(huán)。怎樣將三十二種情況全部遍歷呢?可以用五個循環(huán),其中用Cap(1)-Cap(5)將各個循環(huán)的結(jié)果納入,32種方案全部出爐。
For i = 0 To 1 ‘遍歷所有可能戴帽方案
For j = 0 To 1
For k = 0 To 1
For l = 0 To 1
For m = 0 To 1
num = num + 1
cap(1) = i
cap(2) = j
cap(3) = k
cap(4) = l
cap(5) = m
Next m
Next l
Next k
Next j
Next i
有了全部的方案,我們只要用分支語句找出其中符合條件的就可以了。其他的東東,您可以自己向下瞧瞧。
這就是數(shù)組,有意思的數(shù)組。有了他,給我們的編程省去了不少麻煩。
數(shù)組中蘊含了規(guī)律,因為有數(shù)字,要發(fā)現(xiàn)他們,需要您開動腦筋了。
(以上程序在VB60下調(diào)試通過)
編程的六種武器
之五——函數(shù)、子程序與這其中的另類:遞歸
作者:趙玉勇 張宗順
什么是函數(shù)、子程序
函數(shù)和子程序是我們經(jīng)常用到的東東,函數(shù)有自定義的,也有系統(tǒng)附帶的,但不管是自定義的還是系統(tǒng)的,他們都對相應(yīng)的功能進行了封裝,以利于我們經(jīng)常性地使用。例如我們的對一個小數(shù)取整數(shù)INT()函數(shù),不論什么樣的小數(shù),往()中一放,將來得到的值就自動將小數(shù)去除了。函數(shù)執(zhí)行完將返回一個值,當然這個值可以是各種類型的,子程序僅僅執(zhí)行一個過程,不返回數(shù)值。
1、隨機函數(shù)RND
我們通過語言編程一般來說對事物的認識是很確定的了,是一就是一,是二就是二,還有一個問題,有一些不該那么確定的事情該如何處理,象我們的彩票抽獎,如果是確定的了,那也就不用抽了,恐怕也就沒人玩了。對于這一類的事情,語言中提供了隨機數(shù),也就是說通過他得到的一個值將是不能確定的。但有一個范圍。
Rnd 函數(shù)返回小于 1 但大于或等于 0 的值。
所以,當我們用到的值不在這個范圍之內(nèi)時,我們可以想點變通的辦法。比如,我們想做一個猜1-100之間數(shù)的游戲,這個數(shù)只要這樣表達就出來了:
INT(RND*100+1)
這個函數(shù)是非常有用的,他可能是計算機語言中唯一沒有理性的東東了。就好象我們?nèi)祟愃哂械默F(xiàn)省心的想法,妙手偶得之的佳句。正因為這個唯一性,也就不難看出他在計算機語言中的地位了。
2、和函數(shù)、子程序有非常密切關(guān)系的還有另一種奇妙的現(xiàn)象,遞歸。
遞歸究竟是什么東東呢?說白了它就象我們講的那個故事:山上有座廟,廟里有個老和尚,老和尚在講故事,它講的故事是:山上有座廟,廟里有個老和尚,老和尚在講故事,它講的故事是:……也就是在一個函數(shù)中調(diào)用了其自身。就象上面的故事那樣,故事中包含了故事本身。
下面就是對“老和尚講故事”的定義:
案例:小猴吃棗
小猴第一天摘下若干棗子,當即吃掉了一半,不過癮又多吃了一個;第二天吃了剩下的一半又多吃了一個;以后每一天都吃了前一天剩下的一半多一個。到第十天小猴再想吃時,見到只剩下一只棗子了。問第一天這堆棗子有多少?
從上題中我們可看到一個令人欣喜的規(guī)律,第十天為1,第九到第一天中后一天與1的和的兩倍于前一天相等。下面就對這一規(guī)律做了描述:
Private Function monkey(ByVal x As Integer) As Integer
If x >= 10 Then
monkey = 1
Else
monkey = 2 * (monkey(x + 1) + 1)
End If
End Function
我們定義monkey()函數(shù)的時候通過monkey()自身來進行了定義,遞歸是個特殊的循環(huán),是一個有著非常美妙的循環(huán)規(guī)則的循環(huán)。上題中我們只要將monkey(1),即第一天打印出來,一切OK。而這中間究竟是怎么工作的,我們可以不管。
要注意遞歸有時會了現(xiàn)棧溢出的問題,即遞歸的方法和老和尚講故事的方法也是有區(qū)別的,只要老和尚知曉自己何時該不講了,能收住聲,遞歸也就成功了。以上程序在VB下運行成功。
3、API函數(shù):Windows直通車
API(Application Program Interface,應(yīng)用程序接口)函數(shù)調(diào)用是對Visual Basic功能的強有力擴充,它使得Visual Basic能夠直接控制和處理計算機的系統(tǒng)參數(shù)和硬件資源。借助于API使得Visual Basic能克服Windows編程的難點,同時又增加供了使用Windows環(huán)境的靈活性。說他是Windows直通車一點也不為過,并且語言為我們提供了API文本瀏覽器,我們可以方便地對其進行調(diào)用。
利用Visual Basic調(diào)用API函數(shù)的方法方法非常簡單:
(1)用Declare語句聲明所要調(diào)用的API函數(shù),若該函數(shù)無返回值,可聲明為Sub過程;若有返回值,則可聲明為Function函數(shù);也可直接調(diào)用。
(2)一旦聲明了某一個API函數(shù)后,就可以象調(diào)用Visual Basic的函數(shù)一樣方便。在本程序中我們將函數(shù)的聲明放在了一個模塊中。
當然關(guān)于函數(shù)、子程序和他們之間發(fā)生的故事還有很多,我們僅僅列舉了其中奇妙的幾點,還有許多東東等著您的發(fā)現(xiàn)和利用。
(以上程序在VB60下調(diào)試通過)
編程的六種武器
之六——類模塊:面向?qū)ο蟮睦?div style="height:15px;">
作者:趙玉勇
VB中的模塊有兩大類,一類是普通模塊,另一類是類模塊。普通模塊可將我們用到的公共變量函數(shù)等的進行聲明,使我們程序結(jié)構(gòu)更加清晰,而類模塊和他有著本質(zhì)的區(qū)別。類模塊是VB的面向?qū)ο缶幊虖姶蠊δ艿捏w現(xiàn)。
我們下面通過一個示例來具體地看看。
下面我們將建立一張鏈表。鏈表這種數(shù)據(jù)結(jié)構(gòu)在VB中是沒有直接提供的,所以需要我們自己構(gòu)造。
要建立一個鏈表,必須首先確定組成鏈表的項目,象我們?nèi)粘:蠡钪械逆湕l一樣,鏈條是由一些小環(huán)組成的,并且這些小環(huán)有一個共同的特點,上面的和下面的存在著聯(lián)系,我們建立一個鏈表類結(jié)構(gòu)也是同樣的道理,其最基本的單位是節(jié)點節(jié)點上要有和下一個節(jié)點相互聯(lián)系的機制,所以定義鏈表比上面定義棧時要復(fù)雜一點,要用到兩個類模塊。
我們首先來構(gòu)造具有上述特點的節(jié)點Node,然后通過節(jié)點來構(gòu)造鏈表List。
(一)、節(jié)點的建立
我們可通過“工程”菜單中的“添加類模塊”來建立一個名稱為Node的節(jié)點,它是一個類模塊,它包含兩部分內(nèi)容:
1、節(jié)點的內(nèi)容,本題中是一個坐標信息:
Public X As Integer
Public Y As Integer
其中X表示橫坐標,Y表示縱坐標
2、后續(xù)節(jié)點信息,通過它可對整個表中的節(jié)點進行鏈接
Public NextNode As Node
所以我們的節(jié)點類Node就建成了。
(二)、利用節(jié)點類構(gòu)造鏈表類List
有了上面的Node節(jié)點類,也就有了組成鏈表的基本單位,我們可以構(gòu)造自己的鏈表了。為了方便,我們?nèi)匀豢梢詫㈡湵淼男畔⒎庋b起來,組成一個新的類模塊,名稱為List。
我們首先在窗體上加上一文本框,以用來放鏈表的內(nèi)容,然后通過“工程”菜單中的“添加類模塊”來建立一個名稱為List類模塊。因為鏈表數(shù)據(jù)結(jié)構(gòu)的建立是為了方便我們使用的,為了保證其在操作過程的完整性,其內(nèi)容如下:
1、定義表頭和表尾
Public ListHead As Node
Public ListTail As Node
表頭和表尾是我們和鏈表進行交流的重要工具,他們也是節(jié)點類,各自具有節(jié)點的特點和自身的特點。
2、鏈表信息初始化
使一張鏈表初始化,表頭也即表尾,并且均為空的。
Private Sub Class_Initialize()
Set ListHead = Nothing
Set ListTail = Nothing
End Sub
3、建立新節(jié)點
鏈表的節(jié)點需要我們一個一個去建立,將新的結(jié)點也就是Node類一個一個接入表中,接的方法就是通過對表頭指針和表尾指針的調(diào)整。
Sub MakeNewNode(n1 As Integer, n2 As Integer)
Dim n As Node
Set n = New Node
n.X = n1
n.Y = n2
If ListHead Is Nothing Then
Set ListHead = n
Else
Set ListTail.NextNode = n
End If
Set ListTail = n
Set ListTail.NextNode = Nothing
End Sub
4、顯示鏈表信息,可通過下面的方法實現(xiàn)
通過頭指針和表建立聯(lián)系,將指針信息不斷修改后移,在實現(xiàn)表遍歷的同時顯示其中的內(nèi)容。
Sub DisplayList()
Dim n As Node
Set n = ListHead
While Not n Is Nothing
Form1.Text1.Text = Form1.Text1.Text + "X:" + Str(n.X) + "Y:" + Str(n.Y) + vbCr + vbLf
Set n = n.NextNode
Wend
End Sub
5、清空鏈表內(nèi)容,刪除節(jié)點信息
Private Sub Class_Terminate()
ClearList
End Sub
Sub ClearList()
Dim n As Node
While Not ListHead Is Nothing
Set n = ListHead
Set ListHead = ListHead.NextNode
Set n = Nothing
Wend
End Sub
6、將一個表的內(nèi)容傳遞到另一個表
Sub TransferList(list2 As list)
Set list2 = New list
Set list2.ListHead = ListHead
Set list2.ListTail = ListTail
Set ListHead = Nothing
Set ListTail = Nothing
End Sub
7、獲取當前鏈表第一個節(jié)點信息,并將該節(jié)點清空
Sub GetNode(column As Integer, row As Integer)
Dim n As Node
If Not ListHead Is Nothing Then
Set n = ListHead
column = n.X
row = n.Y
Set ListHead = ListHead.NextNode
If ListHead Is Nothing Then Set ListTail = Nothing
Set n = Nothing
End If
End Sub
8、測試鏈表是空表還是非空表
Function HasNodes() As Boolean
HasNodes = Not ListHead Is Nothing
End Function
(三)、直接利用鏈表類進行面向?qū)ο缶幊?div style="height:15px;">
直接利用我們上面建立的鏈表類List,我們可很簡單地完成上面已經(jīng)構(gòu)造的操作,當然我們在其中也可加入其他的方法。做為一個類,我們在使用它的過程中不必知道程序?qū)崿F(xiàn)的細節(jié)問題,只要了解類本身具有的方法就可以應(yīng)用了,不僅如此,我們可利用已有的類構(gòu)造新的類,實現(xiàn)代碼的可重用List就是在利用Node的基礎(chǔ)上實現(xiàn)的。
下面的程序中很簡單地實現(xiàn)了給鏈表添加10個節(jié)點,并將其內(nèi)容在文本框中顯示。下面的源程序非常簡潔,我們上面的工作正是下面簡潔的前提,在窗體上我們又加上了兩個命令按鈕,源程序如下所示:
Private Sub CmdChain_Click()
‘通過鏈表類來構(gòu)造
Dim TestList As list
Dim i As Integer
Form1.ScaleMode = vbPixels
Form1.AutoRedraw = True
Set TestList = New list
Text1.Text = ""
For i = 1 To 10
TestList.MakeNewNode i, i * 10
Next i
TestList.DisplayList
End Sub
當然,我們在編程過程中也可以只通過節(jié)點來實現(xiàn)鏈表,當然節(jié)點之間的關(guān)系在我們使用起來時就應(yīng)該很明了。
類模塊是我們通過VB進行面向?qū)ο缶幊虝r不可缺少的部分,上面的三個類模塊cStack是獨立的,與后面的List和Node兩者是沒有任何關(guān)系的。但List和Node卻有著密切的關(guān)系,如果沒有后者,前者也不可能實現(xiàn),他們象是子母的關(guān)系,抽象的程度不同,抽象越深,對后面我們的編程工作的工作量將越小,直接用List編程比只用Node要省事得多。其實還有更有趣的東東,類模塊之間可以彼此定義。從中我想您不難體會面向?qū)ο缶幊痰木薮髢?nèi)涵。
(以上程序在VB60下調(diào)試通過)
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VB基礎(chǔ)教程
全國計算機二級VB復(fù)習資料
第六章 VB的過程設(shè)計
vb6.0總結(jié)
【精講】VB數(shù)組與過程專項內(nèi)容知識要點及程序問題解答思路分析
C語言一夜速成~??!
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服