CH2VisualFoxPro程序設計基礎_第1頁
CH2VisualFoxPro程序設計基礎_第2頁
CH2VisualFoxPro程序設計基礎_第3頁
CH2VisualFoxPro程序設計基礎_第4頁
CH2VisualFoxPro程序設計基礎_第5頁
已閱讀5頁,還剩152頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Visual Foxpro第二章 Visual FoxPro程序設計基礎學習要點:2.1 常量與變量2.1.1常 量2.1.2變 量2.2 函數2.3 表達式2.4 程序與程序文件重點與難點:數據類型變 量表達式常用函數程序:作文:造句組詞識字拼音語句語句格式、表達式常量、變量、函數2.1 常量與變量常量在程序中不變的量掌握:A.組成 B.定界符 C.特別注意2.1.1 常 量常量是在數據處理過程中其值保持不變的數據。常量在數據輸入或命令表達式中可以被直接引用。在Visual FoxPro中定義了6種類型的常量:數值型常量、字符型常量、邏輯型常量、浮點型常量、日期型常量、日期時間型常量。1數值

2、型常量(N)數值型常量是由正、負號數字(09)和小數點組成。Eg:123,-10定界符:無可以是整數、小數,但不可以用分數。例如326、178.56、+3125.27都是合法的數值型常量。科學計數法的描述形式3*1052字符型常量(C)A.組成:字母、符號、漢字、數字、空格。B.字符型常量是由分界符(雙引號、單引號、方括號)括起來的一串漢字、字符組成。C.定界符要配對使用例如“FoxPro”、程序設計、Y=?都是合法的字符型常量。引入VFP命令注意:命令在命令窗口輸入,輸入結束后以回車結束(Enter)。退出vfp系統:quit。清理主屏幕:clear。輸出命令:? 隔行輸出? 同行輸出注意:

3、都是相對上一行來講。特別注意:在vfp用到的符號都是英文半角?123?$124?”hello”?123?”word”3邏輯型常量(L)邏輯型常量只有兩個值,邏輯真和邏輯假。A.一般是用字母.T.表示真,用.F. 表示假。B.定界符:在書寫時注意字母兩邊的黑點不能省略。4日期型常量(D) 日期型常量用于表示日期,使用時必須用花括號括起來。A.0-9的數字B. 年4-月2-日2C.系統默認格式:月/日/年(主屏幕)4日期型常量(D) 補充:關于日期的幾個命令(1)設置日期分隔符(顯示用)SET MARK TO 分隔符注意:分隔符用引號。Eg:date()顯示當前系統時間(2)設置日期的年月日順序(

4、顯示用)SET DATE TO(3)設置年份的顯示位數(顯示用)SET CENTURY ON:四位OFF:兩位關于命令總結:必選可選可不選|必選其一5日期時間型常量(T)A.0-9數字B.年-月-日 時:分:秒。 12制/24制AM:上午PM:下午 日期時間型常量是用于表示日期和時間,使用時必須用花括號括起來。8:25:30是合法的日期時間 例如06/26/2002型常量。6貨幣型(Y) 組成:0-9,小數點 定界符:$ 自動保留四位小數(自動四舍五入)學習要點:2.1 常量與變量2.1.1常 量2.1.2變 量2.2 函數2.3 表達式2.4 程序與程序文件2.1.2 變 量 變量是一種在命

5、令操作和程序運行中其值要發生變化的量。 每一個變量都是用來存放數值的容器存儲常量的量。 在Visual FoxPro中,變量可以分為內存變量、數組變量和字段變量。內存變量 內存:出口 內存變量是數據庫結構之外獨立存在于內存中的臨時存儲變量,它可以存放程序中的原始數據、中間結果和最終結果,以及用于控制程序執行的各種參數。 內存變量一般隨程序運行結束或退出VisualFoxPro系統時釋放。1內存變量名 內存變量名是每一個內存變量都必須固有的名稱,以標識該內存單元的存儲位置。 用戶可以通過內存變量名對內存變量中的數據進行操作。 內存變量名的命名規則是以字母、下劃線開頭,由字母、數字、下劃線組成,其

6、長度可以達到254個字符。2內存變量類型 內存變量的類型是指內存變量中存放的是什么形式的數據。 通常內存變量的類型是由變量當前值的類型決定,在Visual FoxPro中,內存變量的常用類型有數值型、浮點型、字符型、邏輯型、日期型和日期時間型6種。3創建內存變量 創建內存變量一般是通過各種賦值命令來實現。 在完成內存變量賦值時就產生了內存變量,同時也自動將內存變量定義為相應賦值的數據類型。 對內存變量賦值的命令有多種,可以由STORE、INPUT、WAIT、ACCEPT、COUNT和SUM 等命令建立。(1)內存變量賦值命令【格式】【功能】給內存變量賦值。STORE TO 或 例如:X=12.

