第2章結(jié)構(gòu)化程序設(shè)計(jì)_第1頁(yè)
第2章結(jié)構(gòu)化程序設(shè)計(jì)_第2頁(yè)
第2章結(jié)構(gòu)化程序設(shè)計(jì)_第3頁(yè)
第2章結(jié)構(gòu)化程序設(shè)計(jì)_第4頁(yè)
第2章結(jié)構(gòu)化程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第 2 章章 結(jié)構(gòu)化程序設(shè)計(jì) 第一講 重點(diǎn):重點(diǎn): 命令文件的建立與執(zhí)行命令;常用的輸入、輸出命令 難點(diǎn):難點(diǎn): 帶參數(shù)的命令文件的執(zhí)行 教學(xué)目的:教學(xué)目的: 掌握命令文件的建立與執(zhí)行命令;常用的輸入、輸出命令 教學(xué)方法和手段:教學(xué)方法和手段: 理論講授、多媒體演示和實(shí)際操作相結(jié)合。 理論講解主要以講授為主,輔以設(shè)問(wèn)、引導(dǎo)、啟發(fā)、提問(wèn)等教學(xué)方法。 演示主要以案例驅(qū)動(dòng)教學(xué)方法為主,輔以設(shè)問(wèn)、引導(dǎo)、啟發(fā)、提問(wèn)等教學(xué)方法。 學(xué)生上機(jī)操作以任務(wù)驅(qū)動(dòng)教學(xué)方法為主。 教學(xué)過(guò)程:教學(xué)過(guò)程: 一、首先復(fù)習(xí)上次課的主要內(nèi)容。 復(fù)習(xí)主要以提問(wèn)、設(shè)問(wèn)等方式進(jìn)行。提問(wèn)時(shí)使用具體的例子。 二、通過(guò)引論,導(dǎo)入新課。 2

2、.1.1 命令文件的建立與執(zhí)行 1. 命令文件概念 程序是為了完成一定任務(wù),由若干條可執(zhí)行的命令或語(yǔ)句組成的序列。而用于存儲(chǔ)這些由命令組成 的文件,即為命令文件,又稱為程序文件。命令文件的擴(kuò)展名為 prg。 2. 命令文件的建立 建立程序文件可以用任何一種字處理的文本編輯器進(jìn)行(如 Windows 自帶的記事本) 。 下面我們將介紹如何調(diào)用 VFP 內(nèi)嵌的編輯器建立程序文件。 格式:Modify command |? Modify file |? 功能:進(jìn)入程序編輯器,創(chuàng)建程序文件。 說(shuō)明: 可選項(xiàng)|?用于設(shè)置要編輯的文件名。 在文件名前可指明路徑,若未指明則默認(rèn)路徑為當(dāng)前驅(qū)動(dòng)器的當(dāng)前目錄。如

3、執(zhí)行命令 Modify command c:shuexam1,程序文件 exam1.prg 儲(chǔ)存在 c 盤(pán)的子目錄 shu 下,而執(zhí)行 Modify file exam2.prg 后,程序文件 exam2.prg 將儲(chǔ)存在當(dāng)前驅(qū)動(dòng)器的當(dāng)前目錄中。 例 1 編寫(xiě)程序 exam1.prg,計(jì)算表達(dá)式 a*b,ab 的值,并在屏幕上顯示出結(jié)果,其中 a 的值為 3,b 的值為 5。 程序內(nèi)容如下: set talk off a=3 b=5 ? a*b ? ab set talk on 在命令窗口中輸入 modify command exam1 或輸入 modify file exam1.prg 即可

4、進(jìn)入到程序編輯窗口, 輸入程序內(nèi)容后,按下 Ctrl+w 組合鍵保存,就將 exam1.prg 程序存入到磁盤(pán)。我們就在計(jì)算機(jī)上建立了 一個(gè) exam1.prg 程序文件。 3. 程序文件的執(zhí)行 當(dāng)一個(gè)程序文件建立后就可以運(yùn)行了。運(yùn)行 VFP 程序的命令格式如下: 格式:Do with 功能:執(zhí)行指定的程序。 說(shuō)明: 若是省略程序文件的擴(kuò)展名,則系統(tǒng)默認(rèn)其擴(kuò)展名為 prg。 命令中的可選項(xiàng)with用于執(zhí)行帶參數(shù)的程序。 在某一個(gè)程序文件中調(diào)用其他命令文件作為子程序也使用 Do 語(yǔ)句。 創(chuàng)建程序命令:modify command exam2 程序內(nèi)容如下: clear set talk off

