电竞比分网-中国电竞赛事及体育赛事平台

分享

第六章 VFP程序設(shè)計(jì)基礎(chǔ)

 風(fēng)與樹雨 2006-08-16

第六章 VFP程序設(shè)計(jì)基礎(chǔ)

6.1 程序設(shè)計(jì)概述

1. 程序設(shè)計(jì)方法簡(jiǎn)介

設(shè)計(jì)方法

主要概念

設(shè)計(jì)過程

程序執(zhí)行方式

結(jié)構(gòu)化程序設(shè)計(jì) 功能模塊(即過程、自定義函數(shù)) 編制各個(gè)功能模塊,再用主程序?qū)⑺鼈兇饋?/font> 將應(yīng)用程序分解成若干功能模塊,通過各模塊的相互調(diào)用來完成整個(gè)執(zhí)行過程,是過程驅(qū)動(dòng)的。
面向?qū)ο蟪绦蛟O(shè)計(jì) 類、對(duì)象、屬性、事件、方法 設(shè)計(jì)類、子類、對(duì)象(設(shè)計(jì)外觀、設(shè)置屬性、為事件編寫方法程序) 將應(yīng)用程序分解成具有特定屬性的對(duì)象,通過調(diào)用各對(duì)象的不同方法來完成相關(guān)事件,是事件驅(qū)動(dòng)的。

2.?dāng)?shù)據(jù)類型

VFP 包含下列數(shù)據(jù)類型:

通用的數(shù)據(jù)類型
字符型

Character

貨幣型

Currency

日期型

Date

日期時(shí)間型

DateTime

邏輯型

Logical

數(shù)值型

Numeric

僅用于字段的數(shù)據(jù)類型
雙精度型

Double

浮點(diǎn)型

Float

整型

Integer

通用型

General

備注型

Memo

 

3. 數(shù)據(jù)容器

VFP中用來存儲(chǔ)數(shù)據(jù)的容器有:常量、變量、數(shù)組、記錄和對(duì)象。

1) 常量constants):

一個(gè)在操作過程中保持不變的數(shù)值或字符串。

常用的常量類型

常量類型

數(shù)值型常量

字符型常量

邏輯型常量

日期型常量

表示方式

-25.36

"abc","123","中國(guó)"

.T. .F.

{03/07/2000}

2)變量(variables

是內(nèi)存中的一個(gè)存儲(chǔ)單元的位置,其中的內(nèi)容可以變化,但標(biāo)識(shí)該存儲(chǔ)位置的名稱(即變量名)不變。

變量的命名習(xí)慣類型變量代號(hào)

如:cStud 、nCj 、dCsrq ——

分別代表一個(gè)字符型、數(shù)值型、日期型的變量名

變量的賦值方式: 1) 用 STORE 命令 如:STORE "王蘭" TO cStud

2) 用賦值操作符 = 如:cStud = "王蘭"

變量的作用域: 即變量起使用的有效范圍。

變量作用域

定義作用域的關(guān)鍵字

特點(diǎn)

局部變量

local variable(本地變量)

LOCAL 只能在一個(gè)函數(shù)或過程中被訪問,其他過程或函數(shù)不能訪問此變量的數(shù)據(jù)。當(dāng)其所屬程序停止運(yùn)行時(shí),局部變量將被釋放。
私有變量

private variable

