第五章5574.docx

上传人:b****6 文档编号:5646678 上传时间:2022-12-30 格式:DOCX 页数:29 大小:221.44KB
下载 相关 举报
第五章5574.docx_第1页
第1页 / 共29页
第五章5574.docx_第2页
第2页 / 共29页
第五章5574.docx_第3页
第3页 / 共29页
第五章5574.docx_第4页
第4页 / 共29页
第五章5574.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

第五章5574.docx

《第五章5574.docx》由会员分享,可在线阅读,更多相关《第五章5574.docx(29页珍藏版)》请在冰豆网上搜索。

第五章5574.docx

第五章5574

第五章VFP6程序设计基础

第55课时VFP6程序设计基本概念

一、教学目标

1.掌握VFP6程序设计基本概念

二、教学重、难点

1.程序设计基本概念

三、教学方法

举例讲授演示

四、教学过程

VFP6支持过程化程序设计和面向对象程序设计两种程序设计与开发的类型。

下面是一个完整的VFP过程化程序,可以引出几个基本概念。

*功能说明:

求圆形的面积。

*文件名:

L501.PRG

CLEAR

CTALK=SET("TALK")

SETTALKOFF

INPUT"请输入圆的半径,半径="TOR

S=PI()*R*R

?

"半径为"+ALLTRIM(STR(R))+"的圆,面积=",S

SETTALK&CTALK

RETURN

1、从形式上看,VFP的程序是由若干有序的命令行组成,且满足下列规则:

(1)一个命令行内只能写一条命令,命令行的长度不得超过2048个字符,命令行以回车键结束。

(2)、一个命令行可以由若干个物理行组成,即一条命令在一个物理行内写不下时,可以分成几行。

换行的方法有两种:

一种是在物理行的末尾加符号“;”,表示下一行输入的内容是本行的继续;另一种是系统自动换行,即输入程序时,只管逐条命令输入,无需考虑本条语句是否超过屏幕行宽的最大限度,当输入的语句超过屏幕的最大行宽时,系统自动换行。

输入时只需在一行结束时按回车键,通知系统本命令行输入完毕。

(3)为便于阅读,可以按一定的格式输入程序,即一般程序结构左对齐,而控制结构内的语句序列比控制结构的语句缩进若干格。

2、从功能上看,程序可以分为三个部分:

第一部分是程序的说明部分,在本例程序中是前面的二行,一

般用于说明程序的功能、文件名等需要说明的有关信息。

第二部分是进行数据处理的部分,在本例程序中是从第3行开始的7行。

通常这部分程序常包括下列三个部分,依次为:

环境设置、数据处理、环境恢复。

第三部分是程序的控制返回部分,在本例中就是最后一条命令。

它控制程序返回到调用该程序的调用处。

本例是结合过程化程序设计来分析的,由于VFP6能够结合过程化程序设计和面向对象的程序设计,因而有必要弄清它们的概念:

过程化程序设计与面向对象程序设计

过程化程序设计:

它是采用结构化编程语句来编写的程序。

这类方法的特点是容易把一个复杂的程序分解为若干个较小的过程,每个过程都可进行独立的调试。

这类设计方法发展的总思想是从程序员角度考虑使程序设计更简单,而较少从使用角度去考虑。

使用这类方法设计的程序流程完全由程序员控制,使用者只能做由程序员预先安排好的事情。

面向对象程序设计:

这类程序设计思想是面向对象,即设计的重要任务在于描述对象。

程序是由事件驱动的,因而,在执行过程中,持续等待的是一个发生在对象上的事件。

而发生什么事件则要看使用者的操作,如单击、双击鼠标等。

至于下一步的程序流向,则要看驱动的是什么事件。

这类程序设计的主要目的是从任何方便与简化使用入手,由使用者控制程序流向,这在一定程序上增加了编程的难度。

 

第56课时程序设计基本操作

(一)

一、教学目标

1.掌握程序设计基本操作

二、教学重、难点

1.程序设计基本操作

三、教学方法

举例讲授演示

四、教学过程

1、使用“命令”窗口

可以在“命令”窗口中键入VFP6命令并按Enter键执行。