5、use student list for 總分320 fields 學(xué)號(hào),姓名,總分 off use set talk on 建立該程序后,執(zhí)行命令為:do exam2 則屏幕上將會(huì)顯示出: 學(xué)號(hào) 姓名 總分 韓偉娟 339.0 例 3 編寫(xiě)程序 exam3 求三角形的面積。 創(chuàng)建程序命令:modify command exam3 程序內(nèi)容如下: parameters a,b &定義了形式參數(shù) a,b area=(a*b)/2 ? 三角形面積為:,area 建好 exam3.prg 文件后,執(zhí)行下述命令便可求出一個(gè)三角形面積。 r=3 do exam3 with r,2*r 程序運(yùn)行結(jié)果如下:

6、 三角形面積為:9 在 exam3 程序中,parameters 語(yǔ)句后跟參數(shù)表,這些參數(shù)稱為形式參數(shù)。 執(zhí)行命令中列在 with 后的參數(shù)稱為實(shí)在參數(shù)。實(shí)在參數(shù)和形式參數(shù)的個(gè)數(shù)、類型與排列次序必須完 全相匹配。 2.1.2 常用命令 關(guān)于表操作的基本命令,在前面我們已經(jīng)做過(guò)一些詳細(xì)的介紹,本小節(jié)將從程序設(shè)計(jì)的角度出發(fā), 對(duì)一些在程序中常用的基本命令作具體的說(shuō)明。 1. 非格式化輸入語(yǔ)句 (1)字符串輸入命令 Accept 格式:Accept to 功能:在屏幕上顯示提示信息,等待用戶鍵入一串字符,并把輸入的字符串賦值給指定的內(nèi)存變量。 說(shuō)明: 是一個(gè)字符型的表達(dá)式,若省略則不顯示任何提示信息

7、。 內(nèi)存變量是一個(gè)已定義或未定義的字符型內(nèi)存變量。 用戶從鍵盤(pán)上輸入字符串時(shí),不必輸入字符定界符,只要直接輸入字符串中的字符即可。字符輸 入完后,按回車(chē)鍵表示結(jié)束,回車(chē)鍵不作為字符串中的字符。若直接按回車(chē)鍵,則獲得空字符串。 例 4 執(zhí)行下述語(yǔ)句: accept 請(qǐng)輸入性別: to sex 此語(yǔ)句的功能是在屏幕上顯示“請(qǐng)輸入性別:” ,并將用戶輸入的內(nèi)容存放到內(nèi)存變量 sex 中。若用 戶性別是“男” , 則用戶需鍵入男,再按一次回車(chē)鍵即可。 (2)數(shù)據(jù)輸入命令 Input 格式:Input to 功能:在屏幕上顯示提示信息,等待用戶鍵入數(shù)據(jù),將鍵入的值賦給指定的內(nèi)存變量。 說(shuō)明: 提示信息是

8、一個(gè)字符型的表達(dá)式,若省略 則不顯示任何提示信息。 內(nèi)存變量是一個(gè)已定義或未定義的變量。 用戶輸入數(shù)據(jù)時(shí),應(yīng)注意其類型。輸入的數(shù)據(jù)可以是常數(shù),也可以是表達(dá)式。輸入不同類型的常 數(shù)有不同的要求。 字符型常數(shù):必須用字符定界符(引號(hào),方括號(hào))括住,輸入完后,按回車(chē)鍵表示結(jié)束。其中字符 定界符和回車(chē)鍵不作為字符串中的內(nèi)容。 數(shù)值型常數(shù):可直接輸入整數(shù)或?qū)崝?shù),輸完后,按回車(chē)鍵表示結(jié)束。 貨幣型常數(shù):應(yīng)在數(shù)值前加$符號(hào),例$123.12。 日期型常數(shù):必須用日期定界符(大括號(hào))括住,并且年月日的格式必須與當(dāng)前系統(tǒng)要求的格式相 同,同時(shí)輸入的日期必須為有效日期。輸完后,按回車(chē)鍵表示結(jié)束。 邏輯型常數(shù):必須

9、用小數(shù)點(diǎn)括住,數(shù)據(jù)輸完后,按回車(chē)鍵表示結(jié)束。 例 5 執(zhí)行下述語(yǔ)句: input 請(qǐng)輸入性別: to sex 此語(yǔ)句的功能是在屏幕上顯示“請(qǐng)輸入性別:”并將用戶輸入的內(nèi)容存放到內(nèi)存變量 sex 中,若用 戶性別是“男” , 則需鍵入男,再按回車(chē)鍵即可。 Input 請(qǐng)輸入你的考試成績(jī): to cj 此語(yǔ)句的功能是在屏幕上顯示“請(qǐng)輸入你的考試成績(jī):”并將用戶輸入的數(shù)值存放到內(nèi)存變量 cj 中。 若用戶考試成績(jī)?yōu)?83,則用戶只需鍵入83,再按回車(chē)鍵即可。 input 請(qǐng)輸入你的出生日期: to birthday 此語(yǔ)句的功能是在屏幕上顯示“請(qǐng)輸入你的出生日期:”并將用戶輸入的內(nèi)容存放到 birt

