




已閱讀5頁,還剩137頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1 VisualFoxPro程序設(shè)計(jì)教程杭州商學(xué)院計(jì)算機(jī)教研室2020年4月19日 數(shù)據(jù)庫應(yīng)用 2 第3章程序設(shè)計(jì)基礎(chǔ) 3 1VisualFoxPro應(yīng)用程序設(shè)計(jì)概述3 2程序文件設(shè)計(jì)3 3可視化界面與事件過程設(shè)計(jì) 3 3 1VisualFoxPro應(yīng)用程序設(shè)計(jì)概述 3 1 1VFP程序設(shè)計(jì)過程VFP應(yīng)用程序包括 一個(gè)或多個(gè)數(shù)據(jù)庫設(shè)置應(yīng)用程序系統(tǒng)環(huán)境的主程序用戶界面查詢和報(bào)表等 全過程包括 規(guī)劃應(yīng)用程序 創(chuàng)建數(shù)據(jù)庫 設(shè)計(jì)用戶操作界面和設(shè)計(jì)訪問信息的方法 測(cè)試和調(diào)試 而且各階段要有一個(gè)反復(fù) 完善的過程 P 103圖3 1 4 3 1VisualFoxPro應(yīng)用程序設(shè)計(jì)概述 3 1 2VFP程序設(shè)計(jì)方法VFP將過程化程序設(shè)計(jì)與面向?qū)ο蟪绦蛟O(shè)計(jì)結(jié)合在一起 為用戶創(chuàng)建功能強(qiáng)大靈活多變的應(yīng)用程序提供了方便 實(shí)用的程序設(shè)計(jì)后臺(tái)支持 面向過程程序設(shè)計(jì)方法面向?qū)ο蟪绦蛟O(shè)計(jì)方法 5 3 1VisualFoxPro應(yīng)用程序設(shè)計(jì)概述 3 1 2VFP程序設(shè)計(jì)方法1 面向過程程序設(shè)計(jì)方法面向過程程序設(shè)計(jì)方法 是將應(yīng)用程序目標(biāo)系統(tǒng)的整體功能進(jìn)行分解 自頂向下不斷的把復(fù)雜的處理分解為子處理 這樣一層一層地分解下去 直到僅剩若干個(gè)容易處理的子處理為止 這種結(jié)構(gòu)分析和結(jié)構(gòu)設(shè)計(jì)是圍繞實(shí)現(xiàn) 過程 來構(gòu)造系統(tǒng)的 2 面向?qū)ο蟪绦蛟O(shè)計(jì)方法面向?qū)ο蟮某绦蛟O(shè)計(jì)方法有些象使用集成電路 IC 構(gòu)造計(jì)算機(jī)硬件一樣 各個(gè)部件都是相對(duì)封閉獨(dú)立的 部件之間的連接與通信通過對(duì)外接口實(shí)現(xiàn) 所以可以將面向?qū)ο蟮某绦蛟O(shè)計(jì)方法視為 軟件IC 它的軟件部件的內(nèi)部結(jié)構(gòu)緊密 有自己的私有數(shù)據(jù)和操作方法 而與外界的溝通是通過傳遞信息來完成的 6 3 1VisualFoxPro應(yīng)用程序設(shè)計(jì)概述 3 1 3VFP程序編程機(jī)制VFP程序由代碼組成 代碼包括以命令形式出現(xiàn)的指令 函數(shù)或VFP可以理解的任何操作符號(hào)行 這些代碼可以出現(xiàn)在 命令 窗口中 程序文件中 表單設(shè)計(jì)器 或 類設(shè)計(jì)器 的事件或方法程序代碼窗口中 菜單設(shè)計(jì)器 報(bào)表設(shè)計(jì)器 的過程代碼窗口中 1 使用 命令 窗口在 命令 窗口中鍵入VFP命令并按Enter鍵執(zhí)行 輸入結(jié)果顯示在VFP的大屏幕上 重新執(zhí)行該命令 將光標(biāo)移到此行并按Enter鍵 選中多行 一次性批量執(zhí)行多行代碼 7 3 1VisualFoxPro應(yīng)用程序設(shè)計(jì)概述 3 1 3VFP程序編程機(jī)制2 程序文件 程序 是為了完成某項(xiàng)指定的任務(wù)而需執(zhí)行的命令序列 程序文件 命令序列以一定的結(jié)構(gòu)有序地編排在一起 并以文件的形式存儲(chǔ)在磁盤上 這種文件稱為命令文件或程序文件 PRG FXP 程序可以被修改并重新運(yùn)行 可以從菜單 表單和工具欄上啟動(dòng)程序 一個(gè)程序可以調(diào)用其他程序或被其他程序調(diào)用 執(zhí)行命令效率高 而且可以重復(fù)調(diào)用 8 3 1VisualFoxPro應(yīng)用程序設(shè)計(jì)概述 3 1 3VFP程序編程機(jī)制2 程序文件 9 3 1VisualFoxPro應(yīng)用程序設(shè)計(jì)概述 3 1 3VFP程序編程機(jī)制3 事件驅(qū)動(dòng)的可視化界面的事件過程代碼 10 3 2程序文件設(shè)計(jì) 3 2 1程序設(shè)計(jì)基本特點(diǎn)程序的質(zhì)量標(biāo)準(zhǔn)是 清晰第一 效率第二 程序書寫規(guī)范 風(fēng)格統(tǒng)一 結(jié)構(gòu)化程序設(shè)計(jì)的基本結(jié)構(gòu)規(guī)定為 順序結(jié)構(gòu) 選擇結(jié)構(gòu) 循環(huán)結(jié)構(gòu) 一個(gè)大的程序開發(fā)應(yīng)當(dāng)采用 自頂向下 逐步細(xì)化和模塊化 的方法 程序模塊應(yīng)該只有一個(gè)入口 一個(gè)出口 無死語句 死循環(huán) 11 3 2程序文件設(shè)計(jì) 3 2 2算法表示算法 解決問題的方法 步驟 表示形式 自然語言 傳統(tǒng)流程圖 N S結(jié)構(gòu)化流程圖和偽代碼等 常用的流程圖符號(hào) 起止框 處理框 判斷框 輸入輸出框 流程線 連接點(diǎn) 12 3 2程序文件設(shè)計(jì) 3 2 2算法表示 循環(huán)結(jié)構(gòu) 13 3 2程序文件設(shè)計(jì) 3 2 2算法表示 例3 1將 學(xué)生 表中指定學(xué)生的獎(jiǎng)學(xué)金加10元 并顯示該學(xué)生的獎(jiǎng)學(xué)金 Y N 14 3 2程序文件設(shè)計(jì) 3 2 6程序文件示例 例3 2編制一個(gè)程序文件實(shí)現(xiàn)口令驗(yàn)證功能 15 3 2程序文件設(shè)計(jì) 3 2 6程序文件示例 例3 3編制一個(gè)程序文件實(shí)現(xiàn)收費(fèi)找零功能 程序自動(dòng)隨機(jī)生成一個(gè)需要付款的金額 要求忽略角分 用戶從鍵盤輸入預(yù)付款金額 程序自動(dòng)計(jì)算找零金額并對(duì)50元 10元 5元 1元的找零張數(shù)進(jìn)行統(tǒng)計(jì)且給出提示 請(qǐng)大家試著畫畫程序流程圖 16 3 2程序文件設(shè)計(jì) 3 2 3程序文件的建立與執(zhí)行 在程序文件中的命令或指令通常又稱作語句 程序文件由若干條語句組成 每行只能有一條語句 并以回車鍵結(jié)束 程序文件主要包括3個(gè)基本部分 數(shù)據(jù)輸入 數(shù)據(jù)處理 數(shù)據(jù)輸出 1創(chuàng)建程序通過項(xiàng)目管理器創(chuàng)建通過文件菜單創(chuàng)建通過命令創(chuàng)建 MODIFYCOMMAND 2 保存程序通過菜單保存直接關(guān)閉沒有保存的程序 則會(huì)彈出相應(yīng)對(duì)話框 提示保存或放棄按CTRL W組合鍵保存 17 3 2程序文件設(shè)計(jì) 3 2 3程序文件的建立與執(zhí)行3 修改程序通過項(xiàng)目管理器的 修改 選項(xiàng)打開程序并修改通過文件菜單中 打開 選項(xiàng)打開程序并修改通過命令MODIFYCOMMAND打開程序并修改注 修改窗口和創(chuàng)建窗口相同 修改完畢后應(yīng)注意保存 4 運(yùn)行程序通過項(xiàng)目管理器的 運(yùn)行 按鈕運(yùn)行程序通過程序菜單中 運(yùn)行 選項(xiàng)運(yùn)行程序通過命令DO運(yùn)行程序 18 3 2程序文件設(shè)計(jì) 3 2 4簡(jiǎn)單的輸入和輸出語句1 換行輸出語句 格式 功能 分別計(jì)算表達(dá)式列表的值 并將表達(dá)式列表的值輸出在主窗口的當(dāng)前光標(biāo)的下一行 2 同行輸出語句 格式 功能 當(dāng)前光標(biāo)所在行 列的后面 19 3 2程序文件設(shè)計(jì) 3 2 4簡(jiǎn)單的輸入和輸出語句3 表達(dá)式接收語句 INPUT格式 INPUT TO功能 將鍵盤輸入的數(shù)據(jù)賦給由指定的內(nèi)存變量 從鍵盤輸入的數(shù)據(jù)可以是常量 變量或表達(dá)式 數(shù)據(jù)類型可以是N C D L和Y等 注意 輸入的字符串常量 必須有定界符 4 字符串接收語句 ACCEPT格式 ACCEPT TO功能 將鍵盤輸入的數(shù)據(jù)賦給由指定的內(nèi)存變量 注意 從鍵盤輸入的數(shù)據(jù)只能是字符型常量 20 3 2程序文件設(shè)計(jì) 3 2 4簡(jiǎn)單的輸入和輸出語句5 單字符接收語句 WAIT格式 WAIT TO WINDOW AT NOWAIT NOCLEAR TIMEOUT 功能 將鍵盤輸入的數(shù)據(jù)賦給由指定的內(nèi)存變量 注意 從鍵盤輸入的數(shù)據(jù)只能是一個(gè)單字符常量 21 3 2程序文件設(shè)計(jì) 3 2 5程序注釋與環(huán)境設(shè)置語句1 程序注釋語句 NOTE 格式 NOTE 或 功能 對(duì)程序的結(jié)構(gòu)或功能進(jìn)行注釋 2 語句注釋 格式 功能 對(duì)程序中某一條語句的功能進(jìn)行注釋 3 清屏語句 CLEAR格式 CLEAR功能 執(zhí)行清屏操作 22 3 2程序文件設(shè)計(jì) 3 2 5程序注釋與環(huán)境設(shè)置語句4 常用的SET語句系列 1 SETTALKON OFF功能 打開或關(guān)閉系統(tǒng)交互對(duì)話顯示方式 缺省時(shí)為打開顯示 2 SETDELETEOFF ON 3 SETEXACTOFF ON 4 SETCARRYOFF ON 5 SETDEFAULTTO 6 SETEXCLUSIVEON OFF 7 SETESCAPEON OFF 8 SETUDFPARMSTOVALUE REFERENCE 23 第4章程序設(shè)計(jì)控制結(jié)構(gòu) 4 1程序控制的基本結(jié)構(gòu)順序結(jié)構(gòu)選擇分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)4 2子程序與參數(shù)傳遞4 3綜合程序設(shè)計(jì)范例 24 4 1程序控制的基本結(jié)構(gòu) 4 1 1順序結(jié)構(gòu)指程序的執(zhí)行按其中的命令從上到下逐條順序執(zhí)行 例 105頁第一個(gè)程序 例 編寫一個(gè)求圓面積的程序 圓半徑的值由鍵盤輸入 例 求下列表達(dá)式的值 x y的值由鍵盤輸入 log x y 2 x y sin 30 例4 1 求 學(xué)生 表中指定班級(jí)的全體學(xué)生的獎(jiǎng)學(xué)金總額 25 順序結(jié)構(gòu) 例1 105頁 settalkoffclearaccept 請(qǐng)輸入你的名字 tonamemessage 大家好 這是 name 的第一個(gè)程序 messagesettalkon 使用input可以嗎 INPUT 數(shù)據(jù)類型可以是N C D L和Y等 ACCEPT 從鍵盤輸入的數(shù)據(jù)只能是字符型常量 26 順序結(jié)構(gòu) 編寫一個(gè)求圓面積的程序 圓半徑的值由鍵盤輸入 settalkoffclearinput 請(qǐng)輸入圓的半徑 tors pi r 2 半徑為 alltrim str r 2 的圓的面積為 alltrim str s 20 2 settalkon 27 順序結(jié)構(gòu) 求下列表達(dá)式的值 x y的值由鍵盤輸入 log x y 2 x y sin 30 settalkoffclearinput 請(qǐng)輸入x的值 toxinput 請(qǐng)輸入y的值 toys log x y 2 abs x y sin 30 pi 180 表達(dá)式的值為 alltrim str s 20 2 settalkon 28 4 1程序控制的基本結(jié)構(gòu) 例4 1 求 學(xué)生 表中指定班級(jí)的全體學(xué)生的獎(jiǎng)學(xué)金總額 note求指定班級(jí)的獎(jiǎng)學(xué)金總額settalkoffclearuse學(xué)生accept 輸入班級(jí) 951 953 tobjsum獎(jiǎng)學(xué)金tojxjforleft 學(xué)號(hào) 3 bj bj 班的獎(jiǎng)學(xué)金總額為 str jxj 5 2 usesettalkon 與INPUT的區(qū)別 INPUT 數(shù)據(jù)類型可以是N C D L和Y等 ACCEPT 從鍵盤輸入的數(shù)據(jù)只能是字符型常量 29 4 1程序控制的基本結(jié)構(gòu) 選擇結(jié)構(gòu)二路選擇分支結(jié)構(gòu)格式IFELSEENDIF功能根據(jù)的值控制執(zhí)行或 條件表達(dá)式關(guān)系表達(dá)式或邏輯表達(dá)式 其值為邏輯真 T 或邏輯假 F 30 4 1程序控制的基本結(jié)構(gòu) 選擇結(jié)構(gòu)二路選擇分支結(jié)構(gòu)流程圖注意ENDIF不能省略 二路分支的出口為ENDIF的下一條語句 ELSE后面為空 沒有表達(dá)式 31 4 1程序控制的基本結(jié)構(gòu) 選擇結(jié)構(gòu)二路選擇分支結(jié)構(gòu)程序舉例 例4 2 從鍵盤輸入一個(gè)數(shù) 說明它是奇數(shù)還是偶數(shù) 習(xí)題5 2 給定一個(gè)年份 判斷是否閏年 32 例4 2 從鍵盤輸入一個(gè)數(shù) 說明它是奇數(shù)還是偶數(shù) 1 被2整除 偶數(shù) 2 不能被2整除 奇數(shù) SETTALKOFFCLEARINPUT 請(qǐng)輸入一個(gè)數(shù)值型數(shù)據(jù) TOAIFINT A 2 A 2 A 是偶數(shù) ELSE A 是奇數(shù) ENDIFSETTALKON 33 教p199習(xí)5 2 給定一個(gè)年份 從鍵盤輸入 判斷它是否閏年 閏年的條件是 能被4整除但不能被100整除 或能被100整除且能被400整除 SETTALKOFFCLEAINPUT Y TOYIF Y 4 0 AND Y 100 0 OR Y 100 0 AND Y 400 0 Y 是閏年 ELSE Y 不是閏年 ENDIFSETTALKON 34 4 1程序控制的基本結(jié)構(gòu) 選擇結(jié)構(gòu)二路選擇分支結(jié)構(gòu)二路分支的簡(jiǎn)約形式IFENDIF程序舉例 任意輸入三個(gè)數(shù) 按從大到小的順序輸出 35 從鍵盤輸入A B C三個(gè)數(shù) 值 將它們從大到小 排列后輸出 SETTALKOFFCLEAINPUT A TOAINPUT B TOBINPUT C TOCIFA BT AA BB TENDIF IFA CT AA CC TENDIFIFB CT BB CC TENDIF A B CSETTALKON 36 4 1程序控制的基本結(jié)構(gòu) 選擇結(jié)構(gòu)2 多路選擇分支結(jié)構(gòu)格式DOCASECASE CASEOTHERWISEENDCASE功能 根據(jù)的邏輯值控制執(zhí)行對(duì)應(yīng)的 37 4 1程序控制的基本結(jié)構(gòu) 選擇結(jié)構(gòu) 多路選擇分支結(jié)構(gòu)功能根據(jù)的邏輯值控制執(zhí)行對(duì)應(yīng)的 流程圖 38 4 1程序控制的基本結(jié)構(gòu) 選擇結(jié)構(gòu) 選擇結(jié)構(gòu) 多路選擇分支結(jié)構(gòu)程序舉例 習(xí)題5 3 從鍵盤輸入任意數(shù)據(jù) 判斷數(shù)據(jù)類型 例4 4 求一元二次方程式ax2 bx c 0的根 a b c的值從鍵盤輸入 用多路選擇分支結(jié)構(gòu)實(shí)現(xiàn) 39 教p199習(xí)5 3 從鍵盤輸入數(shù)據(jù)A 可以 是C D N L Y和U型等 通過類型判斷 輸出其數(shù) 據(jù)類型的漢字說明 SETTALKOFFCLEAINPUT A TOA DOCASECASETYPE A C A 是字符型數(shù)據(jù) CASETYPE A N A 是數(shù)值型數(shù)據(jù) CASETYPE A L A 是邏輯型數(shù)據(jù) CASETYPE A D A 是日期型數(shù)據(jù) CASETYPE A Y A 是貨幣型數(shù)據(jù) ENDCASESETTALKON 40 教p151例4 4 用多路分支實(shí)現(xiàn)例4 3中一元二 次方程求解 P4 4 PRG SETTALKOFFCLEARINPUT A TOAINPUT B TOBINPUT C TOCD B B 4 A CP B 2 A DOCASECASED0 或用OTHERWISED1 SQRT D X1 B D1 2 A X2 B D1 2 A ENDCASESETTALKON 41 4 1程序控制的基本結(jié)構(gòu) 選擇結(jié)構(gòu) 選擇分支結(jié)構(gòu)的嵌套示例程序1 例4 3 求一元二次方程式ax2 bx c 0的根 a b c的值從鍵盤輸入 IFELSEENDIF 1 b b 4 a c 0 A b b 4 a c 0 B b b 4 a c 0 42 SETTALKOFFCLEARINPUT a TOaINPUT b TObINPUT c TOcD b b 4 a cP b 2 a IFD 0 復(fù)根 ELSEIFD 0 X1 X2 PELSED1 SQRT D X1 b d1 2 a X2 b d1 2 a ENDIFENDIFSETTALKOFF 43 4 1程序控制的基本結(jié)構(gòu) 選擇結(jié)構(gòu) 選擇分支結(jié)構(gòu)的嵌套示例程序2 例 從鍵盤輸入學(xué)生的成績(jī) 輸出成績(jī)的檔次 優(yōu) 良 中 及格和不及格 如果該成績(jī)不是0 100的數(shù)則提示成績(jī)輸入錯(cuò)誤 IFELSEENDIF 44 4 1程序控制的基本結(jié)構(gòu) SETTALKOffCLEARINPUT 請(qǐng)輸入學(xué)生的成績(jī) TOCJIFCJ 100 OR CJ 0 請(qǐng)輸入0 100的成績(jī) ELSE DOCASECASECJ 90DC 優(yōu) CASECJ 80DC 良 CASECJ 70DC 中 CASECJ 60DC 及格 OTHERWISEDC 不及格 ENDCASE DCENDIFSETTALKON 45 我們學(xué)到的命令 創(chuàng)建 修改程序 MODIFYCOMMAND運(yùn)行程序 DO同行輸出語句 表達(dá)式接收語句 INPUT字符串接收語句 ACCEPT單字符接收語句 WAIT程序注釋語句 NOTE 語句注釋 清屏語句 CLEAR選擇分支語句 IF ENDIF結(jié)構(gòu)多路分支語句 DOCASE ENDCASE結(jié)構(gòu) 46 上機(jī)作業(yè) 199頁第1題200頁實(shí)驗(yàn)1 實(shí)驗(yàn)2注意事項(xiàng) 在d盤建立以自己學(xué)號(hào)命名的文件夾 如070000001設(shè)置工作目錄Setdefaultto d 070000001 運(yùn)行程序do 例1 prg 注意在英文狀態(tài)下輸入程序指令 47 4 1 3循環(huán)結(jié)構(gòu) 循環(huán)語句的三種形式 當(dāng)型循環(huán) DOWHILE ENDDO步長(zhǎng)型循環(huán) FOR ENDFOR表記錄掃描處理SCAN ENDSCAN 將在后續(xù)章節(jié)中介紹 48 4 1 3循環(huán)結(jié)構(gòu) DOWHILE基本概念 一 DOWHILE ENDDO 當(dāng)型循環(huán) 格式 DOWHILEENDDO功能 當(dāng)?shù)闹禐檎鏁r(shí) 重復(fù)執(zhí)行DOWHILE ENDDO之間的 直到的值為假時(shí)結(jié)束 49 4 1 3循環(huán)結(jié)構(gòu) DOWHILE基本概念 一 DOWHILE ENDDO 當(dāng)型循環(huán) DOWHILEENDDO說明一般在循環(huán)體中 應(yīng)該包含改變值的命令 否則將出現(xiàn)死循環(huán)現(xiàn)象 即永真循環(huán) 當(dāng)一開始就不成立時(shí) 循環(huán)一次也不做 50 4 1 3循環(huán)結(jié)構(gòu) DOWHILE應(yīng)用舉例 1 對(duì)已知循環(huán)次數(shù)的程序段進(jìn)行順計(jì)數(shù)操作 控制格式 N 初值 通常設(shè)為1 DOWHILENN N 1ENDDO功能 已知循環(huán)次數(shù)M 通過對(duì)循環(huán)變量N進(jìn)行順計(jì)數(shù)并與M比較的方法完成循環(huán)操作 51 4 1 3循環(huán)結(jié)構(gòu) DOWHILE應(yīng)用舉例 例1 求1 2 3 10的和值解1 順計(jì)數(shù)流程框圖見右 52 例1 求1 2 3 10的和值解1 順計(jì)數(shù)SETTALKOFFCLEARS 0 累加器賦初值 用于存放最后的和值N 1 累加器賦初值 將用于存放循環(huán)次數(shù)DOWHILEN 10S S N 實(shí)現(xiàn)累加 即用原來的S加上N 和值再賦給SN N 1 實(shí)現(xiàn)累加 即用原來的N加上1 和值再賦給NENDDO 1 2 3 10 SSETTALKON 注意 循環(huán)的精確性 結(jié)束循環(huán)時(shí)N與S的值 4 1 3循環(huán)結(jié)構(gòu) DOWHILE應(yīng)用舉例 執(zhí)行過程 53 2 對(duì)已知循環(huán)次數(shù)的程序段進(jìn)行倒計(jì)數(shù)操作 控制格式 DOWHILEN 0N N 1ENDDO功能 已知循環(huán)次數(shù)N 通過對(duì)循環(huán)變量N進(jìn)行倒計(jì)數(shù)并與0比較的方法完成循環(huán)操作 4 1 3循環(huán)結(jié)構(gòu) DOWHILE應(yīng)用舉例 54 例1 求1 2 3 10的和值解2 倒計(jì)數(shù)SETTALKOFFCLEARS 0 累加器賦初值 用于存放最后的和值 N 10 累加器賦初值 將用于存放循環(huán)次數(shù) DOWHILEN 0S S N 實(shí)現(xiàn)累加 即用原來的S加上N 和值再賦給S N N 1 實(shí)現(xiàn)累減 即用原來的N減去1 差值再賦給N ENDDO 1 2 3 10 SSETTALKON 4 1 3循環(huán)結(jié)構(gòu) DOWHILE應(yīng)用舉例 55 例2 求A 的值 A從鍵盤輸入 SETTALKOFFCLEART 1 累乘器賦初值 用于存放最后的積值 INPUT A TOAN 1DOWHILEN AT T N 實(shí)現(xiàn)累乘 即用原來的T剩上N 積值再賦給T N N 1ENDDO ALLTRIM STR A 19 TSETTALKON注意 循環(huán)控制變量N參與累乘 4 1 3循環(huán)結(jié)構(gòu) DOWHILE應(yīng)用舉例 56 例3 求XN的值 X N值從鍵盤SETTALKOFFCLEART 1 累乘器賦初值 用于存放最后的積值INPUT X TOXINPUT N TONI 1DOWHILI NT T X 實(shí)現(xiàn)累乘 即用原來的T剩上X 積值再賦給TI I 1ENDDO T TSETTALKON注意 循環(huán)控制變量I未參與累乘 只是用來控制循環(huán)的次數(shù) 4 1 3循環(huán)結(jié)構(gòu) DOWHILE應(yīng)用舉例 57 計(jì)數(shù)累加累乘的一般公式 4 1 3循環(huán)結(jié)構(gòu) DOWHILE應(yīng)用舉例 58 4 1 3循環(huán)結(jié)構(gòu) FOR基本概念 二 FOR ENDFOR 步長(zhǎng)型循環(huán) DOWHILE ENDDO結(jié)構(gòu)適用于一般的條件判斷 實(shí)現(xiàn)循環(huán)控制作 但在計(jì)數(shù)控制中 用FOR ENDFOR循環(huán)結(jié)構(gòu)更為方便 格式 FOR循環(huán)變量 初值TO終值 STEP步長(zhǎng) ENDFOR NEXT 說明 循環(huán)變量為任意一個(gè)內(nèi)存變量 不需要事先定義初值 終值 步長(zhǎng)均為一個(gè)數(shù)值表達(dá)式 其值可為正或負(fù)或小數(shù)若不選 STEP步長(zhǎng) 選項(xiàng) 遞增步長(zhǎng)為1 59 4 1 3循環(huán)結(jié)構(gòu) FOR基本概念 二 FOR ENDFOR 步長(zhǎng)型循環(huán) 執(zhí)行過程是 1 循環(huán)變量賦初值 2 判斷循環(huán)變量是否超過終值 如果超過終值 則結(jié)束循環(huán) 執(zhí)行ENDFOR后面的語句 3 若循環(huán)變量未超過終值時(shí) 在執(zhí)行了 語句序列 部分后 循環(huán)變量加步長(zhǎng)再轉(zhuǎn)到第2步繼續(xù)執(zhí)行 60 例4 求1 2 3 N的和值 N由鍵盤輸入SETTALKOFFCLEARS 0 累加器賦初值 用于存放最后的和值 INPUT N TON 累加器賦初值 將用于存放循環(huán)次數(shù) FORX 1TONS S X 實(shí)現(xiàn)累加 即用原來的S加上X 和值再賦給S 并執(zhí)行STEP1 即X X 1后 進(jìn)入下一次循環(huán) ENDFOR 1 2 3 N SSETTALKON 4 1 3循環(huán)結(jié)構(gòu) FOR應(yīng)用舉例 61 例5 求A 的值 A從鍵盤輸入 SETTALKOFFCLEART 1 累乘器賦初值 用于存放最后的積值 INPUT A TOAFORN 1TOAT T N 實(shí)現(xiàn)累乘 即用原來的T乘上N 積值再賦給T ENDFOR ALLTRIM STR A 19 TSETTALKON注意 循環(huán)控制變量N參與累乘 4 1 3循環(huán)結(jié)構(gòu) FOR應(yīng)用舉例 62 4 1 3循環(huán)結(jié)構(gòu) FOR應(yīng)用舉例 例6 求XN的值 X N值從鍵盤輸入 SETTALKOFFCLEART 1 累加器賦初值 用于存放最后的積值INPUT X TOXINPUT N TONFORI 1TONT T XENDFOR T TSETTALKON注意 循環(huán)控制變量I未參與累乘 只是用來控制循環(huán)的次數(shù) 63 三 在計(jì)數(shù)控制中FOR語句與DOWHILE語句的聯(lián)系與區(qū)別 FOR語句與WHILE語句可以互相轉(zhuǎn)換 聯(lián)系 FOR語句常用于循環(huán)次數(shù)已知的情況 WHILE語句更多用于循環(huán)次數(shù)未知的情況 區(qū)別 64 4 1 3循環(huán)結(jié)構(gòu) FOR與DOWHILE 循環(huán)體 65 例7 計(jì)算1 1 2 1 3 1 4 1 N N值從鍵盤輸入 次數(shù)控制 SETTALKOFFCLEARS 0INPUT N TONF 1 用F來控制符號(hào) FORX 1TONS S F 1 XF F 用F來控制符號(hào)的變化 ENDFOR 1 1 2 1 3 1 N SSETTALKON 4 1 3循環(huán)結(jié)構(gòu) FOR與DOWHILE 66 4 1 3循環(huán)結(jié)構(gòu) FOR與DOWHILE 例8 計(jì)算1 1 3 1 5 1 7 的前N項(xiàng)之和 N值從鍵盤輸入 次數(shù)控制 SETTALKOFFCLEARINPUT N TONS 0F 1K 1FORX 1TONS S F 1 KF FK K 2ENDFOR S SSETTALKON 67 4 1 3循環(huán)結(jié)構(gòu) FOR與DOWHILE 例9 計(jì)算1 1 3 1 5 1 7 直到最后一項(xiàng)的絕對(duì)值小于10 5為止 精度控制 SETTALKOFFCLEARS 0F 1K 1P 1 P代表數(shù)列的一項(xiàng) 初值必須大于等于1E 5 DOWHILEABS P 1E 5 精度控制的條件 S S PF FK K 2P F 1 KENDDO S SSETTALKON 68 例10 計(jì)算下列數(shù)列前n項(xiàng)之和 次數(shù)控制 X X2 2 X3 3 X4 4 解1SETTALKOFFCLEARS 0STOR1TOT1 T2 T3INPUT X TOXINPUT N TONFORI 1TONT1 T1 XT2 T2 IS S T3 T1 T2T3 T3ENDF S SRETURN 解2SETTALKOFFS 0T 1INPUT X TOXINPUT N TONFORI 1TONT1 1FORJ 1TOIT1 T1 XENDFORT2 1FORK 1TOIT2 T1 KENDFOR 4 1 3循環(huán)結(jié)構(gòu) FOR與DOWHILE S S T T1 T2T TENDFOR S SRETURN 69 解SETTALKOFFCLEARINPUT X TOXS 0SOTRE1TOT1 T2 IDOWHILEABS T1 T2 1E 5STORE1TOT1 T2 T3FORJ 1TO2 I 1T1 T1 XT2 T2 JENDFOR S S T3 T1 T2T3 T3I I 1ENDDO SIN STR X 6 4 LTRIM STR S 20 7 SETTALKON 4 1 3循環(huán)結(jié)構(gòu) FOR與DOWHILE 例11 計(jì)算數(shù)據(jù)前n項(xiàng)之和 X X3 3 X5 5 X7 7 精確到10 5 精度控制 70 循環(huán)結(jié)構(gòu)的一個(gè)基本應(yīng)用是級(jí)數(shù)求和問題 即對(duì)數(shù)列求和 常用的控制方法有兩種 一種是次數(shù)控制 即已知控制循環(huán)的次數(shù) 往往采用FOR語句實(shí)現(xiàn) 另一種是精度控制 即不知道循環(huán)的次數(shù) 但明確整個(gè)級(jí)數(shù)運(yùn)算結(jié)果精確的小數(shù)位數(shù) 或級(jí)數(shù)的某一項(xiàng)精確的小數(shù)位數(shù) 往往采用DOWHILE語句實(shí)現(xiàn) 一般較復(fù)雜的級(jí)數(shù)求和問題用雙重循環(huán)實(shí)現(xiàn) 內(nèi)循環(huán)求級(jí)數(shù)的一項(xiàng)或一項(xiàng)的一部分 外循環(huán)實(shí)現(xiàn)累加 當(dāng)然 較簡(jiǎn)單的級(jí)數(shù)求和問題也可以對(duì)控制結(jié)構(gòu)稍加技術(shù)處理 用單循環(huán)實(shí)現(xiàn) 通俗地說 這就是 累加累乘 問題 循環(huán)有3種執(zhí)行情況 即有限次循環(huán) 永真循環(huán)和一次也不做的循環(huán) 4 1 3循環(huán)結(jié)構(gòu) FOR與DOWHILE 71 4 1 3循環(huán)結(jié)構(gòu) 其它程序舉例 例12 輸入一個(gè)整數(shù)初始值 從該數(shù)開始到100之間 包括100 找出能被7或11整除的所有整數(shù) 顯示其值以及個(gè)數(shù) 循環(huán)與分支的嵌套 SETTALKOFFCLEARINPUT 請(qǐng)輸入一個(gè)正整數(shù) TONC 0FORI NTO100IFMOD I 7 0ORMOD I 11 0 STR I 3 C C 1ENDIFENDFOR 從 STR I 3 到整除的數(shù)的個(gè)數(shù)為 STR C 2 SETTALKON 72 4 1 3循環(huán)結(jié)構(gòu) 其它程序舉例 字符串的拆合 函數(shù)應(yīng)用題 利用字符處理函數(shù) 應(yīng)用循環(huán)結(jié)構(gòu)的思路 可以實(shí)現(xiàn)字符串的拆合基本知識(shí) 常用函數(shù) 大小寫轉(zhuǎn)換upper lower類型轉(zhuǎn)換ctod dtoc val str asc chr截取left right substr字符串長(zhǎng)度len 73 4 1 3循環(huán)結(jié)構(gòu) 其它程序舉例 解1 字符串的倒裝SETTALKOFFCLEARACCEPT N TONM LEN ALLTRIM N J 1S DOWHILJ MF SUBSTR N J 1 S F S 倒裝J J 1ENDDO SSETTALKON 解2 字符串的順裝SETTALKOFFCLEARACCEPT N TONM LEN ALLTRIM N J MS DOWHILJ 1F SUBSTR N J 1 S S F 順裝J J 1ENDDO SSETTALKON 例13 該程序?qū)崿F(xiàn)字符串倒置 如字符串 ABCD 倒置后為 DCBA 注意 S S F與S F S的區(qū)別 74 4 1 3循環(huán)結(jié)構(gòu) 其它程序舉例 例14 寫出下列程序的運(yùn)行結(jié)果 注 字符 G O D 的ASCII碼分別為71 79 68 SETTALKOFFCLEARC 一二三四五六七八九十 B GOOD R 0FORI 1TOLEN B W SUBSTR B I 1 D ASC W R 65S IFD SR R 6ENDFORSETTALKON 75 4 1 3循環(huán)結(jié)構(gòu) EXIT與LOOP 四 EXIT與LOOP的區(qū)別加入EXIT與LOOP后的循環(huán)控制格式DOWHILE EXIT LOOP ENDDOFOR循環(huán)變量 初值TO終值 STEP步長(zhǎng) EXIT LOOP ENDFOR NEXT注意 LOOP與EXIT一般應(yīng)放在分支語句中 區(qū)別 1 EXIT語句結(jié)束整個(gè)最內(nèi)層循環(huán) 不再進(jìn)行條件判斷 稱為循環(huán)的 斷路 2 LOOP語句只結(jié)束本次循環(huán) 直接進(jìn)行是否執(zhí)行下一次循環(huán)的判斷 又稱為循環(huán)的 短路 76 4 1 3循環(huán)結(jié)構(gòu) EXIT與LOOP 四 EXIT與LOOP的區(qū)別 加入EXIT后的循環(huán)控制格式 FOR與DOWHILE相同 77 4 1 3循環(huán)結(jié)構(gòu) EXIT與LOOP 四 EXIT與LOOP的區(qū)別加入LOOP后的循環(huán)控制格式 LOOP 選項(xiàng)用于跨過LOOP后面的語句 直接回到循環(huán)起始語句DOWHILE LOOP 選項(xiàng)用于跨過LOOP后面的語句 在執(zhí)行完循環(huán)變量加步長(zhǎng)后 直接回到與終值的比較 78 四 EXIT與LOOP的應(yīng)用對(duì)循環(huán)次數(shù)不確定的程序段進(jìn)行操作 永真循環(huán)控制格式 DOWHILE T IFEXITENDIFENDDO功能 循環(huán)條件設(shè)為永真 T 只有當(dāng)滿足時(shí) 才由EXIT語句跳出循環(huán) 一般包含在分支語句中 該控制結(jié)構(gòu)適合于各種循環(huán)控制 是一種 萬能 框架 除EXIT以外 也可以用RETURN或CANCEL跳出循環(huán) 4 1 3循環(huán)結(jié)構(gòu) EXIT與LOOP 79 例15 輸入一批學(xué)生的分?jǐn)?shù) 統(tǒng)計(jì)不及格學(xué)生的人數(shù) 輸入負(fù)數(shù)結(jié)束 解1 SETTALKOFFCLEARN 0DOWHILE T INPUT X TOXIFX 0EXITENDIFIFX 60N N 1ENDIFENDDO N NSETTALKON 解2SETTALKOFFCLEARN 0DOWHILE T INPUT X TOXIFX 60LOOPENDIFN N 1ENDDO N NSETTALKON 4 1 3循環(huán)結(jié)構(gòu) EXIT與LOOP 80 4 1 3循環(huán)結(jié)構(gòu) 幾種算法應(yīng)用 求最大最小問題 實(shí)例16 評(píng)委評(píng)分程序 分?jǐn)?shù)的范圍是0 100 在10個(gè)分?jǐn)?shù)中去掉一個(gè)最高分 去掉一個(gè)最低分 剩下的分?jǐn)?shù)求平均為最后得分 SETTALKOFFCLEARINPUT 請(qǐng)輸入分?jǐn)?shù) TOX 輸入第一個(gè)分?jǐn)?shù) STOREXTOS A BFORN 1TO9 對(duì)其余九個(gè)分?jǐn)?shù)處理 INPUT 請(qǐng)輸入分?jǐn)?shù) TOXS S X 累加 IFX A 求最高分 A XENDIFIFX B 求最低分 B XENDIFENDFORS S A B 8 最后得分為 SSETTALKON 81 整除性應(yīng)用實(shí)例17 輸入一個(gè)數(shù) 判斷其是否為素?cái)?shù) 3種思路 1 2 n 1 2 2 n 2 3 2 sqrt n 4 1 3循環(huán)結(jié)構(gòu) 幾種算法應(yīng)用 說明 素?cái)?shù)問題的解決有以上3種方法 其中第 1 種方法使用最方便 第 3 種方法效率最高 SETTALKOFFCLEARINPUT X TOXFORN 2TOX 1IFX N 0 第一個(gè)IF語句 EXITENDIFENDFORIFN X 第一個(gè)IF語句 STR X 是素?cái)?shù) ELSE STR X 不是素?cái)?shù) ENDIFSETTALKON注意 兩個(gè)IF語句 用1個(gè)IF語句可以嗎 82 4 1 3循環(huán)結(jié)構(gòu) 幾種算法應(yīng)用 數(shù)位截取框架 dowhilex0d x 10 取個(gè)位x int x 10 丟個(gè)位Enddo說明 在該循環(huán)框架中 循環(huán)條件為x0 即通過語句d x 10截取該數(shù)的最后一位數(shù)字 并對(duì)這一位數(shù)字進(jìn)行相應(yīng)的處理 然后用x int x 10 語句將最后一位數(shù)字丟棄 如此循環(huán) 直到x 0為止 例18 輸入1個(gè)數(shù) 求各位數(shù)字之和 SETTALKOFFCLEARINPUT X TOXS 0DOWHILEX0D X 10 取個(gè)位S S DX INT X 10 丟個(gè)位ENDDO S SSETTALKON 83 例18 輸入1個(gè)數(shù) 求各位數(shù)字之和 確定 循環(huán)條件和循環(huán)不變體 D X 10S S DX INT X 10 12345 10 5S 0 5 5INT 12345 10 12341234 10 4S 5 4 9INT 1234 10 123123 10 3S 9 3 12INT 123 10 1212 10 2S 12 2 14INT 12 10 11 10 1S 14 1 15INT 1 10 0結(jié)束 循環(huán)不變式 D X 10S S DX INT X 10 循環(huán)條件 X0 INPUT X TOXS 0DOWHILEX0D X 10 取個(gè)位S S DX INT X 10 丟個(gè)位ENDDO 84 4 1 3循環(huán)結(jié)構(gòu) 多重循環(huán) 五 多種結(jié)構(gòu)的嵌套格式 DOWHILEFORN ATOBSTEPC IF ELSE ENDIF DOCASE ENDCASE EXIT LOOP ENDFORENDDO功能 用于解決不能用一種控制結(jié)構(gòu)實(shí)現(xiàn)的復(fù)雜問題 常用的是雙重循環(huán)結(jié)構(gòu) 85 五 多種結(jié)構(gòu)的嵌套例19 利用循環(huán)嵌套控制結(jié)構(gòu) 實(shí)現(xiàn) 百錢買百雞 的計(jì)算 取自 算經(jīng) 雞翁一 值錢五 雞母一 值錢三 雞雛三值錢一 百錢買百雞 問雞翁 母 雛各幾何 分析 設(shè)要買X只公雞 Y只母雞 Z只小雞 可得到方程5 X 3 Y Z 3 100X Y Z 100可用窮舉法解決 4 1 3循環(huán)結(jié)構(gòu) 多重循環(huán) 86 4 1 3循環(huán)結(jié)構(gòu) 多重循環(huán) 87 4 1 3循環(huán)結(jié)構(gòu) 多重循環(huán) 例19 百錢買百雞 程序代碼 settalkoffclearforx 0to20fory 0to33z 100 x yif5 x 3 y z 3 100 x str x 2 y str y 2 z str z 2 endifendforendforsettalkon 88 4 1 3循環(huán)結(jié)構(gòu) 多重循環(huán) 應(yīng)用于圖形處理使用雙重循環(huán) 外循環(huán)行內(nèi)循環(huán)列例20 編寫輸出九九乘法表程序 輸出格式 1 1 12 1 22 2 43 1 3 3 3 9 9 1 9 9 9 81 89 4 1 3循環(huán)結(jié)構(gòu) 多重循環(huán) 例20 輸出九九乘法表 90 4 1 3循環(huán)結(jié)構(gòu) 多重循環(huán) 例20 輸出九九乘法表 SETTALKOFFCLEARX 1 DOWHILEX 9Y 1DOWHILEY X STR Y 1 X STR X 1 STR X Y 2 y y 1ENDDO X X 1ENDDOSETTALKONRETURN 91 4 1 3循環(huán)結(jié)構(gòu) 多重循環(huán) 應(yīng)用于矩陣的二維數(shù)組處理 基本知識(shí) 主對(duì)角線i j副對(duì)角線i j m 1上三角形i j 123456789 主對(duì)角線 副對(duì)角線 上三角形 下三角形 例21 當(dāng)M 3時(shí) 寫出下列程序運(yùn)行的結(jié)果 SETTALKOFFCLEARINPUT M TOMDIMEA M M FORI 1TOM FORJ 1TOMIFI JA I J 1 ELSEA I J 0 ENDIF A I J ENDFORENDFORSETTALKON 92 作業(yè) 寫在作業(yè)本上 下次課交199頁第2 3 4 5 9課前編寫 上機(jī)調(diào)試 下課前提交 200頁 2 1 2 3 1 93 作業(yè) 寫在作業(yè)本上 下次課交199頁第7 8 10 11計(jì)算1 1 2 1 3 1 4 1 N N值從鍵盤輸入計(jì)算1 1 3 1 5 1 7 的前N項(xiàng)之和 N值從鍵盤輸入 計(jì)算1 1 3 1 5 1 7 直到最后一項(xiàng)的絕對(duì)值小于10 5為止 計(jì)算下列數(shù)列前n項(xiàng)之和 X X2 2 X3 3 X4 4 計(jì)算數(shù)據(jù)前n項(xiàng)之和 X X3 3 X5 5 X7 7 精確到10 5輸入一個(gè)整數(shù)初始值 從該數(shù)開始到100之間 包括100 找出能被7或11整除的所有整數(shù) 顯示其值以及個(gè)數(shù) 該程序?qū)崿F(xiàn)字符串倒置 如字符串 ABCD 倒置后為 DCBA 輸入一批學(xué)生的分?jǐn)?shù) 統(tǒng)計(jì)不及格學(xué)生的人數(shù) 輸入負(fù)數(shù)結(jié)束評(píng)委評(píng)分程序 分?jǐn)?shù)的范圍是0 100 在10個(gè)分?jǐn)?shù)中去掉一個(gè)最高分 去掉一個(gè)最低分 剩下的分?jǐn)?shù)求平均為最后得分 課前編寫 上機(jī)調(diào)試 下課前提交 200頁 3 3 94 選擇分支結(jié)構(gòu) 是根據(jù)條件的測(cè)試結(jié)果執(zhí)行不同的操作 用兩條命令實(shí)現(xiàn)條件分支 二路選擇分支結(jié)構(gòu) IF ENDIF多路選擇分支結(jié)構(gòu) DOCASE ENDCASE1 二路選擇分支結(jié)構(gòu)格式 IF THEN ELSE ENDIF功能 根據(jù)的值控制執(zhí)行或 95 選擇分支結(jié)構(gòu) 2 多路選擇分支結(jié)構(gòu) 格式 DOCASECASE CASE OTHERWISE ENDCASE功能 根據(jù)的邏輯值控制執(zhí)行對(duì)應(yīng)的 96 4 1程序控制的基本結(jié)構(gòu) 4 1 3循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)可以根據(jù)問題的需要任意次地重復(fù)執(zhí)行一行或多行語句 循環(huán)結(jié)構(gòu)要特別注意的是在重復(fù)執(zhí)行語句過程中 要有控制條件的語句 以避免出現(xiàn)死循環(huán)現(xiàn)象 DOWHILE ENDDOSCAN ENDSCANFOR ENDFOR 97 4 1程序控制的基本結(jié)構(gòu) 4 1 3循環(huán)結(jié)構(gòu)1 DOWHILE ENDDO格式 DOWHILE EXIT LOOP ENDDO功能 當(dāng)?shù)闹禐檎鏁r(shí) 重復(fù)執(zhí)行DOWHILE ENDDO之間的 直到的值為假時(shí)結(jié)束 結(jié)束當(dāng)前循環(huán)操作 跳到ENDDO后面的語句 跳過LOOP后面的語句 直接回到循環(huán)起始語句DOWHILE 98 4 1程序控制的基本結(jié)構(gòu) 4 1 3循環(huán)結(jié)構(gòu)1 DOWHILE ENDDO 99 4 1程序控制的基本結(jié)構(gòu) 4 1 3循環(huán)結(jié)構(gòu) 1 對(duì)循環(huán)次數(shù)不確定的程序段進(jìn)行操作 格式 DOWHILE T 循環(huán)次數(shù)不確定時(shí)IFEXITENDIFENDDO功能 循環(huán)條件永遠(yuǎn)為真 只有滿足IF語句的時(shí) 才跳出循環(huán) 注意 在這種使用方法中 EXIT選項(xiàng)是不可缺少的 且必須和IF語句或DOCASE語句連用 P169例4 6 P170例4 7 100 4 1程序控制的基本結(jié)構(gòu) 4 1 3循環(huán)結(jié)構(gòu) 2 對(duì)表文件中的記錄逐條進(jìn)行操作 格式 DOWHILE NOT EOF BOF SKIP SKIP 1ENDDO功能 對(duì)當(dāng)前打開的表文件中的記錄自上而下或自下而上地逐條進(jìn)行操作 注意 記錄指針由SKIP語句控制 循環(huán)結(jié)束的條件由函數(shù)EOF 和BOF 控制 P171例4 8 P171例4 9 101 4 1程序控制的基本結(jié)構(gòu) 4 1 3循環(huán)結(jié)構(gòu) 3 對(duì)已知循環(huán)次數(shù)的程序段進(jìn)行順計(jì)數(shù)操作 格式 N 初值 通常設(shè)為1 DOWHILENN N XENDDO功能 通過對(duì)循環(huán)變量N進(jìn)行順計(jì)數(shù)并與M相比較的方法完成循環(huán)操作 P172例4 10 P172例4 11 102 4 1程序控制的基本結(jié)構(gòu) 4 1 3循環(huán)結(jié)構(gòu) 4 對(duì)已知循環(huán)次數(shù)的程序段進(jìn)行倒計(jì)數(shù)操作 格式 DOWHILEMM M 1ENDDO功能 已知循環(huán)次數(shù)M 通過對(duì)循環(huán)變量M進(jìn)行倒計(jì)數(shù)并與0相比較的方法完成循環(huán)操作 P172例4 12 103 4 1程序控制的基本結(jié)構(gòu) 4 1 3循環(huán)結(jié)構(gòu) 5 通過狀態(tài)測(cè)試函數(shù)對(duì)程序段進(jìn)行操作 格式 DOWHILE 改變狀態(tài)測(cè)試函數(shù)值的語句或鍵盤動(dòng)作 ENDDO功能 當(dāng)?shù)某跏贾禐檎鏁r(shí) 進(jìn)行循環(huán)操作 當(dāng)?shù)闹翟谘h(huán)體中被改變時(shí) 便結(jié)束循環(huán)操作 P173例4 13 P173例4 14 104 4 1程序控制的基本結(jié)構(gòu) 4 1 3循環(huán)結(jié)構(gòu)2 SCAN ENDSCAN格式 SCAN NOOPTIMIZE 范圍 FOR WHILE LOOP EXIT ENDSCAN功能 對(duì)當(dāng)前打開的表文件在指定范圍 滿足條件的記錄中進(jìn)行自上而下逐個(gè)掃描操作 隨著記錄指針的移動(dòng) SCAN循環(huán)允許對(duì)指定的每條記錄執(zhí)行相同的操作 P174例4 15 P174例4 16 105 4 1程序控制的基本結(jié)構(gòu) 4 1 3循環(huán)結(jié)構(gòu)3 FOR ENDFOR格式1 FOR循環(huán)變量 初值TO終值 STEP步長(zhǎng) EXIT LOOP ENDFOR NEXT功能 當(dāng)循環(huán)變量的值不大于終值時(shí) 執(zhí)行循環(huán)操作 每循環(huán)一次 循環(huán)變量的值自動(dòng)遞增一個(gè)步長(zhǎng)值 選項(xiàng)說明 LOOP 實(shí)現(xiàn)循環(huán)短路操作 EXIT 實(shí)現(xiàn)結(jié)束當(dāng)前循環(huán)操作 注意 1 循環(huán)變量為任意一個(gè)內(nèi)存變量 不需要事先定義 2 初值 終值和步長(zhǎng)均為數(shù)值表達(dá)式 且可正可負(fù) 3 缺省 STEP步長(zhǎng) 選項(xiàng) 步長(zhǎng)默認(rèn)為1 106 4 1程序控制的基本結(jié)構(gòu) 4 1 3循環(huán)結(jié)構(gòu)3 FOR ENDFOR格式2 FOREACHIN EXIT LOOP ENDFOR NEXT功能 對(duì) 中的每個(gè)元素執(zhí)行循環(huán)操作 P175例4 17 P174例4 18 注意 1 循環(huán)變量為任意一個(gè)內(nèi)存變量 不需要事先定義 2 為已經(jīng)定義的數(shù)組或集合 107 4 1程序控制的基本結(jié)構(gòu) 4 1 4多種結(jié)構(gòu)的嵌套解決復(fù)雜問題時(shí) 僅僅靠一種控制結(jié)構(gòu)是很難解決問題 因而需要使用多種控制結(jié)構(gòu)的嵌套形式以及多重循環(huán)控制的嵌套形式來解決問題 一種結(jié)構(gòu)嵌套的形式DOWHILEFORN ATOBSTEPC DOWHILE ENDDO IF ELSE ENDIF ENDFORENDDO 注意 在使用多種結(jié)構(gòu)嵌套時(shí) 各個(gè)控制結(jié)構(gòu)不能出現(xiàn)交叉現(xiàn)象 108 4 1程序控制的基本結(jié)構(gòu) 4 1 4多種結(jié)構(gòu)的嵌套 例4 19利用循環(huán)嵌套控制結(jié)構(gòu) 實(shí)現(xiàn) 百錢買百雞 的計(jì)算 取自 算經(jīng) 雞翁一 值錢五 雞母一 值錢三 雞雛三值錢一 百錢買百雞 問雞翁 母 雛各幾何 分析 設(shè) 要買X只公雞 Y只母雞 Z只小雞 可得到方程 5 X 3 Y Z 3 100X Y Z 100可用窮舉法解決 109 4 1程序控制的基本結(jié)構(gòu) 4 1 4多種結(jié)構(gòu)的嵌套 例4 19百錢買百雞 110 4 1程序控制的基本結(jié)構(gòu) 4 1 4多種結(jié)構(gòu)的嵌套 例4 19百錢買百雞 Forx 0to20fory 0to33z 100 x yif5 x 3 y z 3 100 x str x 2 y str y 2 z str z 2 endifendforEndfor 111 4 2子程序與參數(shù)傳遞 4 2 1子程序 定義 子程序是相對(duì)于主程序而言的一個(gè)獨(dú)立的程序文件 其建立方法與建立程序文件的方法相同 擴(kuò)展名為 PRG 子程序的調(diào)用與返回 調(diào)用 DO WITH 返回 RETURN TOMASTER 說明 RETURN返回到調(diào)用者的調(diào)用語句的下一行 TOMASTER 選項(xiàng)表示返回到最高級(jí)調(diào)用者 選項(xiàng)表示將值返回到調(diào)用者 子程序執(zhí)行時(shí)直到遇到以下情況時(shí) 自動(dòng)結(jié)束返回 RETURN RETRY CANCEL QUIT和子程序的末尾 112 4 2子程序與參數(shù)傳遞 4 2 1子程序 主 子程序的調(diào)用關(guān)系 遞接調(diào)用關(guān)系 113 4 2子程序與參數(shù)傳遞 4 2 1子程序 主 子程序的調(diào)用關(guān)系 跨接調(diào)用關(guān)系 114 4 2子程序與參數(shù)傳遞 4 2 2過程文件1 過程與過程文件的定義 過程是一個(gè)由PROCEDURE開頭 ENDPROC結(jié)尾的子程序段 過程可以將實(shí)現(xiàn)相對(duì)獨(dú)立功能的常用代碼集中在一起 供應(yīng)用程序在需要時(shí)調(diào)用 過程文件 是由若干個(gè)過程構(gòu)成的文件 PROCEDURE ENDPROC 注意 1 過程必須存放在一個(gè)過程文件中 2 不能把可執(zhí)行的主程序代碼放在過程之后 115 4 2子程序與參數(shù)傳遞 4 2 2過程文件2 過程文件的建立與程序文件的創(chuàng)建方法相同 將過程文件的內(nèi)容一行一行地輸入 通過將分散的子程序加入項(xiàng)目管理器 再利用工具自動(dòng)連編生成擴(kuò)展名為APP或EXE的文件 3 過程文件的調(diào)用 注意 調(diào)用過程文件之前必須要打開過程文件 調(diào)用結(jié)束后要關(guān)閉 過程文件 過程文件的打開 SETPROCEDURETO過程文件的關(guān)閉 SETPROCEDURETO或CLOSEPROCEDURE 116 4 2子程序與參數(shù)傳遞 4 2 3參數(shù)傳遞及作用域主程序與子程序之間或過程與過程之間通過互相傳遞參數(shù)來完成整體上的操作 主程序與子程序之間的參數(shù)傳遞可以通過下列方式進(jìn)行 利用內(nèi)存變量的作用域?qū)傩岳肈O WITH 117 4 2子程序與參數(shù)傳遞 4 2 3參數(shù)傳遞及作用域1 利用內(nèi)存變量屬性傳遞參數(shù) 定義格式作用范圍傳遞方向變量壽命 118 4 2子程序與參數(shù)傳遞 4 2 3參數(shù)傳遞及作用域 1 自然屬性 自然屬性的內(nèi)存變量含義 是指在程序 PRG 中出現(xiàn)的沒有特別聲明而只是通過賦值或數(shù)組定義的變量 自然屬性的內(nèi)存變量特點(diǎn)定義格式 STORE DIMENSION DECLARE INPUT SUM等 作用范圍 該程序及其調(diào)用的下屬子程序 傳遞方向 單向 變量壽命 所在程序運(yùn)行結(jié)束后 該變量被自動(dòng)刪除 P181例4 21 119 4 2子程序與參數(shù)傳遞 4 2 3參數(shù)傳遞及作用域 2 公用屬性 公用屬性的內(nèi)存變量含義 是指能在所有的程序中使用 并通過這種方式共享的內(nèi)存變量 公用屬性的內(nèi)存變量必須先特別聲明和定義后方能使用 公用屬性的內(nèi)存變量特點(diǎn)定義格式 PUBLIC作用范圍 整個(gè)系統(tǒng)的所有程序 傳遞方向 雙向 由主程序到子程序 也可以由子程序到主程序 變量壽命 程序運(yùn)行結(jié)束后 內(nèi)存中仍然保存該變量 P182例4 22 注意 不能用PUBLIC定義已經(jīng)用其他方法定義過的變量 但是用PUBLIC定義過的變量還可以再用PUBLIC定義 用PUBLIC定義過的變量的初值為邏輯假 F 120 4 2子程序與參數(shù)傳遞 4 2 3參數(shù)傳遞及作用域 3 私有屬性 私有屬性的內(nèi)存變量含義 是指具有既類似自然屬性又能屏蔽上級(jí)同名內(nèi)存變量屬性的內(nèi)存變量 私有屬性的內(nèi)存變量也必須先特別聲明后方能使用 私有屬性的內(nèi)存變量特點(diǎn)定義格式 PRIVATE ALL LIKE EXCEPT 作用范圍 該程序及其調(diào)用的下屬子程序 傳遞方向 單向 由主程序到子程序 變量壽命 程序運(yùn)行結(jié)束后 該變量被自動(dòng)刪除 特殊作用 可屏蔽 隱藏 上級(jí) 主 程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鞋類設(shè)計(jì)師(功能鞋方向)崗位面試問題及答案
- 2025屆廣東梅州第一中學(xué)高一下化學(xué)期末統(tǒng)考試題含解析
- 云南省文山馬關(guān)實(shí)驗(yàn)高級(jí)中學(xué)2025屆高二化學(xué)第二學(xué)期期末質(zhì)量檢測(cè)試題含解析
- 甘肅省白銀市會(huì)寧縣2025屆高一化學(xué)第二學(xué)期期末達(dá)標(biāo)檢測(cè)模擬試題含解析
- 揚(yáng)州市揚(yáng)州中學(xué)2025屆化學(xué)高二下期末考試試題含解析
- 安徽省黃山市屯溪區(qū)第二中學(xué)2025屆高二下化學(xué)期末調(diào)研試題含解析
- 根據(jù)旅游管理暫行辦法
- 供應(yīng)商標(biāo)簽化管理辦法
- 遺產(chǎn)旅游中的記憶政治研究-洞察及研究
- 生物相容性傳感網(wǎng)絡(luò)-洞察及研究
- 財(cái)政國(guó)庫管理培訓(xùn)課件
- 質(zhì)量管理基礎(chǔ)知識(shí)培訓(xùn)課件
- 2025年電力系統(tǒng)與自動(dòng)化專業(yè)考試試題及答案
- 多耐病人的隔離措施及護(hù)理
- 2025年食品安全法律法規(guī)的基礎(chǔ)考試試卷及答案
- 專題02 運(yùn)動(dòng)的描述-2025-2026學(xué)年人教版《物理》八年級(jí)上學(xué)期暑期預(yù)習(xí)自學(xué)講義
- 新生兒腹脹的觀察及護(hù)理
- 2025至2030年中國(guó)電動(dòng)美容床行業(yè)市場(chǎng)運(yùn)行格局及發(fā)展趨向研判報(bào)告
- 拉丁美洲和加勒比地區(qū)投資環(huán)境評(píng)價(jià)報(bào)告 2025
- (高清版)DB13∕T 5431-2021 裝配式塑料水表井工程技術(shù)規(guī)程
- 北京市海淀區(qū)2023-2024學(xué)年高二下學(xué)期期末考試英語試卷(含答案)
評(píng)論
0/150
提交評(píng)論