版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第一章
VisualBasic概述1.1VB概述
一.什么是VB?
VB(VisualBasic)是一種通用高級程序設(shè)計語言;
VB是一種OOP開發(fā)工具。
VB是可視化的工具二.VB的特點1.可視化2.集成開發(fā)環(huán)境(IDE)。3.VB與office.(VBA)。4.支持Windows系統(tǒng)的OLE技術(shù)。5.支持面向?qū)ο蟪绦蛟O(shè)計(OOP)技術(shù)。三、VB的學(xué)習(xí)特點易學(xué)難學(xué)實用聽課與實習(xí)作業(yè)與檢查1.2VisualBasic簡介一.VB運行在32位windows9x
以上版本的操作系統(tǒng)。二.VB的三種版本:標(biāo)準(zhǔn)版、專業(yè)版、企業(yè)版。1.3面向?qū)ο蟮?/p>
程序設(shè)計方法概論一、什么是面向?qū)ο蟮某绦蛟O(shè)計方法?二、什么是對象及類?三、什么是屬性、事件、方法?四、VB的窗體與控件
一、什么是OOP
(面向?qū)ο蟪绦蛟O(shè)計)
OOP是提高程序設(shè)計開發(fā)效率的面向?qū)ο蟮某绦蛟O(shè)計方法。它以對象為中心;它是基于對類和對象的程序設(shè)計;它以事件驅(qū)動機制實現(xiàn)信息傳遞機制與分布式系統(tǒng),網(wǎng)絡(luò)模型融為一體。二、什么是對象及類1、類: 定義了一組有共同特性,外觀,行為的對象的模板; 如:汽車類;電話類;機器人類 類:是對象的正式定義。
2、對象1)對象:是類的一個實例;
動作體的邏輯模型。2)對象包括類共同特性下的
具體數(shù)據(jù)(尺寸,顏色,狀態(tài));
具體操作(事件,方法)3)對象的屬性(property)
對象的事件(event)
對象的方法(method)4)對象是程序運行時刻的基本成分,是一個封裝體。
而這個類的實例—對象,便是一部電話。電話的電路結(jié)構(gòu)和設(shè)計布局可以是一個類品牌型號顏色大小聽筒有拿起和掛上兩種狀態(tài)三.什么是屬性:
對象特征的描述。對象具有屬性(Property)每個對象都有屬性。屬性定義了對象的特征或某一方面的行為。屬性由對象所基于的類決定。屬性值既能在設(shè)計時也可在運行時進行設(shè)置。四、什么是“事件”1、事件:是對象可以識別的動作;2、事件:使某個對象進入活動狀態(tài)(又稱激活)的一種操作或動作。3、事件發(fā)生:
自動執(zhí)行一段事先安排的代碼程序。4、事件驅(qū)動機制。5、例如:演示五.什么是“方法”
指的是控制對象動作行為的方式。 為對象安排完成某個任務(wù)的“方法”;此方法對應(yīng)有程序或代碼。 例如:為某電話設(shè)計了一個可以打出市話外線的方法程序:撥02。
設(shè)計了一個可以打出長途電話的方法程序:撥03。習(xí)題4.有一個紅色、充滿氫氣的氣球,如果人不小心松開手抓的引線,就會飛走;如果用針刺它,則會爆破。請問,對于氣球?qū)ο?,哪些是屬性、哪些是事件、哪些是方法?討論?/p>
“機器人”:屬性、事件、方法?六、VB的窗體與控件窗體:VB的窗體是大容器。
例如:WORD的窗口,對話框控件:是放在窗體的部件(組件)
例如:窗口中的文本框,列表框,命令按鈕……窗體與控件都有自己的屬性,事件,方法。事件驅(qū)動機制。舉例。小結(jié)VB與VB的特點。理解OOP、類、對象、屬性、事件、方法等概念。理解“事件驅(qū)動”過程的程序設(shè)計原理。1.2“工程”的概念一個應(yīng)用程序——一個工程文件
(擴展名:.vbp)一個工程文件:
將與工程有關(guān)的各種類型文件組織在一起。并不包含這些文件,只是對文件的引用。所以
一個窗體文件可以屬于不同的工程文件。開始:‘工程1.VBP’。(可以更名)1.2VB的開發(fā)環(huán)境一.標(biāo)題條二.菜單三.工具欄四.窗體設(shè)計器五.控制箱六.彈出式菜單七.工程資源管理器窗口和代碼窗口八.屬性窗口九.“窗體布局”窗口十.“立即”、“本地”和“監(jiān)視”窗口十一.對象瀏覽器P3-P7詳細(xì)如下標(biāo)題條菜單工具欄窗體設(shè)計器控件箱工程資源
管理窗口屬性窗口布局窗口詳細(xì)如下
工程資源管理器窗口又稱為工程瀏覽器窗口,在窗口中會列出當(dāng)前工程的所有窗體和模塊。
工程瀏覽器窗口也有一個小工具欄,上面的三個按鈕分別用于查看代碼、查看對象和切換文件夾。
單擊“查看代碼”按鈕,則會出現(xiàn)該對象的代碼編輯器窗口。
代碼編輯器是輸入應(yīng)用程序代碼的窗口。應(yīng)用程序的每個窗體或代碼模塊都有一個單獨的代碼編輯器窗口。彈出式菜單 在要使用的對象上單擊鼠標(biāo)右鍵即可打開彈出式菜單。屬性窗口 屬性窗口由標(biāo)題條、對象列表框和屬性列表框及屬性說明幾部分組成工具欄
VB的工具欄由若干命令按鈕組成,在編程環(huán)境下提供對于常用命令的快速訪問。以下給出了各個命令按鈕的名稱及功能。1.3利用VB開發(fā)應(yīng)用程序的
一般步驟一.創(chuàng)建程序的用戶界面二.設(shè)置界面上各個對象的屬性三.編寫對象響應(yīng)事件的程序代碼P8四.保存工程(P9).vbp
工程文件一個工程保存在一個文件夾內(nèi)五.測試和調(diào)試應(yīng)用程序六.創(chuàng)建可執(zhí)行程序自己動手!舉例:
P9—P101.4VB的幫助“幫助”是自學(xué)的老師;是‘110’。獲得幫助的方法。P36-P37VB的示例程序(完全安裝,MSDN)
可以剪切到自己的程序中。演示小結(jié)了解什么是工程。熟悉VB的開發(fā)環(huán)境。熟練掌握VB開發(fā)應(yīng)用程序的一般步驟。學(xué)會使用幫助。習(xí)題:P13。VB程序代碼的組織方式一、模塊的概念:
1、窗體模塊(.frm文件)
2、標(biāo)準(zhǔn)模塊(.bas文件)
3、類模塊(.cls文件)二、各種模塊的功能三、各種模塊包含的內(nèi)容(過程...)四、各種模塊如何創(chuàng)建,組織3.1五、過程具有特定書寫格式、包含若干可被作為一個整體執(zhí)行的代碼組(小程序段)過程的種類:事件過程、通用過程。過程的作用范圍:private
與public事件過程通用過程P41練習(xí)事件過程為窗體以及各種對象編寫的用來響應(yīng)各種事件的代碼行就是“事件過程”。
事件過程存儲在被稱為“窗體模塊”的文件中(擴展名.FRM)。在缺省情況下,是“私有的”(Private)。事件過程的代碼框架是由VB系統(tǒng)自動提供的
(圖3-1)。
圖3-1通用過程一個應(yīng)用程序中可被多個窗體共享的過程被稱為“通用過程”。
通用過程是由事件過程或其它通用過程調(diào)用而執(zhí)行的。在缺省情況下,它是“公有的”(Public),即通用過程可被所有的窗體共享。通用過程的位置:(窗體與標(biāo)準(zhǔn)模塊)通用過程的創(chuàng)建圖3-2練習(xí)P53第1,2,3題代碼行的書寫規(guī)則語句書寫規(guī)范練習(xí)3.2語句語句是
程序的最基本成份。語句的功能:提供信息(如定義數(shù)據(jù)類型),或者執(zhí)行的某些操作。
語句的一般形式是:
一個語句可寫在一行上;一個語句可寫在多行上;使用“續(xù)行標(biāo)志”多個語句可以寫在一行上;
語句之間用冒號“:”分隔。
<語句定義符>[語句體]示例語句示例例1,一個語句分寫在多行上:Dimstudent_nameAsString,student_numberAs_String,computerAsInteger,englishAsInteger例2,一行寫多個語句:
x=10:y$="VisualBasic":z=20書寫規(guī)范語句中字母不區(qū)分大小寫。一個代碼行輸入完后,按回車鍵。系統(tǒng)自動進行語法檢查。系統(tǒng)自動將所有“保留字”的第一個字母改為大寫字母。如,Rem是系統(tǒng)保留字,所以不論輸入的是ReM、還是rem或REM等,系統(tǒng)都會自動變換成Rem。
VB的數(shù)據(jù)類型 VB要處理各種各樣的數(shù)據(jù),如何有效的描述與處理這些數(shù)據(jù)?
每種數(shù)據(jù)類型的要素:數(shù)據(jù)類型常量變量3.3類型定義存儲大小取值范圍運算函數(shù)數(shù)據(jù)類型VB支持的數(shù)據(jù)類型多達12種。表3-1變量若不加說明,系統(tǒng)均按viarian類型處理,它可以存儲各種類型的數(shù)據(jù)。
如果需要處理的數(shù)值超出了相應(yīng)數(shù)據(jù)類型數(shù)據(jù)的表示范圍,將產(chǎn)生“數(shù)據(jù)溢出”錯誤。
3.3.1常量數(shù)值常量字符常量邏輯型常量 只有兩個取值:True和False。
日期常量符號常量3.3.2數(shù)值常量一般的數(shù)值常量由正負(fù)號、數(shù)字和小數(shù)點組成,正數(shù)的正號可以省略。
不帶小數(shù)點的數(shù)稱為“整數(shù)”(integer,long)。帶小數(shù)點的數(shù)稱為“實型數(shù)”或“浮點數(shù)”。(Single,double)。
浮點數(shù)值可表示為
mmmEeee
或
mmm
Deee
兩種形式數(shù)值常量示例數(shù)值常量示例123-22732742(integer)
1758624-3765410(long)123.4-752.6781.234E-5-9.654E-6(single)-5732.12345-8.573264907D-15(double)&O137
表示這是一個八進制數(shù)137,它相當(dāng)于十進制數(shù)95;
&H137
表示這是一個十六進制數(shù)137,它相當(dāng)于十進制數(shù)311。
字符常量把一串字符用引號括起來,就構(gòu)成一個字符常量。例如:
"VisualBasic"、"Howareyou!"、"aB"等都是合法的字符常量。字符常量最多可達65535個字符。注意:“ABC”不等于“abc”
日期常量日期常量要用“#”括起來。
日期型常量的一般表示形式是:
#月月/日日/年年#
如2003年2月15日可表示為:
#1/1/2003#
或者為:#january1,2003#符號常量以符號形式表示的常量稱為“符號常量”。代表常量的符號稱作“常量名”。
Const語句的形式是:
VB還在其內(nèi)部定義了許多符號常量
如:Vbred,Vbblue…...
[Public|Private]Const<常量名>[Astype]=<數(shù)值>變量變量名及類型說明變量作用域與變量說明語句3.3.3變量名及類型說明變量名的命名規(guī)則是:
首字符必須是字母;
長度不超過255個字符;
在作用域內(nèi)必須唯一;
不得包括點號和%、&、!、#、@、$。
為了提高程序的可讀性,變量名之前加上一個約定的前綴,用于表示變量的數(shù)據(jù)類型。約定的前綴見表3-2。表3-2數(shù)據(jù)類型前綴數(shù)據(jù)類型前綴整型int長整型lng單精度型sng雙精度型dbl邏輯型bln貨幣型cur日期型dt字串型str變體型vnt字節(jié)型byt變量作用域與變量說明語句定義變量的兩個要點:
在什么地點定義變量用什么語句定義變量變量作用域變量說明語句OptionExplicit語句變量作用域等級(語句)范圍(地點)
局部
Dim/static在過程中說明,僅在此過程中有效窗體/模塊
Dim/Private
在窗體或模塊中說明,在此模塊或窗體的所有過程內(nèi)均有效全局(公有)
Public在模塊或窗體中說明,在工程內(nèi)的所有過程中都有效注意:變量兩個要點的應(yīng)用變量說明語句四種說明語句說明變量的類型:
Dim|Public|Private|Static注意:使用四種說明語句的地點!Dim語句對變量的初始化。變量的類型也可以“隱式說明”。
VB規(guī)定的類型說明字符如表3-4。關(guān)于字符串變量的聲明表3-4說明字符示例意義%x%表示x是整型變量&x&表示x是長整型變量!x!表示x是單精度變量#x#表示x是雙精度變量@x@表示x是貨幣型變量$x$表示x是字符型變量關(guān)于字符串變量的聲明字符串型變量的長度是可變的。但也可以說明為具有固定長度。方法是:
例如,
DimEmpNameAsString*50
去掉多余的空格,使用Trim
和
RTrim
函數(shù)。
標(biāo)準(zhǔn)模塊中的定長字符串變量可說明為
Public
或
Private。在窗體和類模塊中,則必須說明為
Private。
Dim<變量名>AsString
*
sizeOptionExplicit語句
在模塊中使用OptionExplicit語句,系統(tǒng)將檢查模塊中所有未加顯式說明的變量,一旦發(fā)現(xiàn)有這樣的變量存在,就會產(chǎn)生一個出錯信息,提示使用者改正錯誤。
運算符與表達式VB中運算符和表達式可分為以下三類。
算術(shù)運算符與算術(shù)表達式關(guān)系運算符與關(guān)系表達式邏輯運算符與邏輯表達式運算規(guī)則3.4算術(shù)運算符與算術(shù)表達式算術(shù)運算符算術(shù)表達式3.4.1算術(shù)運算符VB的算術(shù)運算符有以下幾種:
^乘方運算符;+加;-減(負(fù)號)*乘;/除;
\
整除
例:8\6結(jié)果等于1Mod取余運算
例:8Mod6結(jié)果等于2&字符串連接運算
例:"Visual"&"Basic"結(jié)果是VisualBasic
算術(shù)運算符的運算次序為:
^→
-(負(fù)號)→*和
/→\(整除)→Mod→+和
-
→&算術(shù)表達式可以使用圓括號來改變運算次序。
例:
a*b/(c*d)3.14159265*r^2
等都是合法的算術(shù)表達式。注意:
P53第9題,第8題關(guān)系運算符與關(guān)系表達式
關(guān)系運算用于對兩個數(shù)據(jù)進行比較,比較結(jié)果為邏輯值“True”或“False”。關(guān)系運算符關(guān)系表達式3.4.2關(guān)系運算符運算符功能<小于<=小于等于>大于>=大于等于<>不等于=等于Is用來比較兩個對象的引用變量關(guān)系表達式
字符型數(shù)據(jù)的關(guān)系運算是依照字符的ASCII代碼,自左至右按照“查英語字典”的原則進行。例如:
“aBcd”>“abc”的運算結(jié)果是False注意:
x+y>a+b
先做算術(shù)運算再做關(guān)系運算!邏輯運算符與邏輯表達式
邏輯運算是對邏輯值進行的運算。
邏輯運算符邏輯表達式3.4.3邏輯運算符NOT
邏輯非
NOTA>BAND
邏輯與
例:a>=bANDa>=cOR
邏輯或
例:a>=5ORa<=—5XOR
邏輯異或
邏輯運算的優(yōu)先次序是:
NOT→AND→OR→XOR邏輯表達式邏輯表達式主要用于表示一些復(fù)雜的判斷條件。
運算規(guī)則算術(shù)運算符—關(guān)系運算符—邏輯運算符。不同數(shù)據(jù)類型的數(shù)據(jù)進行運算,結(jié)果的類型為兩個運算對象中存儲長度較長的那個對象的類型。注意:除法運算是個例外,不論除數(shù)與被除數(shù)類型如何,結(jié)果總是雙精度型。
3.4.4VB公共函數(shù)(考點)公共函數(shù)是由系統(tǒng)提供的,可隨時隨地調(diào)用。
函數(shù)調(diào)用形式:函數(shù)名(參數(shù)表)。函數(shù)的三要素
函數(shù)名與功能,參數(shù),返回值算術(shù)函數(shù)字符函數(shù)轉(zhuǎn)換函數(shù)日期與時間函數(shù)格式化函數(shù)Format$3.5必須掌握的函數(shù)(考綱)函數(shù)的上機練習(xí)P54第11題與補充題函數(shù)的總結(jié)函數(shù)名功能Sqr(x)求平方根值,x≥0Log(x)求自然對數(shù),x>0Exp(x)求以e為底的冪值,即求exAbs(x)求x的絕對值Hex[$](x)求x的十六進制數(shù)值Oct[$](x)求x的八進制數(shù)值Sgn(x)求x的符號,當(dāng)x>0,返回1;x=0,返回0;x<0,返回-1Rnd[(x)]產(chǎn)生一個在(0,1)區(qū)間均勻分布的隨機數(shù),若x=0,則給出的是上一次利用本函數(shù)產(chǎn)生的隨機數(shù)Sin(x)求x的正弦值,x單位是弧度Cos(x)求x的余弦值,x單位是弧度Tan(x)求x的正切值,x單位是弧度Atn(x)求x的反正切值,函數(shù)返回的是主值區(qū)間的弧度值函數(shù)名功能Len(x)求x字符串的長度(字符個數(shù))Left[$](x,n)從x字符串左邊起取n個字符Right[$](x,n)從x字符串右邊起取n個字符Mid[$](x,n1,n2)從x字符串左邊第n1個位置開始向右起取n2個字符Ucase[$](x)將x字符串中所有小寫字符改為大寫Lcase[$](x)將x字符串中所有大寫字符改為小寫Ltrim[$](x)去掉x左邊的空格Rtrim[$](x)去掉x右邊的空格Instr([n,]x,"字符")從x的第n個位置起查找給定的字符,返回該字符在x中的位置,n的缺省值為1String[$](n,"字符")得到由n個給定字符組成的一個字符串Space[$](n)得到n個空格函數(shù)名功能Str[$](x)將數(shù)值數(shù)據(jù)x轉(zhuǎn)換成字符串(含符號位)Val(x)將字符串x中的數(shù)字轉(zhuǎn)換成數(shù)值Chr[$](x)返回以x為ASCII代碼值的字符Asc(x)給出字符x的ASCII代碼值(十進制數(shù))Cint(x)將數(shù)值型數(shù)據(jù)x的小數(shù)部分四舍五入取整Fix(x)將數(shù)值型數(shù)據(jù)x的小數(shù)部分舍去Int(x)取小于等于x的最大整數(shù)CBool(x)將任何有效的字符串或數(shù)值轉(zhuǎn)換成邏輯型CByte(x)將0至255之間的數(shù)值轉(zhuǎn)換為字節(jié)型CDate(x)將有效的日期字符串轉(zhuǎn)換成日期Ccur(x)將數(shù)值型數(shù)據(jù)x轉(zhuǎn)換成貨幣型數(shù)據(jù)CLng(x)將數(shù)值型數(shù)據(jù)x轉(zhuǎn)換成長整數(shù)型,小數(shù)部分四舍五入CDbl(x)將數(shù)值型數(shù)據(jù)x轉(zhuǎn)換成雙精度數(shù)CSng(x)將數(shù)值型數(shù)據(jù)x轉(zhuǎn)換成單精度型Cvar(x)將數(shù)值型數(shù)據(jù)x轉(zhuǎn)換成變體型CStr(x)將x轉(zhuǎn)換成字符串型函數(shù)名功能Date[$]返回系統(tǒng)當(dāng)前的日期Time[$]返回系統(tǒng)當(dāng)前的時間Now返回系統(tǒng)當(dāng)前的日期和時間Year(x)X應(yīng)為一有效的日期變量、常量或字符表達式本函數(shù)返回一個表示x的年號的整數(shù)Month(x)X應(yīng)為一有效的日期變量、常量或字符表達式本函數(shù)返回一個表示x的月份的整數(shù)Day(x)X應(yīng)為一有效的日期變量、常量或字符表達式本函數(shù)返回1到31之間的整數(shù),表示是一個月的第幾日Weekday(x[,c])X應(yīng)為一有效的日期變量、常量或字符表達式c是用于指定星期幾為一個星期第一天的常數(shù),缺省時表示一周的星期天為第一天格式化函數(shù)Format$Format[$]是專門用于將各種數(shù)據(jù)按指定格式輸出的函數(shù)。它的一般形式是:
式中的fmt$是用于格式控制的字符串。
格式控制字符有:
#、0、.、,、%、$、-、+、(、)、E+、E-Format函數(shù)僅用于控制數(shù)據(jù)的外部輸出形式,不會改變數(shù)據(jù)在計算機內(nèi)部的存儲形式。
Format[$](<算術(shù)表達式>,fmt$)本章總結(jié)VB程序的組織方式
(模塊與過程)數(shù)據(jù)、表達式及運算規(guī)則:
類型、常量、
變量說明與作用域;(兩個要點)
運算符與表達式、運算規(guī)則
公共函數(shù):(三要素)
常用算術(shù)函數(shù)、轉(zhuǎn)換函數(shù)、字符函數(shù)、
日期函數(shù)及Format函數(shù)的功能及應(yīng)用
算法基礎(chǔ)及VB的基本語句
第4章算法及程序設(shè)計基礎(chǔ)賦值語句及InputBox、MsgBox函數(shù)
分支結(jié)構(gòu)與分支結(jié)構(gòu)語句循環(huán)結(jié)構(gòu)與循環(huán)結(jié)構(gòu)語句程序示例小結(jié)算法及程序設(shè)計基礎(chǔ)算法的特征算法的描述基本算法結(jié)構(gòu)4.1算法的特征確定性可行性有窮性輸入性輸出性算法的描述流程圖。 是使用規(guī)定的圖形符號來描述算法的。
流程圖使用的圖形符號見表4-1。圖4-1和圖4-2分別是兩個算法示例的流程圖。圖框內(nèi)的文字用于說明具體的操作內(nèi)容。上例表現(xiàn)算法的五個特性圖形符號名稱代表的操作輸入/輸出數(shù)據(jù)的輸入與輸出處理各種形式的數(shù)據(jù)處理判斷判斷選擇,根據(jù)條件滿足與否選擇不同路徑起止流程的起點與終點特定過程一個定義過的過程流程線連接各個圖框,表示執(zhí)行順序連接點表示與流程圖其他部分相連接基本算法結(jié)構(gòu)“結(jié)構(gòu)化程序設(shè)計方法”的核心是規(guī)定了算法的三種基本結(jié)構(gòu):
順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。P58
三種基本結(jié)構(gòu)的共同特點是:
1)只有單一的入口和單一的出口;2)每個部分都可能被執(zhí)行;3)結(jié)構(gòu)內(nèi)不存在永不終止的死循環(huán)。賦值語句及InputBox、MsgBox函數(shù)
賦值語句InputBox函數(shù)MsgBox函數(shù)4.2習(xí)題:P81:第6,7,8題上機:P41實驗5.1,5.2賦值語句賦值語句的形式不同數(shù)據(jù)類型數(shù)據(jù)的賦值圖4-4
一個說明不同數(shù)據(jù)類型數(shù)據(jù)賦值方式的簡單程序示例
4.2.1賦值語句的形式賦值語句的一般形式是:
其中var表示某個變量名或?qū)傩悦?/p>
先運算,后“賦值”。
賦值語句可使變量或某個對象的某屬性獲得一個新值。示例
賦值語句還可以獲取一個對象的當(dāng)前屬性值。例如:pw=texpass.text
var=<表達式>賦值語句示例x="Thisis”&“aflower"number%=72+23Lable1.Text="Filenameis:"Text.Font.Size=12Y=(a+b)/2思考:如何將A與B交換內(nèi)容?不同數(shù)據(jù)類型數(shù)據(jù)的賦值有數(shù)值意義的字符串,OK!
無數(shù)值意義的字符串出錯!字符數(shù)值變量True—”true”;False—”False”邏輯值字符變量Ture:變量的值將為-1;
False:變量的值為0邏輯值整型變量值轉(zhuǎn)換為字符型賦給變量數(shù)值字符變量先求值再轉(zhuǎn)換為變量類型后再賦值數(shù)值數(shù)值變量系統(tǒng)處理
表達式類型
變量類型
邏輯變量數(shù)值非0值轉(zhuǎn)換為True賦變量,
0則轉(zhuǎn)換為False賦變量圖4-4
一個簡單程序示例
InputBox函數(shù)InputBox函數(shù)
用來接受用戶通過鍵盤輸入的數(shù)據(jù)。
InputBox函數(shù)應(yīng)用示例
P61
4.2.2N_student=inputbox(“請輸入你的學(xué)號”,”程序示例”,230001)運行時,N_student的值為用戶輸入的學(xué)號值MsgBox函數(shù)MsgBox函數(shù)用于向用戶發(fā)布提示信息,并要求用戶作出必要的響應(yīng)。MsgBox函數(shù)根據(jù)用戶選擇單擊的按鈕而返回不同的值MsgBox函數(shù)有以下幾種使用方法4.2.3MsgBox函數(shù)的幾種使用方法
三種方法都可以獲得如圖所示畫面。 但第二、三種用法將得不到用戶點擊不同按鈕的返回值(或沒有返回值)。Ans=msgbox(“非法數(shù)據(jù)!”,48,“提示信息”)printmsgbox(“非法數(shù)據(jù)!”,48,“提示信息”)Msgbox“非法數(shù)據(jù)!”,48,“提示信息”123參數(shù)C1,C2,C3,C4見P62分支結(jié)構(gòu)與分支結(jié)構(gòu)語句
分支結(jié)構(gòu)是程序的基本算法結(jié)構(gòu)之一。VB提供了實現(xiàn)分支結(jié)構(gòu)的相關(guān)語句。If-Then-Else-EndIf結(jié)構(gòu)語句Select-Case-EndSelect結(jié)構(gòu)語句4.3習(xí)題:P81第2題上機:P43實驗5.3到5.7If-Then-Else-EndIf結(jié)構(gòu)語句該結(jié)構(gòu)語句的一般形式該結(jié)構(gòu)的變形1該結(jié)構(gòu)的變形2[例4-1]已知三角形三個邊的長度,設(shè)計求此三角形面積的程序
[例4-2]一個有多個分支的示例程序
4.3.1If結(jié)構(gòu)語句的一般形式IfeThen[A組語句]Else[B組語句]EndIfIf結(jié)構(gòu)的變形1IfeThenA組語句EndifIfeThen<語句>If結(jié)構(gòu)的變形2Ife1ThenA1組語句
ElseIfe2ThenA2組語句
...Endif[例4-1]已知三角形三個邊的長度,設(shè)計求此三角形面積的程序算法流程圖當(dāng)a+b>c且a+c>b且b+c>a時,三角形存在,其面積式中:
p=(a+b+c)/2[例4-1]算法流程圖[例4-2]一個有多個分支的示例程序程序代碼[例4-2]程序代碼PrivateSubCommand1_Click()DimxAsIntegerx=Val(Text1.Text)
Ifx<1ThenText2.Text=“這是小于1的數(shù)”
ElseIfx<=10ThenText2.Text=“這是1到10之間的數(shù)”
ElseText2.Text=”這是大于10的數(shù)”
EndIfEndSubSelect-Case-EndSelect結(jié)構(gòu)語句實現(xiàn)多分支結(jié)構(gòu)的另一種方法。
例4-2的程序代碼也可使用本結(jié)構(gòu)語句實現(xiàn)
4.3.2SelectCaseeCasec1A組語句
Casec2B組語句
...CaseElsen組語句
EndSelecte稱為測試表達式;
c1,c2,...是測試項(1)具體取值:如:3、5、7.2等(當(dāng)測試表達式是算術(shù)表達式時);(2)連續(xù)的數(shù)據(jù)范圍:如:8To20;BToH等;(3)滿足某個判決條件:如:Is>20;Is<="P"等。例4-2使用本結(jié)構(gòu)語句實現(xiàn)PrivateSubCommand1_Click()DimxAsIntegerx=Val(text1.Text)
SelectCasexCaseIs<1Text2.text="這是小于1的數(shù)"Case1To10Text2.Text="這是1到10之間的數(shù)"CaseElseText2.Text="這是大于10的數(shù)"
EndSelectEndSub循環(huán)結(jié)構(gòu)與循環(huán)結(jié)構(gòu)語句
循環(huán)結(jié)構(gòu)是程序的基本算法結(jié)構(gòu)。所謂循環(huán),就是重復(fù)地執(zhí)行某些操作。
當(dāng)型循環(huán)和直到型循的不同執(zhí)行方式Do-Loop循環(huán)結(jié)構(gòu)語句For-Next循環(huán)結(jié)構(gòu)語句循環(huán)嵌套4.4習(xí)題:P81第3,4,5,9題上機:P47實驗6.1到6.6回顧(3.30)賦值語句的兼容(P60)IF語句的多態(tài)(舉例)Elseif語句的迷惑(舉例)多路分支語句selectcase的妙用DO語句的2種結(jié)構(gòu)、2種控制語句關(guān)于FOR語句當(dāng)型循環(huán)和直到型循的不同執(zhí)行方式當(dāng)型循環(huán)的不同執(zhí)行方式直到型循環(huán)的不同執(zhí)行方式Do-Loop循環(huán)結(jié)構(gòu)語句Do-Loop循環(huán)結(jié)構(gòu)語句的四種形式
ExitDo語句
[例4-3]
求兩個自然數(shù)的最大公約數(shù)程序
4.4.11.DoWhilee2.Do......[ExitDo][ExitDo]......LoopLoopWhilee
3.DoUntile4.Do......[ExitDo][ExitDo]......LoopLoopUntile回顧(4.27)補課問題賦值語句的兼容(P60)IF語句的多態(tài)(舉例)Elseif語句的迷惑(舉例)多路分支語句selectcase的妙用DO語句的2種結(jié)構(gòu)、2種控制語句關(guān)于EXITDO語句ExitDo語句循環(huán)體中,執(zhí)行到ExitDo語句時,就會直接退出本層循環(huán),轉(zhuǎn)而執(zhí)行Loop語句的下一條語句。最常用的形式是與If-Then語句相結(jié)合,即:
IfeThenExitDo表示:如果條件e被滿足,則執(zhí)行ExitDo語句直接退出本層循環(huán)。
舉例:P81第3題[例4-3]
求兩個自然數(shù)的最大公約數(shù)程序在程序中加入對數(shù)據(jù)的合法性進行檢驗的部分;數(shù)據(jù)類型可選用長整型。
使用Mod運算符時,切記應(yīng)前后各加一個空格
程序代碼
最小公倍數(shù)?For-Next循環(huán)結(jié)構(gòu)語句如果事先已知循環(huán)次數(shù),則可使用For-Next循環(huán)結(jié)構(gòu)語句。它的一般形式是:
For-Next循環(huán)結(jié)構(gòu)語句的執(zhí)行方式注意[例4-4][例4-5]4.4.2Forv=e1Toe2[Stepe3]
…
[ExitFor]
…
Nextvv是循環(huán)控制變量,
e1為初值;
e2為終值;
e3為步長。
當(dāng)e3=1時,可省略。For-Next循環(huán)結(jié)構(gòu)語句的執(zhí)行方式1.計算e1、e2和e3的值;2.給v賦初值;(1與2只做一次)3.判v的值是否超過e2,如果未超過,則執(zhí)行循環(huán)體;如果超過了,則退出循環(huán)。4.做完循環(huán)體后,到Next語句,v增加一個步長;轉(zhuǎn)3:判別操作。
注意循環(huán)參數(shù)e1、e2和e3中包含的變量如果在循環(huán)體內(nèi)被改變,不會影響循環(huán)的執(zhí)行次數(shù);但循環(huán)控制變量若在循環(huán)體內(nèi)被重新賦值,則循環(huán)次數(shù)有可能發(fā)生變化(舉例P82:#4)若使用非整型數(shù)做循環(huán)控制變量和循環(huán)參數(shù),那么循環(huán)次數(shù)就有可能發(fā)生意想不到的變化。[例4-4]求1到10這十個數(shù)的和與連乘積
求若干個數(shù)之和或連乘積,可采用“累加”或“累乘”法。累加法是設(shè)置一個存放和數(shù)的變量,稱為“累加器”,初始值為0,累加過程通過循環(huán)實現(xiàn);累乘的算法設(shè)置的是“累乘器”,初始值為1,在循環(huán)體內(nèi),乘數(shù)應(yīng)與累乘器相乘。設(shè)置適當(dāng)?shù)臄?shù)據(jù)類型。程序代碼
FOR語句的特例關(guān)于正常情況下的循環(huán)次數(shù)關(guān)于正常情況下循環(huán)結(jié)束后循環(huán)變量的值EXITFOR語句非正常情況下:循環(huán)變量的值??!舉例:
P81#3#4循環(huán)嵌套無論是Do-Loop循環(huán),還是For-Next循環(huán),都可以在大循環(huán)中套小循環(huán)。注意:小循環(huán)一定要完整地被包含在大循環(huán)之內(nèi)。
PrivateSubForm_Click()Fori=1To9Forj=1To9Printi;"*";j;"=";i*j;NextjPrintNextiEndSub[例4-6]一個模擬搖獎的程序
4.4.3小結(jié)VB的基本語法規(guī)則VB的基本元素(常量,變量,函數(shù),運算符,各種表達式)結(jié)構(gòu)化程序的三種結(jié)構(gòu)(順序,分支,循環(huán))如何設(shè)計算法?如何用VB實現(xiàn)算法?[例4-5]大寫字母逆序輸出的程序回顧幾組函數(shù):
Len(),
Mid(),Left(),Right(),Chr,Asc()本例利用Mid函數(shù)可以從字符串中提取出單個字符如何控制循環(huán)過程?(使用Len函數(shù));如何處理?(采用連接運算)如何逆序輸出?(程序設(shè)計技巧之一)
程序代碼[例4-6]一個模擬搖獎的程序設(shè)有100個人中簽,要從中找出中獎人。由機器自動隨機產(chǎn)生1000個1到100間的數(shù)據(jù),第1000個隨機數(shù)據(jù)即為中獎人的號碼。
如何產(chǎn)生1~100之間的隨機整數(shù)??捎靡韵鹿剑?/p>
Int((上限
-下限lb+1)*Rnd)+下限
調(diào)用
Rnd之前,可先使用無參數(shù)的
Randomize語句初始化隨機數(shù)生成器程序代碼程序示例[例4-7]一個簡易函數(shù)計算器程序
(P74)[例4-8]
個人收入調(diào)節(jié)稅應(yīng)用程序
(P77)[例4-9]牛頓迭代法程序設(shè)計(P78)[例4-10]
原碼轉(zhuǎn)換成反碼的程序(P79)
4.5[例4-7]一個簡易函數(shù)計算器程序預(yù)處理:
考慮在文本框中沒有輸入數(shù)據(jù);輸入的數(shù)據(jù)超出函數(shù)的定義域時的出錯處理。
程序中使用的IsNumeric(s)函數(shù)用于檢測自變量s是否是一個可轉(zhuǎn)換成數(shù)值的數(shù)字串,如果是,則返回邏輯值True,否則返回False。
程序代碼
PrivateSubcmd1_Click()
IfText1.Text=""ThenMsgBox"請輸入X值!",48+vbOKOnly,"程序示例"Text1.SetFocus
ElseIfIsNumeric(Text1.Text)ThenX=Val(Text1.Text) ‘求函數(shù)
Label2.Caption=“Exp(X)=:” ‘換門牌
Text2.Text=Str(Exp(X)) ‘送結(jié)果
ElseMsgBox"輸入數(shù)據(jù)錯誤!",48+vbOKOnly,"程序示例"Text1.Text="”
EndIfEndSubexp效果?初始界面MsgBox“請輸入X值!”,48+vbOKOnly,"程序示例"顯示結(jié)果按月收入額計個人收入調(diào)節(jié)稅的計稅公式式中,pay為納稅人的月收入。
程序代碼[例4-8]個人收入調(diào)節(jié)稅應(yīng)用程序
PrivateSubCommand1_Click()DimtaxAsSingle,payAsSinglepay=Text1.Text
IfCheck1.Value=1orpay<=1000Thentax=0
ElseIfpay<=1500Thentax=(pay-1000)*0.05
ElseIfpay<=2000Thentax=25+(pay-1500)*0.1…………...
Else ‘什么情況下執(zhí)行??tax=700+(pay-4500)*0.4
EndIfText2.Text=taxEndSub思考:1、判斷順序2、if--then--elseif的結(jié)合?3、改成selectcase語句?[例4-9]利用牛頓迭代法求方程根xex-1=0at:x0=0.5<=10-7
算法說明
P78程序代碼
P79OptionExplicitPrivateSubcmd1_Click()DimxAsSingle,x1AsSingle,EpsAsSinglex=InputBox("輸入初始值x:","牛頓迭代法")Eps=InputBox("輸入允許誤差Eps:","牛頓迭代法")
Dox1=x ‘總把新符換舊符
x=x1-(x1*Exp(x1)-1)/(Exp(x1)*(x1+1))
Loop
UntilAbs(x-x1)<=EpsText1.Text=Str(x)EndSub[例4-10]
原碼轉(zhuǎn)換成反碼的程序Mid函數(shù)的另外一個功能:
可以用在賦值語句中:其功能是用指定的字符替換字符串中指定位置的內(nèi)容。例s=“abcdef”
mid(s,4,3)=“xyz”‘s的結(jié)果為“abcxyz”程序代碼
PrivateSubCommand1_Click()DimSourceAsString,IAsIntegerSource=Text1.Text
IfMid(Source,1,1)<>"1"ThenText2.Text="正數(shù)沒有補碼"Else
ForI=2ToLen(Source)IfMid(Source,I,1)="1"Then
Mid(Source,I,1)="0"Else
Mid(Source,I,1)="1"EndIf
NextIText2.Text=Source
EndIfEndSubMid函數(shù)的新作用本章小結(jié)算法及程序設(shè)計基礎(chǔ)賦值語句及InputBox、MsgBox函數(shù)
分支結(jié)構(gòu)與分支結(jié)構(gòu)語句循環(huán)結(jié)構(gòu)與循環(huán)結(jié)構(gòu)語句程序示例習(xí)題(P81--P83第10--13題)上機(P41--P55)(5月16日交)時間:5月27日中午要求:60分鐘做完窗體上注明:
班級學(xué)號姓名隨機抽題臨時點題可加分1.實驗書P522.實驗書P55(6--6)3.實驗書P604.實驗書P63(7--5)5.實驗書P64(7--7)6.實驗書P72(8--4)7.教材P116第9題8.教材P115第2題關(guān)于期中上機考試數(shù)組的概念
數(shù)組可用于存儲成組的有序數(shù)據(jù)。使用數(shù)組就是用一個相同的名字引用這一組變量中的數(shù)據(jù),這個名字被稱為數(shù)組名。數(shù)組命名與數(shù)組元素
數(shù)組定義
數(shù)組的結(jié)構(gòu)
數(shù)組函數(shù)及數(shù)組語句
5.1數(shù)組命名與數(shù)組元素數(shù)組名的命名規(guī)則與簡單變量命名規(guī)則一樣。
數(shù)組內(nèi)的每個成員稱為數(shù)組元素,數(shù)組元素又稱為下標(biāo)變量,數(shù)組元素的類型也就是數(shù)組的類型。
數(shù)組元素名的一般形式是:
其中:下標(biāo)可以是常量、變量或算術(shù)表達式。當(dāng)下標(biāo)的值為非整數(shù)時,會自動進行四舍五入。
5.1.1數(shù)組名(下標(biāo)1[,下標(biāo)2……])數(shù)組定義數(shù)組說明語句數(shù)組的初始化5.1.2定義:1、名稱和數(shù)據(jù)類型
2、維數(shù)和每一維的上、下界的取值范圍。數(shù)組類型:
靜態(tài)數(shù)組和動態(tài)數(shù)組。數(shù)組說明同變量定義(地點?語句?)Optionbase1語句的功能維的大小=上界--下界+1數(shù)組元素總個數(shù)=各維數(shù)連乘數(shù)組類型定義(例)數(shù)組維說明示例數(shù)組說明語句示例 DimA(6)AsInteger PrivateName(1999To2002)AsString*8 DimB(2,1to2)AsIntegerA(6)A(5)A(4)A(3)A(2)A(1)A(0)Name(2002)Name(2001)Name(2000)Name(1999)B(2,2)B(2,1)B(1,2)B(1,1)B(0,2)B(0,1)數(shù)組維說明示例DimMAsintegerConstNAsInteger=5DimA(N)AsInteger√DimB(1To6.6)AsInteger√DimC(1To2+3)AsInteger√ DimD(0ToM)AsInteger
×數(shù)組初始化數(shù)值型的數(shù)組元素初始值為零變長字符類型的數(shù)組元素初始值為空字符串定長字符類型的數(shù)組元素初始值為指定長度個數(shù)的空格布爾型的數(shù)組元素初始值為False變體(Variant)類型的數(shù)組元素的初始值是Empty。
數(shù)組的結(jié)構(gòu)一維數(shù)組的結(jié)構(gòu)
二維數(shù)組的結(jié)構(gòu)
三維數(shù)組的結(jié)構(gòu)
5.1.3一維數(shù)組的結(jié)構(gòu)DimStrA(8)AsInteger線性順序StrA(0)StrA(1)StrA(2)StrA(3)StrA(4)StrA(5)StrA(6)StrA(7)StrA(8)StrA(8)StrA(7)StrA(6)StrA(5)StrA(4)StrA(3)StrA(2)StrA(1)StrA(0)存儲結(jié)構(gòu)邏輯結(jié)構(gòu)存儲結(jié)構(gòu)二維數(shù)組的結(jié)構(gòu)OptionBase1 DimTable(3,4)AsInteger
按列存放Table(1,1)Table(2,1)Table(3,1)Table(1,2)Table(2,2)Table(3,2)Table(1,3)Table(2,3)Table(3,3)Table(1,4)Table(2,4)Table(3,4)Table(3,1)Table(2,1)Table(3,2)Table(3,3)Table(3,4)Table(2,2)Table(2,3)Table(2,4)Table(1,1)Table(1,2)Table(1,3)Table(1,4)存儲結(jié)構(gòu)邏輯結(jié)構(gòu)存儲結(jié)構(gòu)三維數(shù)組的結(jié)構(gòu)Page(3,1,1)Page(2,1,1)Page(1,1,2)Page(3,2,1)Page(2,2,1)Page(1,2,2)Page(3,3,2)Page(2,3,2)Page(1,3,2)Page(3,1,1)Page(2,1,1)Page(1,1,1)Page(3,2,1)Page(2,2,1)Page(1,2,1)Page(3,3,1)Page(2,3,1)Page(1,3,1)邏輯結(jié)構(gòu)存儲結(jié)構(gòu)Page(1,1,1)Page(2,1,1)Page(3,1,1)Page(1,2,1)…Page(3,3,1)Page(1,1,2)Page(2,1,2)Page(3,1,2)Page(1,2,2)…Page(3,3,2)DimPage(3,3,2)ASInteger(行,列,頁)存放:逐頁逐列(先變左邊下標(biāo))邏輯結(jié)構(gòu)存儲結(jié)構(gòu)數(shù)組函數(shù)及數(shù)組語句LBound
函數(shù)與UBound函數(shù)
Erase語句
ForEach…Next結(jié)構(gòu)語句
5.1.4LBound
函數(shù);UBound函數(shù)Lbound的功能:是返回數(shù)組某維的維下界的值(例)Ubound的功能:是返回數(shù)組某維的維上界的值(例)例如:dima(-2to3,0to5) ……...printLbound(a),Lbound(a,2)printUbound(a),Ubound(a,2) ……….Lbound函數(shù)應(yīng)用示例PrivateSubForm_Click()DimA(5)AsInteger,DimB(3to8,200to208)PrintLBound(A),LBound(B,1),LBound(B,2)EndSub程序執(zhí)行結(jié)果是:0
3
200Ubound函數(shù)應(yīng)用示例PrivateSubForm_Click()DimA(5)AsInteger,DimB(3to8,200to208)PrintUBound(A),UBound(B,1),UBound(B,2)EndSub程序執(zhí)行結(jié)果是:5
8
208Erase語句Erase語句的功能是重新初始化固定大小數(shù)組的元素,或者釋放動態(tài)數(shù)組的存儲空間。Erase語句應(yīng)用示例Erase語句應(yīng)用示例PrivateSubForm_Click()DimA(3)AsInteger,B()AsIntegerA(1)=1:A(2)=2:A(3)=3ReDimB(4)‘為B分配4個整數(shù)單元(8B)
PrintA(1),A(2),A(3)EraseA,B‘A充0,B的單元釋放
PrintA(1),A(2),A(3)EndSubForEach…Next結(jié)構(gòu)語句ForEach…Next語句是專門用來為數(shù)組或?qū)ο蠹现械拿總€元素重復(fù)執(zhí)行一組語句而設(shè)置的。ForEach…Next語句應(yīng)用示例OptionBase1PrivateSubForm_Click()DimA(12)AsInteger,VAsVariantDimIAsInteger,JsAsIntegerJs=14ForI=1To12A(I)=JsJs=Js+7NextIJs=0
ForEachVInAJs=Js+1PrintV;If(JsMod6)=0ThenPrint
NextVPrintEndSub窗體上顯示的結(jié)果是:
142128354249566370778491數(shù)組賦值輸出每個元素輸出6個,換行數(shù)組的基本操作數(shù)組元素的賦值數(shù)組元素的輸出
數(shù)組元素的引用
5.2數(shù)組元素的賦值用賦值語句給數(shù)組元素賦值
通過循環(huán)逐一給數(shù)組元素賦值
用InputBox函數(shù)給數(shù)組元素賦值
用Array函數(shù)給數(shù)組賦值
5.2.1用賦值語句給數(shù)組元素賦值DimScore(3)AsIntegerDimTwo(1,1to2)asintegerScore(0)=80 Score(1)=75 Score(2)=91 Score(3)=68Two(0,1)=Score(0)
…K=4Score(K-2)=91PrivateSubForm_Click()DimA(6)AsInteger,IAsIntegerDimB(1to2,1to2)AsInteger,JAsIntegerForI=0To6‘使用循環(huán)給一維數(shù)組賦值并輸出
A(I)=Int(99*Rnd)+1
A(I);
NextI
PrintForI=1To2 ‘利用二重循環(huán)給二維數(shù)組賦值并輸出
ForJ=1To2B(I,J)=I*10+J ‘外循環(huán)是I,行
PrintB(I,J);NextJ
NextIEndSub用InputBox函數(shù)給數(shù)組元素賦值PrivateSubForm_Click()DimA(6)AsInteger,IAsIntegerForI=0To6A(I)=InputBox("給元素賦值","數(shù)組A賦值")PrintA(I);NextIPrintEndSub慢,適合少量數(shù)據(jù)OptionBase1PrivateSubForm_Click() DimAAsVariant ‘A是變量
DimB(4)AsVariant ‘B是數(shù)組
A=Array(5,4,3,2,1) PrintA(1);A(2);A(3);A(4);A(5) A=Array(1.5!,2.3!,3.6!,4.1!) PrintA(1);A(2);A(3);A(4);A(5);A(6) A=“NOArray” ‘A不是數(shù)組了
PrintA B=Array(1,2,3,4,5,6) ‘錯誤語句原因??EndSub注意:只對Varian類型的變量!數(shù)組元素輸出示例 P9411121314152019181716212223242530292827261.規(guī)律?
2.如何設(shè)計算法?
3.用什么語句實現(xiàn)算法?picture1Text1OptionExplicit:OptionBase1PrivateSubCmd1_Click()DimA(4,5)AsInteger,KAsIntegerDimIAsInteger,JAsInteger,SAsStringK=10ForI=1To4IfIMod2<>0Then‘處理奇數(shù)行
ForJ=1To5K=K+1A(I,J)=KNextJElseForJ=5To1Step–1 ‘處理偶數(shù)行
K=K+1A(I,J)=KNextJEndIfNextI'生成數(shù)組IfCheck1.Value<>1ThenForI=1To4 '輸出到圖片框
ForJ=1To5Picture1.PrintA(I,J);NextJPicture1.PrintNextIElseForI=1To4 '輸出到多行文本框
ForJ=1To5S=S&Str(A(I,J))NextJS=S&Chr(13)&Chr(10)NextI
Text1.Text=SEndIfEndSub'數(shù)組輸出對text1的屬性有要求!
回顧(4月20日)為什么要使用數(shù)組?
數(shù)組的特點
(程序設(shè)計=數(shù)據(jù)結(jié)構(gòu)+算法)如何定義數(shù)組?
固定大小的數(shù)組;動態(tài)數(shù)組
數(shù)組的結(jié)構(gòu)(邏輯結(jié)構(gòu);物理結(jié)構(gòu))如何使用數(shù)組?
函數(shù):Ubound()與Lbound()
數(shù)組的賦值;數(shù)組的輸出今天:數(shù)組的引用?數(shù)組元素的引用數(shù)組元素的下標(biāo)在規(guī)定的維界范圍之內(nèi),否則就會產(chǎn)生“數(shù)組越界”的錯誤。
【例5-1】
隨機產(chǎn)生12個兩位數(shù),存放在數(shù)組Com中,并從中找出一個最大數(shù)和一個最小數(shù)。
5.2.3OptionExplicitOptionBase1PrivateSubForm_Click()DimCompare(12)AsInteger
DimIAsIntegerDimMaxAsInteger,MinAsIntegerRandomizeForI=1To12Compare(I)=Int(90*Rnd)+10PrintCompare(I);NextIPrint
生成12個隨機整數(shù)
Max=Compare(1):Min=Compare(1)ForI=2To12IfCompare(I)>MaxThen
Max=Compare(I)ElseIfCompare(I)<MinThen
Min=Compare(I)EndIfNextIPrint"最大數(shù)是:";MaxPrint"最小數(shù)是:";MinEndSub思考:求最大數(shù)的位置?動態(tài)數(shù)組的特點:
不知數(shù)組應(yīng)有多大能滿足需要,在運行程序時改變數(shù)組的大小能力。定義動態(tài)數(shù)組分為兩步:
1.首先定義不指明大小的數(shù)組。Public|Private|Dim|Static
數(shù)組名()[AS類型]2.用ReDim語句來動態(tài)地定義數(shù)組的ReDim[Preserve]數(shù)組名(維界定義)動態(tài)數(shù)組5.3OptionBase1
DimDynArry()AsInteger
…….PrivateSubSub1()DimXAsInteger,YAsInteger
ReDimDynArry(9)
……..
X=2:Y=4
ReDimDynArry(X,Y)
EndSub動態(tài)數(shù)組舉例Redim語句中Preserve的使用 ReDim語句中缺省關(guān)鍵字Preserve時,當(dāng)前存儲在數(shù)組中的值全部丟失;
若要保留原數(shù)組的內(nèi)容,應(yīng)在ReDim語句中使用關(guān)鍵字Preserve,并只能改變最后一維的維上界。
舉例OptionBase1DimDynArry()AsInteger
PrivateSubForm_Click()
DimIAsInteger,JAsInteger
ReDimDynarry(3,3)
Debug.Print"數(shù)組Dynarry(3,3)的值"
ForI=1To3
ForJ=1To3
Dynarry(I,J)=I*10+J
Debug.PrintDynarry(I,J);
NextJ
Debug.Print
NextI
ReDimPreserveDynarry(3,4)Debug.Print"數(shù)組Dynarry(3,4)的值"ForI=1To3
ForJ=1To4
Debug.PrintDynarry(I,J);
NextJ
Debug.Print
NextIEndSubDynarry(3,3)的值為:
111213212223313233Dynarry(3,4)的值為
1112130
2122230
3132330問?!控件數(shù)組基本概念
【例5-2】
使用控件數(shù)組,編寫一個能進行加、減、乘、除運算的運算器的程序兩條語句(LOAD與UNLOAD)
5.4基本概念5.4.1
控件數(shù)組是由一組具有共同名稱和相同類型的控件組成,數(shù)組中的每一個控件共享同樣的事件過程。 控件數(shù)組的名字由控件的Name屬性指定,每個元素的下標(biāo)則由控件的Index屬性指定.第一個元素的下標(biāo)是零(0),最大索引值為32767。引用方式同普通數(shù)組元素.操作演示Command2:有5個元素,各元素分別表示+、-、*、/和Mod運算符。
Command3的Caption屬性值設(shè)為“清屏”;Command4的Caption屬性值是設(shè)為“=”;Command5的Caption屬性值設(shè)為“退出”。編寫一個運算器的程序
Command1:
有11個元素,前10個元素分別表示10個數(shù)字,第11個元素表示小數(shù)點。
共享Command1_Click()事件過程;Load語句格式:Load
Object(Index)功能:向控件數(shù)組添加控件Unload語句格式:UnloadObject(Index)功能:刪除用Load語句產(chǎn)生的對象數(shù)組元素舉例P100OptionExplicitDimTextNumPrivateSubCommand1_Click()IfTextNum<3ThenTextNum=TextNum+1LoadText1(TextNum)
Text1(TextNum).Visible=TrueText1(TextNum).Top=Text1(TextNum-1).Top+_
Text1(TextNum-1).Height+100Text1(TextNum).Text="文本框"&Str(TextNum)EndIfEndSub回顧數(shù)組的基本概念數(shù)組的基本操作數(shù)組的應(yīng)用實例?數(shù)組與常用算法精妙的結(jié)合難點,重點
N遍的重復(fù)===熟練掌握排序算法的創(chuàng)新!程序示例【例5-3】用選擇法對10個數(shù)進行排序
【例5-4】順序查找與二分查找程序【例5-11】將數(shù)組中重復(fù)元素刪除【例5-6】有關(guān)矩陣的程序設(shè)計
【例5-7】求出裴波拉契數(shù)列的前18項【例5-8】統(tǒng)計字母在文本中出現(xiàn)的次數(shù)
【例5-9】找出100以內(nèi)的所有素數(shù)【例5-10】找出5000以內(nèi)的親密對數(shù)
5.5用選擇法對10個數(shù)進行排序設(shè)在數(shù)組Sort中存放10個無序的數(shù),要將這10個數(shù)按升序重新排列。算法講解…..比較次數(shù):N*(N-1)/2如何寫程序???如何改進算法?直接排序法Flash動畫掌握了嗎?(改題)
ForI=1To10Sort(I)=Int(Rn
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件工程師勞動合同樣本
- 2024醫(yī)院托管合作經(jīng)營合同
- 2024家電產(chǎn)品配送合同書模板
- 2024標(biāo)準(zhǔn)委托代理合同格式
- 2024下載裝飾工程承包合同書
- 2024年紙張產(chǎn)品購買合同
- 員工試用期間工作表現(xiàn)評估
- 2024年勞務(wù)派遣服務(wù)合作協(xié)議
- 600字代辦委托協(xié)議范本
- 創(chuàng)業(yè)孵化基地租賃協(xié)議案例
- 銅仁市房地產(chǎn)行業(yè)報告
- 酒店前廳部英語培訓(xùn)及酒店前廳部服務(wù)規(guī)范培訓(xùn)材料
- 省略與替代講解與訓(xùn)練
- 眼視光學(xué)專業(yè)解析
- 微信小程序的品牌營銷渠道與策略研究
- 作業(yè)崗位風(fēng)險評估報告
- 幼兒園公開課:小班社會《小熊你好》課件
- 某三甲醫(yī)院后勤保障管理制度匯編2023版
- pep小學(xué)英語三年級上冊全冊英語電子教案
- Unit+5+Understanding+ideas高中英語外研版(2019)選擇性必修第一冊
- 晾曬棚施工方案
評論
0/150
提交評論