10、hday 中。 若用戶出生日期為 1978 年 7 月 3 日,則在嚴(yán)格日期格式下用戶需鍵入1978/07/03,在通常日期格 式下用戶需鍵入07/03/78,再按回車(chē)鍵即可。 (3)等待命令 Wait 格式:Wait to window nowait timeout 功能:暫停程序的執(zhí)行,顯示提示信息,并等待用戶鍵入一個(gè)字符或單擊鼠標(biāo)。 說(shuō)明: 用戶可通過(guò)來(lái)指定顯示的提示內(nèi)容,否則將顯示系統(tǒng)設(shè)定的提示信息: “按任意鍵繼續(xù)” 可選項(xiàng)to,用于將輸入的一個(gè)字符賦值給指定的內(nèi)存變量。 可選項(xiàng)window nowait用于將提示信息以系統(tǒng)信息窗口的形式出現(xiàn)在屏幕畫(huà)面的右上角。而帶 有 nowait

11、 選項(xiàng)的 wait 語(yǔ)句,并不會(huì)暫停程序的執(zhí)行,僅僅在屏幕右上角顯示提示信息。此時(shí)只須移動(dòng)一 下鼠標(biāo)或按下任意鍵,這個(gè)系統(tǒng)信息窗口便會(huì)消除。需要注意的是 nowait 必須和 window 可選項(xiàng)合用才 會(huì)產(chǎn)生效果。 可選項(xiàng)timeout,是指定 Wait 語(yǔ)句最多暫停程序執(zhí)行多少秒,若在指定的秒數(shù)時(shí) 間內(nèi),用戶沒(méi)有按任意鍵或單擊鼠標(biāo),則到指定秒數(shù)后,wait 語(yǔ)句便會(huì)自動(dòng)終止并返回空串,重新繼續(xù) 執(zhí)行程序。 例 6 執(zhí)行下述語(yǔ)句: wait 看清后,按任意鍵,程序?qū)⒗^續(xù)運(yùn)行 timeout 5 此語(yǔ)句的功能是在屏幕上顯示“看清后,按任意鍵,程序?qū)⒗^續(xù)運(yùn)行”的提示信息,在 5 秒內(nèi)等待 用戶按

12、鍵或單擊鼠標(biāo)終止 wait 語(yǔ)句的執(zhí)行,繼續(xù)執(zhí)行程序;5 秒后 wait 語(yǔ)句自動(dòng)終止,程序重新繼續(xù)運(yùn) 行。 wait 你要找的記錄沒(méi)有找到! window nowait 此語(yǔ)句的功能是在屏幕右上角顯示系統(tǒng)信息窗口,窗口內(nèi)容為“你要找的記錄沒(méi)有找到!”程序并 不終止運(yùn)行。等用戶按鍵或移動(dòng)鼠標(biāo)時(shí),信息窗口自動(dòng)消失。 wait 繼續(xù)查找請(qǐng)按 Y 鍵,否則請(qǐng)按 N 鍵! to choose window 此語(yǔ)句的功能是在屏幕右上角顯示系統(tǒng)提示信息窗口,窗口內(nèi)容為“繼續(xù)查找請(qǐng)按 Y 鍵,否則請(qǐng)按 N 鍵!” ,程序終止執(zhí)行,等待用戶按鍵,并將鍵入的一個(gè)字符賦值給內(nèi)存變量 choose。 總結(jié):Inpu

13、t 語(yǔ)句可以輸入字符型、數(shù)值型、貨幣型、邏輯型和日期(時(shí)間)型的數(shù)據(jù), Accept 和 Wait 語(yǔ)句則是專門(mén)輸入字符型數(shù)據(jù)的。其中 Wait 語(yǔ)句,常用于要求用戶快速響應(yīng)的場(chǎng)合, 用戶只需要按某個(gè)鍵就可繼續(xù)程序的運(yùn)行。 2. 非格式化輸出語(yǔ)句 前面已經(jīng)介紹過(guò)兩種非格式化輸出語(yǔ)句,即?和?,在這里就不再重復(fù)了。下面將介紹兩個(gè)文本輸出 命令。 格式 1: | 功能:將一行文本信息的內(nèi)容按書(shū)寫(xiě)形式的原樣顯示出來(lái)。 說(shuō)明: 與的差別在于前者輸出的文本行前帶有回車(chē)換行符,就是在下一行的第一列開(kāi)始輸出;而后者不 帶,文本行在當(dāng)前光標(biāo)位置開(kāi)始輸出。 格式 2:Text Endtext 功能:可以進(jìn)行多行

