大學VisualBasic復習題及答案_第1頁
大學VisualBasic復習題及答案_第2頁
大學VisualBasic復習題及答案_第3頁
大學VisualBasic復習題及答案_第4頁
大學VisualBasic復習題及答案_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、VB復習題一、填空題1VB應(yīng)用程序的兩個基本特點是 和 。2在VB中根據(jù)變量的作用域不同,變量可以分為 、 和 。 3VB提供的_ _屬性,用來控制對象是否可見,當屬性值為_ _時,表示對象可見。4為使某窗口中的命令按鈕“確定(E)”具有如下特性:按“AltE”鍵或按 “Enter” 鍵,均可代替用鼠標單擊該按鈕的操作,應(yīng)設(shè)置該按鈕的Caption屬性值為_,并且設(shè)置其_屬性值為_。 5 在Visual Basic中,由系統(tǒng)事先設(shè)定的,能被對象識別和響應(yīng)的動作稱為_。6數(shù)字關(guān)系3<=X<10表達式寫成正確的VB表達式為_。7表達式Len("123程序設(shè)計ABC"

2、)的值是_。8在窗體上畫一個文本框和一個圖片框,然后編寫如下兩個事件過程Private Sub Form_Click()Text1.Text = "VB程序設(shè)計"End SubPrivate Sub Text1_Change()Picture1.Print "VBProgramming"End Sub程序運行后,單擊窗體,在文本框中顯示的內(nèi)容是_,而在圖片框中顯示的內(nèi)容是_。9創(chuàng)建一個VB應(yīng)用程序三個主要的步驟是 、 和 。10當程序運行時,要求窗體中的文本框呈現(xiàn)空白,則在設(shè)計時,應(yīng)當在此文本框的窗口中,把此文本框的屬性設(shè)置成空白。11Label和Tex

3、tBox控件用來顯示和輸入文本,如果僅需要讓應(yīng)用程序在窗體中顯示文本信息,可使用 控件;若允許用戶輸入文本,則應(yīng)使用 控件。12要想在代碼中給名為txtshow的文本框賦予文本:GOOD WORK!時,應(yīng)當編寫的語句是。13若命令按鈕的名稱為Cmdopen,程序要求單擊以上命令按鈕時,打開一個窗口frm1,請對以下事件過程填空。Private Sub Cmdopen_ End Sub14Visual Basic 6種類型的表達式是 、 、 、 、 、 。Visual Basic根據(jù)表達式的 來確定表達式的類型。15表達式937Mod22的值是 。16已知a=3,b=4,c=5,表達式a.>

4、;b and Not c>a Or c>b And c<a+b的值是 。表達式c>a and Not b<c的值是 。17數(shù)學表達式sin2x+寫成等價的Visual Basic表達式為 。18設(shè)某個程序中要用到一個二維數(shù)組,要求數(shù)組名為A,類型為字符串類型,第一維下標從1到5,第二維下標從-2到6,則相應(yīng)的數(shù)組聲明語句為 。19事件就是在對象上所發(fā)生的事情,Visual Basic中的事件如 、 、 等。一個對象響應(yīng)的事件可以有 個,用戶不能建立新的事件。事件過程是指 。假設(shè)某一事件過程如下:Private Sub cmd1_Click() Form1.Capt

5、ion=”VB示例” End Sub則響應(yīng)該過程的對象名是 ,事件名是 。 20對象的方法用于 。當方法不需要任何參數(shù)并且也沒有返回值時,調(diào)用對象的方法的格式為 ,例如,對窗體 Form1使用Show方法,應(yīng)寫成 。21PictureBox控件可通過設(shè)置其 屬性為True使之可自動調(diào)整大??;而Image控件可通過設(shè)置其 屬性為True,使其加載的圖片能自動調(diào)整大小以適應(yīng)Image。二、單項選擇題(每題2分,共30分)1. 以下關(guān)于Visual Basic特點的敘述中,錯誤的是( D )A) Visual Basic是采用事件驅(qū)動編程機制的語言B) Visual Basic程序既可以編譯運行,也

