第七章 程序設(shè)計(jì)基礎(chǔ)_第1頁(yè)
第七章 程序設(shè)計(jì)基礎(chǔ)_第2頁(yè)
第七章 程序設(shè)計(jì)基礎(chǔ)_第3頁(yè)
第七章 程序設(shè)計(jì)基礎(chǔ)_第4頁(yè)
第七章 程序設(shè)計(jì)基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩39頁(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)介

一、程序設(shè)計(jì)語(yǔ)言概述人與人之間的交流是通過(guò)語(yǔ)言來(lái)完成的。當(dāng)人們和計(jì)算機(jī)打交道時(shí),也要涉及到語(yǔ)言問(wèn)題,這就是計(jì)算機(jī)語(yǔ)言。計(jì)算機(jī)語(yǔ)言是指一切用于人與計(jì)算機(jī)通信的語(yǔ)言,它包括編程語(yǔ)言、命令語(yǔ)言、查詢語(yǔ)言、定義語(yǔ)言等。第七章程序設(shè)計(jì)基礎(chǔ)第七章程序設(shè)計(jì)基礎(chǔ)一、程序設(shè)計(jì)語(yǔ)言概述語(yǔ)言的種類機(jī)器語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言用二進(jìn)制代碼0和1描述的指令(機(jī)器指令)的集合用助記符描述機(jī)器指令的計(jì)算機(jī)指令的計(jì)算機(jī)語(yǔ)言接近人類的自然語(yǔ)言和數(shù)學(xué)語(yǔ)言的一種計(jì)算機(jī)語(yǔ)言一、程序設(shè)計(jì)語(yǔ)言概述是人們根據(jù)要處理的問(wèn)題而事先安排好的需要計(jì)算機(jī)執(zhí)行的處理步驟計(jì)算機(jī)程序第七章程序設(shè)計(jì)基礎(chǔ)第七章程序設(shè)計(jì)基礎(chǔ)

VFP程序設(shè)計(jì)包括結(jié)構(gòu)化程序設(shè)計(jì)和面向?qū)ο蟪绦蛟O(shè)計(jì),但結(jié)構(gòu)化程序設(shè)計(jì)仍是面向?qū)ο蟪绦蛟O(shè)計(jì)的基礎(chǔ)。7.1程序與程序文件7.1.2程序文件的建立與執(zhí)行一、程序文件的建立與修改

MODIFYCOMMAND<文件名>文件名由用戶指定,擴(kuò)展名為.PRG程序文件由VFP命令組成二、關(guān)閉編輯窗口的方法

Ctrl+W:文件存盤推出

ESC:若程序文件修改過(guò),將詢問(wèn)“放棄修改嗎?”

雙擊左上角控制菜單:將詢問(wèn)“將所做的更改保存到*.prg嗎?”

單雙擊右上角關(guān)閉按鈕:將詢問(wèn)“將所做的更改保存到*.prg嗎?”

“文件”菜單:“保存”、“另存為”或“還原”命令

7.1程序與程序文件7.1.2程序文件的建立與執(zhí)行三、程序的執(zhí)行

DO<文件名>

默認(rèn)擴(kuò)展名為.PRG,若為其它類型必須指明擴(kuò)展名

7.1程序與程序文件7.1.2程序文件的建立與執(zhí)行例如:DOMCZZ.QPR&&運(yùn)行查詢程序四、程序的書寫規(guī)則

2、命令分行一行只寫一條命令,結(jié)尾回車一行寫不完,則加續(xù)行號(hào)“;”回車

7.1程序與程序文件7.1.2程序文件的建立與執(zhí)行

1、命令注釋注釋行以“*”號(hào)開頭,一條命令后可加“&&”引出注釋

例如:

*本程序修改指定記錄SETDATEUSA&&日期格式為MM-DD-YY

五、程序中的常用命令1.環(huán)境設(shè)置clear……清屏

7.1程序與程序文件7.1.2程序文件的建立與執(zhí)行Settalkoff/on……是否將命令執(zhí)行的結(jié)果傳送到屏幕上Setdefaultto……默認(rèn)路徑Setpathto……搜索路徑Setescapeon/off……允許ESCAPE退出/繼續(xù)命令文件的執(zhí)行(on為缺省值,ESC鍵可終止程序運(yùn)行)五、程序中的常用命令二、賦值:Store或“=“

7.1程序與程序文件7.1.2程序文件的建立與執(zhí)行三、顯示?或??前者換行,后者不換行六、程序結(jié)尾的專用命令

7.1程序與程序文件7.1.2程序文件的建立與執(zhí)行RETURN:使程序結(jié)束,返回到上級(jí)或命令窗口,準(zhǔn)許缺省CANCEL:使程序正常終止,清除程序的私有變量,返回到命令窗口QUIT:退出VFP系統(tǒng),自動(dòng)刪去臨時(shí)文件,返回到WINDOWSInput“提示信息”to內(nèi)存變量ACCEPT“提示信息”to字符變量TEXT顯示內(nèi)容ENDTEXT

