1.26k likes | 1.43k Views
程序设计初步. 程序设计基本内容. 程序文件的建立、运行和修改. 顺序结构程序设计. 选择结构程序设计. 循环结构程序设计. 数组. 子程序及变量的局域性. 程序文件. 由命令组成 , 计算机可以自动执行 可由任何编辑软件生成( VFP 本身有编辑器) 文件名:程序源文件为 .PRG 编译后的程序文件 .FXP. 程序设计概述. 进行程序设计一般要经过以下步骤: 1 .分析问题或任务,总结或抽象出问题的数学模型。 2 .根据数学模型确定解决问题的算法思想。 3 .根据算法思想确定要建立的数据表或数据库的基本结构及其数据表之间的关系。
E N D
程序设计基本内容 程序文件的建立、运行和修改 顺序结构程序设计 选择结构程序设计 循环结构程序设计 数组 子程序及变量的局域性
程序文件 • 由命令组成,计算机可以自动执行 • 可由任何编辑软件生成(VFP本身有编辑器) • 文件名:程序源文件为 .PRG 编译后的程序文件 .FXP
程序设计概述 进行程序设计一般要经过以下步骤: 1.分析问题或任务,总结或抽象出问题的数学模型。 2.根据数学模型确定解决问题的算法思想。 3.根据算法思想确定要建立的数据表或数据库的基本结构及其数据表之间的关系。 4.画出程序流程图。
程序设计概述 5.编写程序,实现功能要求,并在计算机上调试通过。 6.用典型数据对所编写的程序进行测试,验证程序的可靠性。发现问题进行修改,修改后再进行调试,直到程序正确运行为止。 7.编写使用说明书,整理有关资料,进行总结。
程序文件的建立、运行和修改 一、建立程序文件 二、运行程序文件 三、修改程序文件
建立程序文件 一、菜单方式 1. 单击菜单[文件]→[新建]或者单击常用工具栏的"新建"按钮,再单击"程序"单选按钮,最后单击"新文件"大按钮。 2. 输入程序,最后保存文件。 如:建立如下命令文件cx1.prg。
举例 a=2 b=5 c=a+b ? "a=",a ? "b=",b ? a,"+",b,"=",c
注意以下几点: (1)一个命令语句中只能有一个命令动词; (2)每输入完一个语句按"回车"键表示该语句结束; (3)程序中用到的所有标点符号一律用半角符号; (4)每一个程序一般应有一个结束语句,以表示该程序的结束。
建立程序文件 二、命令方式 功能:打开一个编辑窗口,从中可以修改或创建程序文件。 语法:MODIFY COMMAND [<程序文件名>|?][NOEDIT] 如:MODIFY COMMAND CX2 输入程序后保存文件。
运行程序文件 一、菜单方式 • 单击!常用工具栏按钮。 • 单击[程序][执行],选择要执行的命令文件。 二、命令方式 • 功能:执行一个Visual FoxPro程序或过程。 • 语法:DO <程序文件名>
修改程序文件 一、菜单方式 单击菜单[文件]→[打开]或单击常用工具栏上的"打开"按钮,启动"打开"对话框。在该对话框中选择想修改的程序文件名后单击"确定"按钮或直接双击想修改的程序文件名。 二、命令方式 使用建立命令文件同样的命令。
顺序结构程序设计 1 顺序结构程序设计的概念 2 输出命令?|?? 3 输出打印命令??? 4 内存变量内部赋值命令STORE|= 5 任意类型键盘输入命令INPUT 6 字符型键盘输入命令ACCEPT
顺序结构程序设计 7 程序暂停、等待接收单字符命令WAIT 8 计算表达式值命令= 9 终止程序运行命令CANCEL 10 程序注释命令 11 文本输出命令TEXT…ENDTEXT 12 输出文本行信息命令\|\\ 13 输入输出命令
A B C 顺序结构程序设计的概念 顺序结构是一种线性结构,是程序设计中最基础的结构,该结构中各操作块按照各自出现的先后顺序,依次逐块执行。
2 输出命令?|?? 功能:计算一批表达式的值,然后按指定格式在Visual FoxPro主窗口、用户自定义窗口或打印机输出表达式的值。 语法:?|?? [<表达式>][PICTURE<模式符>][FUNCTION<功能符>][V<显示宽度>][AT<显示列数>][FONT<字模名>[,<字体大小>]][STYLE<字体风格>][……] 如: ? 3*45/26 AT 2 FONT 'COURIER', 34 STYLE 'BI'
3 输出打印命令??? 功能:将输出结果直接送到打印机上。 语法:??? [字符表达式]
4 内存变量内部赋值命令STORE|= 功能:建立内存变量,并把一个数据保存到一个或多个内存变量中。 语法: • STORE <表达式> TO <内存变量表> • <内存变量>=<表达式> 如:STOR 34*56/8 TO X Y=45/3-67^2
说明: 1.内存变量的类型由<表达式>的类型而定。 STORE 1.0 TO M2,M3 STORE .T. TO L1 STORE 6*2>=18 TO L2 C1="xyzabc" L3=.F. Store {99/05/06} to D1 D2=date()
说明: 2. 可以给变量重新赋值,将以新值替代旧值。例: X=8 ?X X=16 ?X X="abcd" ? X
说明: 3.STORE可以给多个变量同时赋同一个值,=只能给一个变量赋值。如果给多个变量赋不同的值,必须使用多条STORE|=命令。 如:STOR 0 TO A,B,C A=0 B=0 C=0
说明: 4.引用变量的值不会改变被引用变量的值。 如: A=5 B=A C=B ?A,B,C
说明: 5.数值型变量可以与自身相加,字符型变量可以与自身相连接。例: X=10 X=X+1 ?X X=X+12 ?X C="Good" C=C+" Morning!" ?C
举例 例6-1:已知X=16,Y=18,编写程序,将它们的值互换后输出。程序如下: X Y T 16 16 18 16 18 16 18 18 16 18 16 16 CLEAR X=16 Y=18 T=X X=Y Y=T ?"X=",X,"Y=",Y CANCEL 程序运行结果: X=18 Y=16
6.2 顺序结构程序设计 清 屏 X=16 Y=18 T=X X=Y Y=T 输出X、Y、T 程序结束 例6-1:已知X=16,Y=18,编写程序,将它们的值互换后输出。程序如下: CLEAR X=16 Y=18 T=X X=Y Y=T ?"X=",X,"Y=",Y,"T=",T CANCEL
举例 例6-2:鸡兔同笼,已知鸡兔总头数为16(heads),总脚数为40(feet),编写程序求鸡兔各有多少。 解:设鸡为X只,兔为Y只,列出方程组为: X+Y=H 解得:X=(4H-F)/2 2X+4Y=F Y=(F-2H)/2 程序如下:
举例 结果为: 共有鸡:12 只 共有兔:4 只 H=16 F=40 X=(4*H-F)/2 Y=(F-2*H)/2 ?"共有鸡:",x,"只" ?"共有兔:",y,"只" CANCEL
5 任意类型键盘输入命令INPUT 功能:建立内存变量,并且用键盘输入的方式将数值型、字符型、逻辑型或日期型数据赋值给内存变量。 语法:INPUT[<提示>]TO <内存变量> 例6-3:已知圆半径为R,计算圆面积S、球体积V,球表面积F(要求四舍五入保留三位小数)。公式分别为: S=πr2 V=4/3πr3 F=4πr2
程序如下: INPUT "请输入圆半径R=" TO R S=ROUND(PI()*R^2,3) V=ROUND(4/3*PI()*R^3,3) F=ROUND(4*PI()*R^2,3) ?"圆面积为:",S ?"球体积为:",V ?"球表面积为:",F CANCEL
6 字符型键盘输入命令ACCEPT 功能:建立内存变量,并用键盘输入的方式将字符型数据赋值给内存变量。 语法:ACCEPT [<提示>] TO <内存变量> 例6-4:假设JSDA.DBF数据表文件在A盘根目录下,编写一程序,打开数据表JSDA.DBF,运行程序时输入姓名,并将该姓名的记录内容显示出来。
程序如下: SET DEFA TO A:\ USE JSDA ACCEPT " 请输入姓名:" TO NAME LOCATE ALL FOR 姓名=NAME DISPLAY Cancel
7 程序暂停、等待接收单字符命令WAIT 功能:显示一条提示并暂停程序运行,直到按下任一键或鼠标按键,程序才继续执行。 语法:WAIT [<提示>][TO <内存变量>][WINDOW[AT <行坐标>,<列坐标>]][NOWAIT][CLEAR|NOCLEAR][TIMEOUT<等待秒数>]
举例 例6-5:用WAIT命令暂停显示。 Clear Wait to a ?a ?"1 Visual FoxPro" WAIT "请稍候,按任意键继续" ?"2 Visual FoxPro" WAIT "这是查看功能" WINDOW AT 10,10 ?"3 Visual FoxPro" WAIT WINDOW TIMEOUT 3 CANCEL
8 计算表达式值命令= 语法:=<表达式1>[,<表达式2>……] 功能:计算一个或多个表达式的值,并且不返回其值。常用于需要执行一个系统函数或用户自定义函数的功能,但不需要将该函数的返回值赋给一个内存变量、数组或数组元素的情况下。 如为了进入插入状态,可输入命令: =insmode(.t.)
9 终止程序运行命令CANCEL 语法:CANCEL 功能:终止程序的运行,释放所有局部内存变量,返回到"命令"窗口。
10 程序注释命令 一、行首注释命令NOTE|* 功能:在程序中加注释行信息。 语法:NOTE|* [注释内容] 二、行尾注释命令&& 功能:在命令语句的尾部加注释信息。 语法:&&[注释] 例6-6:计算发放工资中各种大小钞票最少的程序。程序如下:(L6_6.PRG)
NOTE 根据输入的钱数,计算各种面额 * 钞票张数最少的程序。 INPUT "请输入总钱款数量(单位:元):" TO X && 单位为:元。 Y100=int(x/100) &&求100元最少张数 X=x-100*y100 &&求剩余款额 Y50=int(x/50) &&求50元最少张数 X=x-50*y50 &&求剩余款额 Y10=int(x/10) &&求10元最少张数 X=x-10*y10 &&求剩余款额 Y5=int(x/5) &&求5元最少张数 X=x-5*y5 &&求剩余款额 Y2=int(x/2) &&求2元最少张数 X=x-2*y2 &&求剩余款额 Y1=int(x) &&求1元最少张数 X=x-y1 &&求剩余"零头"款额
X=x*10 &&将"零头"化为角 J5=int(x/5) &&求5角最少张数 X=x-5*j5 &&求剩余款额 J2=int(x/2) &&求2角最少张数 X=x-2*j2 &&求剩余款额 J1=int(x) &&求1角最少张数 X=(x-j1)*10 &&将剩余零头化为分 F5=int(x/5) &&求5分最少张数 X=x-5*f5 &&求剩余款额 F2=int(x/2) &&求2分最少张数 X=x-2*f2 &&求剩余款额 F1=int(x) &&求1分最少张数 * 以下为输出部分: ?"100元票:",y100,"张"
?"50元票:",y50,"张" ?"10元票:",y10,"张" ?"5元票: ",y5,"张" ?"2元票: ",y2,"张" ?"1元票: ",y1,"张" wait ?"5角票: ",j5,"张" ?"2角票: ",j2,"张" ?"1角票: ",j1,"张" ?"5分票: ",f5,"张" ?"2分票: ",f2,"张" ?"1分票: ",f1,"张" cancel
11 文本输出命令TEXT…ENDTEXT 功能:在屏幕上显示TEXT和ENDTEXT之间的所有文本信息。 语法: TEXT 文本信息 ENDTEXT
举例 例6-7:利用TEXT……ENDTEXT语句在屏幕上输出"21世纪是信息化时代!" clear text 21世纪是信息化时代! endtext cancel
12 输出文本行信息命令\|\\ 功能:输出文本行信息。 语法: \<文本行信息> \\<文本行信息> \<文本行信息>:输出信息时,输出行以回车符开头。 \\<文本行信息>:输出信息时,输出行不以回车符开头。
举例 如输入下面两个命令: \计算机世界 \计算机世界 \\美好的明天 执行结果为: 计算机世界 计算机世界美好的世界
13、输入输出格式命令 显示输出并接受输入的命令 (1) @<行坐标,列坐标> [SAY <"提示">] GET<变量> [PICTURE<字符表达式1>] [FUNCTION <字符表达式2>] [RANGE <下限,上限>] (2)READ &&激活get语句,显示并可以修改 (3)CLEAR GETS &&不激活get后clear gets前的语句,使其只显示不能修改.称隔断语句
@...say...get....举例 例:命令 X="ASDFG" @10,10 SAY "ZIFU" GET X CLEAR GETS READ 例:打开JSDA.dbf表,显示该表每个记录的姓名,职称,基本工资字段,其中基本工资范围在2000元以内,要求以逗号格式显示且保留两位小数点,并且姓名只显示不能修改. (L7-2.prg)
L7-2.PRG USE JSDA SCAN FOR NOT EOF() @ 0,0 SAY "姓名:" GET 姓名 CLEAR GETS @ 0,14 SAY "职称:" GET 职称 @ 0,32 SAY "基本工资:" GET 基本工资 RANGE 0,2000 PICTURE "9,999.99" READ ENDSCAN CANCEL
选择结构程序设计 一、选择结构程序设计的概念 二、单条件选择命令IF 三、多分支选择命令 DO CASE
条件 A B 选择结构程序设计的概念 程序设计中的分支,是指在程序中从某一程序块分支出两个或两个以上相对独立、彼此不同的子程序块的现象,并称这些子程序块为它的分支。
选择结构程序设计的概念 一、双分支选择结构 通常也称为单条件双分支选择结构,或单条件选择结构。它仅描述具有两个分支的分支现象,是最简单的选择结构。 二、多分支选择结构 该分支机构的特点是:从多个选择结构中,选择一个条件为真的路线作为程序执行的路线。
IF IF IF IF ENDIF ENDIF ENDIF ENDIF 嵌套错误 嵌套正确 单条件选择命令IF 功能:该命令用来进行各种条件判断,使程序中的命令有条件的执行。 语法: IF <条件> [命令组1] [ELSE [命令组2]] ENDIF