数据库软件VisualFoxpro课件第八章程序设计基础_第1页
数据库软件VisualFoxpro课件第八章程序设计基础_第2页
数据库软件VisualFoxpro课件第八章程序设计基础_第3页
数据库软件VisualFoxpro课件第八章程序设计基础_第4页
数据库软件VisualFoxpro课件第八章程序设计基础_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 第八章第八章 程序设计基础程序设计基础 8.1 8.1 程序文件程序文件一一 程序文件程序文件1.1.程序:计算机能够分析执行的命令集合。程序:计算机能够分析执行的命令集合。2.2.程序设计:程序员根据解决某一问题的步骤,按一定的逻辑程序设计:程序员根据解决某一问题的步骤,按一定的逻辑关系,将一系列的命令组合在一起,并以文件的方式存储到关系,将一系列的命令组合在一起,并以文件的方式存储到磁盘,这个过程就是程序设计。磁盘,这个过程就是程序设计。3.3.程序文件:在程序文件:在vfpvfp中,在程序设计中所产生的文件,它是一中,在程序设计中所产生的文件,它是一组命令的集合。程序文件的扩展名为组

2、命令的集合。程序文件的扩展名为prgprg二二 程序文件的建立与修改程序文件的建立与修改 命令格式:命令格式: modify command modify command 文件名文件名 功能:调用功能:调用vfpvfp提供的编辑器来建立或修改指定的程序文件。提供的编辑器来建立或修改指定的程序文件。 若程序文件不存在,则建立新的程序文件;若程序文件若程序文件不存在,则建立新的程序文件;若程序文件 存在,则从磁盘调入程序文件到内存并显示在编辑窗口存在,则从磁盘调入程序文件到内存并显示在编辑窗口2说明:说明:(1)可可选项选项 文件名文件名 用于设定要编辑的文件名。如果扩展用于设定要编辑的文件名。如

3、果扩展 名缺省,则命令名缺省,则命令modify commandmodify command默认为默认为prg (2)在文件名前可指明路径,若未指明则为默认目录在文件名前可指明路径,若未指明则为默认目录 (3)保存方法:保存方法:ctrl+w; 退出不保存:退出不保存:esc三三 程序的运行程序的运行 命令格式:命令格式: do文件名文件名 功能:执行由文件名表示的程序功能:执行由文件名表示的程序 说明:系统执行该程序文件时,首先查找以说明:系统执行该程序文件时,首先查找以.fxp为扩展名的文件,为扩展名的文件,若无该文件,则查找同名的若无该文件,则查找同名的.prg文件,并将其编译成文件,并

4、将其编译成.fxp目标文目标文件后再执行件后再执行 例例circle:编写一个程序文件计算圆面积并执行这个程序:编写一个程序文件计算圆面积并执行这个程序3四四 程序书写规则程序书写规则1.程序由若干程序行组成程序由若干程序行组成 2.每一程序行是一条命令每一程序行是一条命令3.每一行都以每一行都以“enter”键结尾,一行只能写一条命令。若一条键结尾,一行只能写一条命令。若一条命令在一行内写不下,也可在分行处加上续行符命令在一行内写不下,也可在分行处加上续行符“ ;”4.命令注释:提高程序的易读性命令注释:提高程序的易读性 note * & 8.2 程序中常用命令程序中常用命令1.交互式输入命

5、令交互式输入命令 命令命令1:accept 提示信息提示信息 to 内存变量名内存变量名 【功能功能】从键盘上输入一个字符型常量给内存变量从键盘上输入一个字符型常量给内存变量 例:例:accept 请输入要查找的姓名:请输入要查找的姓名: to xm通常放在命令之后通常放在命令之后通常放在程序之首通常放在程序之首4 命令命令2: input 提示信息提示信息 to 内存变量名内存变量名 【功能功能】可以通过键盘输入数值型、字符型、日期型、逻辑型、可以通过键盘输入数值型、字符型、日期型、逻辑型、 等数据给等数据给 【说明说明】若输入字符型数据,一定要加定界符若输入字符型数据,一定要加定界符( (

6、与与accept不同不同) ) 例:例: input 请输入要查找的姓名:请输入要查找的姓名: to xm 例例8-1:根据输入的姓名显示:根据输入的姓名显示stud表中该学生的记录表中该学生的记录2.格式输入命令格式输入命令 say get default range ,valid 功能:在屏幕的指定位置上输出功能:在屏幕的指定位置上输出say子句中的提示信息,并可修子句中的提示信息,并可修 改改get子句中变量的值子句中变量的值5说明:说明: (1)行,列指信息在窗口中出现的坐标位置。行自顶行,列指信息在窗口中出现的坐标位置。行自顶向下编号,列自左向右编号,窗口中第一行、第一列的向下编号,

