VFP程序设计基础实验指导 下载本文

(1)当表达式中出现了多种运算符时,各种运算符的优先顺序由高到低依次为:

算术或字符或日期运算→关系运算→逻辑运算 (2)相同优先级的运算按从左到右的顺序计算 5.日期和日期时间表达式

? {^2005-3-29}-{^2005-3-21} &&8 两日期相差的天数为8天 ? {^2005-3-29}+{^2005-3-21} && 两日期表达式相加,属非法表达式 ? {^2005-3-25}+3 &&{^2005-3-28}

? {^2005-3-25}-3 &&{^2005-3-22} (用严格日期格式表示) ? datetime()+30 &&其值为当前时间的30秒后的日期时间 ? datetime()-30 &&其值为当前时间的30秒以前的日期时间 ? {^2005-5-5 10:10:20 a}-datetime() &&2个日期时间相差的秒的数值 相关知识:

(1)一个日期与一个数值相加,&&日期,表示从当前日期往后数N天。 (2)一个日期与一个数值相减,&&日期,表示从当前日期向前数N天。 (3)两个日期相减,&&数值,表示两日期之间相差的天数。

【实训5】程序结构

实训目的:

(1)理解VFP的2种工作方式:交互方式和程序执行方式。 (2)掌握程序文件的建立、存盘、调用方法和注释语句的使用方法。 (3)熟悉3种程序结构。

(4)会用调试器来分析程序的执行流程。 相关知识:

行首注释语句: NOTE | * 注释内容

功能:在程序文件中指示注释行的开始,注释行不被执行。 行尾注释语句: && 注释内容

功能:在程序文件中代码行的行尾注释,注释内容不被执行。 实训内容:完善下列程序横线处的代码,并调试运行。

1.建立并执行程序p1.prg,程序功能是判断用户输入的整数是否是偶数。

(1)在命令窗口中输入:modify command p1,在弹出的文本编辑器窗口中输入程序代码如下:

input \一个整数\if x/2=int(x/2)

? “您输入的是偶数” else

? “您输入的不是偶数” endif

(2)按CTRL+W键,存盘。

(3)在命令窗口中输入命令:DO p1后,回车执行该程序。

2.参照上面的例子来建立并执行p2.prg,程序功能:判断用户输入的整数是正数、负数还是零,代码如下:

input \一个整数\if x>0

? \您输入的是一个正数\else

if x<0 &&此处为if语句的嵌套结构。

? \您输入的是一个负数\

else

? \您输入的是零\ endif endif

3.参照上面的例子来建立并执行p3.prg,程序功能:根据学生的分数情况给出成绩等级,代码如下:

Input \分数 \从键盘接收来个成绩的数值赋值给X变量 Do case

Case x>=90 and x<100 ? \优秀\ Case x>=80 and x<90 ? \良好\ Case x>=70 and x<80 ? \中等\ Case x>=60 and x<70 ? \及格\ otherwise

? \悲惨,您可能不及格阿!\Endcase

4.建立sum.prg,程序功能是求 1+2+3+?+10的和,代码如下所示 S=0 K=1

DO WHILE K<=10 S=S+K K=K+1 ENDDO

? “1+2+?+10=”,S

注意:S=S+K为求和表达式,在循环中的作用是累加变量K的值,将结果保存到S变量中。 思考:

(1)若s=s+k分别改为s=s+k**2和s=s+1/k,程序的功能又是什么? (2)请分析下面的程序段的功能是什么,S中累加的是哪些数的和? S=0 K=1

DO WHILE K<=10 K=K+1 S=S+K ENDDO ? “S=”,S

操作练习:使用调试器来跟踪该程序的执行情况,具体步骤为:

(1)单击“工具”菜单中的“调试器”菜单项,打开“调试器”窗口。

(2)在调试器窗口中单击“文件”菜单中的“打开”菜单项,打开要跟踪的程序,如sum.prg。 (3)执行“调试”菜单中的“单步跟踪”命令,来跟踪程序的执行,并观察分析“局部”窗口中变量值的变化情况。

5.在程序功能不变的情况下,用FOR循环来改写第4题sum.prg,并对比FOR循环与DO While循环的区别。

参考代码如下,读者也可以自己写出类似的程序。 S=0

For k=1 to 10 step 1 S=S+k Endfor ? “S=”,S

6.编写程序JC.PRG,程序功能是求5的阶乘(5!=1*2*3*4*5),参考代码如下。

Y=1 &&存放阶乘结果的变量要赋初值为1 FOR X=1 TO 5 step 1 && step 1 可省略

Y=Y*X &&累计变量X的乘积到变量Y中。 ENDFOR