版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第6章程序設(shè)計程序文件的建立與運行
程序的控制結(jié)構(gòu)過程程序設(shè)計7.1程序文件的建立與運行7.1.1程序文件的建立1.命令方式建立程序文件
MODIFYCOMMAND[<程序文件名>]
功能:打開程序編輯窗口,修改或創(chuàng)建程序文件。
<程序文件名>指定修改或創(chuàng)建的程序文件名。命令程序文件的擴展名是.PRG。2.在程序編輯窗口中輸入命令
[例]編寫兩個變量的加法運算程序。步驟1:在命令窗口里輸入:
MODIFYCOMMANDCX1
步驟2:在程序編輯窗口輸入如下6條命令。
CLEAR&&將屏幕輸出窗口內(nèi)容清空
a=12&&將數(shù)值12賦值給變量ab=18&&將數(shù)值18賦值給變量bc=a+b&&將變量a與b的和計算出來,賦值給變量c?a,b,c&&輸出變量a、b、c的值
RETURN&&表示程序結(jié)束。
在輸入程序時,請注意以下幾點:
a.一個命令語句中只能有一個命令動詞;
b.每輸入完一個語句按“回車”鍵表示該語句結(jié)束;
c.每一個程序最后一般應(yīng)有一個結(jié)束語句,以表示該程序的結(jié)束。
3.程序文件的保存、打開與關(guān)閉(1)程序文件的保存
按快捷鍵Ctrl+W將文件進行保存退出?;颍?)程序文件的打開
在命令窗口里,利用“MODIFYCOMMAND<程序文件名>”命令打開指定程序文件,進行編輯修改。(3)程序文件的關(guān)閉
a.單擊菜單【文件(F)】→【關(guān)閉(C)】命令;
b.單擊程序編輯窗口右上角的【×】關(guān)閉按鈕;
c.在“命令”窗口里輸入命令:CLOSEALL;
d.按快捷鍵Ctrl+W,保存并關(guān)閉程序文件。7.1.2
程序的運行
命令方式運行程序
DO<程序文件名>
功能:將指定的程序文件調(diào)入內(nèi)存并運行。
說明:
a.默認(rèn)程序擴展名為.PRG,可不必輸入;
b.該命令可在命令窗口里輸入執(zhí)行,也可以出現(xiàn)在另一個程序文件中,后者可實現(xiàn)在一個程序中調(diào)用另一個程序。如在命令窗口里輸入:DOcx1
執(zhí)行程序cx1后,將在屏幕輸出程序計算結(jié)果:
121830
在程序打開并且為當(dāng)前程序的情況下,單擊常用工具欄上【!】命令按鈕也可以執(zhí)行程序。7.1.3程序中的輔助命令1、程序書寫規(guī)則:
一行只能寫一條語句。每輸入完一個語句按“回車”鍵表示該語句結(jié)束。如果希望把一行語句分兩行寫,應(yīng)在第一行的尾部鍵入繼行符“;”2.程序注釋命令
VFP提供了3種程序設(shè)計注釋命令:格式1:NOTE<注釋內(nèi)容>
格式2:*<注釋內(nèi)容>
功能:使NOTE或*后面的內(nèi)容成為注釋內(nèi)容。格式3:[<命令>]&&<注釋內(nèi)容>
功能:<注釋內(nèi)容>對&&左面的命令做出解釋或給出運行結(jié)果,又稱為行尾注釋命令。
3.程序結(jié)束命令
格式1:RETURN
功能:返回到上一級模塊。如果本程序是以菜單方式或在命令窗口中調(diào)用執(zhí)行的,則返回到命令交互狀態(tài)即命令窗口。格式2:CANCEL
功能:結(jié)束程序運行,關(guān)閉程序中所有的文件和變量,返回到交互狀態(tài)即命令窗口。格式3:QUIT
功能:關(guān)閉VisualFoxPro,返回到操作系統(tǒng)
對一個獨立程序來說,一般在最后一條語句要用RETURN命令,以表示程序的結(jié)束。
7.1.4交互式的輸入命令
根據(jù)解決實際問題的需要,往往在程序運行的過程中,由用戶向程序輸入一些數(shù)據(jù)或信息,完成這種功能的一些命令稱為交互式輸入命令。
a.[<提示信息>]是在屏幕上出現(xiàn)的提示信息。它可以是字符串,也可以是字符型內(nèi)存變量,此時該內(nèi)存變量必須預(yù)先賦值。
b.用戶在鍵盤輸入的任何字符信息都被賦值給“內(nèi)存變量”。輸入的數(shù)據(jù)將作為字符型數(shù)據(jù)處理,不需要定界符括起來。
c.輸入完需要的信息后,按Enter鍵結(jié)束本命令的輸入。如果沒有輸入其他信息,只輸入一個回車鍵,將把一個空字符賦值給內(nèi)存變量。1.字符型數(shù)據(jù)輸入命令A(yù)CCEPT
ACCEPT[<提示信息>]TO<內(nèi)存變量>功能:暫停程序的執(zhí)行,等待用戶輸入一個字符串給變量
[例]編一程序,將學(xué)生表打開,在程序運行中輸入學(xué)生姓名,顯示指定姓名的人員記錄。該程序編寫步驟為:
步驟1:在命令窗口里輸入命令:
MODIFYCOMMANDCX2
步驟2:在打開的程序窗口里輸入如下語句:
NOTE該程序查找指定姓名的人員信息。
CLEAR
USErsb
ACCEPT“請輸入要查找的姓名:”TOname1
LOCATEFORALLTRIM(姓名)=name1
DISPLAY
RETURN
步驟3:按Ctrl+W保存該程序
步驟4:運行程序,在命令窗口里輸入:
DOCX2
請輸入要查找的姓名:李明a.[<提示信息>],同“ACCEPT”命令中的[<提示信息>]含義。b.用戶可輸入任何一個合法的數(shù)值型(N)、字符型(C)、日期型(D)、邏輯型(L)表達式,表達式的值并將該值賦值給內(nèi)存變量。c.如果輸入字符串信息,則必須加上雙引號或單引號定界符,如"ABC"。d.按Enter鍵結(jié)束輸入,系統(tǒng)將表達式的值賦值給內(nèi)存變量。e.如果輸入的是非法表達式,系統(tǒng)將提示重新輸入。2.表達式輸入命令I(lǐng)NPUT
INPUT[<提示信息>]TO<內(nèi)存變量>
功能:暫停程序的執(zhí)行,接受用戶輸入合法表達式并將表達式的值賦值給內(nèi)存變量。
[例]已知圓半徑為r,求圓面積s
假設(shè)圓的半徑為r,則計算圓面積s的公式為:s=πr2,計算圓面積公式的表達式為:3.14*r^2。程序編寫步驟如下:
步驟1:在命令窗口里輸入:
MODIFYCOMMANDCX3
步驟2:在打開的程序窗口里輸入如下語句:
*該程序用于計算指定半徑的圓的面積。
CLEARINPUT"請輸入圓半徑r="TOrs=3.14*r^2?"該圓半徑為:",r?"該圓面積為:",sRETURN
步驟3:按Ctrl+W保存該程序文件。步驟4:在命令窗口里輸入運行命令:
DOCX3
請輸入圓半徑r=18a.[<提示信息>]指定要顯示的自定義信息。若省略該參數(shù),則顯示信息“按任意鍵繼續(xù)……”。例如下列命令顯示一行有提示信息。WAIT"請稍后,程序?qū)⒗^續(xù)執(zhí)......“此時單擊鼠標(biāo)按鍵、按下鍵盤上任意一個按鍵,程序繼續(xù)執(zhí)行.3.程序暫停、等待接收單字符命令WAIT
WAIT[<提示信息>][TO<內(nèi)存變量
功能:暫停程序,用戶按任意鍵或者時間超過等待的秒數(shù)后,程序繼續(xù)執(zhí)行。如果包含[TO<內(nèi)存變量>]短語,將用戶所按鍵盤字符賦值給指定的內(nèi)存變量。@<行,列>用于指定在屏幕上輸出的行、列位置坐標(biāo)。SAY<表達式>用來在屏幕上輸出表達式的值。c.GET<變量>子句用來在屏幕上輸入指定變量的值,且必須與READ命令配套使用。d.DEFAULT<表達式>子句用來給GET<變量>子句中的變量賦初值。4.定位輸出與輸入命令
@<行,列>[SAY<表達式>][GET<變量>][DEFAULT<表達式>]
在屏幕上指定行、列位置輸出指定表達式的值,并且(或者)獲得所指定變量的值。
[例]將學(xué)生表打開,新增加一條記錄部分字段內(nèi)容,增加完成后在瀏覽窗口顯示數(shù)據(jù)表記錄內(nèi)容,關(guān)閉瀏覽窗口,屏幕出現(xiàn)等待信息,等待信息關(guān)閉,清屏并關(guān)閉數(shù)據(jù)表,程序結(jié)束。該程序如下:
CLEARUSE學(xué)生表
APPENDBLANK@3,8SAY"請輸入新職工信息:"@4,8SAY“學(xué)號:”GET學(xué)號
@5,8SAY"姓名:"GET姓名
@6,8SAY“性別:”GET性別
READBROWSEWAIT“程序?qū)⒃诎慈我怄I后關(guān)閉......。"USECLEARRETURN
[例]編寫一個程序,根據(jù)記錄號來修改學(xué)生表中的記錄。該程序如下:
CLEARUSE學(xué)生表
a=1@10,20say“請輸入記錄號”getareadgoa@12,20SAY“修改該同學(xué)的信息:"@14,20SAY“學(xué)號:”GET學(xué)號
@16,20SAY"姓名:"GET姓名
@18,20SAY“性別:”GET性別
READBROWSEUSERETURN7.2程序的控制結(jié)構(gòu)程序設(shè)計包括三種基本結(jié)構(gòu),即順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。7.2.1順序結(jié)構(gòu)
順序結(jié)構(gòu)是程序設(shè)計中最基本的結(jié)構(gòu),該結(jié)構(gòu)按照程序命令出現(xiàn)的先后順序依次執(zhí)行。其它結(jié)構(gòu)作為它的組成部分而存在于程序之中。事實上,程序中的命令如果不進行特殊說明,就自動按其前后排列順序執(zhí)行。我們以前介紹的幾個例題都是順序結(jié)構(gòu)程序設(shè)計題目。7.2.2選擇結(jié)構(gòu)
可分為簡單分支結(jié)構(gòu)、雙分支選擇結(jié)構(gòu)和多分支選擇結(jié)構(gòu)。簡單分支結(jié)構(gòu)
簡單分支結(jié)構(gòu)是由IF語句開頭,以ENDIF語句結(jié)束,中間由若干條命令組成的。
IF<條件>[命令序列]ENDIFa.如果<條件>的邏輯值為.T.,就依次執(zhí)行[命令序列],執(zhí)行完后就轉(zhuǎn)去執(zhí)行ENDIF之后的命令。如果<條件>的邏輯值為.F.,則直接轉(zhuǎn)到ENDIF之后的命令。b.IF語句和ENDIF語句必須成對出現(xiàn),且各占一行。c.為了程序閱讀方便,便于以后維護修改,[命令序列]部分最好采取向右縮進書寫的方式。
問題分析:設(shè)行李重量為W公斤,應(yīng)付運費為P元,則運費公式為:
p=0.25×w當(dāng)W≤50p=50×0.25+(w-50)×0.45當(dāng)W>50程序如下:
CLEARINPUT"請輸入行李重量:"TOwP=0.25*wIFw>50P=50*0.25+(w-50)*0.45ENDIF?"行李重量為:",w?"應(yīng)付運費為:",pRETURN
[例]鐵路托運行李,按規(guī)定每張客票托運行李不超過50公斤時,每公斤0.25元,如超過50公斤,超過部分按每公斤0.45元計算。編寫一個程序,把行李重量輸入計算機,計算出運費。根據(jù)以上分析,該問題計算機程序框圖2.雙分支簡單結(jié)構(gòu)
雙分支選擇結(jié)構(gòu)也是由IF語句開頭,以ENDIF語句結(jié)束,中間由若干條命令組成的,但其中包含一條ELSE語句。
IF<條件>[命令序列1]ELSE[命令序列2]ENDIFa.如果<條件>的邏輯值為.T.,就執(zhí)行[命令序列1],執(zhí)行完后就轉(zhuǎn)到執(zhí)行ENDIF之后的命令。如果<條件>的邏輯值為.F.,就執(zhí)行[命令序列2],完成后轉(zhuǎn)去執(zhí)行ENDIF之后的命令。
b.ELSE語句單獨占一行,IF語句和ENDIF語句必須成對出現(xiàn),且各占一行。
[例]鐵路托運行李,按規(guī)定每張客票托運行李不超過50公斤時,每公斤0.25元,如超過50公斤,超過部分按每公斤0.45元計算。編寫一個程序,把行李重量輸入計算機,計算出運費。
CLEARINPUT"請輸入行李重量:"TOwIFw>50P=50*0.25+(w-50)*0.45elseP=0.25*wENDIF?"行李重量為:",w?"應(yīng)付運費為:",pRETURN
1、設(shè)計簡單分支程序。在“員工信息表”表文件中查詢“劉明”的基本情況,如果找到,顯示信息,否則顯示“查無此人”。
1、設(shè)計簡單分支程序。由鍵盤輸入一個員工的姓名,在“員工信息表”表文件中該員工的基本情況,如果找到,顯示信息,否則顯示“查無此人”。
[例]設(shè)計選擇分支程序,在“ZGSJ.DBF”表文件中查看編號為“1002”的職工的月收入,若月收入大于600元,顯示“該職工的月收入大于600”;否則顯示“該職工的月收入小于600”。
UsezgsjLocatefor編號=“1002”Iffound()Else“無此編號”endifIf月收入>600?”該職工的月收入大于600”Else?”該職工的月收入大于600”3.分支嵌套結(jié)構(gòu)
對于在分支結(jié)構(gòu)中的<命令序列>,可以包含任何VFP命令語句,也可以包括另外一個或幾個合法的分支結(jié)構(gòu)語句,也就是說分支結(jié)構(gòu)可以嵌套。對于嵌套的分支結(jié)構(gòu)語句,一定注意內(nèi)外層分支結(jié)構(gòu)層次分明,即注意各個層次的IF......ELSE......ENDIF語句配對情況。4.多分支選擇結(jié)構(gòu)
VisualFoxPro提供了多分支結(jié)構(gòu)來解決多種不同情況下的程序選擇問題。
DOCASECASE<條件1><命令序列1>CASE<條件2><命令序列2>......CASE<條件n><命令序列n>[OTHERWISE<命令序列n+1>]ENDCASE
a.多分支選擇結(jié)構(gòu)執(zhí)行的過程:系統(tǒng)依次判斷各<條件>是否滿足,若某一<條件>為.T.,就執(zhí)行該<條件>下的<命令序列>,執(zhí)行后不再判斷其它<條件>,而轉(zhuǎn)去執(zhí)行ENDCASE后面的第一條命令。
如果沒有一個<條件>為.T.,就執(zhí)行OTHERWISE后面的[命令序列],直到ENDCASE;如果沒有OTHERWISE,則不作任何操作就轉(zhuǎn)向ENDCASE之后的第一條命令。
b.DOCASE語句和ENDCASE語句必須成對出現(xiàn),各占一行。
c.多分支選擇結(jié)構(gòu)中各CASE語句后的<條件>是按其先后順序判斷執(zhí)行的,因此對實際問題進行編程時,應(yīng)認(rèn)真考慮各個條件排列的先后順序。
DOCASEENDCASE條件1命令組1條件2命令組2條件n命令組notherwise編寫一個程序,要求從鍵盤輸入一個學(xué)生的分?jǐn)?shù),判斷該分?jǐn)?shù)屬于哪個等級.
分?jǐn)?shù):60分以下為不及格,60-70為及格,70-80為中,80-90為良,90-100為優(yōu)Y=
根據(jù)鍵入的X值,計算下面的分段函數(shù)值,并顯示結(jié)果。5X2+6X-1(X≤0)X2-4X+1(0<X≤20)3X2+1(X>20)【例6-7】輸入考試成績,顯示成績等級的程序。(90分以上為“優(yōu)秀”;80-89為“良好”;60-79為“合格”;60分以下為“不合格”)。SETTALKOFFINPUT“輸入考試成績:”TOXDOCASECASEX>=90?“成績等級:優(yōu)秀”CASEX>=80?“成績等級:良好”CASEX>=60?“成績等級:合格”O(jiān)THER?“成績等級:不合格”ENDCASERETU6.9循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)有3種命令格式:DOWHILE……ENDDOFOR……ENDFORSCAN……ENDSCAN6.2.3循環(huán)結(jié)構(gòu)
在程序設(shè)計中,有時需要從某處開始有規(guī)律地反復(fù)執(zhí)行某些類似的操作,這些類似的操作一般用循環(huán)結(jié)構(gòu)程序設(shè)計來解決。在VFP中,提供了“條件循環(huán)”、“步長型”和“表掃描型”循環(huán)結(jié)構(gòu)。
1.條件循環(huán)結(jié)構(gòu)
DOWHILE<條件>[命令序列]ENDDO
a.當(dāng)型循環(huán)執(zhí)行的過程是:根據(jù)<條件>邏輯值進行判斷。如果<條件>為.T.,則執(zhí)行
[命令序列],[命令序列]執(zhí)行完返回到DOWHILE語句,每執(zhí)行一遍就判斷一次DOWHILE語句中的<條件>。如果<條件>仍然為.T.,則繼續(xù)執(zhí)行
[命令序列],直到<條件>的邏輯值為.F.,則結(jié)束循環(huán),轉(zhuǎn)去執(zhí)行ENDDO之后的第一條命令。
1.條件循環(huán)結(jié)構(gòu)
DOWHILE<條件>[命令序列]ENDDOb.DOWHILE和ENDDO語句應(yīng)配對使用,各占一行。c.在[命令序列]的適當(dāng)位置可以放置EXIT和LOOP語句,用以對循環(huán)過程作特殊處理。EXIT的功能是:終止本層循環(huán)命令。LOOP語句的功能是:終止本次循環(huán)命令。循環(huán)結(jié)構(gòu)流程圖6.9循環(huán)結(jié)構(gòu)DoWhile條件
…loop…enddoDOWHILE條件
…EXIT…ENDDO例5計算1+2+…+10的值settalkoffcleara=1s=0doWhilea<=10s=s+aa=a+1enddo?“s=“,sSettalkonsa00+10+1+21+2+31+2+3+41+2+…+61+2+…+71+2+…+81+2+…+91+2+…1012345678910116.9循環(huán)結(jié)構(gòu)【例】編程計算S=1+2+3+…+100【例】編程計算S=1+3+5+…+99【例】編程計算S=2+4+6+…+100【例】輸出100--300之間所有能被7整除的數(shù)
基本結(jié)構(gòu)(循環(huán)次數(shù)已知情況下)a=1(定義一個變量,確定循環(huán)開始的數(shù))doWhilea<(循環(huán)終止的數(shù))
……(執(zhí)行某項任務(wù))
a=a+1(循環(huán)變量累加)enddo?“s=“,s(輸出結(jié)果)return編寫程序,統(tǒng)計員工信息表中金融系職工的人數(shù)。
Use學(xué)生表A=0Locatefor部門=“金融系”Dowhilenoteof()A=a+1ContinueEnddo?”金融系人數(shù)為:”+str(a,2)+”人”Usereturn【例6-10】按90分(含90分)以上、70~90分(含70分)、70分以下三級成績分檔統(tǒng)計“成績表.DBF”中人數(shù)的個數(shù)。STORE0TOK1,K2,K3
USE成績表
DOWHILE.NOT.EOF()
DOCASE
CASE
成績>=90
k1=k1+1
CASE
成績<70
k3=k3+1
OTHERWISE
k2=k2+1
ENDCASE
SKIP
ENDDO
?"90分的人數(shù)的個數(shù):"+STR(k1)
?"70~90人數(shù)的個數(shù):"+STR(k2)
?"70以下人數(shù)的個數(shù):"+STR(k3)
USE6.9循環(huán)結(jié)構(gòu)對表的操作。用NOTEOF()或FOUND()作為循環(huán)條件進行判斷,循環(huán)體內(nèi)必須含有指針移動的語句?;窘Y(jié)構(gòu):USE<表文件名>LOCATEFOR<條件>
DOWHILE.NOT.EOF()(或FOUND())<執(zhí)行某一個任務(wù)>CONTINUE
ENDDO例:試編一個程序,顯示“學(xué)生表.DBF”中所有入學(xué)成績超過490分的學(xué)生名單。例:統(tǒng)計“職工數(shù)據(jù)表”中女職工的人數(shù)計算1+2+3……,當(dāng)和大于1000時退出循環(huán)(2)在永真循環(huán)中。一般用于循環(huán)次數(shù)不定的情況下,在循環(huán)體內(nèi)根據(jù)條件執(zhí)行EXIT命令退出循環(huán)。其基本形式如下:
DOWHILE.T.……
IFX=結(jié)束標(biāo)志
EXITENDIF<執(zhí)行某一個任務(wù)>
ENDDO2.步長型循環(huán)結(jié)構(gòu)FOR<循環(huán)變量>=<初值>TO<終值>[STEP<步長值>][命令序列]ENDFOR|NEXT
a.<初值>、<終值>、<步長值>都是數(shù)值表達式;當(dāng)<步長值>是1時,可以省略STEP子句。
b.ENDFOR或NEXT語句為循環(huán)終端語句,用以標(biāo)明本循環(huán)結(jié)構(gòu)的終點。該語句必須和FOR語句配對使用。2.步長型循環(huán)結(jié)構(gòu)FOR<循環(huán)變量>=<初值>TO<終值>[STEP<步長值>][命令序列]ENDFOR|NEXT
c.該循環(huán)結(jié)構(gòu)的執(zhí)行過程是:首先將初值賦值給循環(huán)變量,然后判斷循環(huán)變量的值是否超過終值,不超過就執(zhí)行循環(huán)體,遇到ENDFOR或NEXT語句,自動使循環(huán)變量增加一個步長值,再將循環(huán)變量的值與終值比較,如果循環(huán)變量的值不超過終值,就再執(zhí)行循環(huán)體,不斷循環(huán)執(zhí)行。如果循環(huán)變量的值超過終值則轉(zhuǎn)去執(zhí)行ENDFOR或NEXT語句后面的第一條語句。d.在循環(huán)體內(nèi)的適當(dāng)位置也可以放置EXIT和LOOP語句,作用和用法與條件循環(huán)結(jié)構(gòu)類似。
2.步長型循環(huán)結(jié)構(gòu)FOR<循環(huán)變量>=<初值>TO<終值>[STEP<步長值>][命令序列]ENDFOR|NEXT
Forn=初值to終值step步長
…exit…
enddo循環(huán)結(jié)構(gòu)流程圖2.步長型循環(huán)結(jié)構(gòu)Forn=初值to終值step步長
…loop…enddo
[例]求1+2+3+…+99+100的值。
問題分析:采用累加的辦法,用循環(huán)變量產(chǎn)生1、2、3、…、99、100這些數(shù)。用s保存累加和,s的初始值為0,每次循環(huán)將s加上循環(huán)變量的值,再賦值給變量s,循環(huán)結(jié)束即求得S。程序為:CLEARs=0FORx=1TO100step1s=s+xENDFOR?"1--100自然數(shù)累加和是:",sRETURN【例】編程計算S=1+2+3+…+100【例】編程計算S=1+3+5+…+99【例】編程計算S=2+4+6+…+100【例】輸出100--300之間所有能被7整除的數(shù)
基本結(jié)構(gòu)(循環(huán)次數(shù)已知情況下)Fora=1(循環(huán)開始的數(shù))
toa=(終止的數(shù))
(step步長)
……(執(zhí)行某項任務(wù))endfor?“s=“,s(輸出結(jié)果)return循環(huán)結(jié)構(gòu)的類型:
1、條件循環(huán):(常用)命令格式:dowhile<邏輯表達式><語句序列>
enddo2、步長循環(huán)命令格式:
For變量=數(shù)表1to數(shù)表2[STEP數(shù)表3]〈語句序列〉
endfor|next一個循環(huán)結(jié)構(gòu)一般應(yīng)具備如下的條件:(1)循環(huán)的初始條件:一般為給循環(huán)控制變量賦初值;(2)循環(huán)頭:循環(huán)語句的起始,設(shè)置、判斷循環(huán)條件;(3)循環(huán)尾:循環(huán)語句的結(jié)尾;(4)循環(huán)體:位于循環(huán)頭和循環(huán)尾之間、循環(huán)控制重復(fù)執(zhí)行的語句序列
6.9循環(huán)結(jié)構(gòu)Dowhile……enddo
和for……endfor的區(qū)別求s=1+2+3+…+99+100S=0N=1Dowhilen<=100S=s+nN=n+1Enddo?”s=“,sreturn求s=1+2+3+…+99+100s=0FORx=1
TO
100step1
s=s+xENDFOR?“s=",sRETURN
復(fù)習(xí)一期末考題題型一:四、閱讀下列程序,寫出運行結(jié)果(每題3分,共15分)等級考試題型一:(四)閱讀下列程序,寫出運行結(jié)果(每題2分,共10分)閱讀下列程序,寫出運行結(jié)果(每題3分)1、SETTALKOFFSTORE0TOSN=20DOWHILEN>SS=S+NN=N-2ENDDO?SRETURN閱讀下列程序,寫出運行結(jié)果(每題3分)2、SETTALKOFFSTORE2TOM,NDOWHILEM<14M=M+NN=N+2ENDDO?M,NSETTALKONRETURN閱讀下列程序,寫出運行結(jié)果(每題3分)3、SETTALKOFFA=2S=0DOWHILE.T.IFA>=10EXITENDIFA=A+2S=S+AENDDO?A,S閱讀下列程序,寫出運行結(jié)果(每題3分)4、 USERSDAGZH=0DOWHILE.NOT.EOF()
GZH=GZH+基本工資
SKIPENDDO?GZHRETURNUSESTUGO8IF團否
DISPLAY姓名ELSEDISPLAY入學(xué)成績ENDIFUSE6、STORE0TOM,NDOWHILE.T.N=N+2DOCASECASEINT(N/3)*3=NLOOPCASEN>10EXITOTHERWISEM=M+NENDCASEENDDO?"M=",M,"N=",NRETURN7、USEZGSJRS1=0RS2=0DOWHILE.NOT.EOF()
IF性別=‘男’
RS1=RS1+1ELSERS2=RS2+1ENDIFSKIPENDDO?RS1,RS2RETURN
閱讀下列程序,寫出運行結(jié)果(每題3分)8、SETTALKOFFS=0
FORI=1TO6STEP2Q=I**2??QS=S+QENDFOR?SSETTALKON閱讀下列程序,寫出運行結(jié)果(每題3分)9、SETTALKOFFS=0FORN=1TO7STEP2N=N+1S=S+NENDFOR?S,NSETTALKON
SETTALKOFFFILE=“RSDA”USE&FILELISTFOR性別=“男”USESETTALKONRETURNCLEARY="等級考試"X=""L=LEN(Y)FORI=L-1TO1STEP-2X=X+SUBSTR(Y,I,2)ENDFOR ?X閱讀下列程序,寫出運行結(jié)果
A="B"B="C"C="A"?&A+&B+&C閱讀下列程序,寫出運行結(jié)果
SETTALKOFFA="B"B=1C="+"?&A?&A.&C.&ASETTALKON3、表掃描循環(huán)結(jié)構(gòu)
SCAN[<范圍>][FOR<條件1>]
命令序列]&&[命令序列]也稱為循環(huán)體
ENDSCANa.該結(jié)構(gòu)是針對當(dāng)前打開的數(shù)據(jù)表進行操作的。它的功能是:對當(dāng)前打開的數(shù)據(jù)表中指定范圍內(nèi)符合條件的記錄,逐個進行<命令序列>所規(guī)定的操作,如果缺省范圍和條件子句時,則對所有記錄逐個進行<命令序列>規(guī)定的操作。b.表掃描型循環(huán)結(jié)構(gòu)每循環(huán)一遍,記錄指針自動移動到下一條記錄,不需要設(shè)置SKIP語句。c.SCAN和ENDSCAN語句要配對使用。d.在<命令序列>的適當(dāng)位置也可以放置EXIT和LOOP語句,功能和用法同其他循環(huán)結(jié)構(gòu)類似。
[例]將職工數(shù)據(jù)表中月收入大于600元的姓名,月收入字段輸出,并統(tǒng)計這些職工的人數(shù)。
基本操作步驟為:打開職工數(shù)據(jù)表,設(shè)計一個累加變量n,代表滿足條件的記錄數(shù),給n賦初值0,用表掃描循環(huán)結(jié)構(gòu)定位滿足條件的記錄,輸出姓名和編號字段,并對n進行累加1,循環(huán)結(jié)束即求得n,輸出n。程序如下:
CLEARUSE職工數(shù)據(jù)表n=0SCANFOR月收入>600?姓名,月收入
n=n+1ENDSCAN?“月收入在600元以上的人數(shù)有:"+STR(N,2)+"人。"useRETURNDowhile---enddo和scan----endscan的主要區(qū)別顯示學(xué)生表中所有入學(xué)成績超過490分的學(xué)生名單Use學(xué)生表
Locatefor入學(xué)成績>490Dowhilenoteof()
Disp
姓名
ContEnddouseUse學(xué)生表scanfor入學(xué)成績>490Disp
姓名endscanUse4、循環(huán)結(jié)構(gòu)嵌套
循環(huán)結(jié)構(gòu)的嵌套是指在一個循環(huán)體內(nèi)包含其他的循環(huán)結(jié)構(gòu),也稱為多重循環(huán)結(jié)構(gòu)。同一種類型的循環(huán)結(jié)構(gòu)可以嵌套,不同類型的循環(huán)結(jié)構(gòu)也可以嵌套。要編好循環(huán)嵌套結(jié)構(gòu)程序,必須做到:循環(huán)開始語句和循環(huán)結(jié)束語句配對出現(xiàn);內(nèi)外層循環(huán)層次分明,不得交叉。VisualFoxPro最多允許128層嵌套。
FORa=1TO9
FORb=1TO9
……ENDFOR?ENDFORRETURN外循環(huán)內(nèi)循環(huán)【例6-19】輸出下面圖形(要求使用雙重循環(huán)語句)****************
FORI=1TO4FORJ=1TOI??“*”ENDFOR?ENDFOR【例6-19】輸出下面圖形(要求使用雙重循環(huán)語句)**********
FORI=1TO4FORJ=1TOI??“*”ENDFOR?ENDFOR閱讀下列程序,寫出運行結(jié)果
DIMENSIONA(3,3)I=1DOWHILEI<4J=IDOWHILEJ<4A(I,J)=I*J
??A(I,J)
J=J十1ENDDO?I=I+1ENDDORETURN閱讀下列程序,寫出運行結(jié)果
SETTALKOFFCLEARZ=0X=1?DOWHILEX<=5Y=1DOWHILEY<=X??STR(X,1)+'×'+STR(Y,1)+'='+STR(X*Y,2)+''Z=Z+X*YY=Y+1ENDDO?X=X+1ENDDOSETTALKON第二次作業(yè):五、簡答題(每題3分,共15分)1、命令中的[范圍]有哪幾種,以及它們的作用?2、簡要說明INPUT、ACCEPT、WAIT三條命令的功能?3、什么是視圖、查詢以及它們之間的區(qū)別?4、EXIT和LOOP的功能是什么?5、查詢和視圖有什么異同?6、常用的數(shù)據(jù)模型有幾種?VisualFoxpro屬于什么型數(shù)據(jù)庫?7、簡述查詢命令LOCATE、FIND及SEEK的區(qū)別。8、在顯示表記錄上,命令LIST和DISPLAY的區(qū)別是什么?9、什么是項目管理器及其作用?10、表達式類型有哪些?11、查詢定位命令LOCATE、FIND、SEEK它們各自的作用及特點?12、文件首、文件尾、首記錄、尾記錄是什么?如何判斷記錄指針是否指向文件首或文件尾?List:
disp:分屏顯示當(dāng)前表中指定范圍內(nèi)符合條件的記錄的指定字段,若缺省范圍和條件,則只顯示當(dāng)前記錄六、編程題1、輸出下面圖形:**********2、輸出100到300之間能同時被6和9整除的所有數(shù)。六、編程題3、編程求1+2+3+…+?的和,當(dāng)其和大于100停止。4、編寫程序,求出1~100之間能被3或5整除的整數(shù)的平方和。5、設(shè)計簡單的分支程序。在“員工信息表”表文件中查詢李明的基本情況,如果找到顯示信息,否則顯示“查無此人”。六、編程題6、查找zgsj.dbf
中女職工的最高工資,并顯示其姓名和工資。(利用dowhile……enddo循環(huán)語句實現(xiàn))。7、在RSDA.DBF中,對建國后出生、職稱是教授的職工,輸出其姓名、性別、出生日期、基本工資的信息。六、編程題8、已有表文件“成績表.DBF”,其字段為:姓名計算機數(shù)學(xué)英語,編寫程序?qū)崿F(xiàn):顯示每個記錄的姓名、計算機成績的同時還要顯示如下內(nèi)容:計算機成績90分以上(含90)顯示“優(yōu)秀”字樣;60(含60)—89之間顯示“及格”字樣;計算機成績低于60分顯示“補考”字樣。如:“張三95優(yōu)秀”。作業(yè)三(代碼、程序填空)
1、實現(xiàn):求0-100之間的奇數(shù)之和,超出范圍則退出。請在【】處填入正確的內(nèi)容。STORE0TOX,YDOWHILE.T.X=X+1DOCASECASE【1】LOOPCASEX>=100【2】OTHERWISEY=Y+XENDCASE【3】?"0-100之間的奇數(shù)之和為:",Y2、統(tǒng)計zgsj.dbf
中職工的月收入總和,并在表文件末尾增加一條空記錄,在該記錄的姓名字段中寫入"總計",在月收入字段中寫入工資總和,最后顯示該條記錄。CLEAR【4】SUM月收入TOS【5】REPLACE姓名WITH"總計",月收入WITHS【6】USERETURN3、求S=1+2+3+……+1000。S=0I=1DOWHILE【1】【2】I=I+1ENDDO?S4、某職工數(shù)據(jù)工資表文件為GZ.DBF。下面程序?qū)⒏鶕?jù)職工的職稱情況對工資作相應(yīng)調(diào)整:職稱為教授的基本工資加40%;職稱為副教授的基本工資加20%,否則,若基本工資低于300的按500計算。請?zhí)钌舷鄳?yīng)的語句,使之成為完整的程序?!?】DOWHILE.NOT.EOF()【4】CASE職稱="教授"【5】CASE職稱="副教授"REPLACE基本工資WITH基本工資*1.1CASE基本工資<300REPLACE基本工資WITH300ENDCASE【6】ENDDOLISTUSE5、按性別查詢顯示并統(tǒng)計RSDA.DBF中的指定性別的職工人數(shù)。USERSDASTORE0TORSACCEPT“請輸入性別:”TOXB【4】DOWHILE.NOT.EOF() DISPOFF RS=RS+1 【5】ENDDO?
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安徽xx工業(yè)廢鹽資源化利用項目可行性研究報告
- 電力系統(tǒng)網(wǎng)絡(luò)視頻集中監(jiān)控解決方案
- 風(fēng)力發(fā)電站運營與管理培訓(xùn)
- 電力系統(tǒng)建模與仿真
- Naftypramide-DA-992-生命科學(xué)試劑-MCE
- MRX-2843-hydrochloride-UNC2371-hydrochloride-生命科學(xué)試劑-MCE
- minus-BO-2367-生命科學(xué)試劑-MCE
- Methyl-2-6-bromo-1H-indol-3-yl-acetate-生命科學(xué)試劑-MCE
- MDK0734-生命科學(xué)試劑-MCE
- Lipid-B37-生命科學(xué)試劑-MCE
- 手術(shù)通知單模板
- 網(wǎng)絡(luò)拓?fù)鋱D常用圖標(biāo)新版
- 《互聯(lián)網(wǎng)金融》試題A及參考答案
- artcam2008軟件及使用artcam的安裝和破解
- 企業(yè)微信的使用培訓(xùn)
- 普外科??谱o理規(guī)范及標(biāo)準(zhǔn)
- UML學(xué)生成績管理系統(tǒng)
- CA6132普通車床使用說明書
- 工程交工驗收會議監(jiān)理發(fā)言
- 電力工程項目管理中的溝通與協(xié)調(diào)
- 中國農(nóng)業(yè)銀行流水單_免費下載
評論
0/150
提交評論