林智海
以點擊“輸出圖形”按鈕輸出圖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的教學核心是發現問題、分析問題、解決問題能力的提升,是傳統數學邏輯思維的具體化和應用化的體現。
(作者單位:福州第二技師學院)