6、可以解釋運行C) 構(gòu)成Visual Basic的多個過程沒有固定的執(zhí)行順序D) Visual Basic程序不是結(jié)構(gòu)化程序,不具備結(jié)構(gòu)化的三種基本結(jié)構(gòu)2. 以下敘述中,錯誤的是( B )A) 在Visual Basic中,對象所能響應(yīng)的事件是由系統(tǒng)定義的B) 對象的任何屬性既可以通過屬性窗口設(shè)定,也可以通過程序語句設(shè)定C) Visual Basic中允許不同對象使用相同名稱和方法D) Visual Basic中的對象具有自己的屬性和方法3 在窗體上畫一個命令按鈕,名稱為Command1。然后編寫如下程序:Private Sub Command1_Click() For I=1 To 4 For

7、 J=0 To I Print Chr$(65+I); Next J Print Next IEnd Sub程序運行后,如果單擊命令按鈕,則在窗體上顯示的內(nèi)容是( A )A) BB B) A C) B D) AA CCC BB CC BBB DDDD CCC DDD CCCC EEEEE DDDD EEEE DDDDD4 單選按鈕用于一組互斥的選項中。若一個應(yīng)用程序包含多組互斥條件,可在不同的 中安排適當?shù)膯芜x按鈕,即可實現(xiàn)。( D )A) 框架控件或圖像控件B) 組合框或圖像控件C) 組合框或圖片框D) 框架控件或圖片框5 若在一個應(yīng)用程序窗體上,依次創(chuàng)建了CommandButton、Tex

8、tBox、 Label等控件,則運行該程序顯示窗體時, 會首先獲得焦點。( B )A)窗體 B) CommandButton C) Label D ) TextBox6 使用 方法可以將新的列表項添加到一個列表框中。( B ) A) Pint B) AddItem C) Clear D) RemobeItem7 有程序代碼 “Text1.Text = "Visual Basic"”,其中的Text1、Text和"Visual Basic" 分別代表( C )A)對象、值、屬性 B)對象、方法、屬性C)對象、屬性、值 D)屬性、對象、值8 以下有關(guān)數(shù)組的說

9、明中,錯誤的是( D )A)根據(jù)數(shù)組說明的方式,可將數(shù)組分為動態(tài)數(shù)組和靜態(tài)數(shù)組B) 在過程中,不能用Private 語句定義數(shù)組C)利用ReDim語句重新定維時,不得改變已經(jīng)說明過的數(shù)組的數(shù)據(jù)類型D)數(shù)組重新定維后,原有的數(shù)組元素內(nèi)容將不予保留9 設(shè)有命令按鈕Command1的單擊事件過程,代碼如下Private Sub Command1_Click()Dim a(3, 3) As IntegerFor i = 1 To 3 For j = 1 To 3 a(i, j) = i * j + i Next jNext iSum = 0For i = 1 To 3 Sum = Sum + a(i,

10、 4 - i)Next iPrint SumEnd Sub運行程序,單擊命令按鈕,輸出的結(jié)果是( C )A) 20 B)7 C) 16 D) 1710 針對語句 If I=1 Then J=1 ,下列說法正確的是( C )A)I=1 和J=1均為賦值語句B) I=1 和J=1均為關(guān)系表達式C)I=1為關(guān)系表達式,J=1為賦值語句D)I=1為賦值語句,J=1為關(guān)系表達式11工程文件的擴展名是( B )。Avbg B.vbp C.vbw D.vbl12滾動條控件的Largechange屬性所設(shè)置的是( A )。A 單擊滾動條和滾動箭頭之間的區(qū)域時,滾動條控件Value屬性值的改變量B 滾動條中滾動