若要重新执行该命令,还可以将光标移到此命令所在行的任意位置并按Enter键。

甚至可以在“命令”窗口中像独立程序一样执行多行代码。

要在“命令”窗口中运行多行代码,可以按下述方法执行:

(1)选取代码行。

(2)按Enter键或右击并在快捷菜单中选择“运行所选区域”。

因为“命令”窗口是一个编辑窗口,所以在编辑命令时可以使用VFP6提供的编辑工具。

在“命令”窗口中可以修改、插入、删除、剪切、复制和粘贴正文。

在“命令”窗口中执行命令的优点是:

能够立即执行被键入的命令,不需要将其保存为文件并用程序方式执行。

此外,在菜单或对话框中所作的选择可以马上转换成“命令”窗口中的命令。

用户可以将这些命令复制并粘贴到VFP6程序中,然后重复执行这些程序。

这样做可以很容易地重复执行成百上千条的命令。

2、过程化程序设计基本操作

(1)建立过程化程序。

在VFP6中,过程化程序文件是ASCII文本文件,因而可用各类编辑工具来建立。

在VFP6中有下面二种简易方法来建立:

■在【文件】菜单下的【新建】菜单项中,选择“程序”项,再单击【新建文件】;

■在命令窗口中输入命令:

MODIFYCOMMAND<程序文件名>

格式:

MODIFYCOMMAND[<文件名>/?

]

功能:

打开文本编辑窗口,编写程序代码。

【例5-2】用户通过VFP6的命令窗口建立上例程序文件。

在VFP6的命令窗口中输入下条命令后按回车键。

MODIFYCOMMANDL501

 

第57课时程序设计基本操作

(二)

一、教学目标

1.掌握程序设计基本操作

二、教学重、难点

1.程序设计基本操作

三、教学方法

举例讲授演示

四、教学过程

运行程序下面的任一方法均可运行程序:

■选择【程序】菜单下的“运行”菜单,利用“运行”对话框选择要运行的程序;

■在命令窗口中输入如下命令:

DO<程序文件名>

系统就会运行这个程序。

如果文件不加扩展名,系统会假定它具有.PRG的扩展名,如果想运行一个具有其它扩展名的命令文件时,在输入命令时必须给出这个命令文件的全名。

如:

要运行上例中编辑的程序,可以在命令窗口中输入:

DOL501

然后按回车键执行。

(3)保存程序

创建程序后,一定要注意保存程序。

若要保存程序,可以从【文件】菜单中选择【保存】命令。

或者按Ctrl+W组合键保存,若不想保存对新建程序或已有程序所做的修改,也可以使用Ctrl+Q组合键,不存盘而退出编辑窗口。

若要关闭一个没有保存的程序,则会弹出相应对话框,提示用户是否保存已作的修改。

若保存了一个由项目管理器创建的程序,则该程序被加入到项目中。

若保存一个尚未命名的程序,则会打开“另存为…”对话框,提示用户可以在其中为程序指定程序名。

程序保存后,可以运行或修改它。

(4)修改程序

程序保存后可以修改。

首先,按以下四种方法之一打开想要修改的程序文件:

■若程序包含在一个项目中,则在项目管理器中选定它并选择修改命令。

■在【文件】菜单中选择【打开】命令,这时弹出一个包含文件列表的对话框,在“文件类型”列表框中选择“程序”,然后在文件列表中选定要修改的程序,单击【确定】按钮。

■在“命令”窗口中按如下方式键入要修改的程序名:

MODIFYCOMMAND<程序文件名>

■在“命令”窗口中输入:

MODIFYCOMMAND?

然后从文件列表中选择要修改的程序,单击【打开】按钮。

打开文件之后便可进行修改,修改完成后就可以保存。

第58课时程序设计基本操作(三)

一、教学目标

1.掌握程序设计基本操作

二、教学重、难点

1.程序设计基本操作

三、教学方法

举例讲授演示

四、教学过程

3、事件驱动程序设计基本操作

VFP6提供了真正的无模式操作,使用户不仅能够轻松地进行多个表单的自动协调,而且可以很容易地同时运行一个表单的多个实例。