14、文本的輸出。 說(shuō)明: 它只能在程序中使用,并且必須成對(duì)使用。 例 7 下面有 3 個(gè)文本輸出程序,它們運(yùn)行的結(jié)果是相同的。 modify command exam7a 您好, 歡迎你光臨! 今天天氣真好! modify command exam7b 您好,歡迎你光臨! 今天天氣真好! modify command exam7c text 您好,歡迎你光臨! 今天天氣真好! endtext 分別運(yùn)行這 3 個(gè)程序,都會(huì)在屏幕上顯示出下列內(nèi)容: 您好,歡迎你光臨! 今天天氣真好! 3. 格式化輸出語(yǔ)句 格式: say picturefunction size, 功能:在屏幕指定位置按照指定格式輸出

15、表達(dá)式。 說(shuō)明: 例 8 執(zhí)行下述語(yǔ)句: 11,12 say welcome home ! function! 11,12 say welcome home ! picture! 11,12 say welcome home ! picture! 11,12 say welcomehome! size 2,10 4. 格式化輸入語(yǔ)句 格式: get picturefunction size, default range, valid when Read save cycle timeout 功能:在屏幕指定位置按照指定格式輸入數(shù)據(jù),它必須與 Read 語(yǔ)句配合使用,用 Read 命令激活當(dāng) 前

16、所有的 Get 變量。 例 9 執(zhí)行下述語(yǔ)句: 12,13 get age default 0 read 可在屏幕第 12 行第 13 列輸入一個(gè)數(shù)值,并把這個(gè)數(shù)值賦給變量 age,因?yàn)?age 沒(méi)有定義,所以在 get 語(yǔ)句中有一個(gè) default 子句對(duì) age 變量進(jìn)行定義賦值。又因?yàn)橘x給 age 的初值為數(shù)值 0,所以用戶在輸 入數(shù)據(jù)時(shí),只能輸入數(shù)值型的數(shù)據(jù),而不能是其他的類型。 上面介紹的格式化輸入輸出語(yǔ)句,也可聯(lián)合使用。 格式: say picturefunction get picturefunction default range, size, validwhen 功能:從屏幕

17、的指定位置開(kāi)始顯示表達(dá)式的值,空一格后反相顯示變量的值。當(dāng)執(zhí)行 Read 語(yǔ)句時(shí), 光標(biāo)出現(xiàn)在變量對(duì)應(yīng)的反相區(qū)并暫停程序的執(zhí)行,等待用戶輸入一個(gè)值并把該值賦予 get 后的變量。 例 10 執(zhí)行下述語(yǔ)句: xm= 11,12 say 請(qǐng)輸入您的姓名: get xm read 則在屏幕第 11 行,第 12 列顯示“請(qǐng)輸入您的姓名:”并在其后等待用戶輸入字符串,并將輸入內(nèi) 容賦值給 xm。 5. 其他語(yǔ)句 (1)注釋語(yǔ)句 為了方便用戶對(duì)程序的閱讀,VFP 提供了一種特殊的語(yǔ)句注釋語(yǔ)句,對(duì)程序語(yǔ)句做出解釋說(shuō)明。 注釋語(yǔ)句不參與程序的執(zhí)行,只有說(shuō)明解釋功能。注釋語(yǔ)句有兩種,分別是: 格式 1:* 功

18、能:該行為注釋行。 格式 2:& 功能:該注釋符后的內(nèi)容為注釋內(nèi)容。 說(shuō)明: 這兩個(gè)注釋符均可對(duì)程序語(yǔ)句做出解釋,但*注釋符為行注釋符,用在一行的行首,表示這一行為注 釋行;而&用在命令行后,僅僅對(duì)該行語(yǔ)句做出解釋。 6. 狀態(tài)設(shè)置命令 (1)會(huì)話開(kāi)關(guān) 格式:Set talk on|off 功能:設(shè)置命令執(zhí)行的結(jié)果是否及時(shí)反饋顯示出來(lái)。 (4)屏幕顯示設(shè)置 格式:Set console on|off 功能:鍵盤(pán)輸入的內(nèi)容是否在屏幕上顯示。 (5)系統(tǒng)保護(hù)狀態(tài)設(shè)置 格式:Set safety on|off 功能:用于控制在文件或數(shù)據(jù)重寫(xiě)時(shí)或刪除前是否發(fā)出警告。 (6)Escape 鍵終止程序運(yùn)行