11、塊的最大移動位置C 滾動條中滾動塊的最大移動范圍D 滾動條控件無該屬性13. 關(guān)于列表框(ListBox)不正確的闡述是( B )A 列表框顯示項目列表。 B用戶只可以從中選擇一個項目。C列表框可以顯示多列列表。 D如果項目數(shù)超過列表框可顯示的數(shù)目,控件將自動出現(xiàn)滾動條。14. 要求從文本框中輸入密碼時在文本框中只顯示#號,則應(yīng)用在此文本框的屬性窗口中設(shè)置( C )。AText屬性值為# B Caption屬性值為#CPasswordchar屬性值為# D Passwordchar屬性值為真15當執(zhí)行以下過程時,在窗體上將顯示( B )。Private Sub Commandl_Click(

12、) Print “VB” Print“Hello!”; Print “VB”End SubA VB Hello! VBB VB Hello!VBC VBHello! VB D. VBHello!VB16. 可以同時刪除字符串前導和尾部空白的函數(shù)是 CALtrimBRtrimCTrimDMid17. InputBox函數(shù)返回值的類型為 BA.數(shù)值B.字符串C.變體D.數(shù)值或字符串(視輸入的數(shù)據(jù)而定)18. 在設(shè)計階段,當雙擊窗體上的某個控件時,所打開的窗口是 CA.工程資源管理器窗口B.工具箱窗口C.代碼窗口D.屬性窗口19. 在窗體上添加如下命令按鈕,然后編寫如下事件過程:CPrivate S

13、ub Command1 _ Click()Dim a(10)As IntegerDim p(3)As Integerk=5For i=1 To 10a(i)=iNext iFor i=1 To 3p(i)=a(i*i)Next iFor i=1 To 3k=k+p(i)*2Next iPrint kEnd Sub該過程的運行結(jié)果為:A.35B.33C.31D.2920. 為了把焦點移到某個指定的控件,所使用的方法是 A A.SetFocusB.VisibleC.RefreshD.GetFocus21. VB表達式Cos(0)+Abs(1)的值是 DA.1 B. -1 C. 0 D. 222.

14、由Integer型的數(shù)據(jù)組成的字節(jié)數(shù)是 AA.2 B.4 C.8 D.1623. 下面程序運行后,輸出的結(jié)果是: DPrivate Sub Command1 _ Click()K=0A=0While K10K=K+2A=A+KWendPrint AEnd SubA.2B.10C.20D.3024. 設(shè)a=Visual Basic,下面使b=Basic的語句是 BA.b=Left(a,8,12) B.b=Mid(a,8,5) C.b=Right(a,5,5) D.b=Left(a,8,5)25. 下列對象中沒有焦點屬性的是 BA.命令按鈕控件 B.標簽控件C.文本框控件 D.單選框控件26. 以

15、下不能運行工程的操作是 DA.執(zhí)行"運行"菜單中的"啟動"命令B.單擊工具欄中的"啟動"命令C.按下F5鍵 D.按下Ctrl+F5鍵27. 下列關(guān)于面向?qū)ο蟪绦蛟O(shè)計的敘述不正確的是 DA.對象具有屬性、方法等特性B.對象之間的通信產(chǎn)生了消息C.一個對象是一個軟件構(gòu)造塊,它包含數(shù)據(jù)與相關(guān)的操作D.對象的屬性不能被改變28. 設(shè)有如下程序:Option Base 0Private Sub Form _ Click() Dim a Dim i As Integer a=Array(1,2,3,4,5,6,7,8,9) For i=0 To

16、3 Print a(5-i); Next iEnd Sub程序運行后,單擊窗體,則在窗體上顯示的是: CA.4 3 2 1B.5 4 3 2C.6 5 4 3D.7 6 5 4 29. 設(shè)有如下聲明: DDim X AS Integer如果Sgn(X)的值為-1,則X的值是:A.整數(shù)B.大于0的整數(shù)C.等于0的整數(shù) D.小于0的數(shù)30. 在窗體上畫一個名稱為Command1的命令按鈕,然后編寫如下程序: BPrivate Sub Command1 _ Click() Static X As Integer Static Y As Integer Cls Y=l Y=Y+5 X=5+X Prin

