APP下载

基于GGB的拖动交互式练习题

2023-05-30蒋维

电脑知识与技术 2023年2期
关键词:输入框指令按钮

蒋维

关键词: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的工具、指令和脚本三种类型的结合使用,可以制作出许多交互式和探索式的课件效果。

猜你喜欢

输入框指令按钮
拍一拍,图片识文字
ARINC661显控指令快速验证方法
LED照明产品欧盟ErP指令要求解读
输入框设计中需注意的9个细节
坐标系旋转指令数控编程应用
一键将网页保存为PDF文件