VFP6还提供了事件处理机制,可以给用户提供一个更为丰富的交互环境。

事件驱动程序设计基本操作,关键是确定事件以及对事件发生时应作出的反应。

一个事件发生时,VFP6系统应作出的反应,仍可通过一个过程来实现,即用过程化程序设计的方法来处理某一事件发生时系统应作出的响应。

通常,VFP6程序设计时应考虑的事件有:

(1)核心事件表5-1是VFP6中核心事件列表,这些事件适用于大多数的控件。

(2)容器事件和对象事件。

为控件编写事件代码时,请注意以下两条规则:

■容器不处理与所包含的控件相关联的事件;

■若没有与某控件相关联的事件代码,则VFP在该控件所在类层次结构中逐层向上检查是否有与该事件相关联的代码。

当用户以任意一种方式(使用Tab键、单击鼠标等)与对象交互时,对象事件被触发。

每个对象独立接受自己的事件。

例如,在图5-2中,尽管命令按钮位于表单上,当用户单击命令按钮时,不会触发表单的Click事件,只触发命令按钮的Click事件。

若没有与命令按钮相关联的Click事件代码,尽管有与表单相关联的Click事件代码,当用户单击按钮时,也不会执行与表单相关联的Click事件代码。

 

第59课时程序设计基本操作(四)

一、教学目标

1.掌握程序设计基本操作

二、教学重、难点

1.程序设计基本操作

三、教学方法

举例讲授演示

四、教学过程

这些规则也适用于表格控件。

表格事件包含列,列又包含标头和控件。

事件发生时,只有与事件相关联的最底层对象识别该事件,更高层的容器不识别这个事件。

图5-3演示了当用户在表格上移动鼠标时,哪个对象处理这个MouseMove事件。

例如:

在一个命令按钮上,按下鼠标左键并拖动鼠标指针离开命令按钮,尽管鼠标指针可能已经在表单上,但这个命令按钮的MouseMove事件还在不断产生。

当在表单上而不是在命令按钮上释放鼠标时,发生的MouseUp事件是与命令按钮相关联的,而不是与表单的MouseUp事件相关联。

3)VFP6中类和控件事件

若表单上的控件基于一个用户自定义的类,当一个事件发生时,VFP首先在该控件中查看是否有与此事件相关联的代码,若找到,则执行它;否则,VFP将在类层次中向上一层检查。

无论VFP在类层次的哪个地方找到该事件的代码,都执行它,如图5-4所示。

(4)使用VFP6设计工具编写代码

借助表单设计器、类设计器和菜单设计器,用户可以很容易地把程序代码与用户界面连接起来,这样应用程序便可响应用户的操作并执行相应的代码。

同样,报表设计器将程序代码与报表文件联系起来,以定制结构复杂并且符合用户要求的报表。

如果想充分发挥VFP6的强大功能,应充分使用刚才提到的设计工具。

事件驱动的程序设计的重要任务是规划界面和设计对事件响应的方法程序。

界面规划在后续章节具体介绍。

对事件响应的方法程序仍是使用结构化程序设计的方法完成对相应事件响应的操作。

 

第60课时程序设计语言基础

(一)

一、教学目标

1.掌握程序设计语言基础的方法

二、教学重、难点

1.程序设计语言基础

三、教学方法

举例讲授演示

四、教学过程

交互式输入输出命令

设计程序,就是用一系列命令存储数据并操作这些数据。

程序设计的原材料是数据和数据的存储容器,而处理这些原材料的工具是命令、函数的操作符。

1、交互式输入命令

(1)字符接收语句

格式:

ACCEPT[<提示信息>]TO<内存变量名>

功能:

将从键盘上接收的字符串数据存入指定的内存变量中。

提供此命令是为了向后兼容,在VFP中可以用文本框控制命令代替。

参数描述:

[<提示信息>]:

指定提示信息字符串。

[<内存变量名>]:

指定存储字符数据的内存变量或数组元素。

如果没有定义此内存变量,ACCEPT将自动创建。

如果没有输入数据就按Enter键,内存变量或数组元素则为空字符串。

