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