19、設(shè)置 格式:Set escape on|off 功能:用于設(shè)置 Esc 鍵能否中斷程序運(yùn)行。 (7)設(shè)置默認(rèn)路徑 格式:Set default to 功能:設(shè)置缺省路徑時(shí)的默認(rèn)值。 例 12 若當(dāng)前盤(pán)當(dāng)前路徑為 c:VFP,則: modify command p1 &在 c:VFP 目錄下創(chuàng)建 p1.prg 文件 set default to d:sj &設(shè)置缺省路徑為 d:sj modify command p2 &在 d:sj 目錄下創(chuàng)建 p2.prg 文件 三、作業(yè)要求 1. 仔細(xì)閱讀本節(jié)內(nèi)容。 2. 上機(jī)練習(xí)命令文件的建立和執(zhí)行 3. 上機(jī)練習(xí)常用的輸入、輸出命令。 第二講第二講 順序

20、結(jié)構(gòu)和選擇結(jié)構(gòu) 重重 點(diǎn):點(diǎn):選擇結(jié)構(gòu)的三種語(yǔ)句格式理解和使用 難難 點(diǎn):點(diǎn):選擇結(jié)構(gòu)的使用 教學(xué)目的:教學(xué)目的:學(xué)會(huì)掌握和使用選擇結(jié)構(gòu)的三種語(yǔ)句格式 教學(xué)方法和手段:教學(xué)方法和手段: 理論講授、多媒體演示和實(shí)際操作相結(jié)合。 理論講解主要以講授為主,輔以設(shè)問(wèn)、引導(dǎo)、啟發(fā)、提問(wèn)等教學(xué)方法。 演示主要以案例驅(qū)動(dòng)教學(xué)方法為主,輔以設(shè)問(wèn)、引導(dǎo)、啟發(fā)、提問(wèn)等教學(xué)方法。 學(xué)生上機(jī)操作以任務(wù)驅(qū)動(dòng)教學(xué)方法為主。 教學(xué)過(guò)程:教學(xué)過(guò)程: 一、首先復(fù)習(xí)上次課的主要內(nèi)容。 復(fù)習(xí)主要以提問(wèn)、設(shè)問(wèn)等方式進(jìn)行。提問(wèn)時(shí)使用具體的例子。 二、通過(guò)引論,導(dǎo)入新課。 首先復(fù)習(xí)一下上次課的主要內(nèi)容,復(fù)習(xí)主要以提問(wèn)方式進(jìn)行,然后導(dǎo)入新

21、課。 提問(wèn)時(shí)使用具體的例子。 2.2.1 順序結(jié)構(gòu) 按順序結(jié)構(gòu)組織程序,只需先把處理過(guò)程的各個(gè)步驟詳細(xì)列出,然后把有關(guān)命令按照處理的邏輯順 序自上而下排列起來(lái)便可。上一節(jié)給出的例題就是按順序結(jié)構(gòu)組織程序的。 例 13 編程顯示表 student.dbf 中姓王的學(xué)生記錄。 modify command exam13 程序內(nèi)容如下: clear use student list for 姓名=王 use 例 13 即為一個(gè)順序結(jié)構(gòu)的程序。 2.2.2 選擇結(jié)構(gòu) 選擇結(jié)構(gòu)能根據(jù)指定條件和當(dāng)前值在兩條或多條程序路徑中選擇一條執(zhí)行,因此在一個(gè)程序中便能 處理多種情況的復(fù)雜問(wèn)題。VFP 提供 3 種格式

22、的選擇結(jié)構(gòu)。1. 單一選擇 格式:If Endif 功能:條件取值為“真” ,執(zhí)行命令序列;條件取值為“假” ,命令序列就不執(zhí)行。 說(shuō)明:If 和 Endif 必須成對(duì)出現(xiàn),相互匹配。 例 14 單一選擇結(jié)構(gòu)示例。 Modify command exam14 程序內(nèi)容如下: clear wait 是否退出?(Y/N): to a &變量 a 識(shí)別用戶是否退出 if upper(a)= Y &upper 函數(shù)把小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母 wait 您選擇了退出,現(xiàn)在就要退出 Visual FoxPro! timeout 5 quit endif 2. 雙重選擇 格式:If Else Endif 功能

23、:根據(jù)條件的取值在與這兩條路徑中選擇一條執(zhí)行。 例 15 求圓的面積和周長(zhǎng)。通過(guò)鍵盤(pán)輸入半徑的值,當(dāng)半徑大于等于 0,則輸出圓的面積和周長(zhǎng),當(dāng) 半徑小于 0,則輸出提示信息“輸入值無(wú)效” 。 程序內(nèi)容如下: set talk off input 請(qǐng)輸入圓的半徑值: to r if r=0 mj=3.14*r*r zc =2*3.14*r ?圓的面積為: ,mj ?圓的周長(zhǎng)為: ,zc else ?輸入值無(wú)效 endif set talk on 例 16 編寫(xiě)程序完成以下功能:根據(jù)從鍵盤(pán)輸入的學(xué)號(hào)在 student 表中進(jìn)行查找,找到則顯示該學(xué)生 的學(xué)號(hào),姓名,總分;找不到,則顯示“無(wú)此學(xué)號(hào)”

