Visual Foxpro程序设计第四章第8讲 用户自定义函数和过程

合集下载

VFP-04-06-变量作用域、自定义函数

VFP-04-06-变量作用域、自定义函数

变量作用域、自定义函数4.5.3 内存变量的作用域变量的作用域:变量的作范围。

程序由模块(主、子程序)组成,模块中有内存变量,内存变量有作用范围。

变量的作用域,从定义变量处开始,一直向下。

1.定义全局内存变量全局变量既可以是单个变量,也可以是数组。

分别以下列格式定义。

格式1:Public <内存变量表>格式2:Public <数组名1>(上界1[,上界2[, ...])[,…]功能:定义全局变量。

①<内存变量表>中既可含普通变量,也可含数组。

②全局变量不会自动释放。

只能用release命令显式释放,或退出VFP。

③VFP命令窗口中定义的变量,默认为全局变量。

④全局数组的每个元素都是全局的。

第116页,例 4.35主程序中使用子程序中定义的全局变量。

*文件名Main.prgset talk offclearclear memory &&清除所有内存变量I=2 &&默认是私有的Do ABC?"主程序中的输出结果:"?"I="+str(I,2)+" J="+str(J,2)set talk onreturn*---------------------Procedure ABCpublic JJ=I*8J=J+5?"过程中的输出结果:"?"I="+str(I,2)+" J="+str(J,2)return小提示:要检测全局变量,请先clear memory以排除干扰。

2.定义局部内存变量(1)什么叫局部?更小的范围就是局部。

对于一个模块,更后的部分是局部。

对于主程序,子程序是局部。

(2)Private定义局部变量格式1:Private <内存变量表>格式2:Private <数组名1>(上界1[,上界2[, ...])[,…]功能:定义局部变量。

《Visual-Foxpro程序设计》教学大纲精选全文完整版

《Visual-Foxpro程序设计》教学大纲精选全文完整版

可编辑修改精选全文完整版《Visual Foxpro程序设计》教学大纲一、课程的性质和任务Microsoft Visual Foxpro关系数据库是新一代小型数据库管理系统的杰出代表。

它具有强大的性能、完整而丰富的工具、较高的处理速度、友好的界面以及完备的兼容性等特点。

是用户收集信息、查询数据、创建集成数据库系统、进行应用系统开发较为理想的工具软件。

目前在我国有广泛的应用基础和用户群。

《Visual FoxPro程序设计》课程是目前国内各高校普遍开设的一门计算机公共课程,学习本课程将有助于学生巩固、加深和拓展已有的计算机和信息技术知识;掌握基本的数据库应用技术和基于数据库的应用程序设计技术;培养逻辑思维能力,以及分析问题和解决问题的能力。

将专业知识与计算机信息管理知识和技能结合起来,使之在今后的学习和工作中适应新时代的要求。

二、课程教学目标(一)知识教学目标本课程为必修课,按照本大纲采用同一程序设计语言开课的各专业统一内容、统一要求、统一考试。

通过本课程的课堂教学与上机实训,要求学生:1、了解信息(Information)、数据(Data)、数据库(Data Base)、数据库管理系统(DBMS)和数据库系统(DBS)的基本概念,以及数据库技术在当今社会各个层面管理中应用的重要性。

2、熟悉Visual FoxPro的用户界面和运行方式,掌握Visual FoxPro的各种数据类型,以及常量、变量、表达式、函数等各种数据元素,掌握Visual FoxPro 的命令格式和主要文件类型等基础知识。

3、掌握数据表的创建方法,以及数据记录的插入、删除、修改、排序、索引、查找、统计汇总等基本操作,同时掌握多个数据表之间的关联、更新等操作。

4、掌握数据库创建与维护的方法,以及数据字典、数据视图、数据库表之间的永久关系和参照完整性等知识,掌握应用数据库技术管理大量信息的基本技能。

5、熟悉SQL结构化查询语言,了解该语言的特点;着重掌握SQL的数据定义语言、数据修改语言和数据查询语言,能够使用基本SQL命令创建、维护和查询数据库和数据表。

Visual Foxpro程序设计第四章第8讲 用户自定义函数和过程

Visual Foxpro程序设计第四章第8讲 用户自定义函数和过程
ENDFOR ENDIF RETURN (s)
中国矿业大学计算机学院 李向群
10
用户自定义函数
中国矿业大学计算机学院 李向群
例2:创建一个用户自定义函数CCDOW()。功能是: 返回一个日期是星期几,如:CCDOW({^1999/3/1}) 的返回值是“星期一”。
CLEAR
cx={} @4,20 SAY "请输入一个字符型日期: " GET cx
FUNCTION CCDOW(cx)
dx = DOW(cx)
DO CASE
CASE dx=1
title1 = "星期日"
CASE dx=2
title1 = "星期一"
……
CASE dx=7
title1 = "星期六"
ENDCASE
RETURN (title1)
ENDFUNC
15
过程
中国矿业大学计算机学院 李向群
中国矿业大学计算机学院 李向群
第四章 Visual FoxPro程序设计基础 第8讲 用户自定义函数和过程
1
中国矿业大学计算机学院 李向群
用户自定义函数和过程
在程序设计中,经常把完成一个特定功 能的程序编写成一个函数或过程,作为一个 独立的模块,以便在其他程序使用该功能时 调用此模块。
这种用以完成一个特定功能的程序,称 为用户自定义函数或过程。
……
CASE dx=7
title1 = "星期六"
ENDCASE
RETURN (title1)
ENDFUNC
12
中国矿业大学计算机学院 李向群
用户自定义函数举例(二)

VisualFoxPro数据库应用-自定义函数

VisualFoxPro数据库应用-自定义函数

VisualFoxPro数据库应用-自定义函数
自定义函数
Visual FoxPro 的函数分为两大类:
系统函数(内部函数)和自定义函数(外部函数)。

系统函数:是Visual FoxPro 提供的系统内部函数。

它实际上是一个预先存放在函数库中的一个子程序。

用户只需给出函数名和自变量,即可使用。

自定义函数:是用户为完成某种运算自己编写的函数。

自定义函数一旦定义,用户便可以像使用系统函数一样使用自定义函数。

自定义函数的扩展名为.PRG。

无论是系统函数还是自定义函数都是定义了一种关系,因此,函数必须返回一个值。

1、自定义函数的书写格式:
[FUNCTION <函数名>]
[PARAMETERS <内存变量名>]
函数体
RETURN <表达式>
功能:定义自定义函数。

说明:定义一个自定义函数时,最后一条命令是RETURN<表达式>。

<表达式>的值就是函数的返回值。

2、自定义函数的调用命令:
格式1:DO <文件名> [WITH <参数表>]
格式2:?<文件名> [WITH <参数表>]
格式3:<内存变量名>=<文件名>[WITH <参数表>]。

VFP过程设计课件

VFP过程设计课件
5.6 过程程序设计
1、子程序
2、过程
3、参数传递 4、自定义函数
2014年11月18日
主程序:cc.prg @2,3 say “好好学习 Do p1 3 Do p2 个 Return 程 序 子程序p1.prg 文 @3,3 say “********” 件 子程序p2.prg @4,3 say “天天向上”
流程二
多个子程序
定 义 为 procedure
流程一 过程文件:存放多个过程的程序文件, 多个子程序 扩展名 .prg
打开过程文件: 义 procedure Set procdure to [过程文件名] 为 多个过程 关闭过程文件: Set procdure toΒιβλιοθήκη 存 放 于定多个过程
存 放 于
一个过程文件
定 义 为
procedure
流程一
多个过程
存 放 于
自 动 打 开
主程序后面
练习一
Clear @4,10 say “白日依山尽” 编程:输出下面唐诗,要求主程 Do p1 序aa.prg只输出第一句,其他三 Do p2 Do p3 句分别使用三个过程输出,定义 Return 的过程放在主程序后面 Procedure p1 @5,10 say “黄河入海流” 白日依山尽 Endproc Procedure p2 黄河入海流 @6,10 say “欲穷千里目” 欲穷千里目 Endproc Procedure p3 更上一层楼 @7,10 say “更上一层楼” endproc
流 程 二
改写
Clear @4,10 say “白日依山尽” Set procedure to f:\gc.prg Do p1 Do p2 Do p3 Set procedure to Return Procedure p1 @5,10 say “黄河入海流” Endproc F:\gc.prg Procedure p2 @6,10 say “欲穷千里目” Endproc Procedure p3 @7,10 say “更上一层楼” endproc

visualfoxpro程序设计第四章.ppt

visualfoxpro程序设计第四章.ppt
第4章 自由表的建立与操作
王兰 2011.9.23
1
主要内容



建立表 向表中加入记录 数据的显示和修改方式 控制字段和记录的访问 数据表中记录的定位 删除和恢复表中的数据 快速修改表中的数据
2
4.1 建立表
4.1.1 定义表的结构
在 Visual FoxPro 系统中,一张二维表对应一个 数据表,称为表文件(Table)。 定义数据表的结构,就是定义数据表的字段个数、 字段名、字段类型、字段宽度及是否以该字段建立索 引等。 一张二维表由表名、表头、表的内容三部分组成, 一个数据表则由数据表名、数据表的结构、数据表的 记录三要素构成。
7
4.1.3 表的打开与关闭
打开:Use [ <表名>.dbf ] [ In <工作区号>/<别名>] [Again] [Alias <别名>] [Exclusive] / [Noupdate Shared] In<工作区号><别名>:指定打开表的工作区号; Again:可以在某一工作区中打开已在其他工作区中打开的表。 Alias<别名>:打开表的同时定义表的别名; Exclusive:以独占方式打开表; Noupdate shared:以只读方式打开表。 关闭:close all 关闭所有打开的表; close tables 关闭当前数据库中所有打开的表; close tables all 关闭所有数据库中所有打开的表及自由表。
8
4.1.4 利用表设计器修改表结构
修改表结构的操作步骤---菜单
文件 打开 表的名字 表设计器
保存
修改
删除
增加
修改表结构的操作步骤---命令

VFP实验 过程文件与自定义函数

VFP实验 过程文件与自定义函数

实验4-4 过程文件与自定义函数一、实验目的加强对过程文件与自定义函数概念的理解,掌握过程文件与自定义函数在程序设计中的运用,并掌握程序之间数据传递的方法。

二、实验准备复习教材中有关子程序与自定义函数的内容,重点掌握子程序、过程与过程文件、自定义函数等概念,理解本节给出的实例。

三、实验内容1.用过程文件的形式编写程序,求1!+3!+5!+ + n!的值,n从键盘输入,阶乘计算用过程。

*1.用过程文件的形式编写程序,求1!+ 3!+ 5!+ + n!的值,n从键盘输入,阶乘计算用过程。

SET TALK OFFCLEARINPUT "n=" TO nS=0Q=""FOR J=1 TO n STEP 2T=1DO jc WITH JS=S+TQ=Q+ALLTRIM(STR(J,19))+"!+"ENDFOR?LEFT(Q,LEN(Q)-1)+"="+ALLTRIM(STR(S,19,2))SET TALK ONPROCEDURE JCPARAMETERS XFOR I=1 TO XT=T*IENDFORRETURNENDPROC2.编写自定义函数,判断X是否是素数,返回结果为逻辑值.T. 或 .F.。

*2.编写自定义函数,判断X是否是素数,返回结果为逻辑值.T. 或 .F.。

CLEARPROCEDURE SSPARAMETERS QFOR N=2 TO Q-1IF INT(Q/N)=Q/NEXITENDIFENDFORIF N>Q-1RETURN .T.ELSERETURN .F.ENDIFENDPROC3.编写程序,要求利用参数传递和过程文件求解:(m! + n!) ((m - n)!+ m^n + m^m )的值。

M,N从键盘上输入且M>N,要求使用子程序和过程文件两种方式实现。

*3.编写程序,要求利用参数传递和过程文件求解:(m! + n!) ((m - n)!+ m^n + m^m )的值。

《Visual Foxpro 6.0程序设计基础教程》教学课件 VF第4单元

《Visual Foxpro 6.0程序设计基础教程》教学课件 VF第4单元
精品教材系列丛书
Visual FoxPro 6.0 程序设计根底教程
第4单元
第4单元 数据库的根本操作
学习任务 数据库的根本操作 数据库的使用
程序设计基础教程
第4单元 数据库的根本操作
任务安排 任务4.1 掌握数据库的根本操作 任务4.2 掌握数据库的使用方法
程序设计基础教程
任务4.1 掌握数据库的根本操作
该命令的格式、功能和说明如下:
SORT TO <表文件名> ON <字段名1>[/A/D][/C][,<字段名2> /A/D] [/C] …][ASCENDING / DESCENDING] [<范围>] [FOR <条件>] [WHILE < 条件>][FIELDS <字段名表>]
命令使用本卷须知:
程序设计基础教程
ON后字段的类型不能是备注型和通用型。
/A:升序;/D:降序;/C:不区分大小写。/C可以和/A或/D同时使用, 可以写成/AC或/DC。 ON后有多个字段时,第一字段为主排序字段,第二字段为次排序字段, 依次类推。 假设每个字段都按升序或降序排列,可用ASCENDING〔升序〕或 DESCENDING〔降序〕,但/A或/D的优先级高于它们。
删除数据库:
程序设计基础教程
要删除数据库,主要有两种方法,一是使用DELETE DATABASE命令, 一是使用工程管理器。
〔1〕使用命令删除数据库
DELETE DATABASE <数据库文件名> | ? [DELETETABLES] [RECYCLE]
指定要删除的数据库。
在删除数据库文件的 同时,也删除数据库中 的表文件。默认情况下, 不删除表文件。

VFP自定义过程和函数

VFP自定义过程和函数

[课题]:自定义过程、函数与子程序[目的要求]:了解子程序、自定义过程与函数,掌握自定义过程与函数的格式、参数、调用,通过实例领会自定义过程与函数的编写。

了解有关形参与实参的概念,掌握调用过程与函数时参数的传递[重点]:过程与函数的格式、参数、调用;过程与函数的编写;参数的传递。

[难点]:解决问题能力的培养和提高。

[学时]:4学时[教学过程及内容]:导入:程序设计时,将一个大的程序按功能分解成若干相对独立的模块,一个模块用来完成一个特定的任务。

由其它模块调用的、完成某种特定功能的独立程序,叫做子程序或过程、函数。

例如求8!+6!+9!的和。

如果我们把求阶乘的程序写成一个子程序或过程或函数,那么在执行时只是参数不同罢了。

这样就大大地简化了我们的程序。

今天我们一起来了解有关于子程序、过程、函数的有关内容。

新授内容:一、子程序概念:子程序实质上是一个程序文件。

1、建立:modi comm 子程序名2、格式:与程序一样3、调用:do 子程序名 [WITH 参数]4、例:求8!+6!+9!的和&&main.prg JC.PRGSET TALK OFF SET TALK OFFCLEAR CLEARS=0 P=1N=8 FOR I=1 TO NDO JC P=P*IN=6 ENDFORDO JC S=S+PN=9 RETURNDO JCSRETURN或&&MAIN.PRG JC.RPGSET TALK OFF PARAMETERS NCLEAR P=1S=0 FOR I=1 TO NDO JC WITH 8 P=P*IDO JC WITH 6 ENDFORDO JC WITH 9 S=S+PS RETURNRETURN二、自定义过程概念:由procedure开头,endproc结尾一段代码,我们称之为过程。

1、格式:PROCEDURE 过程名[LPARAMETERS 参数列表]过程体[RETURN [TO MASTER|TO 程序名]]ENDPROC2、例CLEARS=0DO JC WHIT 8DO JC WITH 6DO JC WITH 9“8!+6!+9!的和为:”SRETURNPROCEDURE JCLPARAMETERS XP=1FOR I=1 TO XP=P*IENDFORS=S+PENDPROC3、说明:(1)过程名的定义同变量命名规则(2)参数用于接受从调用语句传过来的值(do jc with 6),各参数间用“,”分隔。

VisualFoxPro第8讲(1)

VisualFoxPro第8讲(1)

运行
保存
代码
属性
表单控件
2.
用表单向导创建表单 在Visual FoxPro系统中,除使用表单设计 器创建新的表单外,还可以使用表单向导创建 新的表单,不过由表单向导创建的只能是数据 表单。
3. 表单的运行
(1)直接使用命令。在命令窗口,直接输入命令:
DO FORM 〈表单名〉
(2)在表单设计器窗口,选择“表单”菜单中的“运行” 命令,或直接单击工具栏中的红色惊叹号。 (3)在项目管理器中,选中“文档”选项卡并指定要运 行的表单,单击“运行”按钮。
4.打开数据环境设计器
在表单设计器环境下,单击表单设计器工具栏 上的“数据环境”按钮或选择Visual.FoxPro“显 示”菜单中的“数据环境”命令,即可打开数据环 境设计器。
5.向数据环境添加表或视图 6.从数据环境移去表或视图 7.在数据环境中设置关系 8.在数据环境中编辑关系 9.向表单添加字段
2.表单事件
以下3个事件用于表单和表单集:
(1)Load事件:该事件代码从表单装入内存至表单
被释放期间仅被运行一次。 (2)UnLoad事件:在表单被释放时发生,是释放表 单或表单集的最后一个事件。 (3)Activate事件:该事件代码从表单装入内存至 表单被释放期间可被运行多次 。
3.鼠标事件 (1)Click事件:鼠标左键单击对象时发生的事件。
11.命令按钮组控件 “命令按钮组”控件是把一些命令按钮组合在一 起,作为一个控件管理。每一个命令按钮有各自的属 性、事件和方法,使用时仍需独立操作某一个指定的 命令按钮。 “命令按钮组”控件的主要属性是Buttoncount, 用来定义命令按钮组包含的命令按钮的个数。
12.页框控件 “页框”控件用来把多个不同格式的容器类对象封 装在一个页框中。一个页框中可以有多页对象,而在每 页中又可以包含若干控件。 “页框”控件的主要属性是:“页框”包含多少页、 每页的标题等。

Visual FoxPro6.0程序设计教程第四章 索引、排序与多表操作

Visual FoxPro6.0程序设计教程第四章 索引、排序与多表操作
说明: <字段名1>:指定主排序字段。如果有多个排序字段,先 按<字段名1>排序,对于字段值相同的记录,再按<字段名 2>排序。 <表文件名>:新建的数据表文件名,默认扩展名 .dbf。 注意:该命令最终的结 [/A][/D][/C]:指明按字段的升序、降序排序和排序时不区 果是生成一个新表!!且 分字母大小写。 使用该命令不需要建索引! Ascending | Descending:对没有用/A或/D指明排序顺序 的字段按升序或降序排序。 For <条件表达式>:对满足条件的记录进行排序。 Fields <字段名表>:指定新文件中所含字段及其顺序。
每次表打开时自动打 索引 开,并且在表修改时 自动更新的索引文件, 通常与表同名,但扩 展名是.CDX
VFP6.0索引文件
结构复合索引文件 复合索引文件(· CDX )
包含多个索引入口的索 引文件,在使用时需明 确指定打开
非结构复合索引文件
4.2 索引
4.2.2 索引的分类
三种索引文件的比较
索引类型
4.1 排序 对表文件进行物理位置的整理
命令格式:Sort To <表文件名> On <字段名1>[/A] [/D] [/C] [,<字段名2 >[/A] [/D] [/C]…] [Ascending | Descending] [For <条件表达式>] [Fields <字段名表>]
4.1 排序
独立 .idx
描述 必须明确的打开, .idx的基本 名由用户定义 必须明确的打开,使用和表名 不同的基本名 使用和表文件名相同的文件名, 和表一起自动打开

《Visual FoxPro 6.0数据库与程序设计》课件 第4章 查询和视图(电子版)

《Visual FoxPro 6.0数据库与程序设计》课件 第4章  查询和视图(电子版)

利用查询设计器得到的查询文件是一个文本文件,用户可 以查看其内容。 打开查询设计器,选择“查询|查看SQL”命令,打开一个 只读窗口,其中显示了一条SQL语句,它包含了用户创建这个查 询的所有信息。
18
4.2.1 视图的概念
通过视图不仅可以从多个表中提取数据,还可以在改变视
图数据后,把更新结果送回到数据源表中。 视图不能以自由表文件的形式单独存在,它必须依赖于某 个数据库,并且只有在打开相关的数据库之后,才能创建和使
(6)运行查询,获得查询结果。
4
4.1.2 创建查询
1. 启动查询设计器 (1)项目管理器:选择 “查询”数据项,单击“新建”按钮, 出现“新建查询”对话框,选择“新建查询”命令,打开查询 设计器。 (2)菜单:选择“文件|新建”命令,在“新建”对话框中选 择“查询”文件类型,然后单击“新建文件”按钮。
第4章 查询和视图
2
4.1 查询
查询和视图是检索和操作数据库的两个基本手段。

两者都可以从一个或多个相关联的数据表中提取有用的信息。 查询可以根据表或视图定义,它不依赖于数据库而独立存在, 可以显示但不能更新由查询检索到的数据(查询结果是只读 的)。

视图兼有表和查询的特点,它可以更改数据源中的数据,但
例:将“学生1”表中的“学号”字段更名为“学生证编号“
ALTER TABLE 学生1 RENAME COLUMN 学号 TO 学生证编号
对“学生1”表中的“姓名”和“出生日期”字段建立主索引
ALTER TABLE 学生1 ADD PRIMARY KEY 姓名+DTOC(出生日期) TAG 姓名_生日
(3)命令:CREATE QUERY <查询文件名>

vf子程序、函数与过程

vf子程序、函数与过程
子程序: z2.prg x3=x3+1 return to jc &&自定义jc函数 parameters jcn &&将n的值传给参数jcn f=1 &&阶乘初值 for k=1 to jcn f=f*k &&计算阶乘,结果存入f endfor return f &&将f的值返回调用函数
modify command main
*main.prg set talk off input "输入n:" to n s=0 do sum with n ?s set talk on return procedure sum parameters sn for k=1 to sn s=s+k endfor endproc
modify command main
*main.prg set talk off input "输入x:" to x input "输入y:" to y z=fun2(x,y) ?x,y,z set talk on return
modify command fun2
*fun2.prg parameters a,b c=a*a-b*b return c
例求组合:Cn
modify command cmn set talk off input “输入m” to m input “输入n” to n c=jc(m)/(jc(n)*jc(n-m)) ?c set talk on return
m
function jc parameters jcn f=1 for k=1 to jcn f=f*k endfor return f
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

……
CASE dx=7
title1 = "星期六"
ENDCASE
RETURN (title1)
ENDFUNC
12
中国矿业大学计算机学院 李向群
用户自定义函数举例(二)
使用形式:
函数是一个独立的程序文件,文件名即 函数名。
13
用户自定义函数
中国矿业大学计算机学院 李向群
例3:创建一个用户自定义函数CCDOW()。功能是: 返回一个日期是星期几,如: CCDOW({^1999/3/1}) 的返回值是“星期一”。
中国矿业大学计算机学院 李向群
第四章 Visual FoxPro程序设计基础 第8讲 用户自定义函数和过程
1
中国矿业大学计算机学院 李向群
用户自定义函数和过程
在程序设计中,经常把完成一个特定功 能的程序编写成一个函数或过程,作为一个 独立的模块,以便在其他程序使用该功能时 调用此模块。
这种用以完成一个特定功能的程序,称 为用户自定义函数或过程。
READ @8,20 SAY "输入的日期是: "
??CCDOW(cx)
RETURN
11
用户自定义函数
中国矿业大学计算机学院 李向群
FUNCTION CCDOW(cx)
dx = DOW(cx)
DO CASE
CASE dx=1
title1 = "星期日"
CASE dx=2
title1 = "星期一"
(2)过程文件的打开
【格式】SET PROCEDURE TO <过程文件名>
(3)过程文件的关闭
【格式】CLOSE PROCEDURE
17
中国矿业大学计算机学院 李向群
(1)用户自定义函数有两种使用形式,一是直接写在______ 中,是主程序的一个相对独立的程序段; (2)用户自定义函数还可以定义为一个独立的程序文件, _______即函数名。 (3) PARAMETERS用于定义函数中的_________,以接收主程 序中的实参数。 (4)打开默认路径下的过程文件A的命令为_____________。
&&调用函数fJC
INPUT "请输入y的值:" TO y
s2=fJC(y)
&&调用函数fJC
?STR(x,4),"!+",STR(y,4),"!=",STR(s1+s2,8)
RETURN
9
用户自定义函数
*函数fJC的定义 FUNCTION fJC
PARAMETERS n s=1 IF n>=1
FOR i=1 TO n s=s*i
2
用户自定义函数
中国矿业大学计算机学院 李向群
一、定义格式
FUNCTION <用户自定义函数名>
[PARAMETERS <形式参数表>]
<语句行序列> RETURN [<表达式>] ENDFUNC
函数体
返回值, 缺省为.T.
3
中国矿业大学计算机学院 李向群
用户自定义函数
【说明】 (1)FUNCTION是函数的标识符,其后是函数名。 如果该函数是个独立的程序文件,则其扩展名默认 为.prg,并且可以在命令窗口中使用MODIFY COMMAND <函数名>来建立或编辑该用户自定义函 数。 (2)用户自定义函数的函数名不能和Visual FoxPro 系统函数同名,也不能和内存变量同名。
5
中国矿业大学计算机学
(1)直接写在主程序中,是主程序的一个相对独 立的程序段;
(2)一个独立的程序文件,文件名即函数名。
6
用户自定义函数
中国矿业大学计算机学院 李向群
二、调用格式 函数名([<参数表>]) 【功能】用户自定义函数可以出现在主程序的任何 表达式中,当程序执行到该用户自定义函数时,会将 主程序中的参数(实参数)传递给用户自定义函数中 由PARAMETERS所定义的形式参数,并执行函数体,直 到遇到RETURN语句,即将函数的值返回到主程序的调 用部分。
FUNCTION CCDOW(cx)
dx = DOW(cx)
DO CASE
CASE dx=1
title1 = "星期日"
CASE dx=2
title1 = "星期一"
……
CASE dx=7
title1 = "星期六"
ENDCASE
RETURN (title1)
ENDFUNC
15
过程
中国矿业大学计算机学院 李向群
定义格式
PROCEDURE <过程名> [PARAMETERS <形式参数表>] <语句行序列> RETURN
ENDPROC
调用格式
DO <过程名> [WITH <参数表>]
16
过程
中国矿业大学计算机学院 李向群
多个过程存放在一个文件中。
(1)过程文件的建立
【格式】MODIFY COMMAND <过程文件名>
7
中国矿业大学计算机学院 李向群
用户自定义函数举例(一)
使用形式:
函数直接写在主程序中,是主 程序的一个相对独立的程序段
8
用户自定义函数
中国矿业大学计算机学院 李向群
例1:利用用户自定义函数求x!+y!,要求x
和y从键盘上随机输入。
CLEAR
INPUT "请输入x的值:" TO x
s1=fJC(x)
ENDFOR ENDIF RETURN (s)
中国矿业大学计算机学院 李向群
10
用户自定义函数
中国矿业大学计算机学院 李向群
例2:创建一个用户自定义函数CCDOW()。功能是: 返回一个日期是星期几,如:CCDOW({^1999/3/1}) 的返回值是“星期一”。
CLEAR
cx={} @4,20 SAY "请输入一个字符型日期: " GET cx
(1)主程序文件,文件名为MAIN.PRG CLEAR cx={} @4,20 SAY "请输入一个字符型日期: " GET cx READ @8,20 SAY "输入的日期是: " ??CCDOW(cx) RETURN
14
用户自定义函数
中国矿业大学计算机学院 李向群
(2)用户自定义函数文件,文件名为CCDOW.prg
4
中国矿业大学计算机学院 李向群
用户自定义函数
【说明】 (3)PARAMETERS用于定义函数中的形式参数,以 接收主程序中的实参数。 (4)<语句行序列>即为函数体,由一系列代码组成, 可以完成特定的任务。简单的函数其函数体可以为空。 (5)RETURN [<表达式>]语句用于返回函数值,其 中<表达式>的值就是函数值。若<表达式>省略,则返 回的函数值为.T.。一个函数必须在程序运行结束时返 回一个函数值,这是函数的基本特点。
相关文档
最新文档