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