林智海
以点击“输出图形”按钮输出图1为例子,该例子需要对For结构、Space函数、String函数等基础程序知识结构要有较深的认识和理解,并借助传统数学的图形化、解析化的教法,加深对VB程序设计的核心思想的理解。
首先在认真观察和思考该效果图的时,我们应该把握好在宏观的解题思路上,要有化繁为简,分步式的分解解题思路。图形是由1到9的结构,在对For结构有基本认识的条件下,该题可以直接简化成1到3的结构,因此将结果先分步简化成如下:
一、输出三行“1”:
For i=1 to 3
Print “1”
Next
二、空格变量--Space()函数
1、结论图化:
第二步的思路,我们需要加入空格函数Space(num),num参数表示的是空格的个数,可简单利用稿纸上为其添加纵横网格线后,经过初步观察和画图后可知第一行有2个空格,第二行有1个空格,第三有0个空格,如图2所示。
2、将结论图转换成关系模型图(模型化)
根据结论图的分析可知Space(num)函数中的空格个数的值为2,1,0,而行变量的值为1,2,3,将自变量i代表行变量,因变量F(i)代表空格个数,可以直接生成3的二者的关系模型图,如图3所示
3、将关系模型图转换成坐标图(坐标化)
在坐标轴上建立起自变量i和因变量函数F(i)的点
当自变量i=1时,因变量F(i)=2,确立A点(1,2)
当自变量i=2时,因变量F(i)=1,确立B点(2,1)
当自变量i=3时,因变量F(i)=0,确立C点(3,0)
4、利用一元二次方程组知识求解AB连线的方程组,并验证C点是否在线上(解析化)
利用传统数学中的坐标轴体系来解析出AB线的方程组。当i=1时,F(i)=2,确立A点,当i=2时,F(i)=1,确立B点,连接AB,求解直线AB故为二元一次方程组,设F(i)=a*i+b,列出AB点表达式:(1)2=a*1+b(2)1=a*2+b
求解得a=-1,b=3,故F(i)= -1*i+3 即F(i)= 3-i,还要验证C点是否在AB线上,将C点值代入F(i)= 3-i,表达式成立,因此ABC三点位于同一条直线上,将解析后的表达式带入到空格函数为Space(3-i),如图4所示,更改代码为:Print Space(3-i)& “1”
三、数字“1”变量--String()函数
1、由实际问题建立关系模型图
建立行变量与1的个数关系模型图,参照图3。
2、将关系模型图转换成坐标图,参照图4
当自变量i=1时,因变量F(i)=1,确立A点(1,1)
当自变量i=2时,因变量F(i)=3,确立B点(2,3)
当自变量i=3时,因变量F(i)=5,确立C点(3,5)
3、求解AB连线的方程组,并验证C点是否在线上
连接AB点,设F(i)=a*i+b,求解得a=2,b=-1,故F(i)= 2*i-1,将C点值代入F(i)= 2*i-1,表达式成立,因此ABC三点位于同一条直线上,文本函数为String(2*i-1,”1”),更改代码为:Print Space(3-i)& String(2*i-1,”1”)
4、思路归纳为:实际问题—图形化—坐标化—解析化
四、类比学习--通过Chr()挖掘String()函数character参数
接下去的问题也有一定困难,发现问题并不是利用数形结合来查找表达式,这里就要回到对String函数本身的继续深入研究和挖掘上了,Chr函数为Chr(charcode),charcode即字符码,从Ascii表中数字1对应的字符码为49。而String函数为String(number,Character),里面有两个参数,通过类比实例操作演示我们可以发现String函数中的Character参数的ASCII值的转换字符的功能,因此图形输出1,2,3的值,要转换成Character参数的ASCII值49,50,51,要找出Character参数字符ASCII值与行自变量i的关系,如图7所示。
1、由实际问题建立关系模型图(参照图3)
行自变量i:1,2,3
ASCII因变量F(i):49,50,51
2、将关系模型图转换成坐标图(参照图4)
在坐标轴上建立起自变量i和因变量函数F(i)的点:A点(1,49);B点(2,50);C点(3,51)
3、求解AB连线的方程组,并验证C点是否在线上
连接AB,设F(i)=a*i+b,求解得a=1,b=48,故F(i)= i+48,因此1的个数的表达式为i+48,将C点值代入表达式成立,因此ABC三点位于同一条直线上,故函数为String(2*i-1,i+48),更改函数表达式为:Print Space(3-i)& String(2*i-1,i+48)
五、For的倒序写法“For i=3 to 1 Step -1”,更改For循环中的末值(由“2”改为“8”和“3”改为“9”)以调整输出的行数,在输出时,发现报错信息,观察容易发现Space(3-i)中的数据会出现负值现象,故可将3改为9或比9大的数字即可
纵观以上的解题过程,在对For结构、Space函数、String函數等基础程序知识了解的基础上,并借助传统数学的图形化、解析化的教法,我们在对解决问题既要在宏观上要有化繁为简,逐步分化的能力,也要有在微观上大胆怀疑,小心求证,探究函数内部结构及运行机制的研究精神,VB的教学核心是发现问题、分析问题、解决问题能力的提升,是传统数学逻辑思维的具体化和应用化的体现。
(作者单位:福州第二技师学院)