尉文剛

[摘 ? ? ? ? ? 要] ?中職計算機專業班的《數據庫應用基礎—Visual ?FoxPro(第三版)》教學中發現學生在For循環語句的理解及應用環節存在較大困難,尤其是用For循環語句進行程序設計。結合學生實際學情,詳細分析問題原因,通過深入剖析For循環語句格式,探索總結在用For循環語句進行程序設計時將對For循環語句格式的理解與實際問題的解決方法巧妙結合的方法心得,提出“Visual FoxPro中For循環的理解及應用”心得來解決教學中發現的問題,并應用于實踐,在教學實踐中取得了良好的效果。
[關 ? ?鍵 ? 詞] ?循環結構;循環嵌套;循環控制變量
[中圖分類號] ?G633.67 ? ? ? ? [文獻標志碼] ?A ? ? ? ? ?[文章編號] ?2096-0603(2020)03-0148-02
筆者根據教學中對Visual FoxPro提供的程序結構的認識和對For循環語句格式的理解,以“每行8個數輸出500以內的素數”案例為例,談談從For循環語句格式中學應用的幾點心得。Visual FoxPro提供了3種基本的程序結構:順序結構、選擇結構和循環結構。循環結構的程序可以根據指定的條件重復執行某個程序段。Visual FoxPro提供了3種循環結構:基于條件的循環(Do-while循環)、針對記錄的循環(Scan循環)和指定次數的循環(For循環)。在程序設計時如果事先知道循環執行的次數,則可以使用For循環語句編寫程序。
一、For循環語句格式理解
(一)For循環語句格式
For<循環控制變量>=<初值> To<終值>[Step步長]①
<語句組> ? ?②
Endfor
(二)對For循環語句格式的理解
1.For和Endfor分別表示For循環語句的開始和結束,且必須成對出現,缺一不可。
2.①處通過“循環控制變量”的“初值”“終值”及值變化的“步長”(缺省“Step步長”,則步長為1)確定了循環執行的次數。確定方法:“循環控制變量”的值從“初值”以步長為幅度遞變到“終值”,循環控制變量在區間(初值,終值)有多少個值循環將執行多少次,例如:For i=1 to 9 Step 2中,i從1開始以2為步長遞增到9,確定該循環執行的次數為5次(即i=1,3,5,7,9時執行)。
3.②處“語句組”決定循環執行的操作(完成的具體任務),當循環控制變量的值在“初值”-“終值”確定的范圍內時執行“語句組”;否則,不執行“語句組”,執行Endfor之后的語句。
4.有些應用中①處“循環控制變量”只起控制循環執行次數的作用,有些應用中①處“循環控制變量”不僅起控制循環執行次數的作用,還參與完成3中②處循環所執行操作任務的實現,本文所舉的案例屬于這種情況。
(三)循環嵌套
循環嵌套是邏輯程序中常用的方法,在一個循環語句的語句組中又包含另一個循環語句,稱為循環嵌套。如果完成一個任務需要進行重復的操作,并且每個操作本身又需要進行重復的操作,這種問題常常使用循環嵌套來解決。出現循環嵌套的循環語句在執行時內層循環作為外層循環“語句組”的一部分,按照實際循環語句的執行流程執行。在程序設計時,可以根據實現任務所確定的算法選擇循環嵌套的實際情況,本文所舉案例的循環嵌套是在For循環的“語句組”中嵌套了一個For語句。
二、For循環語句應用案例——每行8個數輸出500以內的素數
(一)案例輸出結果
(二)案例分析
1.分析該案例任務:(1)需要依次對500以內的每一個數i重復進行如下操作:判斷i是否是素數,如果i是素數,則按照案例要求輸出;如果i不是素數,則不輸出。(2)判斷i是否是素數時,根據選擇的算法,需要依次對2-(i-1)之間的每一個數j重復進行如下操作:如果i能被j整除,則i不是素數;如果i不能被j整除,則i是素數。綜上分析,該案例的任務需要使用循環嵌套來實現:(1)中是外層For語句;(2)中是內層For語句。
2.根據對For循環語句格式的理解,結合案例任務操作的對象——500以內的素數,在設計外層For循環語句格式時:首先,使循環控制變量i初值為2,i按照正整數變化規律遞增至500,使其在遞增過程中依次代表500以內的正整數,即:For i=2 to 500。其次,在<語句組>中實現:(1)判斷i是否為素數;(2)若是,按要求每行8個數輸出素數i。
3.判斷i是否為素數實現方法:(1)程序中引入標記i是否為素數的變量yn,若i是素數,yn值為1,否則yn值為0。因i初值為2是素數,故yn初始值為1(yn=1出現在外層For語句的“語句組”中)。(2)設計內層For語句格式,確定i是否為素數:若i能被2至i-1內的任意一個數j(j的引入是為了判斷i是否為素數,內層For語句格式為:For j=2 to i-1)整除(內層For“語句組”:if i/j=0),則i不是素數,yn值變為0(if語句的“語句組”實現:yn=0);否則i為素數,yn值不變。
4.每行8個數輸出素數實現方法:(1)程序中引入計數器作用的變量ct,目的是實現“每行輸出8個數”的案例要求,其初始值為0(賦值操作ct=0在外層For語句之前完成)。(2)每不換行輸出2中的素數i(i),ct值增一(ct=ct+1),如果ct是8的整數倍(if ct%8=0),則換行()。由于(2)處操作的對象是2中判斷出的素數i,故該處操作的實現語句是外層For語句的“語句組”。
5.執行一次外層For語句的“語句組”(2-3)后,循環控制變量i值增1,按照For語句執行流程循環執行2-3,直至循環控制變量i值遞增為501(501>500)時終止循環的執行。
(三)案例的實現程序
*For語句應用——每行8個數輸出500以內的素數
CLEAR
“500以內素數為:”
ct=0 ? ? ? ?&&計數器作用
for i=2 to 500 ?&&外層For循環開始
yn=1 ? ? ? ?&&標記i是素數
for j=2 to i-1 ?&&內層For循環開始
if i%j =0 ? ?&&判斷i是否為素數
yn=0 ? ? ? &&標記i不是素數
endif
endfor ? ? ? &&內層For循環結束
if yn=1 ? ? ?&&此時i是素數
i ? ? ? ? &&不換行輸出素數i
ct=ct+1 ? ? ?&&統計輸出素數i的個數
if ct%8=0 ? ? &&按要求每行8個數輸出
endif
endif
endfor ? ? ? &&外層For循環結束
return
從上述內容我們可以看出,在For語句格式的理解中,我們從四個方面對For語句格式做了徹底認識;在循環嵌套的理解中我們根據出現循環嵌套的實際情況對循環嵌套做了深刻的理解;在案例中我們緊扣For語句格式的理解,實現案例任務時巧妙地與解決實際問題的方法相結合,達到準確深刻地理解知識點、巧妙高效地解決實際問題的目的,在實際教學中取得不錯的教學效果。
參考文獻:
[1]周察金.數據庫應用基礎:Visual FoxPro[M].3版.高等教育出版社,2012:184-188.
[2]周察金.C語言程序設計[M].高等教育出版社,2002:117-122.