17、t X,YEnd Sub程序運行時,三次單擊命令按鈕Command1后,窗體上顯示的結(jié)果為:A.15 16B.15 6C.15 15 D.5 631下列控件中沒有Caption屬性的是( B )A、標簽 B、文本框 C、框架 D、命令按紐32除框架外,能對單選按紐分組的控件是( C )。A、窗體 B、標簽 C、圖形框 D、圖像框33下列符號不能作為VB中變量名的是( C )。 A 、 ABCDEFG B、 P00000 C、 89YWDDF D、xyz34若要求從文本框中輸入密碼時在文本框中只顯示*號,則應(yīng)用在此文本框的屬性窗口中設(shè)置( D )。A、Text屬性值為* B、Caption屬性值

18、為*C、Password屬性值為空D、Passwordchar屬性值為*35 表達式2*32+2*8/4+32的值為( B )。 A、64 B、31 C、49 D、42 36表達式52 Mod 25 22的值是( B )A、0 B、1 C、6 D、4 37數(shù)學式子Sin25°寫成VB表達式是( D )。A、Sin25 B、Sin(25) C、SIN(25°) D、Sin(25*3.14/180) 38選拔身高T超過1.7米且體重W小于62.5公斤的人,表示該條件的布爾表達式為( C )A、T>=1.7 And W<=62.5 B、T<=1.7 Or W&g

19、t;=62.5 C、T>1.7 And W<62.5 D、T>=1.7 Or W<62.539.下列對象不能響應(yīng) Click事件的是( D ) A、列表框 B、圖片框 C、窗體 D、計時器三、判斷題1在定義了一個函數(shù)后,可以像調(diào)用任何一個VB內(nèi)部函數(shù)一樣使用它,可以在表達式、語句或函數(shù)中引用它。( T )2Visual Basic表達式可以寫為:128¸4+COS(28°)( F )3當文本框的ScrollBar屬性設(shè)置為2(有垂直滾動條)但沒有垂直滾動條顯示,是沒有對MultiLine屬性設(shè)置為True。( T )4. .Cls可以 清除窗體或圖形

20、框中程序運行時產(chǎn)生的圖形和文字的內(nèi)容。( T ) 5當運行程序時系統(tǒng)自動啟動窗體的Load事件過程( T )6圖像框控件使用系統(tǒng)資源比圖片框少( T )7設(shè)A=3,B=4,C=5,D=6,計算表達式A>B AND C<=D OR 2*A>C的值是False。( F )8sum和int.sum都可以作為VB的變量名。 F9變量名的長度最長可達1024個字符。 F10下列程序運行結(jié)果為True F Private Sub Command1_Click()a = 1b = 2c = 3Text1.Text = c > a + b Or b - 1 > c - 1 And

21、 c + a > a Xor b < c - 2End Sub11可以在窗體的通用部分聲明靜態(tài)變量。 F12使用聲明語句建立一個變量后,Visual Basic會自動對數(shù)值類型的變量賦初值0,變長的字符串被初始化為一個零長度的字符串“”,定長字符串用空格填充 T.13將焦點主動設(shè)置到指定的控件或窗體上應(yīng)采用SetFocus方法。 T14當圖像框Image控件的Stretch屬性為True時,Image控件能自動調(diào)整自己的尺寸與顯示的圖片匹配。 F15在標準模塊中用Public聲明全局變量,使變量在整個應(yīng)用程序中有效。 T四、讀程序?qū)懡Y(jié)果 1讀完下面的程序,寫出結(jié)果。Private

22、Sub Form_Click() Dim str1 As String, str2 As String Dim str3 As String, i As Integer str1 = "e" For i = 1 To 2 str2 = UCase(str1) str1 = str2 & str1 str3 = str3 & str1 str1 = Chr(Asc(str1) + i) Next i Print str3End Sub執(zhí)行上面的程序代碼,單擊窗體后在窗體上顯示的結(jié)果是 。2在窗體上畫一個文本框,然后編寫如下事件過程:Private Sub Fo