说明:

在VFP6的可视编程中可用文本框代替ACCEPT命令。

该命令允许直接向内存变量或数组元素输入字符数据,输入时不需要用字符串的定界符。

执行此语句时,先在屏幕上显示<提示信息>,光标紧随其后,然后暂停程序运行,等待用户从键盘上输入信息。

输入的信息可以是任何可显示的ASCII码字符串,并以回车键结束。

系统将此字符串信息存入指定的内存变量中,然后,继续运行暂停的程序。

【例5-3】试编程完成下述功能:

从键盘随机输入某个表的文件名,要求打开并显示此表的内容。

在命令窗口输入下列命令:

MODIFYCOMMANDL503

(文件名中的扩展名.PRG可省略,以后不再说明)

屏幕显示编辑窗口。

在编辑窗口输入如下程序代码后用Ctrl+W存盘,返回命令窗口。

CLEAR

SETTALKOFF

ACCEPT"请输入表文件名"TOFileName

USE(FileName)

LIST

USE

RETURN

说明:

程序中第四句使用了宏代换函数,这是由于FileName本身不是文件名,而其内容才是文件名。

 

第61课时程序设计语言基础

(二)

一、教学目标

1.掌握程序设计语言基础的方法

二、教学重、难点

1.程序设计语言基础

三、教学方法

举例讲授演示

四、教学过程

(2)通用数据接收命令

ACCEPT语句只能给字符型内存变量提供数据。

如果用户想给其它类型的内存变量提供数据,可以使用下列命令:

格式:

INPUT[<提示信息>]TO<内存变量名>

功能:

用于接收从键盘上输入的表达式,并将计算结果存入指定的内存变量或数组元素中。

包含此命令也是为了提供向后的兼容性。

在VFP中,该命令也可以用文本框控制代替。

参数描述:

[<提示信息>]:

提示信息,提示用户输入数据。

[<内存变量名>]:

指定一个内存变量或数组元素,存储从键盘输入的数据。

如果指定的内存变量或数组元素不存在,VFP将自动创建该内存变量或数组。

说明:

INPUT语句与ACCEPT语句的执行过程相同,功能相似。

<内存变量名>的数据类型取决于输入数据的类型。

可以为数字型、字符型、日期型和逻辑型。

INPUT语句与ACCEPT语句的区别是:

ACCEPT命令只能接收字符串,而INPUT语句可以接收任意类型的VFP表达式;如果输入的是字符串,ACCEPT语句不要使用字符型定界符,而INPUT语句必须用定界符括起来。

例5-4】试编程完成下列功能。

从键盘上随机输入一个正数,以此数为半径,求圆面积和球体积,并输出结果。

程序如下:

*L504.PRG

CLEAR

CTALK=SET("TALK")

SETTALKOFF

INPUT"半径="TOR

S=PI()*R*R

V=4/3*PI()*R**3

?

"圆面积=",S

?

"球体积=",V

SETTALK&CTALK

RETURN

程序中的第一行为注释行,说明此程序文件名;第四行的功能是不显示命令处理信息,第十行的功能是恢复显示命令处理信息。

第62课时程序设计语言基础(三)

一、教学目标

1.掌握程序设计语言基础的方法

二、教学重、难点

1.程序设计语言基础

三、教学方法

举例讲授演示

四、教学过程

输入一个字符语句

格式:

WAIT[<提示信息>][TO<内存变量名>]

功能:

暂停正在运行的程序,直到输入一个字符为止。

此语句与ACCEPT语句的功能部分相似。

若选择TO<内存变量名>子句,则将输入的单个字符存入指定的内存变量。

若直接输入回车键,则内存变量中存入空字符串。

内存变量的类型为字符型。

若选择<提示信息>子句,执行此命令时,屏幕上将显示提示信息,否则,屏幕上将显示“按任意键继续…”

WAIT语句主要用于下列两种情况。

■暂停程序的运行,以便观察程序的运行情况,检查程序运行的中间结果。

■根据实际情况输入某个字符,以控制程序的执行流程。

