首页 第8章 结构化程序设计基础

第8章 结构化程序设计基础

举报
开通vip

第8章 结构化程序设计基础null第8章 结构化程序设计基础 第8章 结构化程序设计基础 8.1 程序文件的建立与执行8.1 程序文件的建立与执行8.1.1 程序的概念 程序是为了完成某一具体任务而编写的一系列命令(语句)的集合。这组命令被存放在称为程序文件或命令文件的文本文件中。当运行程序时,系统会按照一定的次序自动执行包含在程序文件中的命令。 8.1 程序文件的建立与执行8.1 程序文件的建立与执行8.1.2程序的基本结构 1. 顺序结构 顺序结构是最简单的程序结构,它按命令在程序中出现的先...

第8章 结构化程序设计基础
null第8章 结构化程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 基础 第8章 结构化程序设计基础 8.1 程序文件的建立与执行8.1 程序文件的建立与执行8.1.1 程序的概念 程序是为了完成某一具体任务而编写的一系列命令(语句)的集合。这组命令被存放在称为程序文件或命令文件的文本文件中。当运行程序时,系统会按照一定的次序自动执行包含在程序文件中的命令。 8.1 程序文件的建立与执行8.1 程序文件的建立与执行8.1.2程序的基本结构 1. 顺序结构 顺序结构是最简单的程序结构,它按命令在程序中出现的先后次序依次执行。 2. 选择结构 选择结构是在程序执行时,根据不同的条件,选择执行不同的程序语句,用来解决有选择、有转移的诸多问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 。 3. 循环结构 顺序、分支结构在程序执行时每个语句只能执行一次,循环结构就能够使某些语句或程序段重复执行若干次。8.1 程序文件的建立与执行8.1 程序文件的建立与执行8.1.3 结构化程序设计 所谓“结构化”是指用一组标准的准则与工具从事某项工作,这种工作就是编写程序。 结构化程序设计是经典的被普遍采用的一种程序设计方法,它的基本思想是自顶向下逐步求精和模块化。8.1 程序文件的建立与执行8.1 程序文件的建立与执行8.1.4程序文件的建立与执行 1. 程序文件的建立与修改 ⑴ 命令方式 MODIFY COMMAND [<文件名>] ⑵ 菜单方式 选择“文件”菜单中的“新建”命令,在弹出的“新建”对话框中,选择“程序”单选框,再单击“新建文件”命令按钮,在打开的文本编辑窗口中输入程序内容。 程序文件的扩展名.Prg。 8.1 程序文件的建立与执行8.1 程序文件的建立与执行2. 程序文件的执行 ⑴ 命令方式 DO <文件名> ⑵ 菜单方式 选择“程序”菜单中的“运行”命令,在弹出的“运行”对话框中输入或选择要运行的程序文件,并单击“运行”命令按钮即可。8.1 程序文件的建立与执行8.1 程序文件的建立与执行8.1.5程序出错时的情况 运行程序时,一般不会十分顺利,因为程序经常会出现错误。在程序稍大的情况下,这种情况几乎不可避免。8.2 交互式输入/输出命令8.2 交互式输入/输出命令8.2.1 简单的输入/输出命令 1. 任意数据输入命令 格式: INPUT [<字符 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达式>] TO <内存变量> 功能: 暂停程序的执行,等待用户从键盘输入数据,用户可以输入任意合法的表达式。当用户以回车键结束输入时,系统将表达式的值存入指定的内存变量中,程序继续运行。 8.2 交互式输入/输出命令8.2 交互式输入/输出命令说明: ① 如果选用<字符表达式>,那么系统会首先显示该表达式的值,作为提示信息; ② 输入的数据可以是常量、变量,也可以是合法的表达式,即字符型、数字型、日期型或逻辑型表达式,但不能不输入任何内容直接按回车键; ③ 输入字符串时必须加定界符,输入逻辑型常量时要用圆点定界(如.T.、.F.),输入日期型常量时要用大括号(如:{^2009-10-08})。8.2 交互式输入/输出命令8.2 交互式输入/输出命令2. 字符串接收命令 格式: ACCEPT [<字符表达式>] TO <内存变量> 功能: 暂停程序的执行,等待用户从键盘输入字符串。当用户以回车键结束输入时,系统将该字符串存入指定的内存变量,程序继续运行。8.2 交互式输入/输出命令8.2 交互式输入/输出命令说明: ① 如果选用<字符表达式>,那么系统会首先显示该表达式的值,作为提示信息; ② 该命令只能接收字符串,用户在输入字符串时不需要加定界符;否则,系统会把定界符作为字符串本身的一部分; ③ 如果不输入任何内容而直接按回车键,系统会把空串赋给指定的内存变量。8.2 交互式输入/输出命令8.2 交互式输入/输出命令3. 单个字符接收命令 格式: WAIT [<字符表达式>] [TO <内存变量>] [WINDOW [NOWAIT]] [TIMEOUT<数值表达式>] 功能: 显示字符表达式的值作为提示信息,暂停程序的执行,直到用户按任意键或单击鼠标时继续程序的执行。8.2 交互式输入/输出命令8.2 交互式输入/输出命令说明: ① 如果<字符表达式>值为空串,那么不会显示任何提示信息;如果没有指定<字符表达式>,则显示默认的提示信息“按任意键继续…”; ② <内存变量>用来保存用户键入的字符,其类型为字符型。若用户按的是Enter键或单击了鼠标,那么<内存变量>中保存的将是空串;若不选TO<内存变量>短语,输入的单字符不保留; ③ 一般情况下,提示信息被显示在Viusal FoxPro主窗口或当前用户自定义窗口里;如果指定了WINDOW子句,则会在主窗口的右上角出现一个WAIT提示窗口; ④ 若同时选用NOWAIT短语和WINDOWS子句,系统将不等待用户按键,直接往下执行,只要一移动鼠标或按下任意键,提示窗口自动被清除; ⑤ TIMEOUT子句用来设定等待时间(秒数),一旦超时就不再等待用户按键,自动往下执行。 8.2 交互式输入/输出命令8.2 交互式输入/输出命令8.2.2 格式输入/输出命令 1. 格式输出命令 格式:@ <行,列> SAY <表达式> 功能:在第X行第Y列上输出表达式的值。 说明: ① <行,列>指定了输出的位置。标准屏幕是25行80列,左上角顶点为(0,0),右下角坐标为(24,79),行、列都可为表达式,还可为小数; ② 表达式可以是常量、变量。8.2 交互式输入/输出命令8.2 交互式输入/输出命令2. 格式输入命令 格式:@ <行,列> [SAY <表达式>] GET <变量> READ 功能: 在第X行第Y列上输出字符表达式的内容,然后,接收用户从键盘上输入的内容。 说明: ① SAY子句显示表达式的值,作为提示信息; ② GET子句中的变量可以是内存变量,也可以是字段变量,若是内存变量,则必须事先赋初值,此初值决定了该变量的类型和宽度; ③ READ用于激活当前所有的GET变量,显示并允许修改变量的值。 8.3 顺序结构 8.3 顺序结构 8.3.1 常用状态设置命令 1. 置会话状态命令 格式: SET TALK ON/OFF 功能: 打开或关闭人机对话。 说明: 当TALK处于ON时,系统在执行一些非显示时,将把执行结果等信息送到屏幕显示。当TALK 处于OFF状态时,屏幕上只输出显示命令要求输出的结果。8.3 顺序结构 8.3 顺序结构 2. 置打印状态命令 格式: SET PRINTER ON/OFF 功能: 打开或关闭打印机设备。 说明: PRINTER的初始状态是OFF,当PRINTER状态为ON时,输出结果将被传送到打印机中。8.3 顺序结构 8.3 顺序结构 3. 置屏幕状态命令 格式: SET CONSOLE ON/OFF 功能: 启用或废止从程序内向屏幕输出。 说明: 在系统的默认状态下,用户从键盘输入的内容都在屏幕上显示。如果要求键入的内容保密而不被显示,只需使用命令SET CONSOLE OFF即可。8.3 顺序结构 8.3 顺序结构 4. 置默认驱动器和目录命令 格式: SET DEFAULT TO [<盘符:>] [<路径>] 功能: 用于将指定的盘符路径设置为进行输入输出操作时的默认目录。 说明: 启动Visual FoxPro6.0后,系统有其默认目录,可以通过该命令,重新设置自己的默认目录。 8.3 顺序结构 8.3 顺序结构 8.3.2 程序注释命令 格式一: NOTE | * [<注释>] 格式二: && [<注释>] 功能: 引导注释内容。8.3 顺序结构 8.3 顺序结构 说明: ① 格式一引导注释内容时,将整行定义为注释内容,执行程序文件时,不执行NOTE 或*开头的行; ② 格式二引导注释内容时,是位于命令行的尾部; ③ 注释是不可执行的部分,它对程序的运行结果不会产生任何影响。8.4 选择结构8.4 选择结构8.4.1 单分支选择结构语句 格式: IF <条件> <语句序列> ENDIF 功能: 根据<条件>是否成立,选择执行<语句序列>。 说明: 执行该语句时,首先判断<条件>,当条件成立(其逻辑值为“真”)时,执行IF和ENDIF之间的<语句序列>,然后再执行ENDIF后面的语句;当条件不成立(其逻辑值为“假”)时,直接执行ENDIF后面的语句。8.4 选择结构8.4 选择结构例8.5 输入两个实数,按由小到大的次序输入这两个数。 SET TALK OFF CLEAR INPUT "请输入第一个数:" TO A INPUT "请输入第二个数:" TO B IF A>B T=A A=B B=T ENDIF ? "从小到大的次序是:",A,B SET TALK OFF RETURN8.4 选择结构8.4 选择结构8.4.2 双分支选择结构语句 格式: IF <条件> <语句序列1> ELSE <语句序列2> ENDIF 功能: 根据<条件>是否成立,从两组语句序列中选择一组执行。 说明: 执行该语句时,首先判断<条件>,当条件成立时,执行IF和ELSE之间的<语句序列1>,然后再执行ENDIF后面的语句;否则,当条件不成立时,执行ELSE和ENDIF之间的<语句序列2>,然后再执行ENDIF后面的语句。8.4 选择结构8.4 选择结构例8.6 根据输入学生的姓名,在学生.dbf表中查找该学生记录。 SET TALK OFF CLEAR USE 学生 ACCEPT "请输入学生的姓名:" TO NAME LOCATE FOR 姓名=ALLTRIM(NAME) && 在学生表中查找满足条件的记录 IF FOUND() && 判断是否找到 DISPLAY && 找到,显示该记录 ELSE ? "对不起,查无此人!" ENDIF USE SET TALK ON RETURN8.4 选择结构8.4 选择结构8.4.3 多分支选择结构语句 格式: DO CASE CASE <条件1> <语句序列1> CASE <条件2> <语句序列2> …… CASE <条件n> <语句序列n> [OTHERWISE <语句序列n+1>] ENDCASE8.4 选择结构8.4 选择结构功能: 根据n个条件的逻辑值,选择n+1个语句序列中的一个,并执行该语句序列中的各个语句,执行完毕后,转到ENDCASE语句后面的语句继续执行。 说明: 执行该语句时,依次判断CASE后面得条件是否成立。当某个CASE后面的条件成立时,就执行该CASE和下一个CASE之间的语句序列,然后执行ENDCASE后面的语句。如果所有的条件都不成立,若带有OTHERWISE子句,则执行OTHERWISE与ENDCASE之间的语句序列,然后转向ENDCASE后面的语句;若不带OTHERWISE子句,则直接转向ENDCASE后面的语句。 8.4 选择结构8.4 选择结构例8.7 计算分段函数的值: SET TALK OFF CLEAR INPUT "请输入X值:" TO x DO CASE CASE x<0 f=2*x-1 CASE x<3 f=3*x+5 CASE x<5 f=x+1 CASE x<10 f=5*x-3 OTHERWISE f=7*x+2 ENDCASE ? "f(x)=",f SET TALK ON RETURN 8.5 循环结构8.5 循环结构8.5.1 当循环结构语句 格式: DO WHILE <条件> <循环体> [LOOP] [EXIT] ENDDO 功能: 执行该语句时,先判断DO WHILE处的循环条件是否成立,如果条件为真,则执行DOWHILE与ENDDO之间的语句序列(循环体)。当执行到ENDDO时,返回到DO WHILE处,再次判断循环条件是否为真,以确定是否再次执行循环体。若条件为假,则结束该循环语句,执行ENDDO后面的语句。 8.5 循环结构8.5 循环结构说明: ① DO WHILE是当循环语句的起始语句,ENDDO是当循环语句的终端语句,中间是循环体; ② 如果第一次判断条件时,条件为假,则循环体一次都不被执行; 例8.8 计算s=1+2+…+100。 SET TALK OFF CLEAR S=0 I=1 DO WHILE I<=100 S=S+I I=I+1 ENDDO ? "S=",S && ? "S="+STR(S,4) SET TALK ON RETURN 8.5 循环结构8.5 循环结构例8.9 分别统计学生.dbf表中男女学生的人数。 SET TALK OFF CLEAR CLOSE ALL USE 学生 BROWSE GO TOP RS_b=0 RS_g=0 DO WHILE NOT EOF() IF 性别="男" RS_b=RS_b+1 ELSE RS_g=RS_g+1 ENDIF SKIP ENDDO @ 2,30 SAY "男生人数为:" @ 2,45 SAY RS_b @ 3,30 SAY "女生人数为:" @ 3,45 SAY RS_g *? "男生人数为:"+STR(RS_b,2)+"人" *? "女生人数为:"+STR(RS_g,2)+"人" USE SET TALK ON RETURN8.5 循环结构8.5 循环结构说明: ③ 如果循环体包含LOOP命令,那么当遇到LOOP时,就结束循环体的本次执行,不再执行其后面的语句,而是转回到DO WHILE处,开始新的循环,重新判断条件,因此,LOOP称为无条件循环命令,且只能在循环结构中使用; null例: 有LOOP的循环。 SET TALK OFF CLEAR S=0 T=0 I=1 DO WHILE I<=10 S=S+I I=I+1 IF I<=5 LOOP ENDIF T=T+I ENDDO ? "S=",S ?"T=",T SET TALK ON RETURN8.5 循环结构8.5 循环结构④ 如果循环体包含EXIT命令,那么当遇到EXIT时,就结束该语句的执行,转去执行ENDDO后面的语句,因此,EXIT称为无条件结束循环命令,且只能在循环结构中使用; ⑤ 通常LOOP或EXIT出现在循环体内嵌套的选择语句中,根据条件来决定是LOOP回去,还是EXIT出去。 null例: 有EXIT的循环。 SET TALK OFF CLEAR S=0 T=0 I=1 DO WHILE I<=10 S=S+I I=I+1 IF I<=5 EXIT ENDIF T=T+I ENDDO ? "S=",S ?"T=",T SET TALK ON RETURN8.5 循环结构8.5 循环结构例8.10 求1—50之间的全部偶数之和。 SET TALK OFF CLEAR STORE 0 TO X,Y DO WHILE .T. X=X+1 DO CASE CASE MOD(X,2)=1 LOOP CASE X>50 EXIT OTHERWISE Y=Y+X ENDCASE ENDDO ? "1~50之间的偶数之和为:",Y SET TALK ON RETURN 8.5 循环结构8.5 循环结构例8.10 求1—50之间的全部偶数之和。 方法二: set talk off clear s=0 i=2 do while i<=50 s=s+i i=i+2 enddo ?"s=",s set talk on8.5 循环结构8.5 循环结构8.5.2 计数循环结构语句 格式: FOR <循环变量>=<初值> TO <终值> [STEP <步长>] <循环体> [LOOP] [EXIT] ENDFOR | NEXT 8.5 循环结构8.5 循环结构功能: 执行该语句时,首先将初值赋给循环变量,然后判断循环条件是否成立(若步长为正值,循环条件为<循环变量><=<终值>;若步长为负值,循环条件为<循环变量>>=<终值>),若循环条件成立,则执行循环体,然后循环变量增加一个步长值,并再次判断循环条件是否成立,以确定是否再次执行循环体。若循环条件不成立,则结束该循环语句,执行ENDFOR或NEXT后面的语句。 8.5 循环结构8.5 循环结构说明: ① <步长>的默认值为1; ② <初值>、<终值>和<步长>都可以是数值表达式;但这些表达式仅在循环语句执行开始时被计算一次。在循环语句的执行过程中,初值、终值和步长是不会改变的; ③ 可以在循环体内改变循环变量的值,但这会影响循环体的执行次数; ④ 退出循环后,循环变量的值等于最后一次循环时的值加上步长值; ⑤ EXIT和LOOP命令同样可以出现在该循环语句的循环体内。当执行到LOOP命令时,结束循环体的本次执行,然后循环变量增加一个步长值,并再次判断循环条件是否成立。 8.5 循环结构8.5 循环结构8.5 循环结构8.5 循环结构8.5 循环结构8.5 循环结构例8.8计算s=1+2+…+100。 方法二: SET TALK OFF CLEAR S=0 FOR I=1 TO 100 STEP 1 S=S+I ENDFOR ? "S=",S && ? "S="+STR(S,4) SET TALK ON RETURN 8.5 循环结构8.5 循环结构例8.11 从键盘任意输入10个数,编程找出其中最大值和最小值。 SET TALK OFF CLEAR INPUT "请输入第1个数:" TO a STORE a TO max_a,min_a && 令初始的最大值max_a和最小值min_a都等于a FOR i=1 TO 9 && 以下依次输入9个数,并进行判断和必要的赋值 INPUT "请输入第"+STR(i+1,2)+"个数:" TO a IF a>max_a max_a=a ENDIF IF a 规则 编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf ① 主程序可以调用任何子程序; ② 子程序不能调用主程序,但子程序与子程序之间可以相互调用; ③ 子程序调用子程序后,可以返回到调用的子程序中,也可以直接返回到主程序中; ④ 主程序调用子程序后,必须要返回到主程序所调用的下一个语句中继续执行主程序中的各个语句。 8.6 程序的模块化8.6 程序的模块化2. 过程 ⑴ 过程的结构 模块可以是命令文件,也可以是过程。我们常常将那些经常出现在程序中且具有某些特定功能或某些特定的操作代码段单独组成一个模块,称为“过程”。过程是需要定义的。 格式: PROCEDURE <过程名> [PARMETERS <参数表>] <语句序列> [RETURN] 功能:创建一个过程。8.6 程序的模块化8.6 程序的模块化说明: ① 每个过程均以PROCEDURE开始,以RETURN结束; ② PROCEDURE <过程名>用于某个过程中的第一条语句,它标识了每个过程的开始,同时定义了过程名; ③ 过程如果以RETURN作为结束标志,返回逻辑真.T.,控制将转回到调用程序;如果缺省RETURN命令,则在过程结束处自动执行一条隐含的RETURN命令。 8.6 程序的模块化8.6 程序的模块化⑵ 过程的调用 格式: DO <过程名> 功能: 调用过程名的过程。 8.6 程序的模块化8.6 程序的模块化说明: 过程可以放置在程序文件代码的后面,也可以保存在称为过程文件的单独文件里。 打开过程文件的命令格式为: SET PROCEDURE TO <过程文件1>[,<过程文件2>…,] [ADDITIVE] 关闭过程文件的命令格式为: SET PROCEDURE TO CLOSE PROCEDURE8.6 程序的模块化8.6 程序的模块化3. 自定义函数 ⑴ 自定义函数的结构 格式: FUNCTION <函数名> [PARAMETERS <参数表>] <语句序列> RETURN [<表达式>] 功能: 自定义一个函数。8.6 程序的模块化8.6 程序的模块化说明: ① FUNCTION是标识函数的关键字,<函数名>是标识函数的名字,以后对函数的调用就用这个名字,这个名字最大可为32个字符,包括字母、数字、下划线等,一般选择一个具有一定意义且能体现函数功能的名字,并且这个名字是惟一独立的,且不能和内部函数的函数名同名; ② 若自定义函数中包含自变量,程序的第一行必须是参数定义命令PARAMETERS; ③ 自定义函数的数据类型取决于RETURN语句中的<表达式>的数据类型,若省略<表达式>,则返回逻辑真.T.。8.6 程序的模块化8.6 程序的模块化⑵ 自定义函数的调用 格式: <函数名>(<自变量表>) 功能: 调用函数名的函数。 说明: 其中的自变量可以是任何合法的表达式,其个数必须与自定义函数中的PARMETERS语句里的变量个数相等,自变量的数据类型也应符合自定义函数的要求。8.6 程序的模块化8.6 程序的模块化8.6.2 参数传递 接收参数的命令格式为: PARAMETERS <形参l>[,<形参2>,…] PARAMETERS命令声明的形参被看作是模块程序中建立的私有变量,应该是模块程序的第一条可执行命令。 调用模块程序的格式为: DO <文件名>|<过程名> WITH <实参1>[,<实参2>,…]8.6 程序的模块化8.6 程序的模块化 实参可以是常量、变量,也可以是一般形式的表达式。调用模块程序时,系统会自动把实参传递给对应的形参。形参的数目不能少于实参的数目,否则系统会产生运行时错误。 调用模块程序时,如果实参是常量或一般形式的表达式,系统会计算出实参的值,并把它们赋值给相应的形参变量,这种情形称为按“值传递”。如果实参是变量,那么传递的将不是变量的值,而是变量的地址,这时形参和实参实际上是同一个变量(尽管它们的名字可能不同),在模块程序中对形参变量值的改变,同样是对实参变量值的改变,这种情形称为按“引用传递”。 8.6 程序的模块化8.6 程序的模块化8.6.3 内存变量的作用域 1. 全局变量 在任何模块中都可使用的变量称为全局变量。全局变量要先建立后使用,可用PUBLIC命令建立。 格式: PUBLIC <内存变量表> 功能: 建立全局的内存变量,并为它们赋初值逻辑假.F.。8.6 程序的模块化8.6 程序的模块化2. 局部变量 局部变量只能在建立它的模块中使用,不能在上层或下层模块中使用。局部变量要先建立后使用,可用LOCAL命令建立。 格式: LOCAL <内存变量表> 功能: 建立局部的内存变量,并为它们赋初值逻辑假.F.。 8.6 程序的模块化8.6 程序的模块化3. 私有变量 私有变量可以在建立它的模块及其下属的各层模块中使用,可用PRIVATE命令建立。 格式: PRIVATE <内存变量表> 功能: 建立指定的内存变量为私有变量。 在程序中直接使用(没有通过PUBLIC和LOCAL命令事先声明)而由系统自动隐含建立的变量都是私有变量。
本文档为【第8章 结构化程序设计基础】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_656509
暂无简介~
格式:ppt
大小:399KB
软件:PowerPoint
页数:0
分类:其他高等教育
上传时间:2013-08-09
浏览量:7