1 / 37

第七章 程序设计基础

第七章 程序设计基础. 信息工程系 李希敏. 程序的建立、修改和执行方法;基本输入/输出命令 程序的三种基本的控制结构 主程序、子程序、过程和自定义函数的概念和编写 理解和掌握内存变量作用域的定义命令 对简单的应用系统的总体设计和应用程序编写. 本章的主要内容. 重点 程序的三种基本结构 顺序结构、选择结构和循环结构 多模块结构 模块的定义和调用、参数传递和变量的作用域 难点 循环结构的使用、多模块结构中参数传递的两种方式、变量作用域. 程序与程序文件的概念 程序文件的建立和执行 简单的输入输出命令. 7.1 程序与程序文件. 程序

vahe
Download Presentation

第七章 程序设计基础

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第七章 程序设计基础 信息工程系 李希敏

  2. 程序的建立、修改和执行方法;基本输入/输出命令程序的建立、修改和执行方法;基本输入/输出命令 程序的三种基本的控制结构 主程序、子程序、过程和自定义函数的概念和编写 理解和掌握内存变量作用域的定义命令 对简单的应用系统的总体设计和应用程序编写 本章的主要内容

  3. 重点 • 程序的三种基本结构 • 顺序结构、选择结构和循环结构 • 多模块结构 • 模块的定义和调用、参数传递和变量的作用域 • 难点 • 循环结构的使用、多模块结构中参数传递的两种方式、变量作用域

  4. 程序与程序文件的概念 程序文件的建立和执行 简单的输入输出命令 7.1 程序与程序文件

  5. 程序 程序是能够完成一定任务的命令的有序集合。 程序文件 程序文件(或命令文件)以文本文件的形式存在,扩展名为.prg。 7.1.1 程序与程序文件

  6. 一、程序文件的建立 通过“文件”菜单中的“新建”命令建立 通过命令方式建立:modi comm <命令文件名> 二、程序文件的运行 格式:Do 应用程序名.prg 注意: 执行程序文件时最好能加上扩展名,因为如果没有指定扩展名,系统将按下列程序执行:.exe(可执行文件)→.app(应用程序文件)→.fxp(编译文件)→.prg(命令文件) 7.1.2 程序文件的建立和执行

  7. 一、输入命令 INPUT 命令 可以输入各种类型的表达式 N C(必须加定界符) L(加.定界,如.t.,.f.) D(采用严格的日期格式输入,如{^05/17/2005}) ACCEPT命令 将输入的内容自动加上定界符,故输入字符型数据常用 WAIT命令 只能输入单个字符 二、无格式输出命令 ?/?? <表达式列表> ?为换行输出,??不换行输出 7.1.3 简单的输入输出命令

  8. 例1、求通过键盘输入的任一数值的绝对值并输出。例1、求通过键盘输入的任一数值的绝对值并输出。 clear input "输入任一数值:" to x if x<0 x=-x endif ?'X的绝对值是:',x return INPUT命令应用示例

  9. 例2、将小写字母转换成大写字母的命令文件aaa.prg。例2、将小写字母转换成大写字母的命令文件aaa.prg。 set talk off clear accept "请输入任一字符串:" to x y=upper(x) ?"转换的结果是:",y set talk on return ACCEPT命令应用示例

  10. 有三种基本的控制结构 顺序结构 选择结构 循环结构 7.2 程序的基本结构

  11. 例3、编程输出每个仓库的平均工资(pjgz.prg) clear open database 订货管理 select 仓库号,avg(工资) as 平均工资 from 职工; group by 仓库号 into table pjgz use pjgz browse close all return 7.2.1 顺序结构

  12. 分为条件语句和分支语句 条件语句 If…endif 结构 If…else…endif 结构 分支语句 Do case…endcase 结构 7.2.2 选择结构

  13. 例1、求任一个数的绝对值并输出。 clear input "请输入任一个数值:" to x if x<0 x=-x endif ?"该数的绝对值是:",x return 选择结构举例

  14. clear input 'a=' to a input 'b=' to b input 'c=' to c if a+b>c and b+c>a and a+c>b s=(a+b+c)/2 area=sqrt(s*(s-a)*(s-b)*(s-c)) ?'面积为:',area else ?‘该三角形不存在!' endif return 例2、利用海伦公式求三角形的面积。

  15. 例3、将学生成绩分为 “不及格”、“及格”、“良好”和“优秀”等次。 clear input "输入学生成绩:" to score do case case score>=0 and score<60 ?"不及格" case score>=60 and score<70 ?"及格" case score>=70 and score<85 ?"良好" case score>=85 and score<=100 ?"优秀" otherwise ?"不合法的数据!" endcase 分支结构示例

  16. 也称“重复处理”结构,当满足某个指定条件时,反复执行某段程序代码。被重复执行的程序段通常称之为“循环体” VFP支持三种格式的循环控制语句: do while … enddo(当型循环) for … endfor(“计数型”循环) scan … endscan(“扫描型”或“指针型”循环) 7.2.3 循环结构

  17. 该循环的语句格式及执行过程如下: Do while <条件> <语句序列1> [loop] <语句序列2> [exit] <语句序列3> enddo 假 条件 真 循环体 LOOP EXIT ENDDO后面的语句 一、Do while …enddo循环

  18. 例1、求前100个自然数中的偶数和。 方法一(使用DO循环) : Clear s=0 i=2 do while i<=100 s=s+i i=i+2 enddo ?“前100个自然数中的偶数和为:",s return 循环结构示例

  19. 例2:输出九九乘法口诀表。 clear i=1 do while i<10 j=1 do while j<=i s=i*j ??str(j,1)+'*'+str(i,1)+'='+str(s,2)+' ' j=j+1 enddo i=i+1 ? Enddo return 循环的嵌套示例

  20. 该语句用循环计数器<循环变量>来控制循环体的执行次数。常用于实现循环次数已知情况下的结构该语句用循环计数器<循环变量>来控制循环体的执行次数。常用于实现循环次数已知情况下的结构 执行时,首先将循环变量初值赋予循环变量,然后判断循环变量是否大于(步长大于0时)或小于(步长小于0时)循环变量终值,若结果为真,则退出循环;否则,执行循环后,循环变量自动按步长增加或减少,如下图所示。 循环变量=循环变量初值 循环变量=循环变量初值 循环变量>=变量终值 (步长大于0时) 循环变量<=变量终值 (步长小于0时) Y Y N N 执行循环体后,循环变量自动按步长增加 执行循环体后,循环变量自动按步长减少 Endfor的后继语句 Endfor的后继语句 二、For…endfor(计数式循环)

  21. 例3、求前100个自然数中的偶数和。 clear s=0 for I=2 to 100 step 2 s=s+i endfor ?“前100个自然数中的偶数和是:",s return FOR循环示例

  22. 例4、统计职工表中工资大于1230元的职工人数。例4、统计职工表中工资大于1230元的职工人数。 clear use 职工 n=0 scan for 工资>1230 n=n+1 endscan ?‘工资大于1230的职工人数:’,n use return 三、Scan … endscan(扫描型循环)

  23. do while和enddo、for和endfor、scan和endscan必须配对使用。 循环体可以是任何VFP命令或语句。 循环变量应是数值型的内存变量或数组。 exit和loop命令可以嵌入循环体内,改变循环次数,但不能单独使用。 exit命令的作用是跳出循环, loop命令的作用是转回循环的开始处,重新对条件进行判断。 使用循环语句时应注意

  24. 一、模块的定义和调用 在VFP中,模块可以是命令文件,还可以是过程。 命令文件的定义:modify command <命令文件名> 过程是以过程说明语句开始,以返回命令结束的独立程序段,使用时用户通过过程名调用并执行。 一个过程文件中可以包含多个过程,调用一个过程文件后,就可以调用执行其中的每个过程,这样就减少了打开文件的个数。 使用过程文件必须遵循“打开—调用—关闭”的步骤。 与过程有关的操作语句有如下几种: 7.3 多模块程序

  25. 过程说明语句 Procedure <过程名> <命令行序列> Endproc 打开过程文件语句 Set procedure to [<过程文件名>] 过程调用语句 Do <过程文件名> 或者 <过程名>() 过程返回语句 Return [to master|to <过程名>] 关闭过程文件语句 Close procedure 与过程有关的操作语句:

  26. 方法1: (不带参数的调用) *主程序main.prg set proc to sub a=0 do p1 do p2 do p3 ?'a=',a close proc 例1:在主程序main.prg中调用过程文件sub.prg。

  27. proc p1 a=a+1 return proc p2 a=a*a return proc p3 do p1 a=a*a+1 return 过程文件sub.prg

  28. Clear a=0 do p1 do p2 do p3 ?'a=',a proc p1 a=a+1 proc p2 a=a*a proc p3 do p1 a=a*a+1 return 方法2:也可以写成一个文件的形式

  29. clear for m=3 to 100 if ssh(m) ??m endif endfor procedure ssh para x for k=2 to x-1 if mod(x,k)=0 return .f. endif endfor return .t. 二、带参数的过程调用示例1

  30. clear x=10 m=2 n=3 do ss with m,n do ss with m,n proc ss para a,b,c,d x=10+a a=a+b ?x,a,b,c,d return 示例2:

  31. s=0 for i=1 to 5 s=s+jc(i) endfor ?s proc jc para x p=1 for j=1 to x p=p*j endfor return p 示例3(方法1)

  32. clear s=0 for i=1 to 5 do jc with i s=s+p endfor ?s proc jc para x public p p=1 for j=1 to x p=p*j endfor 方法2

  33. 在VFP中,以变量的作用域来分,可将内存变量分为公共变量、私有变量和局部变量。 公共变量:必须先定义后使用。 Public <内存变量表> 局部变量:必须先定义后使用。 Local <内存变量表> 私有变量 没有用上面两个命令事先声明并在程序中直接使用的变量。 Private命令的使用 在使用该命令可以屏蔽上级程序中存在的同名变量。 三、变量的作用域

  34. 公共变量在所有的模块中起作用,一旦定义就一直有效,除非执行了清除内存变量的操作或者退出了VFP。公共变量在所有的模块中起作用,一旦定义就一直有效,除非执行了清除内存变量的操作或者退出了VFP。 私有变量在建立它的模块及其下属模块中有效,直到该模块程序运行结束,则自动清除。 局部变量只能在建立它的模块中有效,不能在上层或下层模块中使用。 请注意:

  35. clear public x1 x1=3 local x2 x2=date() x3='abcd' Do p1 ?x1,x2,x3 Return Proc p1 ?x1,x3 变量作用域示例1

  36. clear all x='visual foxpro' y='二级' do p1 ?y+x set talk on Proc p1 local x x='visual foxpro dbms考试' y='计算机等级'+y return 示例2:

  37. X=10 Y=20 Do p2 ?x,y Procedure p2 Private x X=50 Y=100 ?x,y Return Private命令使用示例 运行结果: 50 100 10 100

More Related