7、3& 將12.3賦值給變量X,變量類型為數值型Y=VFP& 將字符串Visual FoxPro賦值給變量Y,變量類型為字符型STORE 3*5 TO A,B,C& 將表達式值15分別賦值給A,B,C三個變量(1)內存變量賦值命令【格式】STORE TO 或 【功能】給內存變量賦值。【說明】STORE命令可以同時給多個內存變量賦值,而=命令只能給一個變量賦值。注意:常量表達式必須加定界符4輸出內存變量的值【格式】?或 ?【功能】顯示內存變量、常量或表達式的值。【說明】?是在光標所在行的下一行開始顯示?則是在當前光標位置開始顯示。5顯示內存變量【格式】list memory

8、|display memory【功能】顯示內存變量的當前信息,包括變量名、作用域、類型和取值。【說明】list:自動滾屏display:顯示一屏后暫停,按任意鍵繼續。【格式】LIST MEMORY LIKE 通配符【功能】顯示與通配符相匹配的內存變量。【說明】*:0個或者任意多個字符?:任意一個字符Eg:a* :以a開頭的所有變量b?:以b開頭,寬度是2的變量List memory like a*a = 12ab = “visual”abc= $123.1List memory like a*6清除內存變量【功能】格式1清除所有的內存變量格式2清除指定的內存變量格式3清除與通配符相匹配/不匹配

9、的內存變量CLEAR MEMORY 清除所有的內存變量【格式】 RELEASE 清除指定內存變量RELEASE MEMORY ALL LIKE|EXCEPT 通配符Eg:release a?alist memor like a*release all like a*list memory like a*數組變量 數組是由一組有序排列的內存變量組成(一連串的內存變量)。 數組中的每一個變量都稱為數組元素。 每一個數組元素在內存中獨占一個內存單元,為了區分不同的數組元素,每一個數組元素都是通過數組名和下標來訪問。因此數組可以稱為是帶下標的變量,簡稱為下標變量。元素,例如B(1,1) B(1,3),