PRIVATE 私有變量在 VFP 中是默認(rèn)的,不需要特殊的關(guān)鍵字定義。但是,如果在更高一級(jí)例程(routine)中已經(jīng)有同名變量,可以用PRIVATE 關(guān)鍵字予以聲明,以限定其范圍。當(dāng)定義此變量的例程結(jié)束時(shí),此變量也被相應(yīng)釋放??墒褂盟接凶兞吭诒徽{(diào)用的函數(shù)中共享數(shù)據(jù)。
公共變量

public variable

PUBLIC 可用于所有過程和函數(shù),而不限于定義該變量的過程和函數(shù)??墒褂萌肿兞吭诙鄠€(gè)過程或函數(shù)之間共享數(shù)據(jù),在命令窗口中創(chuàng)建的任何變量自動(dòng)具有全局屬性。

 

變量的訪問:

當(dāng)變量和字段同名時(shí),字段有優(yōu)先被訪問權(quán)。要在變量名前加 m.m -> 以示區(qū)別,如 m.cStud

(3)數(shù)組(array)

是存儲(chǔ)在一個(gè)變量中由單個(gè)變量名引用的有序數(shù)據(jù)集合。在 VFP中,一個(gè)數(shù)組中的數(shù)據(jù)不必是同一種數(shù)據(jù)類型。常用的有一維數(shù)組,二維數(shù)組。

數(shù)組元素的標(biāo)識(shí):通過一個(gè)數(shù)值下標(biāo)來引用,如 AA[2],AA[2,3]

數(shù)組類型的聲明:

私有數(shù)組 ——DECLARE DIMENSION定義

全局?jǐn)?shù)組 ——PUBLIC命定義

局部數(shù)組 ——LOCAL定義

數(shù)組元素的賦值

用賦值語句: 如 AA=45

SCATTER從當(dāng)前記錄中取特定字段的值賦給數(shù)組:

如: scatter fields xh, xm, xb to aa

(數(shù)組長(zhǎng)度、類型自動(dòng)與所給字段相同)

COPY TO ARRAY從當(dāng)前記錄中取所有字段的值賦給數(shù)組:

如: copy to array aa

(數(shù)組長(zhǎng)度、類型自動(dòng)與表中全部字段相同)

把數(shù)組中的數(shù)據(jù)傳給當(dāng)前表中的當(dāng)前記錄

gather from 數(shù)組名 [fields 字段名表]

用數(shù)組向當(dāng)前表添加記錄