24、。 程序內(nèi)容如下: use student accept 請(qǐng)輸入學(xué)號(hào): to xh locate for 學(xué)號(hào)=xh if found( ) ?學(xué)號(hào):+學(xué)號(hào) ?姓名:+姓名 ?總分:,總分 else ?無(wú)此學(xué)號(hào)! endif use 3. 多重選擇 格式:Do case case case . case otherwise Endcase 功能:自上而下依次判斷命令中列出的條件,只要找到某一條件為“真” ,就執(zhí)行與之相關(guān)的命令序 列,余下的條件便不再判斷,有關(guān)的命令也不執(zhí)行。在沒(méi)有一個(gè)條件取值為“真”時(shí),若有 otherwise 可 選項(xiàng),就執(zhí)行命令序列+1,否則什么也不做??梢?jiàn)在眾多的命令序

25、列中,多重選擇最多只選擇執(zhí)行其 中的一個(gè)命令序列,也可能一個(gè)也不執(zhí)行。 說(shuō)明: If 與 Endif、Do case 與 Endcase 標(biāo)志選擇結(jié)構(gòu)的開(kāi)始與結(jié)束,它們必須成對(duì)出現(xiàn)。 3 種選擇結(jié)構(gòu)不僅自身可以嵌套,而且還能相互嵌套。 例 編寫(xiě)程序求下列分段函數(shù)的值,x 的值通過(guò)鍵盤(pán)輸入。 程序內(nèi)容如下: set talk off y=0 input 請(qǐng)輸入 x 的值: to x do case case x=0 .and. x=5 y=x+1 endcase ?y=, y set talk on 三、作業(yè)要求 1. 閱讀本節(jié)內(nèi)容,理解書(shū)上的例子。 2. 上機(jī)驗(yàn)證書(shū)上的例子。 第三講第三講 循

26、環(huán)結(jié)構(gòu) 重重 點(diǎn):點(diǎn):循環(huán)結(jié)構(gòu)的三種語(yǔ)句格式理解和使用 難難 點(diǎn):點(diǎn):循環(huán)結(jié)構(gòu)的三種語(yǔ)句格式使用 教學(xué)目的:教學(xué)目的:掌握循環(huán)結(jié)構(gòu)的三種語(yǔ)句格式使用 教學(xué)方法和手段:教學(xué)方法和手段: 理論講授、多媒體演示和實(shí)際操作相結(jié)合。 理論講解主要以講授為主,輔以設(shè)問(wèn)、引導(dǎo)、啟發(fā)、提問(wèn)等教學(xué)方法。 演示主要以案例驅(qū)動(dòng)教學(xué)方法為主,輔以設(shè)問(wèn)、引導(dǎo)、啟發(fā)、提問(wèn)等教學(xué)方法。 學(xué)生上機(jī)操作以任務(wù)驅(qū)動(dòng)教學(xué)方法為主。 教學(xué)過(guò)程:教學(xué)過(guò)程: 一、首先復(fù)習(xí)上次課的主要內(nèi)容。 復(fù)習(xí)主要以提問(wèn)、設(shè)問(wèn)等方式進(jìn)行。提問(wèn)時(shí)使用具體的例子。 二、通過(guò)引論,導(dǎo)入新課。 2.2.3 循環(huán)結(jié)構(gòu) 按循環(huán)結(jié)構(gòu)來(lái)組織程序,能夠做到由指定條件的當(dāng)

27、前值來(lái)控制程序中某一部分命令序列的重復(fù)執(zhí)行。 VFP 提供了多種循環(huán)結(jié)構(gòu),它們是當(dāng)循環(huán)、For-Next 循環(huán)、表文件掃描循環(huán)等等。 1. 當(dāng)循環(huán) 格式:Do while Loop Exit Enddo 功能:判斷條件的取值,若為“真”就執(zhí)行 Do 與 Enddo 之間的命令序列(稱為循環(huán)體) ,再判斷條 件的取值,重復(fù)剛才的過(guò)程。一旦條件取值為“假” ,就跳出循環(huán)體轉(zhuǎn)而執(zhí)行 Enddo 下一條命令。只要條 件取值保持為“真” ,循環(huán)體就會(huì)不斷地重復(fù)執(zhí)行,流程圖如圖 15.4 所示。 例 20 編寫(xiě)程序逐條顯示 student 表中的記錄。 程序內(nèi)容如下: use student do whi

