第六章:  结构化程序设计

  关闭窗口       

6.3 程序的基本控制结构

   

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

 

关闭窗口      
 
版权所有西北师范大学数学与信息科学学院