《《程序設(shè)計基礎(chǔ)》PPT課件》由會員分享,可在線閱讀,更多相關(guān)《《程序設(shè)計基礎(chǔ)》PPT課件(48頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、6 .2 程序6 .2 .1 程序的概念6 .2 .2 程序文件的建立6 .2 .3 程序中的輸入、輸出命令 6 .2 .1 程序的概念定義:完成一定任務(wù)的命令的有序集合例:通過編程查看student表的信息一、在數(shù)據(jù)庫中運行open database stscuse studentbrowsuseclose database 二、在程序文件1、建立程序文件2、在文件中輸入所有命令。3、運行程序 三、程序和命令窗口的區(qū)別1、在程序窗口中,輸入完命令,按回車鍵該條命令就會被執(zhí)行。2、在程序中,所以的命令輸入完形成程序文件,通過運行程序才能按照程序文件中命令的順序依次執(zhí)行。四、vfp中程序命令的說
2、明1、程序命令的注釋格式一:note 格式二:* 格式三:”換行。 6 .2 .1 程序文件的建立與執(zhí)行一、程序文件的建立1、菜單方式2、命令方式 :modify command (1)若文件名存在,該命令表示修改(2)若文件名不存在,該命令表示新建二、程序文件的保存1、菜單/工具欄2、快捷鍵:ctrl+w 三、程序的運行1、菜單方式2、工具欄運行按鈕3、命令:do 四、程序執(zhí)行常用的命令1、cancel 終止程序運行,返回命令窗口2、do 轉(zhuǎn)向執(zhí)行另外一個程序3、return 結(jié)束程序執(zhí)行,返回調(diào)用它的上級程序,若無上級程序則返回命令窗口4、quit 退出vf 返回操作系統(tǒng) 6 .2 .3
3、簡單的輸入、輸出命令輸入命令:input、 accept、wait輸出命令:?和?一、input命令格式:input to 例:input “請輸入一個數(shù)” to aa例:編程完成,從鍵盤輸入兩個數(shù),求他們的和并輸出clearinput 請輸入一個數(shù) to a?a=?ainput 請輸入一個數(shù) to b?b=?b?a+b= ?a+b 說明:1、可以輸入字符型、數(shù)值型、邏輯型、日期型、日期時間型等類型常量、變量、表達式。2、輸入完成后按回車鍵結(jié)束輸入,系統(tǒng)自動將輸入的內(nèi)容賦給3、輸入字符型要使用定界符”,邏輯性使用圓點定界,日期型使用大括號定界 二、accept命令格式: accept to 例
4、:accept “請輸入一串字符串” to c說明:1、只接受字符型數(shù)據(jù),輸入的字符串不需要加定界符2、如果不輸人任何字符直接按回車,則將空串賦給變量 三、wait命令格式: wait to 例: wait “請輸入一串字符串” to c說明:1、以窗口的形式顯示提示信息,并暫停程序的執(zhí)行,直到按任意鍵或單擊鼠標后繼續(xù)執(zhí)行程序。2、wait用于接收單個字符且不用按回車鍵 6 .3 程序的結(jié)構(gòu)6 .3 .1 順序結(jié)構(gòu)6 .3 .2 選擇結(jié)構(gòu)6 .3 .3 循環(huán)結(jié)構(gòu) 6 .3 .1 順序結(jié)構(gòu)程序結(jié)構(gòu):程序中命令或語句執(zhí)行的順序。順序結(jié)構(gòu):(最基本的) 按照程序命令、語句的書寫順序依次執(zhí)行的結(jié)構(gòu)語句
5、1語句2語句n總結(jié):在順序結(jié)構(gòu)中,程序執(zhí)行按照語句順序進行,無任何的分支或重復 例:從鍵盤輸入兩個數(shù),交換它們的值 6 .3 .2 選擇結(jié)構(gòu)當程序執(zhí)行到某一步時,有多條道路可以選擇,但是只能選擇期中一條道路,該道路只能執(zhí)行一次。選擇結(jié)構(gòu)語句:條件語句+分支語句一、簡單的選擇結(jié)構(gòu)條件語句:If 語句序列Endif二、一般的選擇結(jié)構(gòu)條件語句:If 語句序列1Else語句序列2endif 例:從鍵盤輸入一個數(shù)給a,判斷若該數(shù)大于0,則顯示“a是正數(shù)”,否則顯示“a是非正數(shù)”1、clearinput 請輸入一個數(shù): to aif a0?a是正數(shù)endifif a0?a是正數(shù)else?a是負數(shù)endif
6、return 三、分支語句語句格式:Do caseCase Case Case otherwiseEndcase后繼語句 例:根據(jù)學生的成績顯示相應(yīng)的等級,等級劃分如下: 優(yōu)秀:9 0 1 0 0(大于等于9 0小于1 0 0);良好:8 0 9 0;中等:7 0 8 0;及格:6 0 7 0;不及格:6 0分以下clearinput 請輸入成績: to cjdo casecase cj=9 0?優(yōu)秀case cj=8 0?良好case cj=7 0?中等case cj=6 0?及格otherwise ?不及格 endcase 例:計算分段函數(shù)F(x)= 2x-1 x03x+5 0=x3X+1
7、 3=x55x-3 5=x=10 clearInput “輸入x值: to xDo case Case x0 f=2*x-1 case x3 f=3*x+5 case x5 f=x+1 case x10 f=5*x-3 otherwise f=7*x+2Endcase? f(,x,)=,f 9 /9 6 .2 .3 循環(huán)結(jié)構(gòu) 也稱重復結(jié)構(gòu),是指程序在執(zhí)行過程中,某段代碼被重復執(zhí)行若干次。被重復的代碼段稱之為循環(huán)體。語句結(jié)構(gòu)形式:條件循環(huán)、步長型循環(huán)和掃描型循環(huán) 一、條件循環(huán)語句格式:Do while enddo 例:逐條顯示student表中性別為男的所有記錄方法一clearset talk
8、offset safety offopen database stscuse studentgo topdo while not eof()&循環(huán)條件if 性別=男displayendifskipEnddoset talk on set safety on該方法不僅要判斷性別為男的記錄,也要判斷性別為女的記錄,算法不好,程序執(zhí)行效率慢 方法二:依次訪問性別為男的記錄,并顯示出來,直到訪問完(遇到eof()處)為止clearset talk offset safety offopen database stscuse studentgo toplocat for 性別=男do while not
9、 eof()&循環(huán)條件displaycontinueenddoset talk onset safety on 二、步長型循環(huán) 根據(jù)給定的次數(shù)重復執(zhí)行循環(huán)體語句:For = to step Endfor |next用于循環(huán)次數(shù)已知的情況省略step默認步長為1若初值終值,步長為正數(shù)否則為負數(shù) 例:顯示1 1 0 0 之間的整數(shù)clearfor i=1 to 1 0 0 step 1?iEndfor例:逆序顯示5 0 1之間的偶數(shù)clearfor i=5 0 to 2 step -2?iendfor 思考題:1、找出1 0 0 9 9 9間的“水仙花數(shù)”“水仙花數(shù)”即各位數(shù)字的立方和等于本身的三
10、位數(shù)。2、某競賽有10個評委打分,去掉一個最高分,去掉一個最低分,平均后得出最后得分。編一個求最后得分的程序。 三、掃描型循環(huán)語句格式:scan forwhileEndscan注:1 .該命令是將locate和continue結(jié)合一起來,執(zhí)行該語句時,記錄指針依次在當前指定范圍內(nèi)滿足條件的記錄上移動,并對每一條記錄執(zhí)行循環(huán)體內(nèi)的命令,范圍默認值是all2 .Scan循環(huán)是為操作數(shù)據(jù)庫中表的的記錄設(shè)計的循環(huán) 3 .記錄指針自動依次按條件移動 例:逐條顯示student表中性別為男的所有記錄方法三clearopen database stscuse studentscan for 性別=男disp
11、layendscan 6 .4多模塊化程序把一個大而復雜的程序劃分成若干個模塊來完成,每個模塊完成一個特定的功能,這種方式稱為模塊化結(jié)構(gòu)。模塊是一個相對獨立的程序段,它可以被其他模塊所調(diào)用,也可去調(diào)用其他模塊。通常,把被其他模塊調(diào)用的模塊稱為子模塊,把調(diào)用其他模塊而沒有被其他模塊調(diào)用的模塊稱為主程序。應(yīng)用程序一般包含多個程序模塊,所以一般都是多模塊程序。將一個應(yīng)用程序分解成多個功能相對簡單、單一的程序模塊,不僅便于程序開發(fā),而且利于程序的閱讀和維護。6 .4 .1 模塊的定義和調(diào)用6 .4 .2參數(shù)傳遞6 .4 .3變量的作用域 6 .4 .1 模塊的定義和調(diào)用1、過程的定義2、返回語句3、模
12、塊的調(diào)用格式 1、模塊的定義命令格式:Proceture|function | 命令序列 return Endproc|endfunc注:Proceture是過程的入口語句,標識了過程段的開始Endproc是過程的出口語句,標識了本過程段的結(jié)束 2、返回語句格式:return return后沒有表達式,則返回.t.,否則返回表達式的值3、模塊的調(diào)用格式1 :do 過程名格式2 :過程名()注:調(diào)用模塊文件中的模塊時,需要它所在的文件必須處于打開狀態(tài)。例:clear?調(diào)用過程do p1?調(diào)用完畢proc p1?這是第一個過程endproc 6 .4 .2參數(shù)的傳遞1、參數(shù)的定義2、調(diào)用有參數(shù)的模
13、塊3、參數(shù)的傳遞規(guī)則 1、參數(shù)的定義: 格式一:parameters 格式二:lparameters 注:該語句必須是過程的第一條語句,定義多個參數(shù)時,用逗號隔開例:在過程s1定義參數(shù)procedure s1parameters x,yreturn x+yendproc 2、調(diào)用有參數(shù)的模塊格式一:模塊名(實參1,實參2,.)格式二:do 模塊名 with 實參1,實參2,.例: clearinput 輸入一個數(shù): to ainput 輸入另一個數(shù): to bc=s1 (a,b)?c說明:1、形參的數(shù)目不能少于實參的數(shù)目,否則系統(tǒng)會產(chǎn)生運行時的錯誤。 2、如果形參的數(shù)碼多于實參的數(shù)目,則多余的
14、形參取初值邏輯假.F. 參數(shù)的傳遞規(guī)則:兩種規(guī)則:值傳遞和地址傳遞格式一: do with 說明:若實參為常量或者表達式,則為值傳遞。若實參為變量,則為地址傳遞。若給實參變量加上()則強制轉(zhuǎn)化為值傳遞值傳遞:形參、實參相互獨立,形參值的改變不會影響實參的值。地址傳遞:形參、實參相互統(tǒng)一,形參變量值的改變會影響原來實參的值。 例:procedure s1parameters x,yx=x+1y=y+1Endproccleara=2b=3do s1 with 2 ,3?a?b 格式二:模塊名(參數(shù)列表)總結(jié):不論實參是值、變量、表達式,均是按值傳遞 6 .4 .3變量的作用域1、全局變量2、局部變
15、量3、私有變量 1、全局變量(公共變量):是在任何模塊中都可使用的變量,要先建立后使用。建立命令:Public 注:(1)其初值為.f.,賦值后改變。一旦建立就一直有效,即使程序運行結(jié)束返回到命令窗口也不會消失。只有執(zhí)行clear memory、release、quit 等命令后,才被釋放。(2)在命令窗口中直接使用而由系統(tǒng)自動隱含建立的變量也是公共變量 例:procedure s1a=a+1b=b+1Endprocclearpublic a,ba=4b=5do s1 ?a?b 2、局部變量 只能在建立它的模塊中使用,而不能在其上層或下層模塊中使用的變量。當建立它的模塊程序運行結(jié)束時,局部變量自動釋放。 必須先建立后使用:建立格式:Local 說明:建立時賦初值.f.。因為與locate前四個字母相同,所以不能縮寫。 三、私有變量 在程序中直接使用(沒有通過public和local命令事先聲明)而由系統(tǒng)自動隱含建立的變量。 作用域是建立它的模塊及其下屬的各層模塊。 建立它的模塊程序運行結(jié)束,私有變量將自動清除。