28、le .not. eof( ) display wait windows timeout 2 skip enddo use 例 22 編程計(jì)算 1+2+100 的值。 分析:求和是采用累加的方式,從一個(gè)初始值出發(fā),通過(guò)循環(huán)累加求出最后的結(jié)果。s 用來(lái)存放累 加的結(jié)果,初值為 0,n 既作為被累加的數(shù)據(jù),也作為控制循環(huán)的條件是否成立的變量,初值為 1。 程序內(nèi)容如下: set talk off s=0 n=1 do while n=100 s=s+n n=n+1 enddo ? 1+2+100=,s set talk on 2. ForNext 循環(huán) 格式:For = to step Exit

29、Loop Endfor | Next 功能:本命令中的內(nèi)存變量(又稱循環(huán)變量)類似于計(jì)數(shù)器,它的取值范圍由(初值) 與(終值)確定,通過(guò)判斷內(nèi)存變量的取值是否在指定范圍之中來(lái)確定循環(huán)體是否重復(fù)執(zhí)行。 例 24 編程用 ForNext 循環(huán)計(jì)算 1+2+100 的值。 程序內(nèi)容如下: set talk off s=0 for i=1 to 100 step 1 s=s+i endfor ? 1+2+100=,s set talk on 例 25 編程統(tǒng)計(jì) 100 以內(nèi)能夠被 3 或 5 整除的數(shù)的個(gè)數(shù)。 程序內(nèi)容如下: set talk off num=0 for i=1 to 100 if m

30、od(i,3)=0 .or. mod(i,5)=0 num=mun+1 endif endfor ? 100 以內(nèi)能夠被 3 或 5 整除的數(shù)的個(gè)數(shù)為:,num set talk on 3. 表掃描循環(huán) 格式:Scan forwhile Exit Loop Endscan 功能:對(duì)當(dāng)前表中滿足條件的記錄,依次重復(fù)執(zhí)行循環(huán)體。 在數(shù)據(jù)庫(kù)應(yīng)用程序中,經(jīng)常要對(duì)表中指定的記錄逐個(gè)進(jìn)行某種處理,此時(shí)可以使用 VFP 提供的表掃 描循環(huán)命令。 例 26 用 Scan 循環(huán)逐條顯示 student.dbf 中男同學(xué)的記錄。 程序內(nèi)容如下: set talk off use student scan for

31、性別=男 display wait windows timeout 2 endscan use set talk on 以上我們介紹了三種結(jié)構(gòu),這三種結(jié)構(gòu)在編程中通常是配合使用的。下面以它們混合使用為例進(jìn)行 說(shuō)明。 三、作業(yè)要求 1. 課后習(xí)題 2,3 2. 上機(jī)練習(xí)書(shū)上的例子和驗(yàn)證自己編寫(xiě)的題目。 第四講第四講 綜合程序設(shè)計(jì)、過(guò)程和函數(shù)程序設(shè)計(jì) 重重 點(diǎn):點(diǎn):程序設(shè)計(jì)中三種結(jié)構(gòu)的嵌套使用和過(guò)程和函數(shù)的定義和調(diào)用 難難 點(diǎn):點(diǎn):過(guò)程和函數(shù)程序設(shè)計(jì) 教學(xué)目的:教學(xué)目的:掌握程序設(shè)計(jì)中三種結(jié)構(gòu)的嵌套使用,掌握過(guò)程和函數(shù)的定義和調(diào)用,會(huì)設(shè)計(jì)簡(jiǎn)單的綜合 程序。 教學(xué)方法和手段:教學(xué)方法和手段: 理論講

32、授、多媒體演示和實(shí)際操作相結(jié)合。 理論講解主要以講授為主,輔以設(shè)問(wèn)、引導(dǎo)、啟發(fā)、提問(wèn)等教學(xué)方法。 演示主要以案例驅(qū)動(dòng)教學(xué)方法為主,輔以設(shè)問(wèn)、引導(dǎo)、啟發(fā)、提問(wèn)等教學(xué)方法。 學(xué)生上機(jī)操作以任務(wù)驅(qū)動(dòng)教學(xué)方法為主。 教學(xué)過(guò)程:教學(xué)過(guò)程: 一、首先復(fù)習(xí)上次課的主要內(nèi)容。 復(fù)習(xí)主要以提問(wèn)、設(shè)問(wèn)等方式進(jìn)行。提問(wèn)時(shí)使用具體的例子。 二、通過(guò)引論,導(dǎo)入新課。 程序應(yīng)用舉例 自定義函數(shù) 系統(tǒng)將一些經(jīng)典的通用算法編成一個(gè)個(gè)程序提供給用戶使用,這就是所謂系統(tǒng)函數(shù)。用戶也可以根 據(jù)自己的需要編寫(xiě)相應(yīng)的函數(shù)即自定義函數(shù)。下面我們將介紹如何自定義函數(shù)。 1. 自定義函數(shù)的定義 格式:Function parameters

