蔣維



關鍵詞:GeoGebra;輸入框;按鈕;指令
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2023)02-0084-03
1概述
GeoGebra(簡稱GGB)= Geometry(幾何)+ Algebra (代數),是一款同時擁有處理幾何繪圖與代數運算能力的完全免費的、功能強大的、動態的數學軟件[1]。GeoGebra可免費用于學習、教學和考評,它不僅功能強大、使用簡單、交互性強,同時也支持多種語言,可適用于各種課程或項目的制作。可以從工具、指令(函數和命令)、腳本三個層次來使用其功能,其中腳本可以看成是由多個指令組合而成。GeoGebra工具和指令的配合使用可以實現許多功能:課堂動態演示、出題、出卷、交互、探索等。現在的學習都講究探索式學習即在做中進行學習(Learning by doing),這就要求做出的課件是能夠提供探索、互動和交互的,而交互是探究的重要途徑,GeoGebra中的交互可體現在多個方面,如:任何對象是可以選擇、拖動、變換的,利用變量和滑動條,以及動點、軌跡等。本文制作了一個拖動式交互練習題,進而對質數的性質進行探索,文中主要使用腳本制作出了一些更復雜的交互控制。
2 事件與腳本
2.1 事件
事件(Events)在GeoGebra 中主要指點擊或者改變對象屬性等某種操作的發生,比如:點擊按鈕、數字滑桿運動引起的數值變化、對象屬性中顯示條件的變化或對象位置的變化等,只要發生上述的操作,在GeoGebra中就可以說發生了事件,當事件發生時,就可以針對事件寫一些指令,這一系列指令稱為腳本。
2.2 腳本
腳本(Scripting)在GeoGebra中是指多條指令寫在一起,這些腳本也可以稱為程序,但這些腳本程序比一般意義上的程序要簡單,在GeoGebra中的腳本程序沒有一般意義上程序的循環、結構等復雜語句,在GeoGebra中理解腳本就是當某件事件發生時需要做的事情,有時也可能需要做多件事情,這時就需要把多條指令寫在一起,這就是GeoGebra中的腳本。
2.3 針對事件寫腳本
腳本可以寫入任意對象的屬性中,在對象的屬性里面選擇腳本(Scripting)。腳本里會列出三種事件:單擊時(On Click)、更新時(On Update)、全局(Global)[2]。有的對象的腳本里可能只有On Click、On Update 兩種事件中的一種。On Click、On Update是針對具體的對象,Global不針對某一個具體對象,它是全局使用的。On Click、On Update腳本用的是GGB中的指令,Global腳本需要用JavaScript編寫[3]。編寫Global腳本需要有一定的編程基礎,所以在GeoGebra中編寫的腳本大多數是針對On Click、On Update 兩種事件來編寫。
3 程序的設計與實現
3.1 程序實現的目標
程序的主要目標是實現用戶能在輸入欄中輸入任意數,把輸入正確的數拖動到對應的方框中,在輸入和拖動的過程中,程序會根據用戶所做的選擇進行對錯判斷、界面變化等。
3.2 程序主要的處理工具和指令
(1) 輸入框:用戶在輸入框中輸入數據。
(2) 按鈕:確認用戶輸入的內容和刷新界面內容并清除拖入區域框中的數據。
(3) 文本:接收輸入框中輸入的數據以及顯示各種提示語。
(4) 如果\if()指令:if(,)/如果(<條件>,<結果>),如果條件滿足,創建一個對象;如果條件不滿足,創建一個未定義對象。if(,,)/如果(<條件>,<結果>,<否則>),如果條件滿足,創建一個對象;如果條件不滿足,創建另一個對象[4]。所有對象必須是相同的類型。本文用if()指令判斷各種文本對象是否顯示以及對一些對象的值進行選擇設置等。
(5) 角點\Corner()指令:角點(<文本>,<角點數字1 —4>),創建文本對象的角點坐標點(數值n=1,2,3,4),角點的編號按逆時針方向排序,起點是左下角[5]。例如:text1 = "確認輸入",文本text1四個角點A、B、C、D 的坐標值如圖1所示。
3.3 程序的設計
本程序設計過程:第一,界面上有一個輸入欄,輸入欄由輸入框和確認輸入按鈕組成,用戶可以在輸入框中輸入任意的數值,按確認按鈕后,如果輸入的數值不符合要求,會提示“重新輸入”,當輸入正確數值按“確認輸入”按鈕后會形成數字文本,同時輸入欄隱藏;第二,拖動數字文本到對應的方框中,如果數值拖入正確的方框則會提示“放置正確”,同時輸入欄出現,可繼續輸入下一個數值,如果拖放位置錯誤則會提示重新“進行選擇”,直到數字拖入正確位置;第三,操作過程中可隨時點擊界面上的“刷新”按鈕,清空界面上所有的內容回到程序開始的界面。
3.4 程序的實現過程
(1) 在繪圖區用多邊形工具繪制出兩個矩形框poly1和poly2,指令欄中分別輸入:質數= "質數",非質數= "非質數",把名稱文本拖動到兩個矩形框合適的位置,標注出兩個矩形框對應的名稱。指令欄中分別輸入:正確1 = "正確",錯誤1 = "錯誤!請重新選擇!",正確2 = "正確",錯誤2 = "錯誤!請重新選擇!",為兩個矩形框標注好提示語,拖動創建好的提示語文本放置在對應矩形框的適當位置。文中所有的文本也可用文本工具制作。
(2) 指令欄中依次輸入:A = (3,5),text1 = "",輸入提示= "",a = 2。其中點A的坐標值根據實際情況設置,用于對象的附著,a用于存放輸入的數據,text1用于存放a轉換為文本后的數字文本,文本"輸入提示" 用于用戶輸入數據格式錯誤時的提示,輸入提示語可放置于界面上的適當位置或附著于A點上。
(3) 指令欄中輸入指令:InputBox1 = 輸入框(a),創建輸入框后可打開其屬性框進行輸入框格式的設置,此處是把對象的顯示標簽功能取消,也可以在屬性框中設置輸入框的標題名為$$。輸入框也可通過工具創建,創建時關聯對象選擇變量a 即可。
(4) 指令欄中依次輸入:button1 = 按鈕("$確認$"),button2 = 按鈕("$刷新$"),創建2個按鈕,按鈕也可用工具創建,創建按鈕后可打開其屬性框進行按鈕格式的設置。此處設置按鈕的標題時引用了兩個$符號,把標題放置"$$"中間代表標題的顯示模式引用了LaTex公式的形式,還可以使用LaTex公式語法對標題進行屬性的設置,如:button1 = 按鈕("$\red{確認}$"),此時按鈕的標題被設置為紅色;button1 = 按鈕("$\large{\red{確認}}$"),此時按鈕的標題設置為紅色并且字體變大。設置對象標題時可根據實際情況進行LaTex的引用。
(5) 指令欄中依次輸入:對錯顯示= false,數字顯示= true,輸入欄顯示= true,創建3個布爾變量。
(6) 指令欄中依次輸入:設置顯示條件( Input?Box1 , 輸入欄顯示),設置顯示條件( button1, 輸入欄顯示),用"輸入欄顯示"布爾變量控制輸入欄的顯示與否。
(7) 打開button1腳本編輯,在"單擊時"標簽下輸入以下腳本:
if(是否為整數(a)&&a>1&&數字顯示,復制自由對象(text1))
if(是否為整數(a)&&a>1,{賦值(text1,文本(a)),設置坐標(text1,x(A)+0.5,y(A)+0.5),賦值(輸入欄顯示,false), 賦值(對錯顯示,true),賦值(輸入提示,"")},{賦值(對錯顯示,false),賦值(輸入提示,"請輸入大于1的整數!"),賦值(InputBox1,"")})
腳本中的第二個if函數的作用:單擊“確認”按鈕時判斷輸入的數據是否正確,如果正確,把數字轉換為文本存于text1中,把text1放置在繪圖區固定位置,把“輸入欄顯示”布爾變量的值設為false,此時輸入欄隱藏,把“對錯顯示”的布爾值設為true,讓拖動對象到對應方框時的對錯提示語可顯示,同時隱藏數據輸入錯誤時的提示語;如果輸入錯誤,讓拖動對象到對應方框時的對錯提示語不可顯示,界面上出現輸入數據錯誤提示語,同時把輸入框中的數據清空,執行過程如圖2、圖3所示。
腳本中的第一個if函數的作用:當text1拖入正確方框時,輸入欄出現(輸入欄出現的條件會在第(9)中設置說明),繼續輸入下一個正確數字并按確認按鈕時,復制text1內容以保存當前的數字,復制的副本對象會放置在方框中text1被拖動到的位置處,接著執行第二個if函數,text1則可以繼續接收下一個數據,再進行下一輪的拖放交互,效果如圖4所示。if函數條件中的"數字顯示"布爾變量是用于控制方框中所有復制對象的顯示與否的。
(8) 指令欄中依次輸入:
設置顯示條件( 正確1, 角點(text1, 1)∈poly1 ∧ 角點(text1, 2) ∈ poly1∧ 角點(text1, 3) ∈ poly1∧ 角點(text1, 4)∈poly1∧ 是否為質數(a) ∧ 對錯顯示)
設置顯示條件( 正確2, 角點(text1, 1) ∈ poly2 ∧ 角點(text1, 2) ∈ poly2 ∧ 角點(text1, 3) ∈ poly2 ∧ 角點(text1, 4) ∈ poly2 ∧ (?是否為質數(a)) ∧ 對錯顯示)
設置顯示條件( 錯誤1, 角點(text1, 1) ∈ poly1 ∧ 角點(text1, 2) ∈ poly1 ∧ 角點(text1, 3) ∈ poly1 ∧ 角點(text1, 4) ∈ poly1 ∧ (?是否為質數(a)) ∧ 對錯顯示)
設置顯示條件( 錯誤2, 角點(text1, 1)∈poly2 ∧ 角點(text1, 2) ∈ poly2∧ 角點(text1, 3) ∈ poly2∧ 角點(text1, 4)∈poly2∧ 是否為質數(a) ∧ 對錯顯示) 設置對象的顯示條件也可以在對象的屬性框中進行。此處指令是設置拖動對象入對應方框時的對錯提示語,通過判斷數字文本四個角點是否都在方框內(即判斷對象是否拖入方框)和數據是否滿足所設條件而進行提示語句的顯示選擇,此處“對錯顯示”布爾變量的主要作用是在于無論何時點擊“刷新”按鈕都能清空界面上的拖動對錯的提示語。
(9)打開“正確1”“正確2”的腳本編輯,在“更新時”標簽下輸入以下腳本:
if(角點(text1, 1) ∈ poly1 ∧ 角點(text1, 2) ∈ poly1 ∧ 角點(text1, 3) ∈ poly1 ∧ 角點(text1, 4) ∈ poly1∧ 是否為質數(a) ,賦值(輸入欄顯示,true)) //正確1
if(角點(text1, 1) ∈ poly2 ∧ 角點(text1, 2) ∈ poly2 ∧ 角點(text1, 3) ∈ poly2 ∧ 角點(text1, 4) ∈ poly2 ∧ (?是否為質數(a)) ,賦值(輸入欄顯示,true)) //正確2
以上腳本也可寫入“錯誤1”“錯誤2”文本對象中,或者兩條指令合寫在一個文本對象的腳本中。此處指令的作用是當對象拖入方框時,對錯提示語發生更新事件從而執行腳本,腳本指令中的“賦值(輸入欄顯示,true)”,用于對象拖入正確方框時,可顯示輸入欄進行下一個對象的輸入。執行過程如圖4、圖5所示。
(10)打開button2腳本編輯,在“單擊時”標簽下輸入以下腳本:
刪除(數字顯示) //清空方框中的所有數字
數字顯示=true //可以在方框中寫入數據
輸入欄顯示=true //顯示輸入欄
對錯顯示=false //清除拖動對錯提示信息
text1="" //清空text1內容,重新接收新數據
輸入提示="" //清除輸入對錯提示語
賦值(InputBox1,"") //清空輸入框
設置坐標(text1,x(A),y(A)) //重新固定text1 數據文本的位置
執行過程如圖6所示。
4結論
本文利用GeoGebra中的工具、指令和腳本實現了拖動式交互式練習題,文中使用指令制作的對象,如輸入框、按鈕等,可選用對應的工具制作,也可在此基礎上把程序稍做修改,制作為拖動幾何圖形進行分類,或是制作成一個拼圖游戲等。GeoGebra的工具、指令和腳本三種類型的結合使用,可以制作出許多交互式和探索式的課件效果。