7、列自左向右编号,窗口中第一行、第一列的编号都为编号都为0。行、列都是数值表达式。行、列都是数值表达式(2)say子句用来显示提示信息子句用来显示提示信息(字符常量字符常量), get子句用来子句用来输入及编辑数据,输入及编辑数据, get子句的变量可以是内存变量或子句的变量可以是内存变量或当前打开表文件中的字段变量当前打开表文件中的字段变量(3)get子句中的变量必须有确定的初值,或者通过命令子句中的变量必须有确定的初值,或者通过命令中的可选项中的可选项default表达式表达式指定指定(4) get子句必须与子句必须与read命令配合工作,即用命令配合工作,即用read命命令来激活当前的所有

8、令来激活当前的所有get变量变量6 例例8-2:编程序在:编程序在stud中追加一条记录中追加一条记录73.格式输出命令格式输出命令 say functionpicture 功能:在屏幕的指定位置上输出功能:在屏幕的指定位置上输出say子句中表达式的值子句中表达式的值 说明:若选择说明:若选择function子句或子句或picture子句,则按一定格式输出子句,则按一定格式输出 例例8-3:编程显示学籍管理系统的主菜单:编程显示学籍管理系统的主菜单 4.文本输出命令文本输出命令 命令:命令: text endtext 功能:在屏幕原样显示功能:在屏幕原样显示text和和endtext之间的内容

9、之间的内容8例例8-4:编程显示磁卡管理程序的主菜单:编程显示磁卡管理程序的主菜单98.3 程序的基本结构程序的基本结构 vfp程序提供了三种基本的控制结构,它们是顺序结构、程序提供了三种基本的控制结构,它们是顺序结构、分支结构与循环结构分支结构与循环结构一一 顺序结构:按语句的排列顺序来执行的结构顺序结构:按语句的排列顺序来执行的结构 例例8-6:键盘输入:键盘输入a、b两个变量的值,将它们的值进行调换两个变量的值,将它们的值进行调换 a 汽油汽油b 煤油煤油t 空桶空桶语句1语句210二二 分支结构:根据指定条件的当前值在两条或多条程序路径中选分支结构:根据指定条件的当前值在两条或多条程序

10、路径中选 择一条执行择一条执行1.单向选择单向选择 语句格式:语句格式: i f 条件条件 命令序列命令序列 endi f 功能:条件取值为功能:条件取值为“真真”,执行命令序列;条件取值为,执行命令序列;条件取值为“假假”,命命 令序列就不执行令序列就不执行 注:注: 条件是关系表达式或逻辑表达式条件是关系表达式或逻辑表达式pab成立成立不成立不成立条件条件命令序列命令序列.t.f.endif后的命令后的命令11例例8-7:编程序,检查:编程序,检查stud表中数据是否正确,若不正确,按表中数据是否正确,若不正确,按 “n”则弹出记录编辑窗口可修改数据;若正确,按则弹出记录编辑窗口可修改数据

11、;若正确,按 “y”结束程序。结束程序。如下图所示:如下图所示:12wait 命令命令命令:命令:wait 提示信息提示信息 to内存变量内存变量 windowat 行行, 列列 timeout数值表达式数值表达式功能:暂停程序的执行、显示提示信息等待用户按键输入信息到内功能:暂停程序的执行、显示提示信息等待用户按键输入信息到内存变量存变量(字符型字符型),系统接收到信息后自动往下继续执行,系统接收到信息后自动往下继续执行说明:说明: (1)window子句能在子句能在vfp主窗口开出一个提示信息的显示窗口,主窗口开出一个提示信息的显示窗口,位置由位置由at子句来指定。提示信息的显示窗口也将在

12、移动鼠标或子句来指定。提示信息的显示窗口也将在移动鼠标或按下任意键后自动消失按下任意键后自动消失 (2)可选项可选项timeout数值表达式数值表达式 用于指定程序暂停的时间,用于指定程序暂停的时间, 单位为秒。如果在指定时间内用户仍未按键,则程序继续执行单位为秒。如果在指定时间内用户仍未按键,则程序继续执行132.双向选择双向选择 语句格式:语句格式: i f条件条件 命令序列命令序列l else 命令序列命令序列2 endif 功能:根据条件的值,选择执行两个命令序列中的一个功能:根据条件的值,选择执行两个命令序列中的一个 例例8-9:从键盘输入一个整数,判断是奇数还是偶数:从键盘输入一个