23、rm_Click()x = InputBox("請輸入一個整數(shù)") x在前面沒有被定義過Print x + Text1.TextEnd Sub程序運行時,在文本框中輸入456,然后單擊窗體,在輸入對話框中輸入123,單擊“確定”按鈕后,在窗體上顯示的內(nèi)容是:_3. 當在文本框Text1中輸入"ABC"三個字符時窗體上顯示的是什么。Private sub Text1_Change()Print Text1.TextEnd Sub_4. Private Sub Command1_Click( ) Text1.Text=”努力”End SubPrivate S

24、ub Command2_Click( )Text1.Text=”學習”End Sub單擊Command2按鈕,又單擊Command1按鈕,在文本框中顯示什么?_5 Option ExplicitPrivate Sub Command1_Click() Static S As Integer Dim i As Integer S = 1 For i = 1 To 5 S = S * i Next i Print SEnd Sub在窗體上顯示的內(nèi)容是:_6 Private Sub Form_Activate() Print "aa" & "bb",

25、-5 * 6, Not 2 <= 3 Print "aa" & "bb" -5 * 6; Not 2 <= 3 Print Print "30+60", Print 30 + 60 ? ?"30+60" 30 + 60End Sub 7 S = 0: T = 0: U = 0For X = 1 To 3 For Y = 1 To X For Z = Y To 3 S = S + 1 Next Z T = T + 1 Next Y U = U + 1Next XPrint S; T; U五、看程序

26、填空題1、在窗體上畫1個命令按鈕,起名稱為Command1,然后編寫如下事件過程: Private Sub Command1_Click() Dim a(1 To 100) As Integer For i = 1 To 100 a(i) = Next i Max = a(1) Min = a(1) For i = 1 To 100 If Then Max = a(i) End If If Then Min = a(i) End If Next i Print "max=" Max, "min=" MinEnd Sub程序運行后,單擊命令按鈕,將產(chǎn)生10

27、0 個1,1000范圍的隨機整數(shù),放入數(shù)組a中,然后查找并輸出這100個數(shù)中的最大值max和最小值min,請?zhí)羁铡?. 執(zhí)行下面的語句后,所產(chǎn)生的信息框的標題是_。a=MsgBox(AAAA,5,BBBB)3. 下面程序運行后,輸出的結(jié)果是_。For J= 1 To 10 A(J)=2*J B(J)=A(J)*2Next JPrint B(J/2+0.1)End4. 計算1*2*3*.*3000,當積大于3000時停止計算。請在_處將程序補充完整。Private Sub FormClick()Dim t As Single,j As Integer J=1 For j=1 To 3000 _

28、If t3000 Then Exit ForNext jDebug.Print j,t End Sub六、編程題1 設(shè)計一個計時程序。該程序用戶界面如圖所示,由一個文本框(Text1),和兩個按鈕:命令按鈕1( Command1)按鈕,命令按鈕(Command2)組成。程序運行后,用戶按開始按鈕,則開始計時,文本框中顯示秒數(shù),按停止按鈕,則計時停止。單擊窗口則退出。Option ExplicitDim iPrivate Sub Command1_Click( )i=1 1 Timer1.Interval=10002.Enabled=True 2 End SubPrivate3Command2_

29、Click( ) 3 Timer1.Enabled=4 4 End subPrivate Sub Form_Click( ) 5Me 5 End SubPrivate Sub Form_Load( )Timer1.Enabled=6 6 Text1.7=8 7 End Sub 8 Private Sub Timer1_Timer( ) i=i+9 9 Text1.Text=10 10 End Sub2. 編一學號和密碼輸入的檢驗程序,對輸入的學號和密碼規(guī)定如下: (1).學號、密碼均為4位,密碼以"*"代替。(其中假設(shè)學號為:123 密碼為:321)(2)如果輸入正確則彈出