7.1程序與程序文件7.1.3簡(jiǎn)單的輸入輸出命令WAIT命令暫停程序的運(yùn)行,直到用戶輸入一個(gè)字符,也可用于輸出一條提示信息WAIT[<字符表達(dá)式>][TO<內(nèi)存變量>][WINDOW[AT<行>,<列>]][NOWAIT][NOCLEAR][TIMEOUT<數(shù)值表達(dá)式>]

7.1程序與程序文件7.1.3簡(jiǎn)單的輸入輸出命令<字符表達(dá)式>:提示窗口中的提示信息,可以缺省TO<內(nèi)存變量>:將用戶的輸入值送入內(nèi)存變量,可缺省WINDOWAT<行>,<列>:提示窗口所在的行和列號(hào),可缺省[NOWAIT]:不停留,繼續(xù)執(zhí)行程序[NOCLEAR]:不清除提示窗口,缺省為清除[TIMEOUT<數(shù)值表達(dá)式>]程序在此處暫停的時(shí)間

CLEARWAIT"請(qǐng)檢查輸入內(nèi)容!"WINDOWAT8,40RETURN

執(zhí)行后顯示如下:按任意鍵返回命令窗口7.2程序的基本結(jié)構(gòu)

順序結(jié)構(gòu):按命令的書寫順序依此執(zhí)行選擇結(jié)構(gòu):根據(jù)指定條件的當(dāng)前值在兩條一、基本結(jié)構(gòu)或多條路徑中選擇一條執(zhí)行循環(huán)結(jié)構(gòu):由指定條件的當(dāng)前值來(lái)控制循環(huán)體中的語(yǔ)句(或命令)序列是否要重復(fù)執(zhí)行。

7.2程序的控制結(jié)構(gòu)7.2.1選擇結(jié)構(gòu)

VFP可用條件語(yǔ)句或分支語(yǔ)句實(shí)現(xiàn)分支結(jié)構(gòu)一.簡(jiǎn)單的條件語(yǔ)句IF<條件><語(yǔ)句序列>ENDIF

二.帶else的條件語(yǔ)句IF<條件><語(yǔ)句序列1>ELSE<語(yǔ)句序列2>ENDIFIIF函數(shù)IIF(邏輯表達(dá)式,表達(dá)式1,表達(dá)式2)當(dāng)邏輯表達(dá)式為真時(shí),返回表達(dá)式1,否則返回表達(dá)式2。例:iif(chj>=90,”優(yōu)秀”,”通過(guò)”)7.2程序的控制結(jié)構(gòu)當(dāng)chj不低于90分時(shí)成績(jī)?yōu)閮?yōu)秀,否則只是通過(guò)例:iif(chj<60,”不合格”,iif(chj>=90,”優(yōu)秀”,”通過(guò)”)當(dāng)chj低于60分時(shí)成績(jī)?yōu)椴缓细瘢?0到89分為通過(guò),90到100分為優(yōu)秀分支語(yǔ)句嵌套If……If……If……If……endifendifendifendifelse三、多分支語(yǔ)句

DOCASECASE<邏輯表達(dá)式1><語(yǔ)句序列1>CASE<邏輯表達(dá)式2><語(yǔ)句序列2>……………CASE<邏輯表達(dá)式n><語(yǔ)句序列n>[OTHERWISE<語(yǔ)句序列n+1>]ENDCASE一、請(qǐng)說(shuō)出下列程序段的輸出結(jié)果accepttoa&&輸入內(nèi)存變量A的值ifA=[123456]&&當(dāng)A的值為”123456”時(shí)s=0&&執(zhí)行s=0,即給s賦0值EndifS=1&&給s賦1值?s&&輸出s的值7.2程序的控制結(jié)構(gòu)結(jié)果應(yīng)該為:1因?yàn)椴徽揂為什么值,s=1都會(huì)執(zhí)行,賦值語(yǔ)句的特點(diǎn)總是以新的值替代舊的值從鍵盤輸入二個(gè)整數(shù),并將其中較大的數(shù)顯示出來(lái)clearinput"請(qǐng)輸入第一個(gè)整數(shù):"toainput"請(qǐng)輸入第一個(gè)整數(shù):"tobmax=iif(a>b,a,b)?maxclearinput"請(qǐng)輸入第一個(gè)整數(shù):"toainput"請(qǐng)輸入第一個(gè)整數(shù):"tobifa>b?aelse?bendif二、請(qǐng)說(shuō)出下列程序段的輸出結(jié)果