比如,在某应用程序的“Y/N”选择中,常用此命令暂停程序的执行,等待用户回答“Y”或“N”,由于这时只需输入单个字符,也不用按回车键,操作简便,响应迅速。

2、格式化输出命令

前面的章节中在屏幕上显示信息时,使用的是非格式化输出命令:

“?

”或“?

?

”,为了能按一定的要求来设计屏幕格式,使之美观、方便,下面介绍一个屏幕显示格式控制命令。

格式:

@<行号,列号>SAY<表达式>

能:

从指定的行、列号开始输出表达式的值。

说明:

①<表达式>可以是常数、字段变量及由它们组成的表达式。

②定位输出时,一次只能输出一个表达式。

3、程序设计辅助命令

(1)、中止程序运行

■在程序运行过程中,按Esc键可以中止程序的运行,系统会显示警告对话框让用户选择:

【取消】中止程序运行,这是缺省选择;

【挂起】暂停程序运行,返回命令窗口。

当选择【程序】菜单下的【继续执行】选项或在命令窗口中输入“Resume”命令,系统则从中止的地方继续程序的执行;

 

第63课时程序设计语言基础(四)

一、教学目标

1.掌握程序设计语言基础的方法

二、教学重、难点

1.程序设计语言基础

三、教学方法

举例讲授演示

四、教学过程

通常在程序的开始时加有命令:

SETESCAPEOFF

执行该命令后,Esc键处于关闭状态,在程序运行过程中,用户不能通过Esc键来中止程序的运行,因为在应用程序中,不希望中止它;而在程序调试阶段,通常不关闭这个键,让程序在运行过程中,随时都可以中断执行,以检查程序中间的运行状况

格式一:

CANCEL

功能:

结束程序的运行,返回命令窗口,同时关闭所有打开的文件。

格式二:

SUSPEND

功能:

暂时中止程序运行,返回命令窗口。

当在菜单中选择【程序】|【继续执行】时,或在命令窗口中输入RESUME命令时,系统再次从中止的地方继续执行程序。

(2)、注释命令

格式一:

NOTE/*<注释字符串>

格式二:

&&<注释字符串>

说明:

上述命令不作任何操作,只是注释标记,用于说明程序或命令的功能等。

注释内容不需要用定界符定界,执行时也不显示。

注释信息如果在一行内没有写完,换行时也必须再写注释命令。

NOTE或*是用于整行注释的,因此,它必须写在每一个注释行的开头;而&&命令是用于注释一行的部分内容的,因此,它可以写在行中(命令的尾部、注释信息的头部),这是程序中唯一可以在一个逻辑行写二个语句的命令。

USESTUDENT&&打开STUDENT表

3)文本显示命令

格式:

TEXT

<文本字符串>

ENDTEXT

功能:

将<文本字符串>原样输出。

这条命令通常是用于程序中对用户说明某些问题。

 

第64课时程序设计的条件与循环

(一)

一、教学目标

1.掌握程序设计的条件与循环的方法

二、教学重、难点

1.程序设计的条件与循环

三、教学方法

举例讲授演示

四、教学过程

VFP的程序结构可以分为三种:

顺序结构、分支结构、循环结构。

下面将以一个程序演示条件分支结构和循环结构,并对这些概念详细说明。

【例5-5】假设某单位有很多员工,并且要给月工资高于或等于1000元的员工增加5%的工资,给月工资低于1000元的员工增加10%的工资。

下面的示例程序将完成这一任务。

此示例程序假定已在当前工作区打开了员工工资表,表中有一个名为“月工资”的数值型字段。

*L505

CTALK=SET("TALK")

SETTALKOFF

SCAN

IF月工资>=1000

REPLACE月工资WITH月工资*1.05

ELSE

REPLACE月工资WITH月工资*1.1

ENDIF

ENDSCAN

SETTALK&CTALK

RETURN

在这一示例程序中用到了顺序结构、循环结构和条件分支结构。

1、顺序结构程序设计

顺序结构程序设计是结构化程序设计的基础,即是按完成任务所需步骤的先后顺序逐条命令的编写。

2、分支结构程序设计

分支结构就是根据条件的计算结果执行不同的操作。

条件分支结构逻辑流程图如图5-6所示,VFP6中有两条命令实现条件分支:

(1)单条件分支

格式:

IF<条件表达式>

<语句序列1>

[ELSE

<语句序列2>]

ENDIF

参数描述:

<条件表达式>:

指定要计算的逻辑表达式。

如果<条件表达式>的值为“真”,则执行IF语句之后的<语句序列1>;如果<条件表达式>的值为“假”,而且包含ELSE语句和<语句序列2>,则执行<语句序列2>;如果<条件表达式>的值为“假”,而且不包含ELSE语句和<语句序列2>,则程序忽略IF语句和ENDIF语句之间的所有语句,程序从ENDIF语句后的第一条命令开始继续往下执行其它程序。

说明:

一个IF…ENDIF语句块中可以嵌套另一个IF…ENDIF语句块。

从【例5-5】所示的程序中可以看到:

当当前记录中“月工资”字段的值大于等于1000元时,将使“月工资>=1000”这个条件表达式的值为“真”,此时,程序控制执行<语句序列1>“REPLACE月工资WITH月工资*1.05”,即将月工资高于或等于1000元的工资上调5%。

否则,即当当前记录中“月工资”字段的值低于1000元时,将使“月工资>=1000”这个条件表达式的值为“假”,此时,程序控制执行<语句序列2>“REPLACE月工资WITH月工资*1.1”,即将月工资低于1000元的工资上调10%。

 

第65课时程序设计的条件与循环

(二)

一、教学目标

1.掌握程序设计的条件与循环的方法

二、教学重、难点

1.程序设计的条件与循环

三、教学方法

举例讲授演示

四、教学过程

多条件选择语句

格式:

DOCASE

CASE<条件表达式1>

<语句序列1>

[CASE<条件表达式2>

<语句序列2>

CASE<条件表达式N>

<语句序列N>]

[OTHERWISE

<语句序列N+1>]

ENDCASE

参数描述:

CASE<条件表达式1><语句序列1>…:

VFP在执行这条多条件选择命令时,按命令行中写出的条件表达式的顺序逐条检查<条件表达式>,当遇到第一个结果为“真”的<条件表达式>时,就执行它后面的语句序列。

语句序列中的命令逐条被执行,直到遇到下一个CASE或OTHER-WISE或ENDCASE,然后,

再从ENDCASE语句后的第一条命令开始继续执行其它命令。

如果一个CASE<条件表达式>的<条件表达式>为“假”,就忽略它后面的语句序列。

【例5-6】运行一个程序,随机输出一条信息:

CLEAR

AA=INT(RAND()*10)&&随机产生一个10以内的整数

DOCASE

CASEAA=0

?

“这次产生的随机数是:

0”

CASEAA=1

?

“这次产生的随机数是:

1”

CASEAA=2

?

“这次产生的随机数是:

2”

CASEAA=3

?

“这次产生的随机数是:

3”

OTHERWISE

?

“这次产生的随机数是:

大于3!

ENDCASE

第66课时程序设计的条件与循环(三)

一、教学目标

1.掌握程序设计的条件与循环的方法

二、教学重、难点

1.程序设计的条件与循环

三、教学方法

举例讲授演示

四、教学过程

循环语句

程序设计中的循环,是指在程序中从某处开始,有规律地反复执行某一个程序块的现象。

VFP的循环命令有三类:

基于条件的循环、基于计数的循环和基于表的循环。

(1)基于条件的循环:

DOWHILE命令

格式:

DOWHILE<条件表达式>

[<语句序列>]

[EXIT]

[LOOP]

ENDDO

参数描述:

<条件表达式>:

指定一个逻辑表达式,它的值决定是否执行DOWHILE和ENDDO之间的命令集合。

如果<条件表达式>的值为“真”,就执行命令集。

[<语句序列>]:

指定当<条件表达式>计算为“真”时要执行的VFP命令集。

[LOOP]:

直接将程序控制返回到DOWHILE语句,并重新计算条件值。

LOOP可以放在DOWHILE和ENDDO之间的任何位置。

[EXIT]:

将程序控制从DO

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1