13、整数,判断是奇数还是偶数 例例8-10:判断某一年是否是闰年:判断某一年是否是闰年(如是闰年则能被如是闰年则能被4整除但不能整除但不能 被被100整除,或能被整除,或能被400整除整除),显示格式如下:,显示格式如下:条件条件命令序列命令序列l命令序列命令序列2.t.f.143.多向选择多向选择 语句格式:语句格式: do case case条件表达式条件表达式1 命令序列命令序列l case条件表达式条件表达式2 命令序列命令序列2 : case条件表达式条件表达式n 命令序列命令序列n otherwise 命令序列命令序列n+1 endcase15 功能:功能: 依次判断命令中列出的条件表

14、达式,只要找到某一条件取依次判断命令中列出的条件表达式,只要找到某一条件取值为值为“真真”,就执行条件表达式的命令序列;在没有一个条,就执行条件表达式的命令序列;在没有一个条件表达式取值为件表达式取值为“真真”时,则执行时,则执行otherwise后的命令序列后的命令序列n+1 说明:说明:若有多个条件表达式为真,也只执行第一个为若有多个条件表达式为真,也只执行第一个为“真真”的命的命令令 序列序列 例例8-11:从键盘输入学号和课程号,在:从键盘输入学号和课程号,在xk表中根据成绩来判断该表中根据成绩来判断该学生的课程成绩属于优学生的课程成绩属于优(n90)、良、良(80n90)、合格、合格

15、(60n80) 、还是不合格还是不合格(n60),并显示该等级情况,并显示该等级情况说明:说明: (1)i f与与endi f, i f,else与与endi f, do case与与endcase必须成对出现必须成对出现 (2)三种选择结构不仅自身可以嵌套,而且还能相互嵌套三种选择结构不仅自身可以嵌套,而且还能相互嵌套16三三 循环结构循环结构 循环结构能做到由指定条件来控制程序中某一部分命令序循环结构能做到由指定条件来控制程序中某一部分命令序列的重复执行。循环结构可以简化程序、提高程序效率。列的重复执行。循环结构可以简化程序、提高程序效率。vfp提供了条件循环、提供了条件循环、 计数循环、

16、扫描循环等循环结构计数循环、扫描循环等循环结构1.条件循环条件循环 命令格式:命令格式: do while逻辑表达式逻辑表达式 命令序列命令序列 enddo功能:判断逻辑表达式(循环条件)的取值,若为功能:判断逻辑表达式(循环条件)的取值,若为“真真”就执就执行行 do与与enddo之间的命令序列之间的命令序列(循环体循环体),一旦遇,一旦遇enddo 就自动返回到就自动返回到do while重新判断循环条件是否成立,重新判断循环条件是否成立, 以决定是否再循环;条件的取值若为以决定是否再循环;条件的取值若为“假假”,则退出循,则退出循环环逻辑表达式逻辑表达式命令序列命令序列 真真 假假17

17、例例8-12:编一程序,要求显示表中入校总分高于:编一程序,要求显示表中入校总分高于580分的所有分的所有 记录记录 例例8-13:编程要求统计:编程要求统计stud表中入校总分在表中入校总分在590以上(以上(590)、)、 570590、570以下(以下(570)等各分数段的学生人数,显示)等各分数段的学生人数,显示 如下:如下:2.计数循环计数循环 命令格式:命令格式: for 循环变量循环变量= 初值初值 to 终值终值 step步长步长 命令序列命令序列 endfor | next 功能:功能: 本命令中的初值、终值本命令中的初值、终值 、 步长都是数值表达式。通过判步长都是数值表达

18、式。通过判断循环变量的取值是否在指定范围之中来确定循环体是否重复断循环变量的取值是否在指定范围之中来确定循环体是否重复执行执行18for 循环变量循环变量= 初值初值 to 终值终值 step步长步长 命令序列命令序列endfor | next循环变量赋初值循环变量赋初值循环变量循环变量=s=0for i=1 to 100 s=s+inext?s=,ss=0for i=100 to 1 step -1 s=s+inext?s=,s19 例:求例:求1+2+3+ + 100的和的和a=0b=a+1c=b+2d=c+3 :s=s+ii=i+1程序:程序:s=0for i=1 to 100 s=s+