設(shè)當(dāng)前記錄的”計(jì)算機(jī)”字段的值是89Docasecase計(jì)算機(jī)<60?“計(jì)算機(jī)成績(jī)是:”+”不及格”case計(jì)算機(jī)>=60?“計(jì)算機(jī)成績(jī)是:”+”及格”case計(jì)算機(jī)>=70?“計(jì)算機(jī)成績(jī)是:”+”中”case計(jì)算機(jī)>=80?“計(jì)算機(jī)成績(jī)是:”+”良”case計(jì)算機(jī)>=90?“計(jì)算機(jī)成績(jī)是:”+”優(yōu)秀”endcase7.2程序的控制結(jié)構(gòu)結(jié)果應(yīng)該為:計(jì)算機(jī)的成績(jī)是:及格因?yàn)閐ocase語(yǔ)句中,當(dāng)滿足其中最靠前的條件時(shí),將執(zhí)行相應(yīng)的語(yǔ)句,然后就不做其他的判斷(見164頁(yè)注釋①)cleardocasecaseyue=3oryue=4oryue=5jj="春"caseinlist(yue,6,7,8)jj="夏"caseinlist(yue,9,10,11)jj="秋"caseinlist(yue,12,1,2)jj="冬"endcasewaitjjwindowat8,30&&當(dāng)前季節(jié)顯示在WAIT窗口7.2程序的控制結(jié)構(gòu)settalkoffclearinput"請(qǐng)輸入月份:"toyuedocasecaseyue=3oryue=4oryue=5jj="春"caseinlist(yue,6,7,8)jj="夏"caseinlist(yue,9,10,11)jj="秋"caseinlist(yue,12,1,2)jj="冬"endcasewaitjjwindowat8,30&&當(dāng)前季節(jié)顯示在wait窗口settalkoninlist(

)

函數(shù)一、功能判斷一個(gè)表達(dá)式是否與一組表達(dá)式中的某一個(gè)相匹配。二、格式INLIST(eExpression1,

eExpression2

[,

eExpression3

...])

三、返回值邏輯型

7.2.2循環(huán)結(jié)構(gòu)一、條件循環(huán)

1.格式

DOWHILE<邏輯表達(dá)式><語(yǔ)句序列>ENDDO

循環(huán)體循環(huán)條件7.2程序的控制結(jié)構(gòu)2.執(zhí)行過(guò)程(見166頁(yè)圖7.5)首先判斷dowhile處的循環(huán)條件是否成立,若為真,則執(zhí)行循環(huán)體,然后回到dowhile處再次判斷條件是否為真,若為真,則又執(zhí)行循環(huán)體,若為假,則跳出循環(huán),執(zhí)行enddo后面語(yǔ)句[P166例7.7]計(jì)算s=1+2+3+……+100s=0i=1dowhilei<=100s=s+ii=i+1enddo?”s=”,s7.2.2循環(huán)結(jié)構(gòu)7.2程序的控制結(jié)構(gòu)一、條件循環(huán)s=s+I是累加器循環(huán)變量循環(huán)體循環(huán)條件四、循環(huán)輔助語(yǔ)句(見書166頁(yè)圖7.6)

LOOP:使執(zhí)行轉(zhuǎn)向循環(huán)語(yǔ)句的頭部繼續(xù)循環(huán)

DOWHILE<邏輯表達(dá)式>……LOOP……ENDDO

EXIT:立即退出循環(huán),轉(zhuǎn)去執(zhí)行循環(huán)外的語(yǔ)句

DOWHILE<邏輯表達(dá)式>……EXIT……ENDDO

二、步長(zhǎng)循環(huán)

1.格式

FOR<變量>=<初值>TO<終止值>[STEP步長(zhǎng)]

<語(yǔ)句序列>

ENDFOR|NEXT

7.2.2循環(huán)結(jié)構(gòu)7.2程序的控制結(jié)構(gòu)給循環(huán)變量賦初值判斷條件循環(huán)體循環(huán)變量增步長(zhǎng)值endfor語(yǔ)句的下一語(yǔ)句TF

2.執(zhí)行過(guò)程

見右圖

默認(rèn)為1[P166例7.7]計(jì)算s=1+2+3+……+100

s=0fori=1to100s=s+inext?"s=",s三、掃描循環(huán)

SCAN[<范圍>][FOR<邏輯表達(dá)式1>][WHILE<邏輯表達(dá)式2>]<語(yǔ)句序列>ENDSCAN在<范圍>內(nèi)依此尋找滿足FOR條件或WHILE條件的記錄,并對(duì)找到的記錄執(zhí)行<語(yǔ)句序列>,scan循環(huán)自動(dòng)移動(dòng)記錄指針