10、B(2,1)平面直角坐標在Visual FoxPro中,數組可以分一維數組和二維 一維數組是指在該數組中只用一個下標值表示數組元素,例如:A(1),A(2),A(10),可用A數組表示。 二維數組是指在該數組中用兩個下標表示數組,B(1,2),在同一數組中,不同的數組元素可以有不同類型的數據。數組兩種:數軸可用B數組表示。系(第一象限)1. 數組的定義【格式】DIMENSION(,),(,【功能】定義若干個一維數組或二維數組。【說明】一條DIMENSION命令可以定義多個數組,也可以使用DECLARE命令代替DIMENSION命令。1. 數組的定義Declare a(3)-a(1),a(2),

11、a(3)變量Declare b(2,3)b(1,1) b(1,2) b(1,3)b(2,1) b(2,2) b(2,3)2. 數組的賦值 數組定義好后,數組中的每個數組元素自動地被賦予邏輯值.F.。 當需要對整個數組或個別數組元素進行新的賦值時,與一般內存變量一樣,可以通過STORE命令或賦值號“=”來進行。 對數組的不同元素,可以賦予不同數據類型的數據。【例】 先定義數組,然后給數組元素賦值。DIMENSION abc(3) &abc(1),abc(2),abc(3)DECLARE b(2,3)&b(1,1) b(1,2) b(1,3)b(2,1) b(2,2) b(2,3)

12、STORE 10 TO babc(1)=30abc(2)=TCP/IPabc(3)=.F.【說明】 在定義一維數組abc和二維數組b后,對兩個數組賦值。賦值后b中所有元素的值均為10;abc中各元素分別賦予了不同類型的數據30、“TCP/IP”和.F.。學 號姓 名年 齡計算機英 語物 理021101黃 偉18958588021102李 勇19859085021103王 芳18758180021104田 甜17708276021105周希望18907582字段變量屬性(字段)字段變量 字段變量即數據表中的字段,它是建立數據表時定義的一類變量。 在數據表中,同一字段名下的數據值是不同的,每個字段

13、都稱為字段變量。 字段變量的類型有字符型、數值型、浮點型、雙精度型、整型、邏輯型、日期型、日期時間型、備注型、通用型等。學習要點:2.1 常量與變量2.1.1常 量2.1.2變 量2.2 函數2.3 表達式2.4 程序與程序文件2.2 函數【定義】系統提供的實現特定功能的小程序Visual FoxPro提供了豐富的函數。豆漿=豆子+豆漿機(函數)2.2 函數豆漿=豆子+豆漿機(函數)在使用Visual FoxPro的函數時,應注意以下幾點: 準確地掌握函數功能。 每一個函數都有一個返回值。函數的返回值有確定的類型,因此在使用函數時特別要注意類型匹配。 函數對其參數的類型也有要求,否則將產生類型

14、不匹配的語法錯誤。數值函數、字符函數、日期時間函數、類型轉換函數數值運算函數【功能】求數值表達式值的絕對值。1求絕對值、平方根和求整函數【格式】 ABS()ABS(10) = 10ABS(-10)= 10數值運算函數1求絕對值、平方根和求整函數【格式】 SQRT()【功能】求數值表達式值的平方根【格式】 INT()【注意】不考慮小數大小?Sqrt(25)&52四舍五入函數ROUND()【格式】【例】?ROUND(86.6265,0)87?ROUND(86.6265,1)86.6?ROUND(86.6265,-1)90?ROUND(86.6265,-2)100操作對象ROUND(,)四舍

15、五入的位置(正數表示小數位數,負數。本函數按指定的小數位數對數值進行四舍五入處理。3求最大值、最小值函數【格式】【功能】求多個數值表達式中的最大值或最小值。MAX |MIN(,)【例】 比較值的大小。?MAX(WE,YOU)YOU4取模函數【格式】MOD(,)【功能】取數值表達式1除以數值表達式2所得的余數。【例】 求下列各數的取模值。? MOD(20,3)2& 顯示20除以3所得的余數? MOD(20,-3)-1& 顯示20除以-3所得的余數字符處理函數1取字符串的長度函數【格式】 LEN()【例】 取字符串長度值。? LEN(“中文Visual FoxPro)& 取

16、出全部字符串的長度值17【功能】取出字符串表達式的字符長度值。【注意】一個字母、符號、數字占1個字節,一個漢字占2個字節。2取子串函數【格式】【功能】在字符串表達式中取出從起始值到指定取出字串長度值的部分字符。當取值長度缺省時,字符串從起始值一直取到最后一個字符。SUBSTR(字符串表達式,起始值,取值長度)【例】 在下列字符串中取出子串。? SUBSTR(FoxPRO,2,2)* 從第二個字符開始取出2個字符ox? SUBSTR(ABCDEF,4)*從第4個字符開始取到最后DEF遇到中文字符的情況:一個中文字符占2位,中文字符不按長度整數倍取,會出現不可預知的情況。?substr(中文vis

17、ual,1,2)* 從第一個個字符開始取出2個字符長度字符?substr(中文visual,2,1)*從第2個字符開始取到最后中亂碼3從字符串左端取子串函數【格式】LEFT(,)【功能】從字符串表達式的左端開始,取出指定取值長度的子串。【例】 從字符串左端取出子串。? LEFT(FoxPro,3)& 從字符“FoxPro”左端開始取出3個字符Fox? LEFT(程序設計,2) & 從字符“程序設 計”左端開始取出2個字符長度程4從字符串右端取出子串函數【格式】RIGHT(,)【功能】從字符串表達式的右端開始,取出指定取值長度的子串。【例】 從字符串右端取出子串。& 從字

18、符串右? RIGHT(FoxPro,3)端開始取出3個字符Pro5求子串的位置函數【格式】【功能】求子串在字符串表達式出現的位置,當缺省時,求子串首次出現的位置,否則,求子串在字符串表達式第次出現的位置。AT(, ,)【例】 在字符串中檢索子串的位置。? AT(IS,THIS IS a BOOK)& 求子串“IS”在字符串首次出現的位置3? AT(IS,THIS IS a BOOK,2)& 求子串“IS”在字符串第2次出現的位置6?AT(文,中文)36刪除空格函數【格式】ALLTRIM()【功能】刪除字符串表達式中前導和末尾的空格。【例】 刪除字符串前后的空格。?alltrim

19、( visual fox )& 去掉字符串左邊空格visual fox?alltrim( visual fox )+ab“visual foxab注意:只去前導和末尾空格,中間空格保持不變。7字符串替換函數STUFF()【格式】【功能】用替換中的某部分字符串,對中進行替換的開始位置以及被替換字符的個數分別由和確定。STUFF(,)【例】 用含有6個字符的子串“FoxPro”替換主串“FORTRAN-PASCAL-BASIC”中的字符串“PASCAL”,替換的起始位置為9。?STUFF(FORTRAN-PASCAL-BASIC,9,6,FoxPro)FORTRAN-FoxPro-BASI

20、C【例】 用“全國”替換“四川計算機等級考試”中的“四川”二字。?stuff(四川計算機等級考試,1,4,全國)全國計算機等級考試【注意】如果長度值為0,相當于在起始位置之前插入子字符串。?stuff(visual pro,8,0,fox)visual fox pro【注意】如果子串為空串,相當于刪除指定的一部分字符串。?stuff(visual fox pro,8,3,)visual pro8字符替換函數CHRTRAN()【格式】【功能】字符串1中有字符與第2個字符串相同時,就用第3個字符串相對應的字符(與字符串2)替換這些字符。如果字符串3中包含的字符數少于第二個字符串包含的字符,則第一個

21、字符串相應字符被刪除。CHRTRAN(,)Eg:x1 = CHRTRAN(ACDFGB,ABCD,ac)字符串1: ACDFGB字符串2 :ABCD字符串3: a caFGc9字符串匹配函數【格式】【功能】比較兩個字符串對應位置上的字符,若所有對應字符匹配,返回邏輯真(.T.)。否則返回邏輯假(.F.)。字符1中可以包含通配符。LIKE(,)【例】LIKE (a*,abc) .T.LIKE (ac*,abc) .F.10大寫字母轉小寫字母函數【格式】LOWER()【功能】將字符串表達式中的所有大寫字母轉換成小寫字母。【例】 將大寫字母轉換成小寫字母。? LOWER(FoxPro)foxpro&

22、amp; 顯示小寫字母11小寫字母轉大寫字母函數【格式】【功能】將字符串表達式中的所有小寫字母轉換成大寫字母。UPPER()【例】 將小寫字母轉換成大寫字母。? UPPER(abcABCabc)ABCABCABC & 顯示大寫字母12計算子串出現函數【格式】【功能】返回第一個字符串在第二個字符串中出現的次數,返回值為數值型。OCCURS(,)【例】 s = abcdefhgrabcefabr?occurs(a,s)3理想長度L應是數值表達式的長度。轉換長度L,則字符串加前導空格。數值整數部分=轉換長度L,優先滿足整數部分,再調整小數部分。轉換長度數值整數部分,返回*。轉換長度默認為10

23、,小數位數默認為0。轉換函數(使表達式的類型一致)1數值轉字符串函數【格式】 STR( ,,)【功能】將數值表達式轉換為字符串。【例】 將下列數值表達式轉換為字符串。?str(123.4567,9,4)123 .4567& 加前導空格?str(123.4567,6,3)123.46& 優先滿足整數部分?str(123.4567,1,0)*2字符串轉換為數值函數【格式】【功能】將由數字符號組成的字符型數據轉換為數值,小數點后保留2位小數。VAL()【例3】 將字符串轉換為數值。?val(123)123.00 & 顯示數值型結果?val(123.567)123.57?val

24、(123.ABC),val(AB123)123.00 0.00注意:若字符串內出現非數字字符,那么只轉換前面的部分。若字符串首字符不是數字符號,則返回零。3字符串轉日期函數【格式】【功能】將指定的字符串表達式轉換為日期型數據。CTOD()【說明】 在字符串轉日期型數據時,字符串應符合日期型數據格式。系統默認日期型格式是mm/dd/yy,也可以用SET DATETO命令相配,用SET CENTURYON/OFF設置世紀的日期格式。【注意】字符串中日期格式要與set date to格式一致【例】 將字符串轉換為日期后,再加上15天。? CTOD(06/15/02)+1506/30/02 &

25、 顯示轉換后的日期【例】 將兩個字符串轉換為日期后,可得一個天數。? CTOD(06/15/02)-CTOD(05/15/02)31 & 顯示轉換后的天數set date to ymd?ctod(06/3/25)+506/03/304日期轉字符串函數【格式】【功能】將日期(時間)型數據轉換為字符型日期數據,如果選擇,函數用yyyymmdd格式。( ) DTOC( ,)【例】 將日期型數據轉換為字符型數據。? DTOC(06/20/02)& 顯示日期SET STRICTDATE TO 0& 設置通常的日期格式?DTOC(2008/12/01)12/01/08?DTOC(2

26、008/12/01,1)200812015宏替換函數【格式】【功能】替換出字符型變量的內容,并使用一個句點.來結束這個宏替換表達式。&.【例】 x= hellom=x?&mDATE( )日期型DATETIME()日期時間型TIME()字符型日期函數1系統日期函數【格式】DATE( )DATETIME()TIME()【功能】返回系統的當前日期。2取年份函數【格式】YEAR()日期型日期時間型字符型【功能】從日期表達式中取出四位數字表示年份(數值型)。Eg :Year(date()-year(出生日期)=實際年齡3取月函數【格式】 MONTH()【功能】從日期表達式中取出月份。4取

27、號數函數【格式】【功能】從日期表達式中取出號數。DAY()例:?year(2001/10/01)2001?month(2001/10/01)10?day(2001/10/01)15星期幾函數【格式】【功能】從日期表達式中取出星期幾。【說明】 DOW( )函數是從日期中取出星期1,2,3,7。其中1表示星期日,2表示星期一,7表示星期六。CDOW( )函數是從日期中取出英文“Monday”表示星期一、“Tuesday”表示星期二等。DOW|CDOW()【例】 取出當前系統日期中的星期幾。?DOW(date()?CDOW(date()學習要點:2.1 常量與變量2.1.1常 量2.1.2變 量2.

28、2 函數2.3 表達式2.4 程序與程序文件2.3 表達式 表達式是由常量、變量、函數和運算符組成的運算式。 表達式有計算、判斷和數據類型轉換等作用。 表達式分為算術表達式、字符表達式、關系表達式、日期或日期時間表達式和邏輯表達式。A.運算符及其功能B.運算符的優先級中間產物1算術表達式 算術表達式是由算術運算符、數值型常量、數值型變量、數值類型的字段、數值型數組和函數組成。 +- * / % * 算術表達式的運算結果是數值型數據。 算術運算時,運算的規則是:( ) * */% + -。*:2*323取余運算15%215%-2-15%2規定:異數取余,余數與除數同號;若不同,與除數相加.乘方表

29、示2字符表達式 字符表達式是由字符運算符、字符型常量、字符型內存變量、字符型字段變量、字符型數組和函數組成。 字符表達式的運算結果仍然是字符型數據。字符運算符用于連接字符串。 +:兩個字符串首尾相連。 -:先把前字符串尾部的空格移到整個字符串的后面,然后首尾相連。Eg:a=hello B=world!?a+b?a-b?a - b +a& hello world!& helloworld!& helloworld! a3關系表達式 關系表達式是由關系運算符、算術表達式、字符表達式等組成。 關系表達式的運算結果是邏輯值真或假,當關系成立,結果為.T.(真);當關系不成立,結

30、果為.F.(假)。 ,=, ,=,!=/#(不等于) ,=/=(字符串設置比較),$(子串測試)“=”用作字符串比較,與設置SET EXACT ON|OFF命令有關。ON:首先在較短字符串后面補上空格,使之長度相等,然后比較。OFF:如果右邊字符串是左邊字符串的子串就返回T(以等號右邊字符結束為標識)。Eg:set exact on“ab”=“abc”“ab”=“ab ”set exact off“abc”=“abc”“abc”=“ab”“acb”=“ab”.f.t.t.t.f.(2) “$”:如果左邊字符串是右邊字符串的子串就返回.T.Eg: “ab”$ “abc” .t.(3) “=”:如

31、果左右兩邊字符串都完全相等,返回.t.補充:比較運算時,不同類型數據的大小規定A.數值型:10B.日期型:越晚的日期越大C.邏輯型:.T.F.D.字符型:字母:abczAB.”王”E.優先級:“,=, “= = !=”賦值和比較:?x=y-2x=yy=x=2x=y x1.vfp的表達式 :是由命令、變量、操作符組成.2.一個命令行至少有一個命令。3.分析這樣的語句要選擇命令語句,再找操作符 。這里的=是命令賦值和比較:x=y? x=y-2這里的?是命令,=是運算符, x.y是變量顯示 x=y 是真還是假x.y是變量,把y的值賦值 給x? x=y這里的命令是? ,=和-是運算符,按照優先級順序,

32、先做算數運算;最后,把x是否等于y-2的值顯示出來? x=y=2x=y=2第一個=是命令,第二個=運算符把y=2是否為真的結果賦值給X會顯示錯誤,這是因為? 是命令,后面的=都是比較,沒有括號所以按順序運算 優先級,先運算x=y,結果為邏輯型(L);然后運算L= 2, 因為運算符二兩類型不一致,所以提示錯誤。4日期或日期時間表達式 日期或日期時間表達式是由算術運算符(+或-)、算術表達式、日期或日期時間型變量、日期或日期時間型內存變量數組及函數組成。 日期或日期時間型的運算結果是日期或日期時間型或常數。日期或日期時間運算及表達式一覽表運算符功 能舉例結果+相加相減日期+數字 2010-01-1

33、7+102010-01-17 10:20:20+150日期-數字01/27/1001/27/10 10:22:5001/17/10日期型日期時間型日期型2010-01-2710日期-日期2010-06-262010-05-2631數值型兩個日期不能相加!日期型和日期時間型數據在使用時有多種環境,系統默認環境是嚴格的日期格式,命令如下: SET STRICTDATE TO 1& 系統默認嚴格的日期格式在嚴格的日期格式下,日期或日期時間運算可以采用如下形式: ? 2002-06-19-10或 ?CTOD(06/19/02)-10輸出結果為:06/09/02 日期型和日期時間型數據在輸出時,

34、若要輸出是四位年份,應使用世紀的日期格式設置命令:SET CENTURY ON格式?CTOD(06/19/02)-1006/09/2002& 設置世紀的日期& 顯示結果 若要改為原來的默認格式,應使用設置命令:SET CENTURY OFF& 取消世紀的日期格式?CTOD(06/19/02)06/09/02& 顯示結果5邏輯表達式 邏輯表達式是由邏輯運算符、邏輯型常量、邏輯型內存變量、邏輯型數組、函數和關系表達式組成。 在邏輯表達式中,可以描述復合條件的多個關系表達式,一般格式為: 邏輯表達式運算的結果是邏輯值真(.T.)或假(.F.)。邏輯運算符及舉例如表所示

35、。邏輯運算符及表達式一覽表運算符功 能舉例結果.NOT.或!邏輯非,取邏輯值相反的值? .NOT.73.F.AND.邏輯與,兩邊的條件都成立,其結果值為真?5*927.AND.36.T.OR.邏輯或,只要一邊條件成立,其結果值為真16?7*320.OR.2519.T.邏輯運算的規則A.T.T.F.F.B.T.F.T.F.NOT.B.F.T.F.T.A.AND.B.T.F.F.F.A.OR.B.T.T.T.F.邏輯運算的優級:.NOT.、.AND.、.OR.學習要點:2.1 常量與變量2.1.1常 量2.1.2變 量2.2 函數2.3 表達式2.4 程序與程序文件2.4.1 程序文件操作及輸入語

36、句2.4.2 程序基本結構交互式范式適合解決一些簡單問題3.4.1程序文件的操作及輸入語句2VFP系統三種操作方式:菜單、命令、程序有多條命令組成的文件命令可以不用順序方式執行程序文件的操作關于VFP文件的操作程序、數據庫、表、查詢、視圖、表單、菜單、報表。前提:提前建立好默認目錄。Set default to d:建立:文件-新建-程序-新建文件-編寫程序保存:文件-保存-輸入文件名-保存(點擊保存按鈕)。擴展名為.prg。打開:A.文件-打開-文件類型-文件名-確定B.MODIFY COMMAND 運行(查看程序運行結果)A.程序-運行-選擇文件-運行(或直接選紅色嘆號運行)B.DO 文件

37、名此命令既可以在命令窗口發出,也可以出現在程序文件中,表示調用執行另一個程序。結束:A.所有命令被執行B.遇到下列語句:(1)CANCEL:終值程序的運行(2)DO:轉去執行另一個程序(3)RETURN:結束當前程序的執行,返回上級程序(4)QUIT:退出VFP系統關閉:點擊程序文件右上角文件添加注釋:*或NOTE -添加在開頭代碼行&-添加在命令行尾部注釋不以分號結尾,否則下一行仍作為注釋。 每條都以回車鍵結尾,一行只寫一條命令。若需分行書寫,加續行符;簡單的輸入輸出命令1.Accept 提示語 to 內存變量【注意】:提示語必須加引號只接受字符型數據【功能】:程序暫停運行,顯示提示

38、語,等待用戶輸入,輸入結束按回車把輸入內容賦值給內存變量。2.Input 提示語 to 內存變量【注意】:接受任何vfp合法數據類型,輸入內容時加定界符。【功能】:程序暫停運行,等待用戶輸入,輸入結束按回車把輸入內容賦值給內存變量。input 請輸入一個數 to ainput 請輸入另一個數 to b?a+bEg:Input輸入語句3.Wait 提示語 windows timeout 秒數【功能】:顯示內容在屏幕右上角,顯示時間由秒數確定。Eg:?馬上開獎,請耐心等待wait 恭喜你中獎了,礦泉水一瓶!window nowait timeout 5?開獎結束,請繼續學習要點:2.1 常量與變量

39、2.1.1常 量2.1.2變 量2.2 函數2.3 表達式2.4 程序與程序文件2.4.1程序文件操作及輸入語句2.4.2 程序基本結構2.4.2 程序基本結構1.選擇結構2.循環結構3.順序結構:從上到下,從前到后重點掌握:語句的執行過程程序語言現實語言 讀程序現實語言程序語言 寫程序(一)選擇結構1.單重選擇語法格式:if 語句Endif首先判斷條件是否成立,就是最終結果是一個邏輯值,如果為真,執行語句,執行后到endif語句;如果為假,不執行語句,直接到endif后的語句。(一)選擇結構【Eg】ClearInput “請輸入a:”to aInput “請輸入b:” to bIf ab?

40、“最大值為:”,aEndif? “程序執行完畢”2.雙重選擇If 語句1Else語句2Endif執行過程:首先判斷條件是否成立,如果成立,就執行語句1,否則就執行語句2。執行后到endif后的語句。提示:(1)else后沒有條件。(2)雙重語句有且只能執行一條。 3.多重選擇Do caseCase 條件1語句1Case 條件2語句2Case 條件m語句motherwise 語句m+1Endcase 執行過程依次判斷條件是否成立,哪個成立就執行哪個語句,執行后直接到endcase后的語句。如果沒有成立的,就指定otherwise語句,如果沒有otherwise語句,就什么也不執行,直接到endc

41、ase后的語句注意:多重選擇最多執行一條語句。(二)循環結構1.while循環語法格式Do while 循環體Enddo執行過程:首先判斷條件是否成立,如果為真,就執行循環體,執行后再次判斷條件是否成立,若成立則再執行,直到條件為假,退出循環,到enddo后的語句。Eg:1+2+3+100 = 5050注意:臨界值的變化;用于條件比較明顯的循環。LOOP命令結束本次循環,不再執行循環其后的循環語句,而是轉回DO WHILE處重新判斷。EXIT命令結束循環體的執行,轉去執行ENDDO后面的語句。2.for循環For 循環變量 = 初值 to 終值 step 步長循環體Endfor執行過程:A.如

42、果步長為正,判斷條件為循環變量=終值,如果條件成立,就執行循環體,執行后循環變量按步長遞減。然后再次判斷條件,如果成立,再執行,再判斷,直到條件為假,退出循環,到endfor 后語句。C.默認步長是1.2.for循環For 循環變量 = 初值 to 終值step 步長循環體EndforD.、都可以是數值表達式,但是這些表達式僅在循環開始時執行一次,在循環體執行過程中,初值、終值、步長不會改變。E.LOOPEXIT語句同樣適用于for語句。2.for循環For 循環變量 = 初值 to 終值step 步長循環體EndforEg:編寫程序,判斷一個大于3的自然數是否為素數學習要點:2.1 常量與變

43、量2.1.1常 量2.1.2變 量2.2 函數2.3 表達式2.4 程序與程序文件2.4.1程序文件操作及輸入語句2.4.2 程序基本結構2.5 多模塊程序設計主程序、子程序變量:全局變量、私有變量、局部變量2.5 多模塊程序設計一.過程的概念在程序設計中,為了有效地解決有些運算或程序段落重復調用的情況,可以設計相對獨立并能完成特定功能的程序段,這種程序段稱為過程或子程序,用于調用程序段的程序稱為主程序。在應用系統的開發中,一般會根據實際需要將整個系統劃分成若干模塊,通常將這些可以調用的功能模塊也設計成過程或子程序。模塊是一個相對獨立的程序段,它可以被其它模塊所調用,也可以去調用其它的模塊。循

44、環結構實現在一個程序中多次執行的某段程序。過程實現在同一程序的不同位置,或在不同程序中執行相同程序段。在應用系統開發中,通常將系統劃分成若干個模塊,系統在主模塊控制下,調用各個功能模塊以完成系統的各種功能操作。通常將這些可調用的功能模塊設計為過程或者子程序。可以在程序末尾加 return TO MASTER|TO 【說明】:RETURN返回調用該過程的主程序,并執行主程序中調用命令的下一條命令;TO MASTER直接返回最高級程序。1.子程序的建立于調用(1)建立子程序選擇:將表達式的值返回給調用程序。選擇TO MASTER:不論前面有多少級調用,直接返回第一級主程序。選擇TO 程序文件名:可

45、以直接返回指定的程序文件。缺省return命令:在過程結束處自動執行一條隱含的return命令,并返回邏輯真。(2)調用子程序格式1: do 格式2: ()【功能】:執行DO調用命令時,將指定的過程調入內存并執行。【說明】:格式2中的子程序名不加擴展名補充:輸出命令(1)非格式輸出命令【格式】?或 ?【功能】顯示內存變量、常量或表達式的值。【說明】?是在光標所在行的下一行開始顯示?則是在當前光標位置開始顯示。(2)格式輸出命令【格式】【功能】按指定的坐標位置在屏幕上輸出表達式的值。 SAY 【說明】輸出的位置由指定,的內容可以是數值、字符、內存變量和字段變量。 2,10 say 電話號碼簿 4

46、,10 say A:按姓名查詢 6,10 say B:按記錄號刪除 8,10 say C:插入新紀錄(3)文本輸出命令【格式】TEXTENDTEXT【功能】將TEXT和ENDTEXT之間的文本信息照原樣輸出。【說明】TEXT與ENDTEXT在程序中必須配對。補充:環境設置命令系統提供SET命令組用來設置程序運行的環境。(1)關閉對話命令【命令】 SET TALK ON|OFF【功能】 控制非輸出性的執行結果是否在屏幕上顯示或打印出來。【說明】 系統默認值為ON。(2)設置跟蹤命令【命令】 SET ECHO ON|OFF【功能】 控制程序文件執行過程中的每條命令是否顯示或打印出來。【說明】 系統

47、默認值為OFF。【例】 編寫程序P1.PRG,其程序功能是計算 S=X!+Y!+Z! 。程序P1 .PRG主程序和子程序編寫窗口2.過程文件過程是作為一個文件獨立地存儲在磁盤上,為減少磁盤文件的打開次數,可以把多個過程寫入一個過程文件中,過程文件中包含的過程數量不限。過程文件的擴展名仍然是.PRG。(1)建立過程文件【功能】建立過程文件。MODIFY COMMAND RETURNRETURNRETURNPRO.prgRETURNRETURNRETURNPROCEDURE RETURNPROCEDURE RETURNPROCEDURE RETURN過程文件的基本書寫格式:過程文件也可以放在命令文

48、件中,但必須放置在正常代碼后面:PRO.prgPROCEDURE RETURNPROCEDURE RETURNPROCEDURE RETURN(2)執行過程當程序執行到調用子程序的語句時,系統將外存中的子程序調入內存,程序自動轉到相應的子程序去執行。子程序執行完畢,程序返回調用子程序語句的下一語句繼續執行。【功能】調用過程文件中的指定過程。后加()表示帶參調用DO ()(3)打開過程文件SET PROCEDURE TO 【功能】打開指定的過程文件,將過程文件中所包含的子程序全部調入內存。【說明】若修改了過程文件的內容,一定要重新打開過程文件,再進行過程文件的調用。系統在同一時刻只能打開一個過程

49、文件,打開新過程文件的同時將關閉原來打開的過程文件。(4)關閉過程文件SET PROCEDURE TO【功能】關閉已打開的過程文件。RELEASE PROCEDURE,【功能】關閉指定過程文件。【例】 編寫程序P2.PRG,其程序功能是求3100之間的所有素數。注意:對一個自然數M(取值在3100之間的奇數)求素數的方法是:將M依次除以3到M的算數平方根之間的數,若均不能被整除,則M即為素數,否則,M不是素數。3100之間的所有素數:133153733173759795194161837234367891129477197圖 程序P2 .PRG主程序和過程文件編寫窗口二.變量的作用域和參數調用

50、1變量的作用域在程序設計中,內存變量的這些作用范圍稱為內存變量的作用域。內存變量的作用域根據作用范圍可分為全局變量、私有變量和局部變量。(1)全局變量全局變量是指在程序的任何嵌套中及在程序執行期間始終有效的變量。程序執行完畢,它們不會在內存自動釋放。全局變量的定義如下:PUBLIC 【功能】將內存變量名表中的變量聲明為全局變量。【說明】全局變量初值為邏輯假(.f.)簡單變量和數組變量都可以定義為全局變量命令窗口中直接使用而由系統建立的變量也為全局變量(2)局部變量局部變量是指用LOCAL命令定義的,只在建立它的過程中有效的內存變量。建立局部變量的程序執行完畢,局部變量的值將被自動清除。局部變量

51、的定義方式:LOCAL(3)私有變量私有變量是指在程序中直接使用而未通過PUBLIC和LOCAL命令聲明,而由系統自動隱含建立的變量。私有變量的作用域是建立它的模塊和其下屬各模塊。一旦建立它的模塊程序運行結束,私有變量將自動清除。開發程序是模塊化開發的,主程序和子程序很可能不是同一個人建立的,對于其他程序模塊中變量的使用,編程者并不是很清楚。可能出現如下情況:子程序中用到的變量是主程序中已經建立的,子程序的運行會改變主程序中變量的值。在此,PRIVATE命令可以解決這些問題:PRIVATE命令可以隱藏主程序中可能存在的變量,使得這些變量在子程序中暫時無效。PRIVATE PRIVATE ALL

52、 LIKE |EXCEPT【注意】PRIVATE命令不是建立內存變量,而是隱藏在上層模塊中可能已經存在的內存變量,使得這些變量在當前模塊暫時無效。圖 程序P16 .PRG主程序和調用過程編寫窗口【例】編寫程序P16.PRG,其程序功能說明過程中全局變量和局部變量的應用。輸出結果:在主程序中:A=1在過程中:A=11B=2B=12 C=13 D=14返回主程序后:A=11 B=2 C=13 D= List memo like ?List memo like ?List memo中like初?始變量:”?List memo like ?后的變量:” ?List memo like始?變量”*p1.prg*Public a,bA = 1B = “good”?”程序p1中的初始變量:”Do p2?”程序p1中執行p2后變量:”return*p2.prg*Private aC = 12Store date() to a,b”程序p2 的Do p3”程序p2執行p3return*p3.prg*Private aA = “12345”B = year(b)C = str(c,1)Private cStore 5 to a,b,c”程序p3中初return3、過程的帶參調用過程的帶參調用方法:在調用過程的命令和被調用過程的相關語句中,分別設置數量相同、數據類型一致且

溫馨提示

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

評論

0/150

提交評論