2008年重庆市普通高校“专升本”大学计算机复习资料重庆专升本网内部资料-1-VFO程序设计复习1程序设计概述一、程序的概念概念:具有一定功能的计算机能执行的指令的集合。例1:显示表XSDA可编写成如下命令序SETDEFATOF:\表USEXSDALISTCLOSEALL例2:求a=3,b=2,c=5求a+b-c=?程序test.prg代码如下:a=3b=2c=5x=a+b-c?x二、常见的程序设计方法1、结构化程序设计(模块化)结构化程序设计是一个面向过程的概念。把一个实际问题分为两部分,即数据和过程。通过动态的程序执行过程来对静态的数据进行处理,得出正确的结果。由VFP命令和程序设计命令的组合,需编制和调试;2、面向对象的程序设计3、结构化程序设计它是面向过程程序设计的另一种描述,面向过程程序设计有如下特点:①整个程序分为若干个模块,模块之间相衔接,且相对独立。②第个模块只有一个入口和一个出口。③第个模块都能单独执行,且在有限时间内执行完。④采用自顶向下、逐步求精的方法。三、程序三大基本结构1、顺序结构:执行是按命令出现的先后顺序执行。2、分支结构:按给定的条件成立与否来决定程序起向,分单向选择分支、双向选择分支和多路分支。有以下两种IF语句DOCASEENDIFENDCASE3、循环结构:程序的执行发生了自下而上的往复,某一程序段将重复执行。有以下三种DoWhileForSCANENDDOENDFORENDSCAN四、算法和流程图算法:解决某一问题的方法与步骤。见教材例。流程图:算法的描述,除用自然语言描述外,计算机领域常用流程图(ANSI图和N-S图)描述。见教材例。例如:乐山到成都怎么去?1、解一元二次方程的算法。Ax2+bx+c=0,求x2、求出1-100之间的质数。X/=2到SQRT(X)2008年重庆市普通高校“专升本”大学计算机复习资料重庆专升本网内部资料-2-2程序的建立和执行一、程序的扩展名:PRG实质:文本文件(ASCII编码)执行时,会产生编译文件FXP后让计算机执行。二、程序文件的建立和编辑1、命令方式:MODICOMM程序名.PRG(.PRG可省)2、菜单方式;文件=新建=程序3、项目管理器中建立的方法:建立项目管理器=新建程序4、其他方法:其它可编辑文本的软件:记事本\写字板\WORD\其它程序编辑器注意:希望编写程序之前事先设置好默认目录(setdefato……)然后我们编写的程序就会自动存储在那个目录中。例如:setdefatod:\ksmodicommTest(相当于是:modicommD:\ks\test.prg)三、程序的执行1、命令方式命令格式:DO[盘符][路径]程序名2、菜单方式:“程序”菜单-“运行”命令在“运行”窗口中输入被运行的程序文件名,即可运行程序。四、VFP程序的分类:数学类程序、涉及到表操作的程序如果本程序是涉及到表操作的程序,那么:1、在程序开始部分可以先加语句CLEAR和CLOSEALL2、程序最后可以使用命令CLOSEALL3、然后使用RETURN或CANCEL或QUIT例:找出并显示所有三好生CLEARCLOSEALLUSE学生LOCATEFOR三好生DOWHILENOTEOF()DISPCONTINUEENDDOCLOSEALLRETUREN3顺序程序设计与常用语句一、程序设计中的常用语句1、输入命令(1)赋值命令2008年重庆市普通高校“专升本”大学计算机复习资料重庆专升本网内部资料-3-命令一:STORE表达式TO内存变量命令二:内存变量=表达式(2)交互式输入命令(注意:输入数据是在程序执行的时候)INPUT[提示信息]TO内存变量ACCEPT[提示信息]TO内存变量WAIT[提示信息][TO内存变量][TIMEOUT等待时间说明:①提示信息是C型,它会在屏幕上原样输出.②WAIT命令的功能:暂停程序执行,显示提示信息等待用户按键。Wait命令中输入的只能是一个字符(C型)。③Input适用于全部类型内存变量,输入时需要加定界符④Accept只适用于C型,并且C型不加定界符注意:Input和accept在编写程序时语句都一样,只是执行程序(do)时,主屏幕上要求输入的类型和格式不同。例1:输入a、b、c的值,对2ax+b=c求x的值。ClearInput“现在计算2ax+b=c,请输入a的值:”toaInput“请输入b的值:”tobInput“请输入c的值:”tocx=(c-b)/(2*a)?’x的值为:’,x&&比较使用?’x的值为:’+str(x,3)有何区别return例2、查找学生.dbf中的指定记录clearclosealluse学生listaccept“请输入您想查找的姓名:”toxmLocatefor姓名=XM&&或命令SEEKXMiffound()DISPelse?’对不起,没有找到此人’endiflistcloseallReturn思考:如果accept换成input,输入的时候该怎么输入?例3、删除学生.dbf中的指定记录clearclosealluse学生2008年重庆市普通高校“专升本”大学计算机复习资料重庆专升本网内部资料-4-listinput“请输入您想删除的记录号:”toxdelerecoxwait“你想彻底删除这条记录吗?(y/n)”toaskifask=’Y’orask=’y’packendiflistcloseall注意区分交换方式和程序方式:有的命令可以在两种状态下执行(例如:刚才的输入命令),但有些命令只能在程序方式下执行(例如:循环语句和分支语句)(3)格式输入命令格式一:@行,列say提示信息格式二:@行,列say提示信息get变量……READ格式三:@行,列say提示信息get变量default常量功能:在屏幕指定的坐标位置上显示提示信息,然后通过READ命令激活GET子句的变量值。说明:①GET后的变量可以是内存变量或当前打开的数据文件中的字段变量,若是内存变量,应在执行该命令前对内存变量赋值,否则就必须使用default参数赋初值。②输入的值类型应该与初值类型相同。③READ命令与GET命令必须配合使用。多个GET命令可以只用一个READ命令配合。如果没有read则表示只显示内容,不输入值。例1:编写程序完成在学生.DBF中追加记录CLEARUSE学生APPENDBLANK@5,20SAY“学号”GET学号@5,40SAY“姓名”GET姓名@7,20SAY“性别”GET性别@7,40SAY“出生年月”GET出生年月@9,20SAY“入校总分”GET入校总分@9,40SAY“三好生”GET三好生READCLEARLISTCLOSEALLRETURN例2:编程求长方形的面积。CLEARX=0&&X为内存变量,赋初值Y=02008年重庆市普通高校“专升本”大学计算机复习资料重庆专升本网内部资料-5-@1,5SAY“计算长方形的面积”@2,5SAY“输入长方形的长:”GETX&&第2行5列显示提示信息并等待输入@3,5SAY“输入长方形的宽:”GETY&&第3行5列显示提示信息并等待输入READ&&从键盘输入X,Y的值S=X*Y&&计算长方形的面积?“长方形的面积:”,S&&显示长方形的面积CANCEL思考题1:如将上述例1程序改为按照指定学号来修改记录应该怎样做?(答案见课件后)3、输出命令⑴:非格式输出命令?和??⑵:格式化输出命令@行,列say表达式说明:行和列都可以是表达式,常常可以使用函数ROW()和COL()ROW()表示返回当前行的行号COL()表示返回当前列的列号例1:N=1CH=“VF程序设计”@N,26SAYSPACE(60)@N+1,26SAYCH例2:循环输入值cleardimexh(10)store0toxh@10,10say'请输入数字:'getxh(1)i=2dowhilei=10@row()+1,10say'请输入数字:'getxh(i)i=i+1enddoreadlistmemolikexh4、其他程序运行命令(1)终止程序执行命令CANCEL、QUIT和RETURNQUIT:退出程序运行并且退出VisualFoxproCANCEL:退出程序运行RETURN:返回上级程序调用点,如果是主程序就表示退出程序。主程序可缺省此命令返回(结束),即默认使用了return注意:上述命令执行完后都会自动clearmemory。但是如果有数据库和表打开不会自动关闭,所以使用数据库和表后在程序结束时我们常常需要加命令:closeall(2)清屏命令CLEAR(3)注释命令(NOTE、*和&&)注释的含义:程序员对程序语句功能的说明,执行程序的时候不执行注释中的内容,注释只2008年重庆市普通高校“专升本”大学计算机复习资料重庆专升本网内部资料-6-起到一个对语句说明的目的。一般复杂程序中应有30%以上的注释。(4)TEXT语句:原样输出(参考书143例4.15)(5)系统设置命令set…on/off或者是set…to1、设置会话状态SETTALKON/OFF2、设置跟踪状态SETECHOON/OFF3、设置打印状态SETPRINTERON/OFF4、设置定向输出状态SETDEVICETOSCREEN5、设置精确比较状态SETEXACTTOON/OFF6、设置日期格式SETDATEANSI7、色绘制系统提供的保护状态SETSAFETYON/OFF8、设置删除记录标记状态(掌握)SETDELETEDON/OFF功能:屏蔽或处理有删除标记的记录说明:在命令格式中选择ON时,各命令当不对有删除标记的记录进行操作,但索引除外。系统默认值为OFF思考题1答案:CLEARUSE学生ACCEPT请输入需修改记录的学号:TONUMLOCATEFOR学号=NUM@5,20SAY学号GET学号@5,40SAY姓名GET姓名@7,20SAY性别GET性别@7,40SAY出生年月GET出生年月@9,20SAY入校总分GET入校总分@9,40SAY三好生GET三好生READCLEARLISTCLOSEALLRETURN4顺序结构和分支结构一、顺序结构例1:求圆的面积(公式S=ΠR2)CLEAR2008年重庆市普通高校“专升本”大学计算机复习资料重庆专升本网内部资料-7-INPUT“请输入半径R的值:”TORS=3.1416*R*R?”圆面积为:”,SCANCEL二、分支结构(选择结构)1、IF语句(1)单向选择:双向选择:IF条件IF条件执行语句执行语句ENDIFELSE执行语句ENDIF(2)单向选择分支例如:求任意一个数值的绝对值CLEARSETTALKOFFINPUT“请输入数值:”TONIFN0N=-NENDIF?”|N|的绝对值为:”,NCANCEL(3)双向选择分支例1:用户输入数据表文件名,判断它存在否,如果存在则打开数据表文件并显示表中的全部记录clearaccept'请输入数据库文件名:'toheng&&想想为什么不用inputiffile(heng+‘.dbf’)&&了解file()的使用方法use&heng&&想想这儿为什么要用&代换listelse?'sorry,文件不存在:('endifcloseall&&关闭所有打开的表,如果不涉及多工作区,可以只使用use例2:判断输入的整数为奇数还是偶数。CLEARINPUT“请输入整数:”TONIFN%2=0&&该表达式还可用MOD(N,2)=0来表示?STR(N,4)+”是偶数”ELSE?STR(N,4)+”是奇数”ENDIFCANCEL(4)IF语句的嵌套例如:将用户输入的小写英文字母转化成大写2008年重庆市普通高校“专升本”大学计算机复习资料重庆专升本网内部资料-8-CLEARACCEPT“请输入1个字母:”TOSTR1IFSTR1=’a’ANDSTR1=’z’STR1=UPPER(STR1)?SPACE(40)+STR1ELSEIFSTR1=’A’ANDSTR1=’Z