33、return 功能:定義一個(gè)函數(shù)。 說(shuō)明: Function 此項(xiàng)是定義函數(shù)名稱,可選項(xiàng)parameters是函數(shù)中參數(shù)傳遞的語(yǔ)句, 每個(gè)參數(shù)之間用逗號(hào)隔開(kāi),它們又可稱為形式參數(shù)。return是將處理后的值返回給調(diào)用程序使 用,一個(gè)函數(shù)必須在程序運(yùn)行結(jié)束時(shí)返回一個(gè)函數(shù)值,這是函數(shù)的基本特點(diǎn)。若函數(shù)不提供返回值,則 VFP 使用.T.作為默認(rèn)返回值。 例 31 建立自定義函數(shù) sm(n),其功能是計(jì)算 1+2+3+n 累加和。 數(shù)值求和是計(jì)算機(jī)程序設(shè)計(jì)中的主要運(yùn)算,求和是采用累加的方式,從一個(gè)初始值出發(fā),通過(guò)循環(huán) 累加求出最后的結(jié)果。 function sm parameters n s=0 k

34、=1 do while k=n s=s+k k=k+1 enddo return s 2. 自定義函數(shù)的調(diào)用 上面兩個(gè)例子就是兩個(gè)自定義函數(shù),對(duì)于自定義函數(shù)我們應(yīng)該如何調(diào)用呢?自定義函數(shù)的調(diào)用和系 統(tǒng)函數(shù)的調(diào)用基本相同,下面舉例說(shuō)明。 例 32 利用自定義函數(shù)求矩形面積。 set talk off. ? c=3, k=4, area=, area(3,4) ? c=4, k=6, area=, area(4,6) set talk on function area parameters h,w s=h*w return s 在該程序中定義了一個(gè)函數(shù) area( )。其中有兩處調(diào)用到此函數(shù) ar

35、ea(3,4)和 area(4,6)。在執(zhí)行對(duì)函數(shù)的 調(diào)用時(shí),實(shí)在參數(shù)將代替函數(shù)中的形式參數(shù)。需要注意的是形式參數(shù)必須是合法的內(nèi)存變量名,實(shí)在參 數(shù)必須與形式參數(shù)的個(gè)數(shù)、類型、順序完全一致。實(shí)在參數(shù)可以是常量,也可以是已賦值的合法內(nèi)存變 量。這些變量名即使與形式參數(shù)的名字相同,也不影響程序的運(yùn)行。 2.3.2 過(guò)程 1. 過(guò)程的定義 在一個(gè)復(fù)雜的管理系統(tǒng)中,有些工作往往要反復(fù)執(zhí)行多次,如某種格式的報(bào)表多次打印、某個(gè)計(jì)算 過(guò)程多次使用等等。解決這個(gè)問(wèn)題的方法可以采用循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn),但當(dāng)這個(gè)需要重復(fù)計(jì)算加工的過(guò)程 每次重復(fù)加工的對(duì)象不同時(shí),或在程序的不同地方重復(fù)時(shí),有時(shí)用循環(huán)的方法就很難實(shí)現(xiàn),因此

36、 VFP 提 供了一種比較有效的方法過(guò)程。過(guò)程和自定義函數(shù)類似,它和函數(shù)不同之處是:在過(guò)程結(jié)束后,不 必返回值。 格式:Procedure parameters return 功能:定義一個(gè)過(guò)程。 例 34 編一個(gè)過(guò)程 rq,該過(guò)程的功能為將一個(gè)XX/XX/XX形式的日期格式轉(zhuǎn)換為 XXXX 年 XX 月 XX 日形式并顯示出來(lái)。 procedure rq parameters r y=year(r) m=month(r) d=day(r) a=str(y,4)+ 年 + str(m,2) + 月+ str(d,2) + 日 ?a return 2. 過(guò)程的調(diào)用 過(guò)程調(diào)用可用下面的格式: 格式:Do with 功能:中斷當(dāng)前程序的執(zhí)行,執(zhí)行指定過(guò)程中的語(yǔ)句。 說(shuō)明: 當(dāng)程序執(zhí)行到此語(yǔ)句時(shí),便會(huì)停下來(lái),轉(zhuǎn)去執(zhí)行中的語(yǔ)句,直至執(zhí)行完畢,再重新返回到 主程序,去執(zhí)行 Do 語(yǔ)句下面的語(yǔ)句。 若指定的過(guò)程中帶有形式參數(shù),則在調(diào)用該過(guò)程時(shí),應(yīng)加上with選項(xiàng),其中 with 后跟的 參數(shù)為實(shí)在參數(shù),它應(yīng)與過(guò)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論