usee:\倉(cāng)庫(kù)表scanif面積=370?”面積=”,面積endifendscanuse有一個(gè)數(shù)據(jù)庫(kù)表stock.dbf內(nèi)容如下:股票代碼股票名稱單價(jià)交易所600600青島啤酒7.84上海600601方正科技15.20上海600602廣電電子10.40上海600603興業(yè)房產(chǎn)12.76上海600604二紡機(jī)9.96上海600605輕工機(jī)械14.59上海000001深發(fā)展7.84深圳000002深萬(wàn)科12.50深圳closeallusestockgo1x=0scanfor交易所=“上?!眡=x+Ⅰendscan問(wèn)x等于多少?closeallusestockgotopx=0dowhile.not.eof()if單價(jià)>10x=x+Ⅰendscanskipenddo問(wèn)x等于多少?store0toi,s,tdowhilei<100i=i+1s=s+iifint(i/2)=i/2loopendift=t+ienddo?"1+2+3+...+100=",s?"1~100奇數(shù)和為",t求1到100的奇數(shù)和五、多重循環(huán)

循環(huán)體內(nèi)包含其它循環(huán)→循環(huán)嵌套

外循環(huán)每執(zhí)行一次,內(nèi)循要全部執(zhí)行完一遍

例程序段fori=0to2forj=0to4則循環(huán)次數(shù)3×5=15次……endforendfor具體:i=0時(shí)j=0,1,2,3,4五次i=1時(shí)j=0,1,2,3,4五次共15次i=2時(shí)j=0,1,2,3,4五次7.2.3編程實(shí)例7.2程序的控制結(jié)構(gòu)例1:求T=10!t=1fori=1to10t=t*iendfor?”t=”,tt=t*i是累乘器例1改成求任意數(shù)的階乘該怎樣改?

input“請(qǐng)輸入一個(gè)整數(shù):”tont=1fori=1tont=t*iendfor?”t=”,t

7.2.3編程實(shí)例7.2程序的控制結(jié)構(gòu)例1:求T=1!+2!+……+10!

方法1:p=1t=0fori=1to10p=p*it=t+pendfor?”t=”,t例1改成求T=1!+2!+……+m!

方法2:

t=0forn=1to10p=1fori=1tonp=p*iendfort=t+pendfor?“t=",t7.3多模塊程序子程序一、調(diào)用與返回兩個(gè)具有調(diào)用關(guān)系的程序文件,稱調(diào)用程序?yàn)橹鞒绦颍徽{(diào)用程序?yàn)樽映绦蛑鞒绦蛴龅紻O命令,轉(zhuǎn)向子程序執(zhí)行,稱為調(diào)用子程序。子程序執(zhí)行到RETURN語(yǔ)句(或缺省該語(yǔ)句),返回到主程序中的DO命令的下一個(gè)語(yǔ)句執(zhí)行,稱為返回主程序二、帶參數(shù)子程序的調(diào)用和返回1.主程序中,用DO命令帶一個(gè)WITH子句來(lái)向子程序傳入?yún)?/p>

數(shù)和從子程序帶回運(yùn)算結(jié)果

DO<文件名>|<過(guò)程名>[WITH<實(shí)參表>](參數(shù)至少有一個(gè))2.相對(duì)應(yīng)的參數(shù)在子程序中用PARAMETERS來(lái)接收和回送參數(shù)。

PARAMETERS|LPARAMETERS<形參1>[,形參2……>注意:該語(yǔ)句應(yīng)為子程序的第一條命令,PARAMETERS參數(shù)與WITH的參數(shù)是按位置一一對(duì)應(yīng)的1.參數(shù)的種類:(1)實(shí)參:主程序中調(diào)用模塊時(shí)的參數(shù)(2)形參:模塊程序中接收時(shí)的參數(shù)三、參數(shù)的種類及調(diào)用方式2.參數(shù)的傳遞方式:(1)按值傳遞:當(dāng)實(shí)參是常量或一般形式的表達(dá)式或數(shù)組元素(2)按地址傳遞(或稱按引用傳遞):當(dāng)實(shí)參是變量或數(shù)組名3.不同傳遞方式的特點(diǎn):(1)按值傳遞:形參的改變不影響實(shí)參值(2)按地址傳遞(或稱按引用傳遞):形參變量值的改變,影響到實(shí)參值的改變

以變量的作用域來(lái)分,可以分為:公共變量、私有變量和本地變量1、公共變量

公共變量是在一個(gè)程序中的任何模塊都可以使用的變量.建立命令格式:

PUBLIC<公共變量表>公共變量在建立時(shí)賦初值.F.一個(gè)公共變量一經(jīng)定義,直到使用RELEASE或CLEARmemory等命令釋放它,

一直有效.

VFP命令窗口定義的變量均為公共變量,但這些變量在程序中使用無(wú)效.四、變量的作用域(變量的使用范圍)

溫馨提示

  • 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)論