版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、VFP程序設(shè)計1 數(shù)據(jù)與數(shù)據(jù)運算 HYPERLINK l _2_數(shù)據(jù)與數(shù)據(jù)運算 o 4.1 結(jié)構(gòu)化程序設(shè)計2 結(jié)構(gòu)化程序設(shè)計 HYPERLINK l _2_結(jié)構(gòu)化程序設(shè)計 o 4.1 結(jié)構(gòu)化程序設(shè)計3 程序結(jié)構(gòu) HYPERLINK l _3_程序結(jié)構(gòu) o 4.2 程序結(jié)構(gòu)4 子程序、過程與自定義函數(shù) HYPERLINK l _4.3_子程序、過程與自定義函數(shù) 1 數(shù)據(jù)與數(shù)據(jù)運算一、數(shù)據(jù)類型數(shù)據(jù)是反映現(xiàn)實世界中客觀事物屬性的記錄,它包括兩個方面:數(shù)據(jù)內(nèi)容與數(shù)據(jù)形式。數(shù)據(jù)內(nèi)容就是數(shù)據(jù)的值,數(shù)據(jù)形式就是數(shù)據(jù)的存儲形式和操作使用方式,也稱為數(shù)據(jù)類型。VFP6系統(tǒng)為使用戶建立和操作數(shù)據(jù)庫更加方便,將系統(tǒng)
2、中所有操作、處理的數(shù)據(jù),分為幾種不同數(shù)據(jù)類型:字符型、數(shù)值型、日期型、日期時間型、邏輯型、備注型、通用型、貨幣型、二進制字符型和二進制備注型。二、常量與變量在VFP系統(tǒng)中,數(shù)據(jù)可用常量、變量、數(shù)組表示,數(shù)據(jù)還可以用字段、記錄和對象中,由它們存儲、容納各種類型的數(shù)據(jù)。(一)常量常量是在命令或程序中可直接引用、具有具體值的命名數(shù)據(jù)項,其特征是在整個操作過程中它的值和表現(xiàn)形式保持不變。VFP按常量取值的數(shù)據(jù)類型,將常量分為6種類型:數(shù)值型常量、浮點型常量、字符型常量、邏輯型常量、日期型常量、日期時間型常量。1、數(shù)值型常量由數(shù)字、小數(shù)點和正負號組成,表示整數(shù)或?qū)崝?shù)值。如:100,-21,15.31,-
3、21092.5041等分別是數(shù)值型常量中的整數(shù)和實數(shù)。2、字符型常量由任意ASCII字符、漢字、空格或數(shù)字等組成的字符型數(shù)據(jù),字符型常量又稱為字符串。為與其他類型常量、變量和標識符相區(qū)別,VFP要求將字符串中所有字符,用一對雙引號“”或單引號“”或方括號“ ”作為定界符對括起來。如“I am a student.”,中華人民共和國,Visual FoxPro數(shù)據(jù)庫系統(tǒng)都是字符串。3、日期型常量日期型常量是表示日期值的數(shù)據(jù),其默認格式是mm/dd/yyyy。如10/01/04和10/01/2004均表示2004年10月1日這一日期常量值。4、邏輯型常量邏輯型常量就是表示邏輯判斷結(jié)果“真”或“假”
4、的邏輯值。邏輯常量只有真和假兩種值,分別用(.T.或.y.)和(.F.或.n.)表示真和假。VFP中在表示邏輯常量的字母左右加注圓點符“.”以示區(qū)別。(二)變量變量是在操作過程中可以改變其取值或數(shù)據(jù)類型的數(shù)據(jù)項。確定一個變量,需要確定其三個要素:變量名、數(shù)據(jù)類型和變量值。1、內(nèi)存變量內(nèi)存變量是一種存在于計算機內(nèi)存中變量,是一種單個數(shù)據(jù)元素的臨時性變量,需要時臨時定義,不用時可隨時釋放。內(nèi)存變量分為用戶自定義內(nèi)存變量和系統(tǒng)內(nèi)存變量。(1)內(nèi)存變量的建立建立內(nèi)存變量就是給內(nèi)存變量賦值。內(nèi)存變量賦值既可定義一個新的內(nèi)存變量,也可改變已朋內(nèi)存變量的值或數(shù)據(jù)類型?!靖袷健績?nèi)存變量=表達式【功能】計算的值
5、并賦值給指定內(nèi)存變量。【例】A=3+2y=2*x+5(2)內(nèi)存變量的顯示輸出可以用兩個命令在屏幕上顯示輸出內(nèi)存變量的值。【格式1】?表達式表 AT 列號【格式2】?表達式表 AT 列號【功能】計算表達式表中各表達式的值,并在屏幕上指定位置顯示輸出各式的值。格式1:不管有無指定表達式表,都會輸出一個回車換行符。如果指定了表達式表,各表達式值將在下一行的起始處輸出;格式2:不會輸出一個回車換行符,各表達式值在屏幕上當前行光標所在位置直接輸出;表達式表:多個逗號兩兩分隔的表達式,各表達式的值輸出時,以空格分隔;AT 列號:該子句指定表達式值從指定列開始顯示輸出。AT的定位只對它前面的一個表達式有效,
6、多個表達式必須用多個AT子句分別定位輸出,而且可反序定位。【例】?A,B,C AT 20?A2、數(shù)組數(shù)組是一種結(jié)構(gòu)化的變量,是一組具有相同名稱、以下標相互區(qū)分的有序內(nèi)存變量。一個數(shù)組通常都包含多個數(shù)據(jù)元素。Visual FoxPro系統(tǒng)中只允許使用一維數(shù)組(相當于數(shù)列)和二維數(shù)組(相當于行列式或矩陣)。(1)數(shù)組元素數(shù)組中各有序變量(數(shù)據(jù)元素)組成數(shù)組的成員,稱為數(shù)組元素。數(shù)組元素實質(zhì)上是一個內(nèi)存變量,也稱數(shù)組變量,它們具有相同變量名即數(shù)組名,彼此以下標區(qū)分;數(shù)組元素的名稱(變量名)用數(shù)組加下標構(gòu)成。如A(1)、B(2,3)分別表示一維數(shù)組A的第1個數(shù)組元素,二維數(shù)組B中第2行第3列的數(shù)組元素
7、;下標必須用圓括號對括;一維數(shù)組的元素只有一個下標,二維數(shù)組的元素有兩個以逗號分隔的下標(也可用一個下標表示);數(shù)組元素的下標均從1開始,各元素的初始值為 .F. ;數(shù)組元素的數(shù)據(jù)類型決定于最后賦值的數(shù)據(jù)類型;不同元素的數(shù)據(jù)類型可以不同;數(shù)組元素與普通內(nèi)存變量一樣操作,可以賦值和引用。(2)數(shù)組的定義數(shù)組必須先定義后使用,定義數(shù)組是向系統(tǒng)申請數(shù)組元素在內(nèi)存中存儲空間。【格式】DIMENSION 數(shù)組名1(N1, N2)DECLARE 數(shù)組名1(N1 , N2) ,數(shù)組名2(N3 ,N4)【功能】定義一維或二維數(shù)組。(3)數(shù)組的元素的排列一維數(shù)組是按下標從小到大的順序排列的,二維數(shù)組的排列是先按
8、下標1,再按下標2的從小到大的順序排列。如:A(5)排列如下表所示:A(1)A(2)A(3)A(4)A(5)B(3,4)排列如下表所示:B(1,1)B(1,2)B(1,3)B(1,4)B(2,1)B(2,2)B(2,3)B(2,4)B(3,1)B(3,2)B(3,3)B(3,4)其中:B(7)相當于B(2,3)(4)數(shù)組的賦值與引用數(shù)組元素的賦值與引用,與普通內(nèi)存變量的規(guī)則相同?!纠緿IME A(5) , B(3,4)STORE “OK” TO AB(1,1)=10B(1,2)=20?A(3),B(1,2),B(2,3)三、常用函數(shù)Visual FoxPro系統(tǒng)中,函數(shù)是一段程序代碼,用來進
9、行一些特定的運算或操作,支持和完善命令的功能,幫助用戶完成各種操作與管理。函數(shù)的一般形式為: 函數(shù)名(參數(shù)1 , 參數(shù)2)Visual FoxPro的函數(shù)由函數(shù)名與參數(shù)(即自變量)兩部分組成。參數(shù)必須用圓括號對括起來,如有多個參數(shù),各參數(shù)以逗號分隔;有些函數(shù)可省略參數(shù),或不需參數(shù),但也必須保留括號; (一)字符函數(shù)字符函數(shù)是處理字符型數(shù)據(jù)的函數(shù),其自變量或函數(shù)值中至少有一個是字符型數(shù)據(jù)。函數(shù)中涉及的字符型數(shù)據(jù)項,均以C表示。1、字符串長度函數(shù)【格式】LEN(C)【功能】返回字符串C的字符數(shù)(長度)。函數(shù)值為N型。2、取子字符串函數(shù)【格式】SUBSTR(C, N1, N2)【功能】返回從字符串C
10、中第N1個字符開始,截取N2個字符的子串。LEFT(C, N) 從字符串C左邊取N個字符RIGHT(C, N) 從字符串C右邊取N個字符3、子串位置函數(shù)【格式】AT(C1, C2)【功能】返回字符串C1在字符串C2中的起始位置。函數(shù)值為整數(shù)。如果串C2不包含串C1,函數(shù)返回值為零。4、刪除字符串空格函數(shù)【格式】RTRIM | TRIM(C)【功能】刪除字符串C尾部空格字符。LTRIM(C) 刪除字符串C的前導(dǎo)空格字符。ALLTRIM(C) 刪除字符串C的前導(dǎo)和尾部空格字符。5、空格函數(shù)【格式】SPACE(N)【功能】返回一個包含N個空格的字符串。6、大小寫字母轉(zhuǎn)換函數(shù)【格式】LOWER(C)
11、| UPPER(c)【功能】LOWER( )將字符串C中字母全部變成小寫字母,UPPER( )將字符串C中字母全部變成大寫字母,其它字符不變。(二)數(shù)值函數(shù)數(shù)值函數(shù)用于數(shù)值運算,其自變量與函數(shù)都是數(shù)值型數(shù)據(jù)。1、取絕對值函數(shù)【格式】ABS(N)【功能】計算N(數(shù)值表達式)的值,并返回該值的絕對值。2、取整函數(shù)【格式】INT(N)【功能】計算數(shù)值表達式N的值,返回該值的整數(shù)部分。3、四舍五入函數(shù)【格式】ROUND(N1, N2)【功能】返回N1四舍五入的值,N2表示保留的小數(shù)位數(shù)。4、最大值和最小值函數(shù)【格式】MAX | MIN(N1, N2 , N3.)【功能】返回數(shù)值表達式中的最大值MAX(
12、 )和最小值MIN( )。5、求余數(shù)函數(shù)(求模函數(shù))【格式】MOD(N1, N2)【功能】返回N1除以N2的余數(shù)。余數(shù)的小數(shù)位數(shù)與N1相同,符號與N2相同。6、平方根函數(shù)【格式】SQRT(N)【功能】求非負N的平方根。7、符號函數(shù)【格式】SIGN(N)【功能】返回N的符號。正數(shù)、零、負數(shù)分別返回1、0、-1。(三)轉(zhuǎn)換函數(shù)在數(shù)據(jù)庫應(yīng)用的過程中,經(jīng)常要將不同數(shù)據(jù)類型的數(shù)據(jù)進行相應(yīng)轉(zhuǎn)換,滿足實際應(yīng)用的需要。Visual FoxPro系統(tǒng)提供了若干個轉(zhuǎn)換函數(shù),較好地解決了數(shù)據(jù)類型轉(zhuǎn)換的問題。1、數(shù)值轉(zhuǎn)換為字符串【格式】STR(N ,長度,小數(shù)位數(shù))【功能】將N的數(shù)值轉(zhuǎn)換成字符串形式。函數(shù)值為C型。2
13、、字符串轉(zhuǎn)換為數(shù)值【格式】VAL (C)【功能】將C串中數(shù)字轉(zhuǎn)換成對應(yīng)數(shù)值,轉(zhuǎn)換結(jié)果取兩位小數(shù)。函數(shù)值為N型。3、字符轉(zhuǎn)換為ASCII碼值【格式】ASC(C)【功能】返回C串首字符的ASCII碼值。函數(shù)值為N型。4、ASCII碼轉(zhuǎn)換為相應(yīng)字符【格式】CHR(N)【功能】返回以N值為ASCII碼的ASCII字符。函數(shù)值為C型。四、運算符與表達式在Visual FoxPro系統(tǒng)中,表達式是由常量、變量、函數(shù)及其他數(shù)據(jù)容器單獨或與運算符組成的有意義的運算式子。運算符是對數(shù)據(jù)對象進行加工處理的符號,根據(jù)其處理數(shù)據(jù)對象的數(shù)據(jù)類型,運算符分為算術(shù)(數(shù)值)運算符、字符運算符、日期時間運算符、邏輯運算符和關(guān)系
14、運算符五類,相應(yīng)的,表達式也分為算術(shù)表達式、字符表達式、日期時間表達式、邏輯表達式和關(guān)系表達式五類。在Visual FoxPro系統(tǒng)中,各類運算的優(yōu)先順序如下:圓括號算術(shù)和日期運算字符串運算關(guān)系運算邏輯運算用戶也可以通過給表達式加圓括號的方式,改變其默認運算順序。如果多個同一級別的運算,則按在表達式中出現(xiàn)的先后順序進行運算。(一)算術(shù)表達式算術(shù)表達式又稱數(shù)值表達式,其運算對象和運算結(jié)果均為數(shù)值型數(shù)據(jù)。數(shù)值運算符的功能及運算優(yōu)先順序,如表所示。表中運算符按運算優(yōu)先級別從高到低順序排列。算術(shù)運算符運算符功能表達式舉例運算結(jié)果優(yōu)先級別( )圓括號(2-5)*(3+2)-15最高最低-取相反數(shù)-(3-
15、8)5*、乘冪2*5、3232、9*、/乘、除2*10、25/520、5%取余數(shù)20%32+、-加、減36+19、29-4755、-18(二)字符表達式字符表達式是由字符運算符將字符型數(shù)據(jù)對象連接起來進行運算的式子。字符運算的對象是字符型數(shù)據(jù)對象,運算結(jié)果是字符常量或邏輯常量。下表為字符運算符的功能。字符運算符運算符功能表達式舉例運算結(jié)果+串1+串2:兩串順序相連接12 +5612 56-串1-串2:串1尾空格移到串2尾后再順序相連接12 -561256 +與-都是字符連接運算符,都將兩字符串順序連接,但“+”是直接連接,“-”則將串1尾部所有空格移到串2尾部后再連接。(三)關(guān)系表達式由關(guān)系運
16、算符連接兩個同類數(shù)據(jù)對象進行關(guān)系比較的運算式稱為關(guān)系表達式。關(guān)系表達式的值為邏輯值,關(guān)系表達式成立則其值為“真”,否則為“假”。關(guān)系運算符運算符功能表達式舉例運算結(jié)果小于15大于A 1.T.=等于2+4 = 3*5.F.=串全等比較abc=abcabc.F.=小于或等于abc =大于或等于10-10-02=10/01/02.T.、#、!=不等于5 -10.T.$包含于。串1$串2:串1是否為串2子串1234$a123451234$34512.T.F.關(guān)系運算符的優(yōu)先級別相同。關(guān)系表達式運算時,就是比較同類兩數(shù)據(jù)對象的“大小”,對于不同類型的數(shù)據(jù),其“大小”或者是值的大小,或者是先后順序。日期或
17、日期時間數(shù)據(jù)以日期或時間的先后順序為序。 (四)邏輯表達式由邏輯運算將邏輯型數(shù)據(jù)對象連接而成的式子稱為邏輯表達式。邏輯表達式的運算對象與運算結(jié)果均為邏輯型數(shù)據(jù)。邏輯運算符前后一般要加圓點“.”標記,以示區(qū)別。邏輯運算符運算符功能優(yōu)先級別.NOT. (!)邏輯非,取其右邊邏輯值的相反值最高最低.AND.邏輯與,兩邊的邏輯值均為真才得真.OR.邏輯或,兩邊的邏輯值均為假才得假對于各種邏輯運算,其運算規(guī)則可由邏輯運算真值表確定,如下表所示就是邏輯運算真值表。 2 結(jié)構(gòu)化程序設(shè)計結(jié)構(gòu)化程序設(shè)計的方法:自頂向下,逐步求精。結(jié)構(gòu)化程序由順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)三種基本結(jié)構(gòu)組成。VFP提供面向過程的程序
18、設(shè)計和面向?qū)ο蟮某绦蛟O(shè)計方法。面向過程的程序設(shè)計是用結(jié)構(gòu)化編程語言來實現(xiàn)編寫程序。具體就是告訴計算機如何一步一步解決問題,即要求計算機“怎么做”。它不依賴具體的機器。面向?qū)ο蟮某绦蛟O(shè)計適于解決大型的任務(wù),設(shè)計程序時只需告訴計算機“做什么”,而不用說明“怎么做”。它不依賴具體的機器。VFP程序是由一系列命令組成,又稱命令文件或程序文件。運行程序文件就是執(zhí)行文件中的各條命令。一、引例先看一個完整的VFP過程化程序?qū)嵗?,從中可以引出程序的幾個基本概念。*程序示例:求圓形的面積。CLEAR&清除主窗口中的信息SET TALK OFF&關(guān)閉命令窗口對話INPUT 請輸入圓的半徑,R= TO R&輸入圓的
19、半徑S=PI( )*R2&計算圓的面積? 圓的面積=,S&輸出圓的面積SET TALK ON&打開命令窗口對話RETURN&返回命令窗口NOTE 程序結(jié)束有關(guān)此Visual FoxPro程序的幾點說明:注釋語句【格式1】* 注釋內(nèi)容每一行開頭均可加此注釋【格式2】NOTE 注釋內(nèi)容同上【格式3】& 注釋內(nèi)容行尾注釋【功能】增強程序文件易讀性,編譯時注釋內(nèi)容不會被執(zhí)行。NOTE 注釋一行寫不下可加續(xù)行符”;”, &注釋不能用在命令語句行續(xù)行符”;”的后面。對話開關(guān)語句【格式】SET TALK OFF | ON【功能】關(guān)閉或打開命令執(zhí)行時的對話開關(guān)。命令的分行Visual FoxPro程序是命令行
20、的序列,每個命令都以回車鍵結(jié)束,一行只能寫一條命令;若一條命令太長,一行寫不下,也可分行書寫,并在分行處加上續(xù)行符“;”,再按回車鍵。程序的結(jié)束執(zhí)行程序文件時,將依次執(zhí)行文件中的命令,直到所有命令執(zhí)行完畢,或者執(zhí)行到以下命令:CANCAL:終止程序運行,清除所有的私有變量,返回命令窗口;RETURN:結(jié)束程序執(zhí)行,返回調(diào)用它的上級程序,若無上級程序則返回命令窗口;二、程序中常用的簡單語句一個程序如果沒有輸出操作(即將程序結(jié)果顯示出來)就沒有什么實用價值,而如果沒有輸入操作(即給變量提供數(shù)據(jù)),則必然缺乏靈活性。VFP提供多種方法來實現(xiàn)信息的輸入和輸出。(一)輸入語句1、賦值輸入語句在編寫程序時
21、,給變量提供數(shù)據(jù)可以用賦值語句,多用于給變量賦初值。【格式1】STORE 數(shù)據(jù) TO變量名表【格式2】變量名=表達式【功能】給變量賦值,其中格式1可以同時給多個變量賦同一個值,而格式2只能給一個變量賦一個值。而在程序運行過程中,往往需要根據(jù)實際情況輸入數(shù)據(jù)賦值給變量,這就需要采用交互式數(shù)據(jù)輸入語句。2、交互式輸入語句INPUT命令【格式】INPUT 提示信息 TO 內(nèi)存變量【功能】在程序執(zhí)行過程中,將用戶交互式輸入的內(nèi)容賦值給指定內(nèi)存變量【例】從鍵盤輸入兩個任意正數(shù),編程求以兩數(shù)為邊長的矩形面積。程序文件名為PROG4.PRGSET TALK OFFCLEARINPUT“矩形的邊長a為:” T
22、O AINPUT“矩形的邊長b為:” TO BS=A*B?“矩形的面積為:”, SSET TALK ONRETURN【練習(xí)】編寫一個能同時求矩形面積與周長的程序。(二)輸出語句1、簡單輸出語句【格式】?|?表達式【功能】將表達式的值輸出(?)到下一行起始處,或直接輸出(?)到當前光標所在位置。2、格式輸出語句【格式】行號,列號 SAY 表達式【功能】將表達式的值在指定位置輸出到屏幕上?!菊f明】與格式輸入命令相同, SAY。 3 程序結(jié)構(gòu)Visual FoxPro系統(tǒng)提供的命令豐富,且功能強大,把這些命令和程序設(shè)計語句有效地組織在一起,就形成了實現(xiàn)某一特定功能的程序。所謂程序設(shè)計就是通過對實際問
23、題的分析,確定解題算法,并應(yīng)用程序設(shè)計語言提供的命令或語句將解題算法描述為計算機處理的語句序列(即程序)。所謂結(jié)構(gòu)化程序設(shè)計,就是采用自頂向下逐步求精的設(shè)計方法和單入口單出口的控制結(jié)構(gòu),即順序、分支、循環(huán)三種基本結(jié)構(gòu)構(gòu)成。一、順序結(jié)構(gòu)順序結(jié)構(gòu)是一種最簡單的結(jié)構(gòu)。在這種結(jié)構(gòu)中,程序根據(jù)語句中的命令的書寫順序依次執(zhí)行的命令序列。VFP系統(tǒng)中的大多數(shù)命令都可以作為順序結(jié)構(gòu)中的語句?!纠烤幊虒崿F(xiàn)輸入某個三角形的底和高,計算其面積。 SET TALK OFFCLEARINPUT “請輸入三角形的底:” TO DINPUT “請輸入三角形的高:” TO GAREA=D*G/2&計算面積?AREA&輸出面
24、積SET TALK ON CANCEL【例】某商場營業(yè)員工資的計算方法是:每月600元的基本工資加該月總銷售額的8.5提成。要求編一程序,輸入某營業(yè)員的月總銷售額,計算并顯示該營業(yè)員的月收入。二、分支結(jié)構(gòu)(選擇結(jié)構(gòu))分支結(jié)構(gòu)是在程序執(zhí)行時,根據(jù)不同的條件,選擇執(zhí)行不同的程序語句,用來解決有選擇、有轉(zhuǎn)移的諸多問題。分支結(jié)構(gòu)又稱選擇結(jié)構(gòu),其形式有如下三種:單向分支、雙向分支和多路分支。TF條件語句序列(一)單向選擇語句單向選擇語句,即根據(jù)用戶設(shè)置的條件表達式的值,決定某一操作是否執(zhí)行?!靖袷健縄F 條件表達式 語句序列 ENDIF【功能】該語句首先計算條件表達式的值,當條件表達式的值為真時,執(zhí)行語
25、句序列;否則,執(zhí)行ENDIF后面的第一條命令。【例】求一元二次方程AX2BXC0的實根。SET TALK OFFCLEARINPUT “A=” TO AINPUT “B=” TO BINPUT “C=” TO CZ=B2-4*A*CIF Z=0 X1=(-B+SQRT(Z)/(2*A) X2=(-B-SQRT(Z)/(2*A) ?”X1=”, X1, ”X2=”, X2ENDIFSET TALK ONRETURN(二)雙向選擇TF條件語句序列1語句序列2雙向選擇語句,即根據(jù)用戶設(shè)置的條件表達式的值,選擇兩個操作中的一個來執(zhí)行?!靖袷健縄F 條件表達式 語句序列1 ELSE 語句序列2ENDIF
26、【功能】該語句首先計算條件表達式的值,當條件表達式的值為真時,執(zhí)行語句序列1中的命令;否則,執(zhí)行語句序列2中的命令;執(zhí)行完語句序列1或語句序列2后都將執(zhí)行ENDIF后面的第一條命令?!纠烤帉懸幻艽a校驗程序(假設(shè)密碼為ABC)。SET TALK OFFCLEARACCEPT “請輸入您的密碼:” TO AIF A= “ABC” CLEAR ?“歡迎使用本系統(tǒng)!”ELSE ? “密碼錯誤!”ENDIFSET TALK ONCANCEL【例】根據(jù)輸入的百分制成績,轉(zhuǎn)換成等級分(85以上優(yōu)秀、60以上合格、60以下不合格)。CLEARSET TALK OFFINPUT “請輸入成績:” TO CJI
27、F CJ=85&判斷成績等級 ? “優(yōu)秀”ELSE&成績小于85之后再作判斷 IF CJ=60 ? “合格” ELSE ? “不合格” ENDIF&內(nèi)層判斷結(jié)束ENDIF&外層判斷結(jié)束SET TALK ONCANCEL(三)多路分支選擇多路分支語句,即根據(jù)多個條件表達式的值,選擇執(zhí)行多個操作中的一個對應(yīng)執(zhí)行。 【格式】 DO CASE CASE 條件表達式1 語句序列1 CASE 條件表達式2 語句序列2 CASE 條件表達式N 語句序列N OTHERWISE 語句序列N+1 ENDCASE【功能】該語句根據(jù)給出的N個條件表達式的值,選擇N+1個語句序列中的一個執(zhí)行。當所有CASE中條件表達式
28、的值都是假時,如果有OTHERWISE項,則執(zhí)行語句序列N+1,再執(zhí)行ENDCASE后面的第一條命令;否則,直接執(zhí)行ENDCASE后面的第一條命令?!纠考僭O(shè)收入(S)與所得稅稅率(R)的關(guān)系如下表,編程計算個人所得稅的繳費方法。0S800R=0.05800S20000.082000S50000.1S5000程序結(jié)構(gòu)如下:SET TALK OFFCLEARINPUT “您的月工資收入:” TO SDO CASE CASE S800 TAX =0 CASE S2000 TAX =0.05*(S-800) CASE S5000 TAX =0.08*(S-800) OTHERWISE TAX =0.
29、1*(S-800)ENDCASE? “應(yīng)繳個人所得稅:”,TAXSET TALK ONRETURN【說明】使用分支語句應(yīng)注意的幾點(1)IF ENDIF和DO CASE ENDCASE必須配對使用,DO CASE與第一個CASE 條件表達式之間不應(yīng)有任何命令。(2)條件表達式可以是各種表達式或函數(shù)的組合,其值必須是邏輯值。(3)語句序列可以一個或多個命令組成,或是其他控制語句構(gòu)成的嵌套結(jié)構(gòu)。(4)DO CASEENDCASE命令,每次最多只能執(zhí)行一個語句序列。在多個CASE項的條件表達式值為真時,只執(zhí)行第一個條件表達式值為真的語句序列,然后執(zhí)行ENDCASE的后面的第一條命令。【例】編寫身高體
30、重測試儀測量程序。體質(zhì)指數(shù)(BMI)=體重(kg)身高平方(m2)。BMI24超重,26肥胖。程序結(jié)構(gòu)如下:CLEARINPUT “您的身高(m):” TO HINPUT “您的體重(kg):” TO GBMI=G/H2DO CASE CASE BMI20 .AND. BMI=24 MessageBox(“您的體形完全正常,繼續(xù)保持!”,64 ,“提示”) CASE BETWEEN(BMI,24,26) MessageBox(“您的身材有些超重,注意飲食和鍛煉!”,48,“提示”) OTHERWISE MessageBox(“您太胖了,趕緊減肥、加強鍛煉!”,16 ,“提示”)ENDCASER
31、ETURN三、循環(huán)結(jié)構(gòu)在用計算機解決實際問題時,經(jīng)常會遇到重復(fù)處理的內(nèi)容,因此就需要在程序中將某些語句重復(fù)執(zhí)行。循環(huán)結(jié)構(gòu)是按照一定的條件使某些語句或程序段重復(fù)執(zhí)行若干次。這里給大家介紹的是WHILE條件循環(huán)和FOR步長循環(huán)(一)當循環(huán)語句 DO WHILE 【格式】 DO WHILE 條件表達式 語句序列1 ENDDO【功能】根據(jù)指定條件控制循環(huán)體的執(zhí)行?!菊f明】(1)DO WHILEENDDO之間的語句序列稱為循環(huán)體,是被控制重復(fù)執(zhí)行的部分。(2)DO WHILE是循環(huán)語句的起始,通過控制循環(huán)。其控制過程是:進入DO WHILE時,首先判斷條件是否成立,若為真,則執(zhí)行一遍循環(huán)體,當遇到END
32、DO時,返回到循環(huán)起始DO WHILE,再次判斷條件是否成立,執(zhí)行循環(huán)體,直到條件為假時跳出循環(huán),轉(zhuǎn)而執(zhí)行ENDDO后續(xù)語句。特例,當一開始條件就不成立,將立即退出循環(huán),一次也不執(zhí)行循環(huán)體。(3)如果循環(huán)體中含有LOOP語句,則當遇到LOOP時強行返回到循環(huán)開始語句DO WHILE,再判斷條件;如果循環(huán)體中含有EXIT語句,則當遇到EXIT時強行跳出循環(huán),接著執(zhí)行ENDDO后的語句。通常LOOP或EXIT出現(xiàn)在循環(huán)體內(nèi)的選擇語句中,根據(jù)條件決定是LOOP還是EXIT。(4)在執(zhí)行循環(huán)體過程中,每執(zhí)行一遍循環(huán)體,一定要修改一次條件,否則無法實現(xiàn)對循環(huán)次數(shù)的控制,當條件永遠為真時,將會造成死循環(huán)。
33、循環(huán)條件設(shè)置是構(gòu)成循環(huán)結(jié)構(gòu)的重要因素,常見的幾種條件設(shè)置方法:計數(shù)形式鍵盤輸入數(shù)據(jù)直接用.T.作為條件,用EXIT跳出循環(huán)等?!纠烤幊糖?210之和。(計數(shù)形式)SET TALK OFFCLEARS=0I=1DO WHILE I=1S2=S2+SUBSTR(S1,I,1)I=I-1ENDDO?S2RETURN【例】編程求1100之間的奇數(shù)之和。(直接用.T.作為條件)SET TALK OFFCLEARS=0I=1DO WHILE .T.S=S+II=I+2IF I100EXITENDIFENDDO?100以內(nèi)的奇數(shù)和為:,SSET TALK ONCANCEL(二)步長循環(huán)語句 FOR NEX
34、T【格式】FOR 循環(huán)變量=初值 TO 終值 STEP 步長循環(huán)體語句序列ENDFOR | NEXT使用FOR循環(huán)語句的有關(guān)說明:省略STEP 步長,則步長為默認值1;初值、終值和步長都可以是數(shù)值表達式,但這些表達式僅在循環(huán)語句開始執(zhí)行時計算一次。循環(huán)語句執(zhí)行過程中,初值、終值和步長是不會改變的,并由此確定循環(huán)的次數(shù);可以在循環(huán)體內(nèi)改變循環(huán)變量的值,但會改變循環(huán)執(zhí)行次數(shù);EXIT和LOOP命令可以出現(xiàn)在循環(huán)體內(nèi)。執(zhí)行LOOP命令時,結(jié)束本次循環(huán),循環(huán)變量增加一個步長值,返回FOR循環(huán)頭判斷循環(huán)條件是否成立。執(zhí)行EXIT命令時,程序跳出循環(huán),執(zhí)行循環(huán)尾后面的語句【例】從鍵盤輸入10個數(shù),編程找出
35、其中的最大值。SET TALK OFFCLEARINPUT “請從鍵盤輸入一個數(shù):” TO AMAX = AFOR I=2 TO 10INPUT “請從鍵盤再輸入一個數(shù):” TO AIF MAX =1)SET TALK OFFCLEARINPUT “請輸入N:” TO NS=1DO SUB1 WITH N,S?STR(N,2)+“!=”,SSET TALK ONPROCEDURE SUB1&求階乘的過程PARAMETER X,YIF X=1DO SUB1 WITH X-1,Y&遞歸調(diào)用Y=X*YENDIFRETURN二、自定義函數(shù)自定義函數(shù)和過程一樣,可以以獨立的程序文件形式單獨存儲在磁盤上,
36、也可以放在過程文件或直接放在程序文件中。與過程所不同的是,自定義函數(shù)不管其是否帶參數(shù),其在完成某種操作后必須返回一個函數(shù)值;且函數(shù)調(diào)用不是通過DO命令來實現(xiàn)的,與系統(tǒng)函數(shù)一樣是通過函數(shù)名引用的,并且在程序中只能用來組成表達式。1、自定義函數(shù)格式:【格式】FUNCTION PARAMETER RETURN 【說明】FUNCTION 是函數(shù)說明語句,調(diào)用函數(shù)時就是通過函數(shù)名引用的。PARAMETER是參數(shù)說明語句,形式參數(shù)表列出了調(diào)用時應(yīng)該輸入的參數(shù)(只能是輸入?yún)?shù));若無參數(shù)可省略。RETURN后的表達式為函數(shù)的返回值。2、自定義函數(shù)的調(diào)用【格式】函數(shù)名( 實際參數(shù)表)【功能】用實參替換函數(shù)中的
37、形參,運行函數(shù)體并返回函數(shù)值.【例】計算圓面積SET TALK OFFCLEARINPUT ”請輸入圓的半徑:” TO R?”圓的面積為:”,AREA(R) &AREA()為計算面積的函數(shù)SET TALK ONFUNCTION AREA&計算面積的函數(shù)PARAMETER X&形參說明RETURN(3.1416*X2)【例】將十進制整數(shù)轉(zhuǎn)換成二進制數(shù)SET TALK OFFCLEARINPUT ”請輸入一個十進制整數(shù):” TO D?”轉(zhuǎn)換成二進制數(shù)為:”,D2B(D)&D2B()為十進制轉(zhuǎn)二進制函數(shù)SET TALK ONRETURNFUNCTION D2B&轉(zhuǎn)換函數(shù)PARAMETER N&形參說
38、明B=”DO WHILE N0 B=STR(MOD(N,2),1)+B N=INT(N/2)ENDDORETURN B 5 經(jīng)典程序范例一、歷年程序題【2002】求兩個整數(shù)m和n的最大公約數(shù),最小公倍數(shù)【2006】。CLEARINPUT M= TO MINPUT N= TO NIF MN T=M M=N N=TENDIFA=MB=NDO WHILE B#0 T=A%B A=B B=TENDDO?最大公約數(shù)為:,A?最小公倍數(shù)為:,M*N/ACANCEL【2003】輸人三個數(shù),編程求出三個數(shù)中最大數(shù)和最小數(shù),并顯示輸出?!?007】CLEARINPUT 輸入第一個數(shù) TO AINPUT 輸入第二
39、個數(shù) TO BINPUT 輸入第三個數(shù) TO CIF AB T=A A=B B=TENDIFIF BC T=B B=C C=TENDIFIF AC T=A A=C C=TENDIF?”max=”,max, ”min=”,minRETURN【2003】從鍵盤輸入一個正整數(shù)n,編程求出12+22+n2,并將結(jié)果顯示輸出。CLEARINPUT 輸入一個正整數(shù) TO NS=0FOR I=1 TO N S=S+I2ENDFOR?”S=”,SRETURN【2004】整型變量a,b,c中分別存放各不相同的數(shù)值。編寫程序,實現(xiàn)a,b,c從大到小排序,并以此順序輸出排序后的三個數(shù)。CLEARINPUT 輸入第一
40、個數(shù) TO AINPUT 輸入第二個數(shù) TO BINPUT 輸入第三個數(shù) TO CIF A=ASC(A); .AND.ASC(C)=ASC(a); .AND.ASC(C)=ASC(z) N=N+1 ?C ?N ENDIFENDFOR?英文字符數(shù)共計:,N,個RETURN【2005】已有按從小到大的順序排列的10個數(shù),現(xiàn)輸入一個數(shù),要求插入到數(shù)列中。插入后數(shù)列仍然按從小到大順序排列。CLEARDECLARE N(11)FOR I=1 TO 10 INPUT 輸入一個數(shù): TO N(I)ENDFORINPUT 再輸入一個數(shù): TO N(11)J=10DO WHILE N(J+1)=60 K=K+1ENDIFENDFOR?平均分,S/45?及格人數(shù),K,占百分比,K/45RETURN【2007】數(shù)組a中已存放了10個由小到大排列的數(shù)?,F(xiàn)從鍵盤輸入一個數(shù)x,要求刪除數(shù)組中與其相同的數(shù),并將后續(xù)的數(shù)依次前移,最后輸出剩余的數(shù)。CLEARK=0DIME A(10)FOR I=1 TO 10INPUT A(I)= TO A(I)NEXTINPUT X= TO
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 七年級上冊《金色花》課件
- 兩條直線的位置關(guān)系對稱問題課件
- 《服飾知識常識》課件
- 單位管理制度集合大全人員管理十篇
- 單位管理制度集粹選集人事管理十篇
- 《石膏的護理》課件
- 單位管理制度分享大合集員工管理篇
- 單位管理制度范文大合集職工管理篇十篇
- 單位管理制度范例匯編人員管理篇十篇
- 單位管理制度呈現(xiàn)匯編職員管理篇十篇
- 一年級下學(xué)期道德與法治教學(xué)工作總結(jié)
- 財稅公司合同范本
- DB34T4829-2024公路工程泡沫輕質(zhì)土設(shè)計與施工技術(shù)規(guī)程
- 抗腫瘤藥物臨床管理辦法培訓(xùn)
- 福建省福州市2023-2024學(xué)年高一上學(xué)期1月期末地理試題(解析版)
- 預(yù)防性侵害安全教育
- 科大訊飛招聘在線測評題
- 科學(xué)備考講解模板
- 譯林小學(xué)二年級上冊英語知識綜合訓(xùn)練50題含答案
- 2024年1月浙江省普通高校招生選考科目考試思想政治試題(含答案)
- 中國大數(shù)據(jù)產(chǎn)業(yè)發(fā)展指數(shù)報告(2024版)
評論
0/150
提交評論