1. 顺序结构: 按程序中语句的书写顺序逐条执行。
2. 分支结构 (选择结构):根据逻辑条件的结果执行不同的命令序列。
( 1 )单分支结构: IF...ENDIF
( 1 )双分支结构: IF...ELSE...ENDIF
( 2 )多分支结构: DO CASE...ENDCASE
3. 循环结构: 按规定的条件重复执行一段命令序列。
( 1 ) DO WHILE...ENDDO
( 2 ) FOR ... ENDFOR
( 3 ) SCAN …ENDSCAN 对数据表的循环操作。
说明:分支结构或循环结构可以嵌套,但分支与分支之间或循环与
循环之间不能交叉。

单分支结构流程图

双分支结构流程图

多分支结构流程图

循环结构
含有 LOOP 或 EXIT 的循环结构
举例
例 1 :对于人才档案数据表 , 编写程序姓名查询 .PRG ,完成按姓名查找的功能 . 若找到显示 , 否则显示 “ 查无此人 !”
SET TALK OFF
USE 人才档案
INPUT " 请输入姓名 :" TO X
LOCATE ALL FOR 姓名 =X
IF NOT EOF()
DELE
BROWSE
ELSE
@ 6,30 SAY “ 查无此人 !"
ENDIF
USE
SET TALK ON
例 2 判断所输入的字符为字母,或数字,或特殊符号
SET TALK OFF
WAIT ‘ 输入一个字符 :' TO CH
DO CASE
CASE CH>=‘A'.AND.CH<=‘z'
? CH,' 是字母 ‘
CASE CH>=‘ 0' .AND.CH<=‘ 9'
? CH,' 是数字 ‘
OTHERWISE
? CH,' 是特殊符号 ‘
ENDCASE
SET TALK ON
例 3 编写程序工资调整 .PRG ,将人才档案数据表中副教授的基本工资增加 10%
SET TALK OFF
USE 人才档案
INPUT " 请输入职称 :" TO X
LOCATE ALL FOR 职称 =X
IF FOUND()
REPLACE 基本工资 WITH 基本工资 *1.1
CONT
IF FOUND()
REPLACE 基本工资 WITH 基本工资 *1.1
ENDIF
ENDIF
BROWSE
USE
SET TALK ON
例 4 从键盘输入姓名或编号,在 “ 人才档案 ” 文件中多次查找,若找到显示其信息;否则显示 “ 查无此人 !”
SET TALK OFF
CLEAR
USE 人才档案
YN="Y"
DO WHILE UPPER(YN)="Y"
INPUT " 请输入姓名或编号 :" TO X
LOCATE ALL FOR 姓名 =X OR 编号 =X
IF FOUND()
DISPLAY
ELSE
@ 6,30 SAY " 查无此人 "
ENDIF
WAIT " 是否继续查询 (Y/N):" TO YN
ENDDO
USE
SET TALK ON
例 5 用当型循环统计 “ 人才档案 ” 数据表中工资超过 3000 元的人数 .
USE 人才档案
BROWSE
S=0
DO WHILE NOT EOF()
IF 基本工资 >=3000
S=S+1
ENDIF
SKIP
ENDDO
@ 2,30 SAY " 工资在 3000 元以上的人数 :"
@ 2,60 SAY S
USE
例 6 用步长型循环统计 “ 人才档案 ” 数据表中工资超过 3000 元的人数 .
USE 人才档案
BROWSE
count all to c
GO TOP
S=0
for i=1 to c setp 1
IF 基本工资 >=3000
S=S+1
ENDIF
SKIP
ENDFOR
@ 2,30 SAY " 工资在 3000 元以上的人数 :"
@ 2,60 SAY S
USE
例 7 用扫描型循环统计 “ 人才档案 ” 数据表中工资超过 3000 元的人数 .
USE 人才档案
BROWSE
S=0
SCAN ALL FOR 基本工资 >=3000
S=S+1
ENDSCAN
@ 2,30 SAY " 工资在 3000 元以上的人数 :"
@ 2,60 SAY S
USE
|