19、inext? 1+2+3+ + 100 =+str(s)0+1+2+3+ + 10020说明:说明: (1) step 表达式表达式3表示步长,其值可正可负。表示步长,其值可正可负。步长值缺省,步长值缺省, 则默认为则默认为1,步长值不能为,步长值不能为0,否则造成死否则造成死循环循环 (2) 初值、终值与步长都在循环开始时计算读入,若初值、终值与步长都在循环开始时计算读入,若其中含有变量,那末这些变量的值必须在执行循环之前其中含有变量,那末这些变量的值必须在执行循环之前已经确定已经确定 (3) 一般情况下,循环体中不应包含改变循环变量值一般情况下,循环体中不应包含改变循环变量值的命令,否则循

20、环执行的次数也将随之改变的命令,否则循环执行的次数也将随之改变213.扫描循环扫描循环 命令格式:命令格式: scan 范围范围for条件条件while条件条件 命令序列命令序列 endscan 功能:对当前表进行循环,循环次数可由当前表的记录数、范围功能:对当前表进行循环,循环次数可由当前表的记录数、范围 子句、条件子句指出子句、条件子句指出use studscan 命令序列命令序列endscanuse studdo while not eof( ) 命令序列命令序列 skipenddo22 例例8-14:显示:显示stud中中1984年出生的所有女生的姓名,年出生的所有女生的姓名, 性别,

21、出生年月性别,出生年月4.循环辅助语句循环辅助语句 loop:把控制转到循环结构的开始:把控制转到循环结构的开始 exit:能立即跳出循环,执行:能立即跳出循环,执行enddo的下一条命令的下一条命令23 do while : loop :enddodo while : exit :enddo24例例8-15:分析以下程序的功能:分析以下程序的功能255.多重循环多重循环 若在循环体中又包含其它循环,即形成多重循环,也称循若在循环体中又包含其它循环,即形成多重循环,也称循环嵌套环嵌套 do while 条件条件: do while 条件条件 :enddo : enddo 例例8-16:阅读下列

22、程序:阅读下列程序 ,写出程序运行的结果是,写出程序运行的结果是 dime k(2,3) i=1 do while i=2 j=1 do while j=3 k(i,j)=i*j ?k(i,j) ? “ ” j=j+1 enddo ? i=i+1 enddo268.4 数组应用数组应用例例8-17:建立一个有:建立一个有10个元素的数组,在数组的每个元素中存放一个元素的数组,在数组的每个元素中存放一位同学的计算机课成绩,并求出平均成绩位同学的计算机课成绩,并求出平均成绩例例8-18:从键盘上输入:从键盘上输入5个数,然后把这个数,然后把这5个数按从小到大的顺序在个数按从小到大的顺序在屏幕上显示

23、(冒泡法排序)屏幕上显示(冒泡法排序)5 9 3 12 1 第第1次次 5 3 9 12 1 第第3次次 5 3 9 12 1 第第4次次 5 9 3 12 1 第第2次次 5 3 9 1 125 3 9 1 12 第第1次次 3 5 9 1 12 第第3次次 3 5 1 9 123 5 9 1 12 第第2次次 第第1趟趟 共共5-1次比较次比较第第2趟趟 共共5-2次比较次比较第第5-1趟趟 共共5-4次比较次比较:27288.5 过程与过程间的数据传递过程与过程间的数据传递 设计较大的程序时,一般可以将该程序按一定的功能分解设计较大的程序时,一般可以将该程序按一定的功能分解成若干个小的程

24、序,这些小的程序可称为模块。模块是可以命成若干个小的程序,这些小的程序可称为模块。模块是可以命名的一个程序段,可指主程序、过程。名的一个程序段,可指主程序、过程。例:试编写一个应用程序,能对例:试编写一个应用程序,能对stud表进行修改、删除、查询、和表进行修改、删除、查询、和打印功能。打印功能。stud表的管理程序表的管理程序修改修改删除删除查询查询打印打印退出退出29一一 过程过程1.过程:过程是模块的一种形式,过程往往是程序文件的一个组过程:过程是模块的一种形式,过程往往是程序文件的一个组成部分,习惯上常把它写在程序的最后,它总被其它程序调用成部分,习惯上常把它写在程序的最后,它总被其它

