各地
资讯
当前位置:考试网 >> 职称计算机 >> 复习指导 >> Visual Foxpro >> 职称计算机考试VisualFoxPro教程:常用编程命令

职称计算机考试VisualFoxPro教程:常用编程命令

来源:考试网    2016-12-16   【

  常用编程命令

  假设(if...endif)

  【根据一逻辑表达式的值,有条件的执行一组命令。

  语法:

  IF 逻辑表达式 [THEN]

  程序组1

  [ELSE

  程序组2]

  ENDIF

  参数:

  逻辑表达式代表一逻辑值,如果这逻辑值为真,系统执行程序组1,否则不执行程序组1,如果有else及程序组2的话,则执行程序组2,如没

  有则什么也不执行,直接执行endif后面的语句。

  备注:

  在if...endif之间还可以有if...endif,即该命令是可以嵌套的。

  then可以有也可以没有,对程序没有影响。

  else及程序组2可以有也可以没有,但如果有的话,在逻辑表达式的值为假时,程序组2将被执行。

  if 与 endif 必须配对使用,即有一个 if 必须有一个 endif, 否则程序会出错。

  举例:

  例1:假如分数字段的值大于等于90,则让等级字段的值为“优”,并显示该记录。程序如下:

  if 分数>=90

  replace 等级 with '优'

  display

  endif

  例2:在数据库中可以把性别字段设为逻辑型,“真”代表“男”,“假”代表“女”,但显示时不能显示真、假,否则别人看不懂,而应

  显示男、女,因此我们设一变量xb,根据性别字段的具体值,将xb的值设为男或女,然后在需要的时候显示xb的值即可。程序如下:

  if 性别

  xb='男'

  else

  xb='女'

  endif

  其中第一句:if 性别,表示“假如性别为真”的意思,不要写成“if 性别=.t.”。

  以上程序也可以写成如下形式,效果相同:

  if .not. 性别

  xb='女'

  else

  xb='男'

  endif

  即,假如性别不为真的话,xb的值就为女,否则为男。】

  循环(do while...enddo)

  【根据条件重复执行一组程序。

  语法:

  DO WHILE lExpression

  Commands

  [LOOP]

  [EXIT]

  ENDDO

  参数:

  lExpression 为一逻辑表达式,其值如果是“真”,即执行commands程序组,如果表达的值为“假”,则跳过该段程序组,执行enddo后面

  的语句。

  Commands 当表达式 lExpression 值为真时所要执行的程序组。

  LOOP 此为 do while...enddo 命令的一个子句,它可以放在 commands 程序组中间的任何地方,当程序一旦执行到该子句时,则返回 do

  while 重新执行。此子句根据需要可以有,也可以没有。

  EXIT 与loop一样是 do while...enddo 命令的一个子句,它可以放在 commands 程序组中间的任何地方,当程序一旦执行到该子句时,则

  跳出循环,执行enddo后面的语句。此子句根据需要可以有,也可以没有。

  备注:

  程序一旦执行到do while 语句,如果 lExpression 的值为真,则执行 commands 程序组,该程序组执行完后,就到enddo语句,enddo会将

  程序返回 do while 再次验证 lExpression 是否为真,如仍是,则又一次执行 commands ,如此循环往复,直到 lExpression 为假,或遇

  上 exit 语句。

  该语句可以嵌套,即循环中还可以有循环。

  do while 与 enddo 必须配对使用,即有一个 do while 必须有一个 enddo 否则程序会出错。

  举例:

  例1:在数据库中不断将记录指针往下移,直到数据库结尾。程序如下:

  do while .not. eof()

  skip

  enddo

  例2:在上面的例子加入此功能,当遇到性别字段为“女”时,跳出循环。程序如下:

  do while .not. eof()

  if 性别='女'

  exit

  endif

  skip

  enddo

  例3:不断将记录指针往下移,当遇到数量字段的值大于等于600时退出循环,如遇到值小于400的,将其值乘2,然后再检验一次是否大于

  600,如是则退出循环。程序如下:

  do while 数量<600

  if 数量<400

  replace 数量 with 数量*2

  loop

  endif

  skip

  enddo】

  分支(do case...endcase)

  【根据不同的条件执行不同的程序组。

  语法:

  DO CASE

  CASE 逻辑表达式1

  程序组1

  [CASE 逻辑表达式2

  程序组2

  ...

  CASE 逻辑表达式n

  程序组n]

  [OTHERWISE

  程序组0]

  ENDCASE

  参数:

  CASE 逻辑表达式 程序组 ... 当程序执行到 do case 时,便检验第一个 case 的逻辑表达式(逻辑表达式1)是否为真,如不为真,接着

  检验第二个 case 的逻辑表达式,以此类推直到逻辑表达式n。当检测到第一个为真的逻辑表达式时,便执行跟随在其后面的程序组,执行

  完后跳过后面所有的 case ,接着执行 endcase 后面的语句,也就是说即使后面还有为真的逻辑表达式也不执行了。

  如果所有 case 后面的逻辑表达式都为假,则执行 otherwise 后面的程序组(如果有的话, otherwise 及其程序组是可以没有的,如果没

  有则什么都不做,直接执行 endcase 以后的程序)

  备注:

  在do case 和 endcase 之间可以有任意多个 case 。

  do case 和 endcase 必须配对使用,即有一个 do case 必须有一个 endcase ,否则程序会出错。

  举例:

  如果工资在200元以下,增加50%;300元以下,增加30%;500元以下,增加20%;其它增加10%。程序如下:

  do case

  case 工资<=200

  replace 工资 with 工资*1.5

  case 工资<=300

  replace 工资 with 工资*1.3

  case 工资<=500

  replace 工资 with 工资*1.2

  otherwise

  replace 工资 with 工资*1.1

  endcase

  在这里要注意一个问题,不能把300元的 case 放在200元之前,否则一个100元的,按理应加50%,但当遇到小于300元的 case 时,其逻辑

  表达式为真(小于200元的肯定小于300元),因此就会执行后面的程序,加30%,并且执行完后,就不再执行其它的 case 了,这样就产生

  了错误的结果,所以应按从小到大的顺序来排列。】

  赋值(store...to)

  【将一个数据赋给一个变量。

  语法:

  STORE 表达式 TO 变量名表

  参数:

  表达式的值即为要赋给变量的数据。

  变量名表即为要被赋值的各变量。在这里可以是一个变量,也可以是多个变量,如果有多个变量,其间用“,”(逗号)隔开。

  备注:

  如果是给一个变量赋值,该语句可写成如下形式:

  变量名=表达式

  表达式可以是一个数值,也可以是一个算术式。

  举例:

  例1:将3赋给ab、xyz、jfz三个变量,程序如下:

  store 3 to ab,xyz,jfz

  例2:将变量gz的值加100赋给yfgz。程序如下:

  yfgz=gz+100】

  调用表单(do form)

  【运行一个由表单设计器设计的表单文件。该文件是经编译过的。

  语法:

  DO FORM 表单文件名 [NAME 变量名 [LINKED]]

  参数

  表单文件名即是要运行的由表单设计器设计的表单文件名称。

  变量名为调用该表单所用的变量名称,做为表单,不能直接用这的名称去调用它,必须将其赋给一个变量,然后用这个变量来调用它。如果

  您不会在这个表单之外调用它,也可以不要这个变量。

  在程序中产生的所有变量在程序运行结束后将被释放,即这些变量不再存在,因此也就无法继续调用这些变更,如果为了调试程序需要在程

  序运行结束后在命令窗口中调用这个表单,必须加上 linked 子句。

  举例:

  在程序中调用xy7表单,并将赋给一个变量lucky,程序如下:

  do form xy7 name lucky】

  调用子程序(do)

  【运行一个VFP程序。当我们要在一个程序中调用另一个程序(子程序)时使用此命令。

  语法:

  DO 程序名

  参数:

  程序名即为被调用的程序名称。

  备注:

  如被调用的程序的扩展名是“prg”,调用时可不用带扩展名,否则要带上扩展名。

  举例:

  有一个程序,名称为 xy7.prg,调用它的程序如下:

  do xy7】

  返回调用程序(return)

  【返回调用本程序(该语句所在程序)的程序。

  前面讲过调用子程序的语句,从一个程序A调用另一个程序B后,系统便开始执行B程序中的语句,到一定时候往往要从程序B返回程序A,便

  可使用该语句。

  语法:

  RETURN

  备注:

  程序A调用程序B,当从B返回A后,系统接着执行调用语句(do b)下面的一条语句。

  举例:

  程序a.prg如下:

  do while .not. eof()

  if 工资<100

  do b

  endif

  skip

  enddo

  程序b.prg如下:

  replace 工资 with 工资*1.5 &&将工资增加50%

  display &&显示出该记录,这样可以将所有增加了工资的记录显示出来

  return

  首先执行程序a.prg,当程序执行到 do b 语句时,便转去执行程序 b.prg ,在程序 b 中执行到 return语句时,又返回程序 a ,并接着

  执行 do b 的下一条语句 endif 。】

  启动事件处理(read events)

  【启动VFP的事件处理程序。

  语法:

  READ EVENTS

  备注:

  当该命令执行后,系统即停止继续执行后续的语句,这时我们可以调用之前所启动的菜单、表单等对象,并用这些对象的事件程序去完成相

  应的任务,直到发出 clear events 命令,系统才接着执行 read events 后面的命令语句。

  可能初学者看了上面的内容还不是很清楚,不要紧,我们在后面课程中会进一步讲解。】

  清除事件处理(clear events)

  【终止由 read events 语句启动的事件处理程序。

  语法:

  clear events

  备注:

  发出该命令后,系统将继续执行 read events 之后的语句。】

  开关命令执行状态(set talk on/off)

  【确定是否显示VFP命令执行的状态。

  语法:

  SET TALK ON | OFF

  参数:

  ON 显示VFP命令执行的状态。

  OFF 不显示VFP命令执行的状态。

  备注:

  使用时,on、off 二者之中必须选择一个。

  很多VFP命令执行后,会显示执行后的结果状态,如 locate for 命令执行,如找到记录的会显示被找到的记录号,否则会显示“已到文件

  尾”,但一般我们在程序中是不需要这些显示的,比如找到了记录就直接显示出来,没找到一般用一个对话框来给出更清楚的提示,所以在

  程序一开始往往要将 set talk 关闭。】

  结束程序(cancel)

  【结束当前正在运行的所有程序,返回VFP或操作系统。

  语法:

  cancel

纠错评论责编:tanhuifang
相关推荐
热点推荐»