30、對話框,內(nèi)容:”歡迎使用”.輸入不正確彈出對話框,內(nèi)容:”學號密碼不正確,請請重新輸入”, 焦點定位在原學號文本框,總共的輸入機會只有3次,3次都不正確則彈出對話框,內(nèi)容:”你無權(quán)使用”,選擇"取消"停止程序的運行。3設(shè)計一個計算程序。該程序用戶界面如圖所示,由四個文本框:文本框1(text1)、文本框2(text2)、文本框3(text3)、文本框4(text4),和三個按鈕:命令按鈕1(command1)、命令按鈕2(command2)、命令按鈕3(command4)組成程序運行后,用戶按清除按鈕,則清除文本框中顯示的內(nèi)容,按計算按鈕,則計算三科平均成績。單擊退出按鈕則

31、退出。 Private Sub Command1_Click() Text1.Text = 1 1 Text2.2 = ""2 3.Text = "" 3End SubPrivate Sub Command2_Click() If Text1.4 = " " Or Text2.Text = 5Or Text3.Text = " " Then4 MsgBox "成績輸入不全!" 5 Else Text4.Text = (6 + Val(Text2.Text) 6 + Val(Text3.Text)

32、 /7 7 End8 8 End Sub Private Sub Command3_Click()Unload 99 10 Sub10 4以下程序判斷從文本框Text1中輸入的數(shù)據(jù),如果該數(shù)據(jù)滿足條件:除以3余2,除以5余3,除以7余4,則輸出;否則將焦點定位在文本框Text1中,選中其中的文本。 Private Sub Command_Click() X = Val(Text1.Text) If (1) Then Print XElse (2) (3) (4) End IfEnd Sub5設(shè)計一個歡迎程序。該程序用戶界面如圖所示。要求程序運行后,用戶選中粗體復選框時 “歡迎您!”幾個字的字體

33、變成粗體,用戶選中斜體復選框時 “歡迎您!”幾個字的字體變成斜體。若取消選中,則恢復原字體。按結(jié)束,則退出。6任給3個數(shù),求其中間數(shù),寫出程序代碼。參考答案:一、填空題1、 面向?qū)ο?事件驅(qū)動編程機制2、過程級變量 模塊級變量 全局級變量3、Visible ture(真)4. 確定(&E), Default ,true5. 事件6 3<=X And X<107 10 8 VB程序設(shè)計 VB Programming9創(chuàng)建應(yīng)用程序界面 設(shè)置屬性 編寫代碼 10屬性、text 11Label TextBox 12txtshow.text="GOOD WORK!"

34、; 13Click()、frm1.show14算術(shù)表達式 字符串表達式 關(guān)系表達式 布爾表達式 日期表達式 對象表達式 運算符15116True False17Sin(x)2+Sqr(x2-y2)/218Dim A(1To5,-2To6) As String19單擊 雙擊 裝載 多 響應(yīng)某個事件后所執(zhí)行的程序代瑪 cmd1 Click20完成某種特定的功能 對象名.方法名 Form1.Show21AutoSize Stretch二、單項選擇題1-5 DB ADB 6-10 BCDCC 11-15 BABCB16-20 CBC BA 21-25 DA DBB 26-30 DDCDB 31-35

35、BCCDB 36-39 BD CD 三、判斷題1 正確。2 錯誤。3 正確。4 正確。5 正確。6 正確。7 錯誤。8. int.sum 不正確。變量名中不能包括小數(shù)點。9. 變量名的長度最長可達255個字符。10. False 。邏輯表達式計算結(jié)果。11不正確。靜態(tài)變量為局部變量,只能在過程中聲明。12正確。13正確。14不正確。該屬性設(shè)為Ture時,Image控件不能自動調(diào)整自己的尺寸與顯示的圖片匹配,而可以使圖片自動擴展以適應(yīng)控件的尺寸。15正確。四、讀程序?qū)懡Y(jié)果 (共10分)1、 EeFF 2 結(jié)果為: 1234563 結(jié)果為 A AB ABC4 結(jié)果為: 努力5程序運行后,單擊窗體,輸出結(jié)果為:120。6. aabb -30 Falseaabb-30False30+60= 9030+60= 90 7. 14 6 3五、看程序填空題1、 Int(Rnd*1000) Max<a(i) Min>

溫馨提示

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

評論

0/150

提交評論