25、程序调用而不单独执行。在描述程序间的调用关系时,调用过程的程序而不单独执行。在描述程序间的调用关系时,调用过程的程序称为主程序。它的书写格式是称为主程序。它的书写格式是: procedure|function过程名过程名 parameters参数表参数表 语句序列语句序列 return 表达式表达式 endproc|endfunc 过程调用方式:过程调用方式: (1) do 过程名过程名 (2) ( )30例例8-19:阅读以下程序:阅读以下程序,说明该程序的功能。说明该程序的功能。例例8-20:修改以上程序,将表记录定位功能单独划分出来:修改以上程序,将表记录定位功能单独划分出来作为过程(过

26、程名:作为过程(过程名:dw),再将剩余部分作为主程序,),再将剩余部分作为主程序,在主程序中调用过程在主程序中调用过程过程过程dw312.过程文件:将多个过程合并成一个程序文件。它的基本书写格过程文件:将多个过程合并成一个程序文件。它的基本书写格式是式是: procedure |function 过程名过程名1 语句序列语句序列1 return 表达式表达式 procedure |function 过程名过程名2 语句序列语句序列2 return 表达式表达式 : procedure |function 过程名过程名n 语句序列语句序列n return 表达式表达式 打开过程文件的命令:打开

27、过程文件的命令: set procedure to 例例8-21:编制计算圆面积、圆周长及球体积的过程文件:编制计算圆面积、圆周长及球体积的过程文件ygc.prg,并,并在主程序中调用它在主程序中调用它322.过程嵌套过程嵌套 过程还可以调用它自己的过程,即过程嵌套。过程还可以调用它自己的过程,即过程嵌套。 返回命令:返回命令: return表达式表达式to masterto过程名过程名 功能:返回到调用该子程序的上级程序。加可选项功能:返回到调用该子程序的上级程序。加可选项to master 后,则不论前面有多少级调用,都直接返回主程序。可选后,则不论前面有多少级调用,都直接返回主程序。可选

28、 项项to过程名过程名可返回到指定的过程可返回到指定的过程主程序主程序 过程过程a 过程过程b : : : do a do b : : : return return 33二二 参数传递参数传递 在调用过程时,有时需要将数据传递到调用过程,有时需要从在调用过程时,有时需要将数据传递到调用过程,有时需要从调用的过程将数据返回,实现数据相互传递。调用的过程将数据返回,实现数据相互传递。 vfp提供了带参调用的方法:在调用过程命令中和被调用过程提供了带参调用的方法:在调用过程命令中和被调用过程的相关语句中,分别设置数量相同、数据类型一致且排列顺序相互的相关语句中,分别设置数量相同、数据类型一致且排列

29、顺序相互对应的参数表。对应的参数表。1. 带参调用命令:带参调用命令: 格式格式1:do 过程名过程名 with 格式格式2:过程名:过程名() 2. 参数接收命令参数接收命令 parameters说明:说明:(1)该命令必须位于被调用子程序或过程的第一条可执行语句该命令必须位于被调用子程序或过程的第一条可执行语句处。实参表中的实参可以是常量、表达式、变量,但若为变量处。实参表中的实参可以是常量、表达式、变量,但若为变量必须有初值。必须有初值。 形参变量表必须都是变量,形参数目不能少于实形参变量表必须都是变量,形参数目不能少于实参的数目。参的数目。341. 带参调用命令:带参调用命令: 格式格

30、式1:do 过程名过程名 with 格式格式2:过程名:过程名() 2. 参数接收命令参数接收命令 parameters(2) 采用格式采用格式1调用时,如果实参是常量或表达式,会先计算出实参调用时,如果实参是常量或表达式,会先计算出实参值,再把它们赋值给相应的形参变量,这种情形叫做按值传递;如值,再把它们赋值给相应的形参变量,这种情形叫做按值传递;如果实参是变量那么传递的不是变量的值,而是变量的地址,这时形果实参是变量那么传递的不是变量的值,而是变量的地址,这时形参和实参实际上是同一个变量(它们的名字可能不同),形参的值参和实参实际上是同一个变量(它们的名字可能不同),形参的值改变则会改变对

31、应实参的值,这种情形叫做按引用传递。改变则会改变对应实参的值,这种情形叫做按引用传递。(3) 采用格式采用格式2调用时,默认情况下都以按值方式传递参数。特别调用时,默认情况下都以按值方式传递参数。特别地,如果实参是变量,可以通过以下命令设置参数传递方式。地,如果实参是变量,可以通过以下命令设置参数传递方式。35格式:格式:set udfparms to value|reference(设置参数传递方式设置参数传递方式)to value :按值传递。形参变量值的改变不会影响实参变量的取值。:按值传递。形参变量值的改变不会影响实参变量的取值。to reference:按引用传递。形参变量值改变时,实参变量值也随之:按引用传递。形参变量值改变时,实参变量值也随之 改变。改变。注意注意:该命令只对格

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论