append from array 數(shù)組名 [for 條件] [[fields 字段名表]

(用二維數(shù)組可以同時(shí)添加多條記錄)

數(shù)組處理的常用函數(shù):

排序SORT(),搜索ASCAN(),刪除ADEL(),插入AINS()

(4) 記錄

表中的一行,由字段組成。

(5) 對(duì)象

對(duì)象是類的一個(gè)實(shí)例,類是對(duì)擁有數(shù)據(jù)和一定行為特征的對(duì)象集合的描述。VFP對(duì)象可以是表單、表單集、控件。

 

6.2 VFP 6.0的語言成分

1. 命令

即:由用戶發(fā)出的、指示VFP進(jìn)行某種操作的指令。

USE aaa & 打開 一個(gè)名為 aaa.dbf的數(shù)據(jù)表

2. 函數(shù)

即:一個(gè)預(yù)先編制好的模塊,可由VFP程序在任何地方調(diào)用。

函數(shù)的使用方法:名稱、功能、參數(shù)、返回值

幾個(gè)常用函數(shù)

名稱

命令格式

示例

字符串截取函數(shù)
SUBSTR( expC,expN1[,expN2 ])

SUBSTR(“ABCDEFG”,2,4)

結(jié)果是: BCDE

LEFT( expC,expN ) LEFT(“ABCDEFG”,2) 結(jié)果是: AB
RIGHT( expC,expN )

RIGHTT(“ABCDEFG”,4)

結(jié)果是: DEFG

字符串查找函數(shù)
AT ( expC1 , expC2 [ expN ]) AT(“B”, “ABCDE”) 結(jié)果是: 2

AT(“A”, “ABCDEASD” )

結(jié)果是: 1

AT(“A”,“ABCDEASD”,2 )

結(jié)果是: 6

大小寫字母轉(zhuǎn)換函數(shù)

LOWER( expC ) LOWER(“DFGHa”) 結(jié)果是: dfgha
UPPER( expC ) UPPER(“asdf”) 結(jié)果是: ASDF
數(shù)值函數(shù)
MAX(exp1,exp1[,exp3,…] MAX(15,23,4,56) 結(jié)果是: 56
MIN(exp1,exp1[,exp3,…] MIN(15,23,4,56) 結(jié)果是: 4
ABS( expN ABS(-15.83) 結(jié)果是: 15.83
INT( expN INT(25.62) 結(jié)果是: 25
壓縮空格函數(shù)
ALLTRIM( expC )

ALLTRIM(" AD B G ")

結(jié)果是: AD B G

類型轉(zhuǎn)換函數(shù)
STR( expN1[,expN2][,expN3]) STR(789.678,6,2) 結(jié)果是: 789.68
CTOD( expC )

CTOD(“98/10/15”)

結(jié)果是: 98/10/15

VAL( expC ) VAL("123.45") 結(jié)果是: 123.45
DTOC( expD )

DTOC({98/12/15})

結(jié)果是: 98/12/15

日期時(shí)間函數(shù)
DATE() DATE() 結(jié)果是: 2000/03/15
DATETIME()

DATETIME()

結(jié)果是: 2000/03/15 10:15:30

YEAR( expD ) YEAR({87/03/25}) 結(jié)果是: 1987
數(shù)據(jù)庫函數(shù)
RECNO( ) DBC( ) SEEK( )

其它函數(shù)

LEN( ) DELETED()
EOF( ) BOF( ) FOUND( ) EMPTY(exp) INLIST(,,)
RECCOUNT( )  SELECT( ) BETWEEN(,,) IIF(,,)
CHR() ASC()
TAG() INKEY()

自定義函數(shù)

由用戶為自己的應(yīng)用程序創(chuàng)建的專用函數(shù),可作為獨(dú)立的程序文件保存在磁盤上也可作為過程文件存放在其他程序中。

3. 表達(dá)式

即:變量、操作符、常量、函數(shù)、字段名、控制以及屬性的組合,求值結(jié)果為單個(gè)值。

表達(dá)式的類型:

算術(shù)表達(dá)式:由算術(shù)操作符和數(shù)值型數(shù)據(jù)構(gòu)成的表達(dá)式。

字符表達(dá)式:由字符操作符和字符型數(shù)據(jù)構(gòu)成的表達(dá)式。

日期表達(dá)式:由日期操作符和日期、時(shí)間型數(shù)據(jù)構(gòu)成的表達(dá)式。

邏輯表達(dá)式:由邏輯操作符和邏輯型數(shù)據(jù)構(gòu)成的表達(dá)式。

名稱表達(dá)式

由圓括號(hào)括起來的一個(gè)字符表達(dá)式,用來替換命令或函數(shù)中的名稱。

例: DBF_NAME="學(xué)生成績(jī)登記表"

USE (DBF_NAME)

宏替換:用宏替換符號(hào) & 表示,它與名稱表達(dá)式具有相似的作用。

例: 已知 A="1", B="2", C12="GOOD"

則 C&A&B="GOOD"

4. 操作符

數(shù)值操作符
( )
^ 或 **
*
/
%(取余數(shù))
+
-
關(guān)系操作符
<
<=
>
>=
<>   或 !=   或 # = =
邏輯操作符
()表達(dá)式分組
NO或!(非)
AND(和)
OR (或)
日期和時(shí)間操作符
+
-
注意: 日期型: 天數(shù) 時(shí)間型: 秒數(shù)
字符操作符:
+
-
$
兩個(gè)特殊的操作符 圓點(diǎn)操作符.):用于分隔對(duì)象的名稱以及分隔對(duì)象中的屬性、事件、方法。
范圍轉(zhuǎn)變操作符(::):提供了從一個(gè)子類中調(diào)用一個(gè)父類的方法。

 

6.3 程序設(shè)計(jì)基礎(chǔ)

1. 基本概念

程   序:為解決某一問題而設(shè)計(jì)的一系列指令。

主程序:通常被用戶直接執(zhí)行的程序。

子程序:在程序中被調(diào)用的程序。

源程序: 由人用源語言編寫的計(jì)算機(jī)程序,必須翻譯成機(jī)器語言后才能被執(zhí)行。

目標(biāo)程序: 是源程序經(jīng)過編譯后所產(chǎn)生的機(jī)器語言程序。

可執(zhí)行程序

源程序被編譯后產(chǎn)生的可被機(jī)器直接執(zhí)行的程序,具有 .EXE 擴(kuò)展名。在VFP中是指由項(xiàng)目管理器連編生成的、可脫離VFP環(huán)境運(yùn)行的程序。

應(yīng)用程序

指為完成專門工作而設(shè)計(jì)的一組相互聯(lián)系的例行程序和子程序。在VFP中是指一組 Visual FoxPro 程序、表單、菜單和其他文件經(jīng)項(xiàng)目管理器連編后形成的單個(gè)程序,不能脫離VFP環(huán)境運(yùn)行,擴(kuò)展名為.APP。

例行程序

按某種順序排列的、使計(jì)算機(jī)能執(zhí)行某種任務(wù)的指令集合,可以是一種專用的程序或作為程序的一部分。它可由若干個(gè)子程序組成。

2. 程序控制

(1) 順序語句

即按程序中的語句順序依次執(zhí)行。

(2) 分支語句

條件語句

情況語句

IF 條件

命令組1

[ ELSE

命令組2 ]

ENDIF

DO CASE

CASE 情況1

命令組1

CASE 情況2

命令組2

[OTHERWISE

其它命令組 ]

ENDCASE

3. 循環(huán)語句

FOR

循環(huán)語句(預(yù)知循環(huán)次數(shù))

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

命令組

ENDFOR | NEXT

DO WHILE

循環(huán)語句(未知循環(huán)次數(shù))

DO WHILE 條件

命令組

ENDDO

SCAN

循環(huán)語句(針對(duì)全部記錄)

SCAN [ 范圍 ] [FOR | WHILE 條件 ]

命令組

ENDSCAN

循環(huán)結(jié)構(gòu)中的LOOP命令和EXIT命令:

LOOP是短路語句,表示從此開始下一次循環(huán);

EXIT是退出語句,表示跳出循環(huán)。

4. 子程序

子程序的的形式可以是一個(gè)程序文件,也可以是一個(gè)過程或自定義函數(shù)。

 

子程序

自定義函數(shù)

過程

特點(diǎn)

總是被其他程序調(diào)用而不單獨(dú)執(zhí)行,可以調(diào)用其他子程序,不一定要返回一個(gè)值。 能以一個(gè)獨(dú)立的文件儲(chǔ)存,也可包含在調(diào)用程序中,必須返回一個(gè)值。 是一個(gè)程序段,是程序的組成部分,一般放在程序的最后。

定義方法

與程序相同,只是在子程序的結(jié)尾加需一條返回命令:

RETURN [ 表達(dá)式 |TO MASTER |TO 程序文件名]

FUNCTION 函數(shù)名

或:MODIFY COMMAND 函數(shù)名

PARAMETERS 數(shù)表

命令組

RETURN 表達(dá)式

注:用此命令定義的函數(shù)以獨(dú)立的文件形式儲(chǔ)存。

PROCEDURE 過程名

PARAMETRS 參數(shù)表

命令組

RETURN

調(diào)用方法

DO 子程序名[WITH 參數(shù)表 ] = 函數(shù)名 ( 參數(shù)表 ) DO 過程名 WITH 參數(shù)表

 

3. 創(chuàng)建應(yīng)用程序

方法一:

在命令窗口中輸入: MODIFY COMMAND 程序名

方法二

單擊文件菜單 新建 程序 新文件 在編輯窗口中編輯程序 完成后關(guān)閉 給出合適的程序名及保存位置 。

 

程序的注釋: 方法1: * | NOTE <注釋內(nèi)容> 可出現(xiàn)在程序中的任何地方

方法2: && <注釋內(nèi)容> 一般用于命令的尾部

給程序加注釋的目的是為了提高程序的可讀性。

面向過程的程序設(shè)計(jì)三步曲: 輸入 → 處理 → 輸出

4. 修改應(yīng)用程序

方法一:

在命令窗口中輸入: MODIFY COMMAND 程序名 | ?

注: 表示不知道程序名,要從打開對(duì)話框中選定。

方法 二

單擊文件菜單 打開 選擇所需程序并打開 在編輯窗口中對(duì)程序進(jìn)行修改 完成后關(guān)閉退出。

5. 執(zhí)行應(yīng)用程序

方法一: 在命令窗口中輸入: DO 程序名 | ?

方法二:從程序菜單中選擇執(zhí)行從打開對(duì)話框中選擇所需程序并執(zhí)行之。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多