版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
會計學1第八章程序設計基礎(1)命令方式【命令】MODIFYCOMMAND<程序文件名>【功能】打開一個編輯器窗口,用于建立或修改程序文件?!纠?-1】用命令方式建立能顯示教師表中職稱為講師的教師記錄的程序文件P1.PRG。操作步驟如下:①在命令窗口中輸入下列命令,進入“程序文件”編輯窗口。
MODIFYCOMMANDP1.PRG②在“程序文件”編輯窗口,輸入下列命令,如圖8-1所示。③輸入完成后,在“文件”菜單中選擇“保存”命令,在“對話框”的“保存文檔為”文本框中輸入P1.PRG,保存文件。圖8-1
建立程序文件P1.PRG窗口
第1頁/共64頁SettalkoffClearUse學生Appendblank@6,30say“學號”Get學號@6,50say“姓名”Get姓名@8,30say“性別”Get性別@8,40say“出生年月”Get出生年月@10,30say“入??偡帧盙et入校總分@10,50say“三好生”Get三好生Read第2頁/共64頁ClearBrowseSetTalkonreturn第3頁/共64頁
(2)菜單方式用菜單方式的操作步驟:①如果是新建文件,在“文件”菜單中選擇“新建”命令選項,在屏幕顯示的“新建”對話框中選擇“程序”項進入程序編輯窗口。如果是修改已有的程序文件,則選擇“文件”菜單中選擇“打開”命令選項,在屏幕顯示的“打開”對話框中輸入或選擇要修改的文件名,系統(tǒng)自動將按輸入或選擇的文件名將程序文件調入內存并顯示在文本編輯窗口以供修改。
②在程序編輯窗口逐條輸入或修改程序語句。③輸入或修改完成后,在“文件”菜單中選擇“保存”或“另存為”命令,保存文件【例8-2】用菜單方式修改程序文件P1.PRG,使之顯示教師表中職稱為教授或副教授的教師記錄,并另存文件為P2.PRG。操作步驟如下:①選擇“文件”菜單中的“打開”命令選項,在屏幕顯示的“打開”對話框中輸入程序文件名:P1.PRG。進入“程序文件”編輯窗口。②在“程序文件”編輯窗口,對第二條命令進行修改,如圖8-2所示。③輸入完成后,在“文件”菜單中選擇“另存為”命令,在“對話框”的“保存文檔為”文本框中輸入P2.PRG,保存文件。
圖8-2
修改程序文件P1.PRG窗口
第4頁/共64頁2.執(zhí)行程序文件執(zhí)行程序文件就是依次執(zhí)行程序文件中的每條命令或語句。程序文件的執(zhí)行有命令和菜單兩種方式。(1)命令方式【命令】DO<程序文件名>【功能】在命令窗口運行以.PRG為擴展名的程序文件。(2)菜單方式在VisualFoxPro系統(tǒng)環(huán)境下,選擇“程序”菜單中的“運行”命令選項,在顯示的對話框中確定或輸入要執(zhí)行的程序文件名。【例8-3】用菜單方式運行程序文件P2.PRG。操作步驟如下:選擇“程序”菜單中的“運行”命令選項,在顯示的對話框中確定或輸入要執(zhí)行的程序文件名:P2.PRG,然后單擊對話框中的運行按鈕,得到如圖8-3所示的運行結果。
圖8-3
運行程序文件P2.PRG窗口
第5頁/共64頁8.1.2程序中常用的命令在程序文件中常常要用到一些交互式輸入、輸出命令,注釋命令,程序結束專用命令及系統(tǒng)狀態(tài)的設置命令。1.交互式輸入命令輸入命令用于在程序的執(zhí)行過程中給程序賦值。在程序文件中,交互式輸入命令有以下幾種形式:(1)賦值命令【命令】STORE<表達式>TO<內存變量名表>或<內存變量>=<表達式>【功能】給內存變量賦值?!菊f明】STORE命令可以同時給多個內存變量賦值,而<內存變量>=<表達式>命令只能給一個變量賦值。(2)字符串輸入命令【命令】ACCEPT[<提示信息>]TO<內存變量>【功能】暫停程序的運行,等待用戶從鍵盤上輸入一串字符,存入指定的內存變量中?!菊f明】<提示信息>用于提示用戶進行操作的信息。從鍵盤接受的字符串,可以加定界符也可以不加定界符,系統(tǒng)都將其作為字符型數(shù)據(jù)輸入到內存變量中。
第6頁/共64頁(3)單字符輸入命令【命令】WAIT[<提示信息>][TO<內存變量>]【功能】暫停程序的運行,等待用戶從鍵盤上輸入單個字符后恢復程序的運行?!菊f明】<提示信息>用于提示用戶進行操作的信息,TO<內存變量>是可選項,當選用時,鍵入的單個字符均作為字符型數(shù)據(jù)賦給<內存變量>。如果只有WAIT命令,沒有選項,則系統(tǒng)默認的提示信息是:PRESSANYKEYTOCONTINUE…
(4)表達式輸入命令【命令】INPUT[<提示信息>]TO<內存變量>【功能】暫停程序的運行,等待用戶輸入表達式并將其值賦給指定的內存變量?!菊f明】<提示信息>用于提示用戶進行操作的信息,命令中<內存變量>的類型決定于輸入數(shù)據(jù)的類型,但不能為M型。如果鍵入的是表達式,本命令先計算出表達式的值,再將結果賦給<內存變量>;如果鍵入的是字符常量、邏輯常量和日期常量時應帶定界符,既字符常量加引號,邏輯常量左右加圓點,日期常量要用CTOD()函數(shù)進行轉換。第7頁/共64頁(5)定位輸入命令【命令】@<行,列>SAY<提示信息>GET<變量>READ【功能】在屏幕指定的行列位置上輸入數(shù)據(jù)?!菊f明】命令中的各選項說明如下:l
<行,列>是指屏幕窗口的位置。l
SAY<提示信息>給出提示信息。l
GET<變量>取得變量的值。其中<變量>可以是字段變量或內存變量,如果是字段變量,應先打開表文件,如果是內存變量,應先賦值。GET子句必須使用命令READ激活。在帶有多個GET子句的命令后,必須遇到READ命令才能編輯GET中的變量。當光標移出這些GET變量組成的編輯區(qū)時,READ命令才執(zhí)行結束
第8頁/共64頁2.輸出命令輸出命令用于顯示程序中的輸出內容和結果。下面介紹一些常用輸出命令。(1)非格式輸出命令
【命令】?<內存變量名表>或??<內存變量名表>【功能】顯示內存變量、常量或表達式的值。
【說明】?是在光標所在行的下一行開始顯示,而??則是在當前光標位置開始顯示。(2)格式輸出命令
【命令】@<行,列>SAY<表達式>【功能】按指定的坐標位置在屏幕上輸出表達式的值。
【說明】輸出<表達式>的位置由<行,列>指定,<表達式>的內容可以是數(shù)值、字符、內存變量和字段變量。(3)文本輸出命令
【命令】TEXT <文本信息> ENDTEXT【功能】將TEXT和ENDTEXT之間的文本信息照原樣輸出。
【說明】TEXT與ENDTEXT在程序中必須配對。第9頁/共64頁3.其他程序運行命令在程序中,有一些專門用于程序開始和結束時的命令以及對程序進行說明的命令,常用的有以下幾個:(1)清屏命令【命令】CLEAR【功能】清除屏幕上的內容。(2)返回命令【命令】RETURN【功能】結束當前程序的運行?!菊f明】如果當前程序無上級程序,該命令用于結束程序的運行,返回到命令窗口。如果當前程序是一個子程序,該命令用于結束程序的運行,返回到調用該程序的上級程序中。(3)終止程序執(zhí)行命令【命令】CANCEL【功能】終止程序執(zhí)行并關閉所有打開的文件,返回到系統(tǒng)的命令窗口。第10頁/共64頁(4)退出系統(tǒng)命令【命令】QUIT【功能】終止程序運行,關閉所有打開的文件,退出VisualFoxPro系統(tǒng),返回到Windows環(huán)境。(5)注釋命令【命令】NOTE<注釋內容>或*<注釋內容>或&&<注釋內容>【功能】用于在程序中加入說明,以注明程序的名稱、功能或其他備忘標記?!菊f明】注釋命令為非執(zhí)行語句。其中前兩個命令格式作為獨立的一行語句,第三條命令放在某一個語句的右邊。
第11頁/共64頁4.環(huán)境設置命令為了保證程序的正常運行,需要為其設置一定的運行環(huán)境。VisualFoxPro系統(tǒng)提供的SET命令組就是用來設置程序運行環(huán)境的。這些命令相當于一個狀態(tài)轉換開關,當命令置為“ON”時,開啟指定的某種狀態(tài);而置為“OFF”時,則關閉該種狀態(tài)。常用的系統(tǒng)環(huán)境設置命令有以下幾個:(1)關閉對話命令【命令】SETTALKON|OFF【功能】控制非輸出性的執(zhí)行結果是否在屏幕上顯示或打印出來?!菊f明】系統(tǒng)默認值為ON。(2)設置跟蹤命令【命令】SETECHOON|OFF【功能】控制程序文件執(zhí)行過程中的每條命令是否顯示或打印出來?!菊f明】系統(tǒng)默認值為OFF。第12頁/共64頁(3)設置打印命令【命令】SETPRINTERON|OFF【功能】控制程序執(zhí)行的結果到打印機或顯示在屏幕上。【說明】在命令格式中選擇ON表示將輸出結果送到打印機,選擇OFF則將輸出結果顯示在屏幕上,系統(tǒng)默認值為OFF。(4)設置定向輸出命令【命令】SETDEVICETOSCREEN|TOPRINTER|TOFILE<文件名>【功能】控制輸出結果到屏幕、打印機或指定的文件?!菊f明】在命令格式中選擇SCREEN表示將輸出結果顯示在屏幕上,選擇PRINTER表示將輸出結果送到打印機,選擇FILE<文件名>則將輸出結果送到指定文件。(5)設置精確比較命令【命令】SETEXACTTOON|OFF【功能】在進行字符比較時是否需要精確比較。【說明】在命令格式中選擇ON表示需要精確比較,選擇OFF表示不需要精確比較,系統(tǒng)默認值為OFF。第13頁/共64頁(6)設置保護狀態(tài)命令【命令】SETSAFETYON|OFF【功能】系統(tǒng)在用戶提出對文件重寫或刪除的要求時給出警告提示?!菊f明】需要提示選擇ON,否則選擇OFF。系統(tǒng)默認為ON。(7)設置刪除記錄標志命令【命令】SETDELETEDON|OFF【功能】屏蔽或處理有刪除標記的記錄。【說明】在命令格式中選擇ON時,命令將不對有刪除標記的記錄進行操作,但索引命令除外。系統(tǒng)默認值為OFF。
(8)設置屏幕狀態(tài)命令【命令】SETCONSOLEON|OFF【功能】發(fā)送或暫停輸出內容到屏幕上?!菊f明】系統(tǒng)默認值為ON。(9)設置缺省目錄命令【命令】SETDEFAULTTO<默認目錄>【功能】用于設置系統(tǒng)默認的磁盤文件目錄。
第14頁/共64頁5.程序中常用的命令綜合應用【例8-4】編寫程序P3.PRG,其程序功能是在學生表中追加一條記錄。編寫程序如圖8-4所示,運行程序P3.PRG,在如下輸入界面填寫數(shù)據(jù),顯示結果如圖8-5所示。
圖8-4
程序P3.PRG的編寫窗口
圖8-5
程序P3.PRG的輸出結果
第15頁/共64頁【例8-5】編寫程序P4.PRG,其程序功能是在學生表中查詢某一天出生的學生記錄。編寫程序如圖8-6所示,運行程序P4.PRG,在輸入了要查詢學生的出生日期之后,系統(tǒng)輸出查詢的結果。圖8-6
程序P4.PRG編寫窗口
第16頁/共64頁*用日期查詢某一天出生的學生的記錄
settalkoffcloseallclearusexuesheng2?"出生日期的正確格式:'mm/dd/yy'"input"請輸入出生日期"tosd&&sd用于存放輸入學生的出生日期
locateallfor出生年月=CTOD(sd)?"以下為查詢的顯示結果"@5,10say學號
@5,30say姓名
@7,10say性別
@7,20say出生年月
wait@10,10say入??偡謘ettalkonreturn第17頁/共64頁問題1:能不能輸入05/12/84
問題2:locateallfor出生年月=CTOD(sd)
能不能用SQL語句來代替?第18頁/共64頁【例8-6】編寫程序P5.PRG,其程序功能是在學生表中刪除學生記錄。編寫程序如圖8-7所示,運行程序P5.PRG,在輸入了要查詢學生的姓名之后,系統(tǒng)顯示要刪除學生的記錄,并確認刪除。程序運行結果的屏幕顯示如下:圖8-7
程序P5.PRG編寫窗口
第19頁/共64頁settalkoffcleartext##刪除學生記錄程序##endtextusexuesheng2accept"請輸入學生姓名"tosmlocateallfor姓名=smdisplaywait"輸入Y刪除記錄"delete??"",sn,"學生記錄已刪除!"settalkonreturn第20頁/共64頁8.1.3程序的基本結構在VisualFoxPro中,結構化程序設計主要依靠系統(tǒng)提供的結構化語句構成,程序的基本結構有三種:順序結構、分支結構和循環(huán)結構。每一種基本結構可以包含一個或多個語句。1.順序結構順序結構是指程序按照語句排列的先后順序逐條的執(zhí)行。它是程序中最簡單、最常用的基本結構。VisualFoxPro中,大多數(shù)命令都可以作為順序結構中的語句來實現(xiàn)編程。在例8-4、例8-5和例8-6的程序中都是采用順序結構。2.分支結構分支結構是在執(zhí)行程序時,按照一定的條件選擇不同的語句,用來解決選擇、轉移的問題。分支結構的基本形式有三種。(1)單向分支單向分支,即根據(jù)用戶設置的條件表達式的值,決定某一操作是否執(zhí)行?!菊Z句】IF<條件表達式><命令行序列>ENDIF【功能】當條件表達式的值為真時,執(zhí)行<命令行序列>,否則執(zhí)行ENDIF后面的命令?!菊f明】<條件表達式>是關系表達式或邏輯表達式,IF和ENDIF必須成對使用。<命令行序列>可以由一條語句或多條語句構成。第21頁/共64頁第22頁/共64頁【例8-7】編寫程序P6.PRG,其程序功能是在教師表中,將陳靜教師的職稱由講師改成副教授。編寫程序如圖8-8所示,運行程序P6.PRG,先顯示原數(shù)據(jù)表的內容,見圖8-9,再顯示修改后數(shù)據(jù)表的內容,見圖8-10,對比兩個數(shù)據(jù)表的內容,可看見,陳靜教師的職稱已由講師改成了副教授。圖8-8
程序P6.PRG編寫窗口圖8-10
修改后教師表的內容圖8-9
修改前教師表的內容第23頁/共64頁SettalkoffClearUseteachersBrowselastLocateallfor姓名="陳靜"If
職稱="講師"Replace職稱with"副教授"EndifBrowselastSettalkonreturn第24頁/共64頁(2)雙向分支雙向分支,即根據(jù)用戶設置的條件表達式的值,選擇兩個操作中的一個來執(zhí)行。【語句】IF<條件表達式><命令行序列1>ELSE<命令行序列2>ENDIF【功能】執(zhí)行該命令時,首先判斷<條件表達式>的值,若為真,則執(zhí)行<命令行系列1>,然后執(zhí)行ENDIF后的命令;若為假,則執(zhí)行<命令行序列2>,然后執(zhí)行ENDIF后的命令?!菊f明】IF…ELSE…ENDIF語句必須成對使用。<命令行序列1>和<命令行序列2>中可以嵌套IF命令。第25頁/共64頁【例8-8】編寫程序P7.PRG,其程序功能是在教師表中,查詢陳靜教師的記錄,如果找到記錄,就顯示該記錄,否則,顯示“查無此人”。編寫程序如圖8-11所示。運行程序P7.PRG,由于數(shù)據(jù)表中有陳靜教師的記錄,所以在程序運行后顯示了陳靜教師的記錄內容,如圖8-12所示。圖8-11
程序P7.PRG編寫窗口
圖8-12
程序P7.PRG執(zhí)行的結果
第26頁/共64頁settalkoffclearuseteacherslocateallfor姓名="陳靜"if.not.eof()Browsefor姓名="陳靜"else@2,30say"查無此人"endifsettalkonreturn第27頁/共64頁
(3)多向分支多向分支,即根據(jù)多個條件表達式的值,選擇多個操作中的一個來執(zhí)行?!菊Z句】DOCASECASE<條件表達式1><命令行序列1>CASE<條件表達式2><命令行序列2>......CASE<條件表達式N><命令行序列N>OTHERWISE<命令行序列N+1>ENDCASE【功能】系統(tǒng)從多個條件中依次測試<條件表達式>的值,若為真,即執(zhí)行相應<條件表達式>后的<命令行序列>;若所有的<條件表達式>的值均為假,則執(zhí)行OTHERWISE后面的<命令行序列>?!菊f明】DOCASE和第一個CASE子句之間不能插入任何命令。DOCASE和ENDCASE必須配對使用。
第28頁/共64頁【例8-9】編寫程序P8.PRG,其程序功能是根據(jù)用戶的選擇,顯示不同數(shù)據(jù)表的內容。編寫程序如圖8-13所示,運行程序P8.PRG,屏幕顯示如下提示,當輸入2,將顯示教師表的內容。
圖8-13
程序P8.PRG編寫窗口
第29頁/共64頁SettalkoffClearText
數(shù)據(jù)表內容顯示
1.學生表2.教師表3.課程表EndtextWait“請輸入你的選擇(1~3)toanDocasecasean=“1”browselastcasean=“2”useteachersbrowselast第30頁/共64頁Otherwise?”選擇錯誤!“
endcase第31頁/共64頁3.循環(huán)結構循環(huán)結構是重復執(zhí)行一段命令序列若干次或重復執(zhí)行一段命令序列直到滿足某種條件為止。循環(huán)結構可以簡化程序,提高程序效率。常用的循環(huán)語句有以下幾種形式。(1)條件循環(huán)條件循環(huán)是根據(jù)條件表達式的值,決定循環(huán)體內語句的執(zhí)行次數(shù),也稱為當型循環(huán)?!菊Z句】DOWHILE<條件表達式><命令行序列1>[LOOP]<命令行序列2>[EXIT]<命令行序列3>ENDDO【功能】語句執(zhí)行時,先判斷<條件表達式>的值,若為真,則執(zhí)行循環(huán)體內的命令,即DO與ENDDO之間的命令;若為假,則執(zhí)行ENDDO后面的命令。第32頁/共64頁【說明】對循環(huán)語句進行以下說明:l
DOWHILE和ENDDO子句要配對使用。l
DOWHILE<條件表達式>是循環(huán)語句的入口;ENDDO是循環(huán)語句的出;中間<命令行序列>是重復執(zhí)行的循環(huán)體。l
LOOP和EXIT只能在循環(huán)語句中使用,其中LOOP是轉到循環(huán)的入口語句;EXIT是強行退出循環(huán)的語句。
l
循環(huán)結構允許嵌套,這種嵌套不僅限于循環(huán)結構自身的嵌套,而且還可以是和選擇結構的相互嵌套。
第33頁/共64頁【例8-10】編寫程序P9.PRG,其程序功能是統(tǒng)計學生表中入??偡衷?80分以上的學生人數(shù)。編寫程序如圖8-14所示,運行程序P9.PRG,屏幕先顯示學生表中入??偡衷?80分以上的學生記錄內容,如圖8-15所示,再以如下格式顯示統(tǒng)計出的學生表中入??偡衷?80分以上的學生人數(shù)。
圖8-14
程序P9.PRG編寫窗口
圖8-15
入校總分在580分以上的學生記錄
第34頁/共64頁Settalkoffclearusexuesheng2nu=0browsefor入??偡?gt;=580dowhile.not.eof()if入??偡?gt;=580NU=nu+1endifSkipEnddo@2,30say“入??偡衷?80分以上的人數(shù)”@2,60sayNU第35頁/共64頁【例8-11】編寫程序P10.PRG,其程序功能是設計一個對學生表進行管理主控程序,用戶通過鍵盤選擇菜單,以實現(xiàn)不同的功能模塊的調用或退出程序運行。編寫程序如圖8-16所示,運行程序P10.PRG,屏幕顯示如下:當輸入5,輸入的代號不在提示的范圍內,系統(tǒng)提示重新選擇,再次顯示選擇提示信息。
圖8-16
程序P10.PRG編寫窗口
第36頁/共64頁settalkoffdowhile.t.cleartext
學生檔案管理****************
1.查詢2.修改
3.統(tǒng)計4.退出endtextwait"請輸入功能選擇代號(1~4)"toandocasecasean="1"do查詢
casean="2"do修改
casean="3"do統(tǒng)計
casean="4"exitotherwisewait"選擇錯誤,按任意鍵重新選擇!"endcaseenddoclearallsettalkon
第37頁/共64頁(2)計數(shù)循環(huán)計數(shù)循環(huán)是根據(jù)用戶設置的循環(huán)變量的初值、終值和步長,決定循環(huán)體內語句執(zhí)行次數(shù)。【語句】FOR<循環(huán)變量>=<循環(huán)初值>TO<循環(huán)終值>[STEP<步長>]<命令行序列1>[LOOP]<命令行序列2>[EXIT]<命令行序列3>ENDFOR|NEXT【功能】系統(tǒng)執(zhí)行該命令時,首先將循環(huán)初值賦給循環(huán)變量,然后判斷循環(huán)變量的值是否超過終值,若超過則跳出循環(huán),執(zhí)行ENDFOR后面的命令,否則執(zhí)行循環(huán)體內的命令序列。當遇到ENDFOR子句時,返回FOR命令,并將循環(huán)變量的值加上步長值再一次與循環(huán)終值比較,如此重復執(zhí)行,直到循環(huán)變量的值超過循環(huán)終值?!菊f明】對循環(huán)語句進行以下說明:l
步長值省略時,系統(tǒng)默認步長值為1。當初值小于終值時,步長值為正值。當初值大于終值時,步長值為負值。步長值不能為0,否則造成死循環(huán)。l
在循環(huán)體內不要隨便改變循環(huán)變量的值,否則會引起循環(huán)次數(shù)發(fā)生改變。l[LOOP]和[EXIT]命令的功能和用法與條件循環(huán)中該命令的用法相同
第38頁/共64頁【例8-12】編寫程序P11.PRG,其程序功能是用計數(shù)循環(huán)統(tǒng)計學生表中入??偡衷?80分以上的學生人數(shù)。編寫程序如圖8-17所示,運行程序P11.PRG,屏幕以如下格式顯示統(tǒng)計出的學生表中入??偡衷?80分以上的學生人數(shù)(與例8-10的結果相同)。
圖8-17
程序P11.PRG編寫窗口
第39頁/共64頁settalkoffclearusexuesheng2countalltornugotopnu=0fori=1tornustep1if入??偡?gt;=580nu=nu+1endifskipendfor@2,30say"入校總分在580以上的人數(shù):"@2,60saynuclearallsettalkonreturn第40頁/共64頁(3)指針循環(huán)指針循環(huán)是在數(shù)據(jù)表中建立的循環(huán),它是根據(jù)用戶設置的當前記錄指針,對一組記錄進行循環(huán)操作?!菊Z句】SCAN[<范圍>][FOR<條件表達式1>][WHILE<條件表達式2>]<命令行序列1>[LOOP]<命令行序列2>[EXIT]<命令行序列3>ENDSCAN【功能】該語句在指定的范圍內,用記錄指針來控制循環(huán)次數(shù)。執(zhí)行語句時,首先判斷函數(shù)EOF()的值,若為“真”,則結束循環(huán),執(zhí)行ENDSCAN后面的語句;否則,結合<條件表達式1>或<條件表達式2>執(zhí)行<命令行序列>,記錄指針移到指定的范圍和條件內的下一條記錄,重新判斷函數(shù)EOF()的值,直到EOF()的值為“真”時結束循環(huán)?!菊f明】對循環(huán)語句進行以下說明:l
SCAN…ENDSCAN循環(huán)語句中隱含函數(shù)EOF()和命令SKIP的處理。l
無<范圍>選項時,則表示對所有記錄進行處理。l
[LOOP]和[EXIT]命令的功能和用法與條件循環(huán)中該命令的用法相同。第41頁/共64頁【例8-13】編寫程序P12.PRG,其程序功能是用指針循環(huán)統(tǒng)計學生表中入??偡衷?80分以上的學生人數(shù)。編寫程序如圖8-18所示,運行程序P12.PRG,屏幕顯示格式與例8-10的結果相同。
圖8-18
程序P12.PRG編寫窗口
第42頁/共64頁settalkoffclearusexuesheng2nu=0scanallfor入??偡?gt;=580nu=nu+1endscan@2,30say"入校總分在580分以上得人數(shù):"@2,60saynuclearallsettalkonreturn第43頁/共64頁(4)多重循環(huán)多重循環(huán)是指在一個循環(huán)語句內又包含另一個循環(huán)語句,多重循環(huán)也稱為循環(huán)嵌套。下面以條件循環(huán)為例,進行說明。【語句】DOWHILE<條件表達式1><命令行序列11>DOWHILE<條件表達式2><命令行序列21>……ENDDO<命令行序列12>ENDDO【功能】在多重循環(huán)中,首先從外循環(huán)進入內循環(huán),執(zhí)行內循環(huán)的語句。當內循環(huán)的條件為假時,返回到外循環(huán);當外循環(huán)的條件為真時,又進入內循環(huán);否則,退出循環(huán)。【說明】對循環(huán)語句進行以下說明:①循環(huán)嵌套層次不限,但內循環(huán)的所有語句必須完全嵌套在外層循環(huán)之中。否則,就會出現(xiàn)循環(huán)的交叉,造成邏輯上的混亂。②循環(huán)結構和分支結構允許混合嵌套使用,但不允許交叉。其入口語句和相應的出口語句必須成對出現(xiàn)。第44頁/共64頁【例8-14】編寫程序P13.PRG,其程序功能是使用多重循環(huán)打印一個九九乘法口訣表。編寫程序P13.PRG,運行程序后屏幕顯示九九乘法口訣表。程序和結果如圖8-19所示。
圖8-19
程序P13.PRG編寫窗口和九九乘法口訣表屏幕顯示
第45頁/共64頁settalkoffclearfory=1to9forx=1toyz=x*y??""+Str(y,1)+"*"+Str(x,1)+"="+Str(z,2)+""endforx?endforysettalkonreturn
第46頁/共64頁8.1.4過程及過程調用1.過程概念在程序設計中,經(jīng)常會遇到有些運算或程序段落在程序中多次調用的情況,為了有效地解決上述重復調用,可設計相對獨立并能完成特定功能的程序段,這種程序段稱為過程或子程序,用于調用程序段的程序稱為主程序。在應用系統(tǒng)的開發(fā)中,一般會根據(jù)實際的需要將整個系統(tǒng)劃分成若干個模塊,然后在主控模塊的控制下,調用各個功能模塊以實現(xiàn)系統(tǒng)的各種功能操作,通常將這些可調用的功能模塊也設計成過程或子程序。2.過程的建立與調用建立過程的方法與建立一般程序的方法相同,所不同的是在每個過程中至少要有一個返回語句。【返回語句】RETURN[<表達式>|TO<程序文件名>|TOMASTER]【調用命令】DO<過程名>【功能】執(zhí)行DO調用命令時,將指定的過程調入內存并執(zhí)行,當執(zhí)行到RETURN命令時,返回到調用該子程序的主程序,并執(zhí)行調用命令下的第一條可執(zhí)行命令?!菊f明】在返回語句中,若選擇可選項<表達式>,將表達式的值返回給調用程序。選擇可選項[TO<程序文件名>],可直接返回指定的程序文件。選擇可選項[TOMASTER],則不論前面有多少級調用而直接返回到第一級主程序。
第47頁/共64頁【例8-15】編寫程序P14.PRG,其程序功能是計算S=X!+Y!+Z!。編寫程序如圖8-20所示,運行程序P14.PRG,屏幕顯示如下的輸入數(shù)據(jù)和輸出結果。圖8-20
程序P14.PRG主程序和過程編寫窗口
第48頁/共64頁3.過程文件過程是作為一個文件獨立地存儲在磁盤上,每次運行時,必須將程序調入內存,為減少磁盤文件的打開次數(shù),提高系統(tǒng)的運行效率,可以把多個過程寫入到一個過程文件中。一個過程文件由多個過程組成,過程文件的擴展名仍然是.PRG。(1)建立過程文件【命令】MODIFYCOMMAND<過程文件名>【功能】建立過程文件。過程文件的基本書寫格式:PROCEDURE<過程名1><命令序列1>RETURNPROCEDURE<過程名2><命令序列2>RETURN……PROCEDURE<過程名N><命令序列N>RETURN
第49頁/共64頁(2)打開過程文件【命令】SETPROCEDURETO<過程文件名>【功能】打開指定的過程文件,將過程文件中所包含的子程序全部調入內存?!菊f明】系統(tǒng)在同一時刻只能打開一個過程文件,打開新過程文件的同時將關閉原來打開的過程文件。若要修改過程文件的內容,一定要先關閉該過程文件。(3)執(zhí)行過程文件中的過程【命令】DO<過程名>【功能】調用過程文件中的指定過程。(4)關閉過程文件【命令】CLOSEPROCEDURE
或SETPROCEDURETO【功能】關閉已打開的過程文件。
第50頁/共64頁【例8-16】編寫程序P15.PRG,其程序功能是求3~100之間的所有素數(shù)。注意:對一個自然數(shù)M(取值在3~100之間的奇數(shù))求素數(shù)的方法是:將M依次除以3到M的算數(shù)平方根之間的所有奇數(shù),若均不能被整除,則M即為素數(shù),否則,M不是素數(shù)。編寫程序如圖8-21所示,運行程序P15.PRG,屏幕顯示如下的輸出結果。3~100之間的所有素數(shù):3 5 7 11 1317 19 23 29 3137 41 43 47 5359 61 67 71 7379 83 89 97
圖8-21
程序P15.PRG主程序和過程文件編寫窗口
第51頁/共64頁settalkoffclearj=0setproceduretop3_1dox1form=3to100step2i=3n=int(sqrt(m))dox2endforsetproceduretosettalkonreturnprocedurex2fori=3tonstep2ifint(m/i)=m/ireturnendifendforifint(j/5)=j/5?Melse??Mendifj=j+1return第52頁/共64頁過程程序procedurex1?"3~100之間的所有素數(shù):"?Return第53頁/共64頁8.1.5變量的作用域和參數(shù)調用1.變量的作用域在程序設計中,特別是模塊程序中,往往會用到許多內存變量,這些內存變量有的在整個程序運行過程中起作用,而有的內存變量只在某些程序模塊中起作用,內存變量的這些作用范圍稱為內存變量的作用域。內存變量的作用域根據(jù)作用范圍可分為全局變量和局部變量。(1)全局變量全局變量是指在程序的任何嵌套中及在程序執(zhí)行期間始終有效的變量。程序執(zhí)行完畢,它們不會在內存自動釋放。全局變量的定義如下:【命令】PUBLIC<內存變量表>【功能】將內存變量名表中的變量說明為全局變量。【說明】<內存變量表>中的變量可以是簡單變量,也可以是下標變量。
第54頁/共64頁(2)局部變量局部變量是指未經(jīng)PUBLIC命令定義的,只在建立它的過程及下級過程中有效的內存變量。建立局部變量的程序執(zhí)行完畢,局部變量的值將被自動清除。凡是過程中未經(jīng)特殊說明的內存變量,系統(tǒng)一律認為是局部變量,這種方式稱做隱含定義方式。也可以使用專門命令來定義局部變量,即顯式定義方式?!久睢縋RIVATE<內存變量表>[ALL[LINK|EXCEPT<通配符>]]【功能】定義選定的內存變量為局部變量?!菊f明】在同一過程中,用隱式或顯式定義的局部變量的作用域完全相同。在主程序或上級過程中未經(jīng)PRIVATE語句定義的局部變量,在下級過程中也未經(jīng)顯式定義,那么它的新值可以帶回主程序或上級過程;若在下級過程中進行了顯式定義,其新值不能帶回主程序或上級過程中使用。
第55頁/共64頁有一個程序和兩個過程文件*主程序P.PRG*過程P1.PRGSETTALKOFFPRIVATEBA=0A=123B=0B=321DOP1?A,B?A,BRETURNRETURN(1)過程P1的輸出”?A,B”為()(A)123321(B)123XYZ(C)OPQXYZ(D)1230(2)主程序P的輸出”?A,B”為()(A)123321(B)123XYZ(C)OPQXYZ(D)1230第56頁/共64頁2.過程的帶參調用在調用過程時,有時需要將數(shù)據(jù)傳遞到調用過程,有時又需要從調用過程將數(shù)據(jù)返回。實現(xiàn)數(shù)據(jù)相互傳遞。VisualFoxPro為此提供了過程的帶參調用方法,這種方法是:在調用過程的命令和被調用過程的相關語句中,分別設置數(shù)量相同、數(shù)據(jù)類型一致且排列順序相互對應的參數(shù)表。調用過程的命令將一系列參數(shù)的值傳遞給被調用過程中的對應參數(shù),被調用過程運行結束時,再將參數(shù)的值返回到調用它的上一級過程或主程序中。這種調用是通過帶參過程調用命令和接受參數(shù)命令實現(xiàn)的。(1)帶參調用【命令】DO<子程序名>WITH<參數(shù)表>【功能】調用一般過程或過程文件中的過程,并為被調用過程提供參數(shù)。【說明】該命令只用在調用過程的程序中。此處<參數(shù)表>又稱為實參表,其中的參數(shù)可以是常量、已賦值的變量或數(shù)值表達式,參數(shù)之間用逗號分開。(2)接受參數(shù)【命令】PARAMETERS<參數(shù)表>【功能】接受調用過程的命令傳遞過來的參數(shù)?!菊f明】該命令必須位于被調用過程的第一條可執(zhí)行語句處。此處<參數(shù)表>又稱為形參表,其中的參數(shù)一般為內存變量。形參與實參的個數(shù)應相等、數(shù)據(jù)類型和個數(shù)要對應相同。第57頁/共64頁【例8-18】編寫程序P17.PRG,其程序功能是用帶參調用方法計算梯形的面積。編寫程序如圖8-24(a)、(b)所示,運行程序P17.PRG,屏幕顯示如下的輸入界面和輸出結果:(a)(b)圖8-24
程序P17.PRG主程序和調用過程編寫窗口第58頁/共64頁主程序SETTALKOFF*于程序SUB.PRGCLEARPARAMETERSI.JN=4M=1①K=1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年滬教版七年級科學下冊階段測試試卷
- 推動銀發(fā)經(jīng)濟業(yè)態(tài)多元化的策略與執(zhí)行方案
- 2025年魯人新版五年級語文上冊月考試卷
- 提振消費的有效策略與實施路徑解析
- 2025年魯教版高一化學下冊階段測試試卷
- 2024物流公司駕駛員勞動合同與應急響應預案3篇
- 2025年粵教版九年級生物下冊階段測試試卷
- 2025年滬科版九年級化學上冊月考試卷
- 二零二五年度創(chuàng)業(yè)項目股權對賭協(xié)議3篇
- 2024我要開民宿:民宿可持續(xù)發(fā)展戰(zhàn)略規(guī)劃與實施合同3篇
- 拆除高空廣告牌的施工方案
- 天津市部分區(qū)2024-2025學年九年級上學期11月期中數(shù)學試題
- 全國職業(yè)院校技能大賽中職(大數(shù)據(jù)應用與服務賽項)考試題及答案
- 學校食堂從業(yè)人員培訓制度
- 審計基礎知識培訓
- DB43 873-2014 箱式暖腳器標準
- 【學易金卷】2023-2024學年四年級數(shù)學上冊期末全真模擬提高卷(三)(答題卡)(北師大版)
- 部編 2024版歷史七年級上冊期末(全冊)復習卷(后附答案及解析)
- 2024年煤礦安全管理人員(機電運輸)考試題庫(濃縮500題)
- 山東省濟南市歷城區(qū)歷城第二中學2025屆高一數(shù)學第一學期期末監(jiān)測模擬試題含解析
- 《籃球移動技術 行進間傳球》教案(共三篇)
評論
0/150
提交評論