返回列表 回复 发帖

表格中如何用命令进行迭代?

表格迭代分两种:
一是:用表格本身的四则运算迭代,这种迭代不用复制命令,直接拖选可以完成迭代
二是:用命令进行递推,这种情况必须把命令和数据一起进行迭代,也就说说要在数据的旁边复制出命令,然后让数据和命令(即递推关系)一起迭代。


在表格中,通过复制命令完成迭代
简单的讲就是迭代时命令和迭代一起伴行。如果不这样做,几何变换就在表格中实现不了迭代。
即横向迭代一次,完成表格命令的复制
接着选中两者,进行纵向迭代。这样命令和数据一起迭代,最终实现几何旋转迭代。
实例如下:

表格迭代旋转30度.ggb (3.1 KB)

迭代与命令同行

太高深了,看不懂啊。
62# room901


这软件就是没几何画板浅显。我第一天看这个软件时就说过:ggb不可能像几何画板那一普及的。今天我还是这么说。因为如果只是用它的画图功能,ggb超不过几何画板。如果要用ggb的代数功能能,命令又太多。如果要用它的编程功能,那就更陌生。所以ggb就目前的模式,要普及难。ggb的脚本又不带循环语句,只有js脚本有。所以ggb的脚本语言就要去学校js语言。因此我不知道ggb的定位是什么。网上说ggb获得了大奖,以此来说明ggb很行,这让我想起了教师行的一个经典笑话:
   “奉天承运,皇帝诏曰,封-----你为骨干教师”,从此就自以为是,以为自己真很骨干了。
如何在电子表格中记录命令:
下面以在表格中记录rotate[]命令为例:
1.表格的A1,什么都不要输入,让其为空
2.在A2中输入rotate[A1,30度]
这时表格的A2中显示的就是命令,而不是数字。这种记录下来的命令具有递推功能。通过拖放可以把命令的规律传递给其它的数据。
3.表格的四则运算不用记录,可以自动执行。
4.命令trasnlate[](平移),本质上是数在做加法运算,所以不用在表格中记录,它可以自动复制到其它数据上去。
表格法迭代画线段实例:
1.横向拖动,复制点变换的命令
2。横向拖动复制线段变换的命令
3.纵向拖动,进行线段迭代。
看下面的实例就清楚了。

跌代画线段.ggb (8.04 KB)

如何在单元格中输入命令

表格中输入迭代指令,以迭代线段。这可以算是我的表格迭代法的学习总结吧。
1.编程迭代,对绝大部分人来说是一种不可接受的方法。
2.转而寻找迭代的替代产品----这就是表格迭代,表格迭代可以替代编程迭代。
3.表格迭代关键是要注意:跌迭代时一定要把命令一起迭代。
4.如果命令是有四则运算构成的命令,则可以直接迭代。
5.如何手工输入命令:
如要在表格中输入rotate[A.30度],我们不希望在表格中产生数值,而希望表格记录这个命令,办法如下:
首先需要一个空单元格,如为A10,这个单元格是空的。
其次,在选定一个单元格如A100,在A100中输入:"rotate[A10,30度]"(加个英文引号,有时不加也可以。我学习ggb的js脚本发现,ggb的对象的方法,中输入参数都要用单,或双引号),这样就在A100中记录下了命令。这个命令就是你的递推规律。跌代就靠的是这个命令。
另右键菜单的记录到表格是用来追踪点的痕迹的命令,与这里提到的迭代无关。
此外,也可以用横向拖动一格,复制命令的的方法替代手工输入。
还有就是表格可以接受命令,但不接受语句,如输输入:do... while语句表格无法识别。
6.表格迭代的足限:
第一,做成的ggb文件比编程出来的文件大
第二,如,我要跌代1000次,难道我要去拖地表格到1000行的位置吗?
这个问题我还没找到解决的办法。
ggb的资料太少了,官方论坛,官方手册也是空空的。下面的动画只控制了旋转角,跌代次数用表格控制还在研究中。编程控制迭代次数显然没丝毫的问题。
学习ggb比学习gsp困难n倍,没资料,就连官方手册都基本是裸奔。这一点真的远不如gsp做的好。所以学习这个ggb,别去指望找资料,自己反复的研读官方手册吧。包括去官网反复看。
经测试,感觉迭代和几何画板一样,只能直接对点作用。也就是说是通过对点的控制去完成迭代的。
不是所有命令都可以表格迭代的,如polygon[],多边形命令就不能用了迭代。
-----------------------------
我也是在摸索中,各位网友你有好的经验望跟帖,别保守。如有错误,望指出。我只是在学习。不是什么什么教程哈。贴出来就是交流之意。不代表我说的是正确的。

表格中手工输入迭代指令跌代线段.ggb (7.37 KB)

迭代三角形.ggb (11.11 KB)

function ggbOnInit() {ggbApplet.rigisterAddLisener("triangle()")}
function triangle(){
n0=ggbApplet.getValue("n")
t0=ggbApplet.getValue("t")
if (ggbApplet.exists("A")&&ggbApplet.exists("B")&&ggbApplet.exists("C")){
  cmd1="polygon[A,B,C]"
  ggbApplet.evalCommand(cmd1)
  for(i=0;i<n0;i++){
     cmd2="rotate["+cmd1+","+t0+"]"
     ggbApplet.evalCommand(cmd2)
     cmd1=cmd2
  }
}
else alert("请先画出A,B,C三点")
}
---------------------------------------
上面是迭代三角形的代码。
下面是源文件

迭代三角形.ggb (11.11 KB)

循环语句练习:
等分圆周
其实就是等差数列的应用
学习到今天,对ggb算是找到一点 点感觉了。这东西不夹点循环语句还真不好办事。

突然想起一个问题:
上面我也提到过,如果用表格迭代,假如我要跌代5000次,不至于夸张的要把表格拖动到5000行吧。
有没有什么办法解决呢?
1.表格迭代比编程迭代直观。并且表格中填入的命令是字符串。
2.因此我想,是不是可以这样来构造迭代:在表格里面填写基本的迭代数剧,用编程的方式去填表。编写填表的程序要简单的多。因为数据是一个一个的从上往下填,这种程序还是比较容易实现的,ggb提供了基本的填表,取表命令。我想这样做应该是可以的。
3.抛开表格,只用编程去完成迭代,我总是觉得效率很低下。因此是不是可以考虑双向结合去解决迭代问题呢?同样抛开编程,只用表格迭代,是不是工作显得有点毛躁。过于复杂的迭代可能还不顺手。

闪烁的等分圆周(编程练习).ggb (11.03 KB)

表格迭代 等分圆周.ggb (7.22 KB)

void setLayer(String objName)        3.2        Sets the layer of the object
-----------------------------------------------------------
官方的javascript手册也有错误,上面那句就是错的。应为
void setLayer(String objName,integer)        3.2        Sets the layer of the object
意思是设置某对象位于第几层
以下是官网地此
(错误源)http://wiki.geogebra.org/en/Reference:JavaScript
如何向电子表格填值,取值?用ggb自带的命令,麻烦,多余。
你只要在命令框中输入:
A1=123,
A2="HELLOW"
就完成了填值。
要取值如下:
T=A1
U=A2
这就完成了填值,和取值。并且在js脚本中这种用法也是对的。
命令成为了多余的东西。
返回列表