




已閱讀5頁,還剩103頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第六章,程序設(shè)計初步,本章教學(xué)計劃,教學(xué)目的:了解程序設(shè)計的概念和程序設(shè)計的方法,掌握程序文件的創(chuàng)建與運行方法和與程序設(shè)計相關(guān)的輔助命令,掌握三大結(jié)構(gòu)的程序設(shè)計方法,掌握過程與自定義函數(shù)的定義和調(diào)用方法。 重點:輸入輸出命令、三種基本結(jié)構(gòu)程序設(shè)計 難點:雙層循環(huán)程序設(shè)計、程序的模塊化 課時:課堂講授8課時、上機實驗8 課時 方式:課堂講授、上機實驗,本章綱要,順序結(jié)構(gòu)設(shè)計,分支結(jié)構(gòu)設(shè)計,循環(huán)結(jié)構(gòu)設(shè)計,程序設(shè)計基礎(chǔ),模塊化設(shè)計,程序設(shè)計基礎(chǔ),2. 程序設(shè)計的控制結(jié)構(gòu)(3種結(jié)構(gòu)),3. 結(jié)構(gòu)化程序設(shè)計(4個步驟),4. 程序文件中的專用命令(5類),5. 程序文件的建立與運行,1. 程序設(shè)計及算法的概念 (2個概念),1.程序設(shè)計及算法的概念,程序 ,算法:解決問題的方法和步驟,程序設(shè)計基礎(chǔ),數(shù)據(jù)結(jié)構(gòu),算法,對數(shù)據(jù)的描述:在程序中指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,對操作的描述,類比理解:菜譜原料操作步驟,一系列計算機指令的集合,算法的概念,在員工表中,按員工編號查詢員工的姓名和職稱 。 算法 1.打開員工表。 2.輸入待查員工的員工號 3.查找員工在表中對應(yīng)的位置。 4.顯示該記錄的員工號、姓名和職稱。 5.關(guān)閉表。,將酒瓶和油瓶中的液體互換。 解決方法 1.拿來一個空瓶 2.酒瓶的酒倒入空瓶 3.油瓶的油倒入酒瓶 4.空瓶的酒倒入油瓶 思考 如何將變量A、B中存放的值互換?寫出算法,程序設(shè)計基礎(chǔ),2.程序設(shè)計的控制結(jié)構(gòu),三種基本的控制結(jié)構(gòu),順序結(jié)構(gòu),分支結(jié)構(gòu),循環(huán)結(jié)構(gòu),流程圖的基本知識,流程圖的基本知識,順序結(jié)構(gòu),特點:依照程序書寫順序執(zhí)行程序,use sb &打開表 list fields 名稱,價格 for 主要設(shè)備 &顯示相關(guān)記錄 replace all 價格 with 價格*0.9 for 主要設(shè)備 &數(shù)據(jù)替換,分支結(jié)構(gòu)(選擇結(jié)構(gòu)),特點:根據(jù)條件的 滿足與否而 分別執(zhí)行與 其相對應(yīng)的 操作,思考:分支結(jié)構(gòu)與順序結(jié)構(gòu)的不同之處,循環(huán)結(jié)構(gòu)(重復(fù)結(jié)構(gòu)),特點:反復(fù)執(zhí)行某些操作,反復(fù)執(zhí)行的部分稱為循環(huán)體。,思考: 兩種循環(huán)結(jié)構(gòu)的區(qū)別在于?(提示:循環(huán)條件),答案: 1. 當(dāng)型是當(dāng)循環(huán)條件成立時執(zhí)行循環(huán)體,條件不成立時退出循環(huán) ;直到型是執(zhí)行循環(huán)體,直到條件成立才退出循環(huán)。 2. 當(dāng)型是先判斷后執(zhí)行,可能一次都不能執(zhí)行;直到型是先執(zhí)行后判斷,至少執(zhí)行一次。,小結(jié),所有程序從整體上看其執(zhí)行流程肯定是從上而下順序執(zhí)行的,是一種順序結(jié)構(gòu)。而在其內(nèi)部的結(jié)構(gòu)中,三種結(jié)構(gòu)是互相嵌套存在。 例如,對于循環(huán)結(jié)構(gòu),其內(nèi)部肯定包含有判斷條件成立與否的結(jié)構(gòu),單獨來看是一種選擇結(jié)構(gòu),但從整體上是屬于循環(huán)結(jié)構(gòu)的一部分,而循環(huán)體內(nèi)部的語句自然是一種依次執(zhí)行的順序結(jié)構(gòu)。,如何設(shè)計結(jié)構(gòu)化程序?,3.結(jié)構(gòu)化程序設(shè)計,程序設(shè)計基礎(chǔ),什么是結(jié)構(gòu)化程序? 答1:用高級語言(如vfp)表示的結(jié)構(gòu)化算法。 答2:用三種基本控制結(jié)構(gòu)組成的程序。,算法設(shè)計,4.程序文件中的專用命令,程序設(shè)計基礎(chǔ),2、置會話狀態(tài)命令,3、交互式命令,4、等待命令,5、程序結(jié)束專用命令,1、程序注釋命令,1、程序注釋命令,格 式 :NOTE* 或 & 功 能 : NOTE*多用于對一個程序模塊的 功能進行說明。&是用于在命令語 句末尾加上注釋信息。都不被執(zhí)行. 例 子 : a=mod(sqrt (9) , 3) & 對9求平方根,然后對3求模。,格 式 :SET TALK ONOFF 功 能 :控制Visual FoxPro編輯環(huán)境中會話狀態(tài)的 打開與關(guān)閉。 說 明 :在會話狀態(tài)開通( on )時 ,VFP在執(zhí)行命令的時候會向用戶提供大量的中間結(jié)果及反饋信息 ,一般用于程序調(diào)試時。開通不僅會減慢程序的運行速度,而且還會與程序本身的輸出相互夾雜,引起混淆。所以在執(zhí)行程序時,則通常置“會話”于關(guān)閉狀態(tài)(off),2、置會話狀態(tài)命令,3、交互式命令,(1)字符串接收命令,(2)任意數(shù)據(jù)輸入命令,(3)定位輸入輸出命令,(1)字符串接收命令,格 式:ACCEPT TO 功 能:此命令是專門用于字符串的輸入。 說 明:(1)提示信息是用來在輸入時,顯示提示性文字。 (2)輸入的字符串保存在TO所指向的內(nèi)存變量中。 (3)在使用此命令來輸入字符串時,不需要加上定界符,否則,定界符會被當(dāng)做字符串本身被存入內(nèi)存變量中。 例 子: ACCEPT “請輸入一個數(shù)字” TO a 輸入:21 (則a”21”),(2)任意數(shù)據(jù)輸入命令,格 式 :INPUT TO 功 能 :從鍵盤輸入數(shù)據(jù)保存在指定的內(nèi)存變量中。 說 明 :(1)此命令能夠接收各種類型數(shù)據(jù)的輸入。 (2)在輸入數(shù)據(jù)時對于有定界符的數(shù)據(jù)類型一定要帶上定界符輸入。 例 如 :INPUT “請輸入出生日期” TO d 輸入:1985-09-01 INPUT “請輸入入學(xué)成績” TO d 輸入:560.5 (數(shù)值型數(shù)據(jù)沒有定界符),(3)定位輸入輸出命令,屏幕格式 系統(tǒng)將整個屏幕劃分為: 25行 80列 XY平面坐標(biāo)系。 命令格式 SAY GET DEFAULT READ,說明: (1)子句用來表示數(shù)據(jù)在窗口中顯示的位置 ,行與列都是數(shù)值表達式或是數(shù)值型常量。 (2)SAY子句用來輸出提示信息,GET子句用來輸入及編輯數(shù)據(jù)。若缺省SAY子句,GET變量值從指定位置開始顯示。 (3)GET子句中的變量必須具有初值,可用DEFAULT子句的指定初值。 (4)通過GET子句從外界輸入的變量的值,必須通過READ命令來激活。在一個程序中如果有多個GET子句,只需在最后GET子句后面加上一個READ子句。一個READ子句可以激活它前面所有的未被激活的GET子句中的變量。,根據(jù)員工的編號來修改員工的基本工資和水電費。,CLEAR USE 工資表 yg=“0001“ 2,10 SAY “請輸入員工的編號“ GET yg READ LOCATE FOR 員工編號 = yg 4,10 SAY “請修改基本工資” GET 基本工資 6,10 SAY “請修改水電費” GET 水電費 READ USE,【例6.1】,格 式: WAIT TO WINDOW AT , NOWAIT CLEAR | NOCLEAR TIMEOUT 功 能:暫停程序運行,直到用戶輸入任意的一個字符才重新開始執(zhí)行程序,也可以用于輸出一條提示信息。 說 明: 1)to :將用戶鍵入的字符保存到內(nèi)存變量。 2)Window at,:在VFP主屏幕 的指定位置出現(xiàn)一個Wait提示窗口。 3)Timeout:用來設(shè)定等待時間。,4、等待命令,例 子: WAIT “請檢查輸入內(nèi)容“ WINDOW AT 9,9,RETURN & 終止程序執(zhí)行,并返回到調(diào)用它 的上級程序繼續(xù)執(zhí)行,如無上級 程序則返回命令窗口。 CANCEL & 終止程序執(zhí)行,清除程序的私有 變量,并返回命令窗口。 QUIT & 退出VFP系統(tǒng),返回WINDOWS, 與文件菜單的退出功能相同。,5、程序結(jié)束專用命令,5.程序文件的建立與運行,程序文件又稱為命令文件 ,其擴展名為.PRG。,建立或修改程序文件 (1) 命令方式 格 式:MODIFY COMMAND ? 功 能:建立或修改一個程序文件。 說 明:命令中的文件名是指定要生成的程序文件的名稱,缺省的擴展名為.PRG;文件名前也可以指明路徑。,(2) 菜單方式(2個步驟) 選擇”文件”菜單中的”新建”命令,并在彈出的”新建”對話框中,選擇”程序”按鈕,再單擊”新建文件”命令按鈕,彈出文本編輯窗口。 在文本編輯窗口中,輸入程序內(nèi)容即可。,2. 程序的運行 (1) 命令方式 格 式:DO 功 能:依次執(zhí)行程序中的各條命令。 說 明:DO命令默認運行.PRG程序,只需取文件主名。當(dāng)需要使用DO命令執(zhí)行其他文件時,則必須包括擴展名。例如,通過DO命令來執(zhí)行某個查詢文件,文件名為ele.qpr,則命令必須寫為:DO ele.qpr。,(2) 菜單方式(2種方式) 選擇”程序”菜單中”運行”命令,在彈出的”運行”對話框中,輸入文件名即可。 當(dāng)程序處在編輯狀態(tài)下時,右擊文本編輯區(qū),在其彈出快捷菜單中選擇“執(zhí)行程序”菜單項即可。,順序結(jié)構(gòu)設(shè)計,順序結(jié)構(gòu)程序設(shè)計是三種基本結(jié)構(gòu)中最簡單也是最常用的一種結(jié)構(gòu)。順序結(jié)構(gòu)的程序在運行時按照語句排列的先后順序,自頂向下依次執(zhí)行。,【例6.2】,從鍵盤輸入一個小寫字母,要求改用大寫字母輸出。,SET TALK OFF CLEAR ACCEPT “請輸入一個小寫字母“ TO a a= UPPER(a) ? “轉(zhuǎn)換結(jié)果為: “, a SET TALK ON RETURN,如果輸入的字母為非小寫字母,例如,誤操作輸入了大寫字母或是數(shù)字字符,那么在此程序運行中仍然將繼續(xù)執(zhí)行并顯示結(jié)果,這顯然與題意不符,要解決這個問題,需要用到選擇結(jié)構(gòu)程序。,順序結(jié)構(gòu)程序特點: 依照程序書寫順序執(zhí)行程序,例2:求長方形的面積。 clear set talk off input “請輸入長方形的長:” to L input “請輸入長方形的寬:” to W s=L*W ? “長方形的面積為:”, s set talk on return,分支結(jié)構(gòu),程序應(yīng)具有判斷功能,而判斷是通過程序中的分支結(jié)構(gòu)(選擇結(jié)構(gòu))來實現(xiàn)的。,分支結(jié)構(gòu)是程序中一種常用結(jié)構(gòu),按照分支結(jié)構(gòu)執(zhí)行路徑的多少,可分為單分支、雙分支和多分支結(jié)構(gòu)。實現(xiàn)分支結(jié)構(gòu)的語句有 IF語句和DO CASE語句。,無論哪種類型的分支結(jié)構(gòu),都是依據(jù)所給條件為真或為假,來選擇執(zhí)行某一分支的相應(yīng)操作。,1、單分支結(jié)構(gòu) 格式: IF ENDIF,執(zhí)行流程: 首先計算條件表達式的值, 若其值為真,則執(zhí)行IF與ENDIF之間的命令 序列,然后執(zhí)行ENDIF后面的命令; 若其值為假,則直接執(zhí)行ENDIF后面的命令。,分支結(jié)構(gòu)特點: 根據(jù)條件成立與否,分別執(zhí)行與其相對應(yīng)的操作。,單分支結(jié)構(gòu)流程圖:,思考:分支結(jié)構(gòu)與順序結(jié)構(gòu)的不同之處,例1:求長方形面積。(判斷:當(dāng)輸入的邊長值為正數(shù)時,求面積。),clear set talk off input “請輸入長方形的長:” to l input “請輸入長方形的寬:” to w if l0 and w0 s = l * w ? ”長方形的面積為:” , s endif return,在設(shè)計程序時,對于有數(shù)據(jù)輸入的程序,一定要對輸入數(shù)據(jù)的有效性做相應(yīng)的檢查,避免由于數(shù)據(jù)的錯誤輸入而導(dǎo)致程序的出錯。這是一個程序員必須養(yǎng)成的良好習(xí)慣。,例2,從鍵盤輸入一個小寫字母,要求改用大寫字母 輸出。,2、雙分支結(jié)構(gòu) 格式:IF ELSE ENDIF,執(zhí)行流程: 首先計算條件表達式的值, 若其值為真,則執(zhí)行命令序列1,然后 再執(zhí)行ENDIF后面的命令; 若其為假,執(zhí)行命令序列2,然后再執(zhí) 行ENDIF后面的命令。,雙分支結(jié)構(gòu)流程圖,例3:,從鍵盤輸入一個數(shù),判斷其為奇數(shù)還是偶數(shù)。,分析:(1)首先是輸入一個數(shù),然后判斷輸入的數(shù)奇偶性。 (2)應(yīng)輸入數(shù)值型數(shù)據(jù),可以用INPUT或是GET語句來輸入。 (3)如何判斷奇偶性呢?可使用MOD函數(shù)或求余運算符“%”。對于一個偶數(shù)x,MOD(x,2)應(yīng)該為0,否則為1。,例4:在工資表中,需要按照員工編號查詢員工的基本信息。,分析: 1.打開工資表; 2.輸入員工號; 3.用LOCATE命令查找該員工; 4.用FOUND()函數(shù)來判斷是否存在該記錄。 5.若FOUND()函數(shù)為真,表示存在此員工記錄,否則,不存在此員工記錄,給出“查無此人”的提示信息。 5.關(guān)閉表。,SET TALK OFF USE 工資表 ACCEPT “請輸入員工編號” TO a LOCATE FOR 員工編號=a IF FOUND() & 條件FOUND()為真表示存在此員工 DISP 員工號,基本工資,水電費 ELSE & 條件FOUND()為假表示不存在此員工 ?“查無此人!” ENDIF USE SET TALK ON RETURN,程序采用“縮進制”格式書寫,最外層頂格寫,屬于其內(nèi)層語句則往后退一定距離,這樣便于閱讀和調(diào)試。,注意: 1、IF與ENDIF必須成對出現(xiàn),且各占一行。 2、可以為關(guān)系表達式、邏輯表達式或其他邏輯量。,課堂練習(xí): 1、在員工表中,按姓名查詢員工信息。 2、從鍵盤輸入一個數(shù),輸出其絕對值。 3、輸入a、b兩個數(shù),按由小到大的順序輸出。,思考題: 輸入a、b、c三個數(shù),按由小到大的順序輸出。,clear set talk off input “請輸入a的值:” to a input “請輸入b的值:” to b input “請輸入c的值:” to c if ab &a和b比較大小,若a大,則a、b 交換 s=a a=b b=s endif if ac &a和c比較大小,若a大,則a、c 交換 s=a a=c c=s endif If bc &b和c比較大小,若b大,則b、c 交換 s=b b=c c=s endif ? a ,b , c return,思考題答案,3.IF語句的嵌套,實際生活中,很多問題不僅僅只有兩種可能,而是要求對多種情況進行不同的處理,則需要用到IF語句嵌套。 嵌套是指在某種結(jié)構(gòu)中含有其它結(jié)構(gòu)。,一般格式: IF IF ENDIF ELSE IF ENDIF ENDIF,注意: 1、IF一定要與ENDIF配對。 2、在IF結(jié)構(gòu)之間可以嵌套,但不能交叉。,例5: 輸入一個學(xué)生成績,判斷學(xué)生成績的等級。假設(shè)成績等級劃分為5等: 0,60 為不及格,60,70為及格, 70,80為良, 80,90為好, 90,100為優(yōu)。,4、多分支DO CASE語句,格式: DO CASE CASE CASE CASE OTHERWISE ENDCASE,例6:,使用DO CASE語句轉(zhuǎn)換例5。,SET TALK OFF INPUT “請輸入成績” TO p IF ( P100) OR ( P0) ? “輸入的成績有誤,請重新輸入“ ELSE DO CASE CASE P60 ? “不及格“ CASE P70 ? “及格“ CASE P80 ? “良“ CASE P90 ? “好“ OTHERWISE ? “優(yōu)“ ENDCASE ENDIF RETURN,課堂練習(xí):,編一繳稅程序,以800元為基數(shù),超出部分的繳稅比例如下: 800-1500(含800) 5% 1500-2500(含1500) 10% 2500-5000(含2500) 20% 5000以上 (含5000) 25%,注意事項:,1、在DO CASE語句中,當(dāng)有幾個CASE的條件同時成立時,自上而下只執(zhí)行最先滿足條件的CASE后面的語句組,然后退出DO CASE語句。 2、DO CASE和ENDCASE必須配對出現(xiàn)。 3、IF語句和DO CASE語句都可用于多分支結(jié)構(gòu),但當(dāng)分支較多,IF嵌套的層次就越多,程序結(jié)構(gòu)也會變得復(fù)雜,不利于程序的調(diào)試和修改,所以,當(dāng)嵌套層次超過34層時,一般不使用IF結(jié)構(gòu),而使用DO CASE語句。,小結(jié),分支結(jié)構(gòu)使得程序功能得到完善,分支結(jié)構(gòu)的目的在于對不同情況做出不同處理,這種結(jié)構(gòu)的出現(xiàn)使得計算機在一定程度上具有了判斷的功能,是計算機走向智能化的重要結(jié)構(gòu)。,循環(huán)結(jié)構(gòu)設(shè)計,1.條 件 循 環(huán),2.步 長 循 環(huán),3.掃 描 循 環(huán),1、條件循環(huán),格式: DO WHILE LOOP EXIT ENDDO,注意事項:,(1)此循環(huán)為當(dāng)型循環(huán)。對于當(dāng)型循環(huán),如果條件第一次就不成立,那么循環(huán)一次也不做。 (2)循環(huán)體內(nèi)應(yīng)有修改循環(huán)條件的語句或EXIT。 (3)LOOP,EXIT可在適當(dāng)時候控制循環(huán),一般用在IF或DO CASE語句中。,求1+2+3+100之和。 分析:,0 + 1 = 1 1 + 2 = 3 3 + 3 = 6 6 + 4 = 10 4950+100=5050,S I S,S=0 I =1,S=S+I I =I+1,【例6.12】,S=S+I I =I+1,S=S+I I =I+1,SET TALK OFF CLEAR I=1 S=0,I=100,S=S+I,I=I+1,ENDDO,?”S=”,S RETURN,DO WHILE,說明:,(1)對于條件循環(huán),最重要的在于循環(huán)條件的建立,特別是對于循環(huán)變量臨界值的確定。 (2)循環(huán)變量要賦初值。 (3)循環(huán)體內(nèi)要有能使得循環(huán)條件逐漸趨近于假的語句,否則會造成死循環(huán)。 (4)要考慮循環(huán)體內(nèi)的語句順序。如果順序不同,可能程序的結(jié)果就不同了。,思考題:,我們應(yīng)修改例6.12中哪些語句來實現(xiàn)以下功能需求呢? 1、編程求1+3+5+99。,2、編程求2+4+6+ +1000。,3、編程求1到100所有自然數(shù)的平方和。,4、編程求1*2+2*3+3*4+ +100*101。,【例6.14】,已知表達式s=1+1/2+1/3+1/n,直到s5 為止,求此時n的值。,分析:(1)此題為一個多項式累加求結(jié)果。但是顯然具體多項式有多少項并不清楚所以不知循環(huán)次數(shù)。 (2)采用循環(huán)結(jié)構(gòu),循環(huán)體中每次是對s累加前一項式的值,而且多項式之間存在著每次分母都比上一次增加1規(guī)律。 (3)由題目給出條件得知,只有當(dāng)s小于5時循環(huán)才能繼續(xù)。因此得出循環(huán)的條件應(yīng)該為s=5。,CLEAR SET TALK OFF s=0 n=1,DO WHILE s=5 s=s+1/n n=n+1 ENDDO,? “n的值應(yīng)該為”,n-1 SET TALK ON RETURN,【例6.14】的另一種參考答案,用永真循環(huán)實現(xiàn),程序代碼如下:,CLEAR SET TALK OFF STORE 0 TO S,I,DO WHILE .T. N=N+1 S=S+1/N IF S5 EXIT ENDIF ENDDO,? “n的值應(yīng)該為”,n SET TALK ON RETURN,分析:(1)此題要求判斷100到200之間的所有數(shù),那么是一個循環(huán)判斷的過程。 (2)設(shè)一個變量i初值為100,循環(huán)條件為i=200。 (3)循環(huán)體中,對每次的i先利用MOD函數(shù)判斷奇偶性。若i為奇數(shù)則累加到變量s中,否則,通過LOOP語句退出本次循環(huán),進入下一次循環(huán)判斷。,【例6.15】,求100到200之間所有奇數(shù)之和。,SET TALK OFF CLEAR s=0 i=100 DO WHILE i=200 i=i+1 &必須放在IF語句前 IF MOD(i,2)=0 LOOP & 若i被2除后余數(shù)為0,則i為偶數(shù),否則退出本次循環(huán)。 ELSE s=s+i ENDIF ENDDO ?“100到200之間奇數(shù)累加之和為:“+s SET TALK ON RETURN,2、步長循環(huán),條件循環(huán)可以實現(xiàn)已知和未知循環(huán)次數(shù)的循環(huán)。 對于循環(huán)次數(shù)已知的循環(huán)還可采用步長循環(huán)。,格式: FOR = TO STEP ENDFORNEXT,數(shù)值表達式,默認值為1。,說明: (1)循環(huán)變量按步長值增加或減小。 (2)當(dāng)循環(huán)變量的值不在初值與終值范圍內(nèi)時,結(jié)束循環(huán)。,幾種步長循環(huán)形式:,1.省略步長 FOR i=1 TO 100 n=n+1 ENDFOR 沒有給出步長,默認為1, 退出循環(huán)后n的值為100。,假設(shè)n的初值為0,4.初值與終值相等 FOR i=1 TO 1 STEP 10 n=n+1 ENDFOR 循環(huán)只做一次 , 退出循環(huán)后n的值為1。,求1+2+3+100之和。,【例6.12】,SET TALK OFF CLEAR S=0 FOR i=1 TO 100 STEP 1 S=S+i ENDFOR ? “1-100之和為“,S SET TALK ON RETURN,舉一反三:求123100之積。,S1,S=S*i,積,求所有的3位數(shù)中能同時被5和12整除的數(shù)有多 少個?其和是多少?并按照每行輸出5個,輸出這些數(shù)。,分析: 1.所有的三位數(shù),也就確定了范圍是從100999,使用步長循環(huán),初值為100,終值為999,步長為1。 2.用循環(huán)到的數(shù)對5和12求余,若其余數(shù)為0,則是一個需要的數(shù),那么存放統(tǒng)計個數(shù)的變量加1,用于求和的變量累加上該數(shù)值。 3.對于每個滿足條件的數(shù)都使用“?”來保證同行輸出,一旦輸出了5個,則使用“?”換行。即,如果統(tǒng)計的個數(shù)能被5整除,就輸出一個“?”,用來換行。,【例6.13】,STORE 0 TO s,t &s保存累加和,t保存滿足條件的數(shù)的個數(shù) FOR i=100 TO 999 IF (i%5=0) AND (i%12=0) s=s+i t=t+1 ? i, “ “ IF t%5=0 ? &已經(jīng)輸出5個數(shù),則換行輸出。 ENDIF ENDIF ENDFOR ?“滿足條件的數(shù)的個數(shù)為:“, t ?“滿足條件的數(shù)之和為:“, s,思考:輸出所有的四位數(shù)中能同時被9和11整除的數(shù),每行輸出6個。,分析: 1.在表中添加新的空記錄可以使用APPEND BLANK命令。 2.用步長循環(huán)來控制添加記錄的數(shù)量。 3.內(nèi)部數(shù)據(jù)的輸入可以用定位輸入命令來完成。 代碼: SET TALK OFF CLEAR USE 員工表 FOR i=1 TO 10 APPEND BLANK ? “請輸入添加的第“, i, “個員工的資料“,【例6.14】,在員工表中添加10條新記錄。,2,5 SAY “請輸入員工編號” GET 員工編號 4,5 SAY “請輸入員工姓名” GET 姓名 6,5 SAY “請輸入員工性別” GET 性別 8,5 SAY “請輸入員工婚否” GET 婚否 10,5 SAY “請輸入員工職稱” GET 職稱 12,5 SAY “請輸入員工工作日期” GET 工作日期 14,5 SAY “請輸入員工部門編號” GET 部門編號 16,5 SAY “請輸入員工工資級別” GET 工資級別 18,5 SAY “請輸入員工聯(lián)系電話” GET 聯(lián)系電話 READ CLEAR ENDFOR USE SET TALK ON RETURN,小 結(jié),a) 循環(huán)變量、和(或積或個數(shù))變量要賦初值。 b) DO WHILE循環(huán)體內(nèi)要有修改循環(huán)變量的語句(即為了避免程序成為死循環(huán))。 c)盡可能不要在FOR循環(huán)內(nèi)部使用改變循環(huán)變量的語句。,3、掃描循環(huán),格 式: SCAN FORWHILE ENDSCAN,說 明: (1)針對當(dāng)前工作區(qū)中被打開的表的記錄進行掃描。 (2)子句確定掃描記錄的范圍,缺省則為ALL。 (3)對子句內(nèi)滿足FOR或WHILE的記錄執(zhí)行循環(huán)體中的規(guī)定操作。 (4)記錄指針可自動往下移。,USE 員工表 STORE 0 TO n1,n2,j1,j2 SCAN IF 性別=“男” n1=n1+1 ELSE n2=n2+1 ENDIF DO CASE CASE 職稱=“教授” j1=j1+1 CASE 職稱=“副教授” j2=j2+1 ENDDO ENDSCAN,【例6.15】,統(tǒng)計員工表中男女人數(shù),以及教授和副教授 的人數(shù)。,?“總共有”,n1,“個男員工” ?“總共有”,n2,“個女員工” ?“總共有”,j1,“個教授” ?“總共有”,j2,“個副教授” USE,總結(jié),a) 條件循環(huán)命令適用于各種類型的循環(huán)程序。 b) 計數(shù)循環(huán)適用于已知循環(huán)次數(shù)的循環(huán)程序。 c) 掃描循環(huán)命令適用于對數(shù)據(jù)庫操作的循環(huán)程序。 d) 事實上,F(xiàn)orEndfor和ScanEndscan是 Do WhileEnddo的特殊形式。,作 業(yè),1.用掃描循環(huán)依次修改學(xué)生表中第10-40條記錄中女生的總分。 2.編寫一個密碼輸入程序,密碼為“ABC”,若用戶輸入正確,顯示“歡迎使用”,若不正確,允許輸入三次,三次輸入不正確,顯示“無權(quán)使用本系統(tǒng)”,并退出程序執(zhí)行。 3.在屏幕上打印如下圖形: * * * 4.實現(xiàn)輸入任意一個15以內(nèi)的數(shù)求其階乘。,5、設(shè)S=1+1/2+1/3+1/N,求使S不超過10的最大的N值。 6、求1-1000之間能被3整除的偶數(shù)的個數(shù)及其和。 7、打印如下圖形: * * * * 附加題: 1、任意輸入10個數(shù),能求出它們中的最大值和最小值。 2、打印九九乘法表。,模塊化設(shè)計,1.子 程 序,2.過程與過程文件,3.自定義函數(shù),4.內(nèi)存變量的作用域,5.數(shù)據(jù)傳遞,1、子程序,一、定義: 子程序?qū)嶋H上是一個程序,其是一個相對的概念,通常稱調(diào)用的程序為主程序,被調(diào)用的程序為子程序。,二、調(diào)用與返回 DO WITH 1、主程序執(zhí)行時遇到DO命令,執(zhí)行就轉(zhuǎn)向子程序。子程序執(zhí)行完后就會返回到主程序。 2、參數(shù)表可以是表達式,若為內(nèi)存變量,必須具有初值。 3、調(diào)用子程序時,參數(shù)表中的參數(shù)要傳送給子程序。,三、子程序參數(shù)的定義: PARAMETERS 功能:接受主程序發(fā)送的參數(shù)值,調(diào)用返回主程序時把變 量的值回送給主程序相應(yīng)的變量。 說明: a) PARAMETERS必須是被調(diào)用程序的第一個語句。 b) 程序返回主程序后,該命令定義的參數(shù)即被清除。 c) DO 命令傳送參數(shù)的個數(shù)不能多于PARAMETERS參數(shù) 表中所列參數(shù)的個數(shù)。 d) DO命令所帶的參數(shù)叫實際參數(shù),PARAMETERS所對 應(yīng)的叫形式參數(shù)。,求一個半徑等于邊長的圓與正方形面積之差。,主程序: STORE 0 TO S1,S2 INPUT “輸入半徑或邊長的值:“ TO A DO YUAN.PRG WITH A,S1 DO ZHEN.PRG WITH A,S2 ?S1-S2,YUAN.PRG PARAMETERS R,S S=3.14*R2 RETURN,ZHEN.PRG PARAMETERS L,S S=L2 RETURN,【例6.15】,注 意 1、只有當(dāng)DO命令中參數(shù)為內(nèi)存變量時,子程序的參數(shù)才能返回給主程序,若參數(shù)為常量或表達式時,子程序的參數(shù)值不能夠返回給主程序。 2、若子程序不需要參數(shù)時,DO命令也可以不帶參數(shù)。,四、子程序的返回 RETURN TO MASTER|TO 說明: TO MASTER 直接返回到最外層主程序;TO 強制返回到指定的程序文件。,2、過程與過程文件,如果將多模塊程序中的每個模塊(主程序,子程序或自定義函數(shù))分別保存為一個獨立的.PRG文件,則每執(zhí)行一個模塊就要打開一個文件,勢必會增加運行時間。為此VFP允許在一個.PRG文件中設(shè)置多個程序模塊,并將主程序以外的每個模塊定義為一個過程,即“過程文件”,仍以.PRG為擴展名。,一、過程的定義 PROCEDURE PARAMETERS RETURN,說 明: a) 每個過程均以PROCEDURE開始,以RETURN結(jié)束。每個過程實際上是一個獨立的子程序或一個用戶定義函數(shù)。 b) PROCEDURE 用于過程的第一條語句,它標(biāo)識了每個過程的開始,同時定義了過程名。 c) 過程如果以RETURN 作為結(jié)束語句,則該過程既可用DO 的形式執(zhí)行,又可當(dāng)做一個合法的自定義函數(shù),可供隨時調(diào)用。,1,2,【例6.16】,【例6.17】,寫出下列程序的運行結(jié)果。,結(jié)果為: 8 20 28,二、過程文件 一個過程可以以文件形式單獨存在,也可以將多個過程合并到一個過程文件。 過程文件是把多個過程集中起來用一個文件的形式存儲在磁盤上,要調(diào)用其中的過程,必須先打開該過程文件。,格 式:SET PROCEDURE TO 功 能:打開過程文件。,【例6.18】,用過程文件實現(xiàn)求一個半徑等于邊長的圓與正方形面積之差的問題。,*Main.prg CLEAR SET TALK OFF SET PROCEDURE TO sub &打開過程文件sub.prg STORE 0 TO s1,s2 INPUT “輸入半徑或邊長的值:“ TO a DO yuan WITH a,s1 &調(diào)用過程文件中的過程yuan DO zhen WITH a,s2 &調(diào)用過程文件中的過程zhen ?s1-s2 SET TALK ON RETURN,*過程文件sub.prg PROCEDURE yuan &過程yuan PARAMETERS r,s s=3.14*r2 RETURN PROCEDURE zhen &過程zhen PARAMETERS i,s s=i2 RETURN,3、自定義函數(shù),一、自定義函數(shù)的定義 FUNCTION PARAMETERS RETURN ,自定義函數(shù)與系統(tǒng)函數(shù)調(diào)用方法相同: 函數(shù)名(),【例6.19】,將子程序中的例題改為自定義函數(shù)。,CLEAR S=0 INPUT “輸入半徑或邊長的值:” TO A ?YUAN(A)-ZHEN(A) FUNCTION YUAN PARAMETERS R S=3.14*R2 RETURN S FUNCTION ZHEN PARAMETERS L S=L2 RETURN S,【例6.20】,定義一個判斷n是否是素數(shù)的函數(shù),然后調(diào)用該函數(shù)求21000內(nèi)的全部素數(shù)。,分析: a) 素數(shù)也叫質(zhì)數(shù),它是大于1且除了1和它本身之外,不能被其他任何整數(shù)所整除的整數(shù)。 b) 為了判斷某數(shù)n是否是素數(shù),一個最簡單的方法是用2345n-1這些數(shù)逐個去除n,看能否除盡,如果全都除不盡,則n是素數(shù),否則,只要其中一個數(shù)除盡了,則n不是素數(shù)。為了減少除的次數(shù),提高運行效率,除到n開方即可。,程序:,*此子程序判斷n是否是素數(shù) FUNCTION PRIME PARAMETERS N FLAG=.T. K=INT(SQRT(N) J=2 DO WHILE J=K AND FLAG IF MOD(N,J)=0 FLAG=.F. ENI
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 海洋生物降解技術(shù)與服務(wù)考核試卷
- 關(guān)于成立風(fēng)光制氫公司可行性研究報告(范文模板)
- 糖業(yè)產(chǎn)品市場定位策略考察報告考核試卷
- 證券市場金融衍生品市場建設(shè)考核試卷
- 自動售貨機行業(yè)可持續(xù)發(fā)展戰(zhàn)略考核試卷
- 軟件開發(fā)中的跨平臺開發(fā)框架考核試卷
- 2023-2024學(xué)年高一語文上學(xué)期期末考點大串講專題04古代詩歌閱讀(考題猜想解析版)
- 房地產(chǎn)防腐施工安全措施
- 家庭與學(xué)校合作教育計劃
- 餐飲業(yè)技術(shù)服務(wù)內(nèi)容及措施
- 國家中小學(xué)智慧教育平臺應(yīng)用指南
- 2024北京豐臺區(qū)三年級(下)期末數(shù)學(xué)試題及答案
- 2024-2025學(xué)年人教版七年級(下)期中數(shù)學(xué)試卷(考試范圍:第7~9章) (含解析)
- 人工智能安全監(jiān)控系統(tǒng)開發(fā)協(xié)議
- 油田夏季十防培訓(xùn)課件
- 工傷賠償私了協(xié)議書范本
- 學(xué)生心理健康一生一策檔案表
- 2025年佛山市三水海江建設(shè)投資有限公司招聘筆試參考題庫含答案解析
- 急性心梗診療(2025 )
- 國家義務(wù)教育質(zhì)量監(jiān)測八年級美術(shù)樣卷
- 2024年江蘇宿遷中考滿分作文《夢想照進現(xiàn)實:我的未來職業(yè)暢想》
評論
0/150
提交評論