




已阅读5页,还剩121页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2020年5月11日2时52分,1/126,第4章结构化程序设计,4.1程序设计基础4.2程序设计基本语句4.3程序控制结构4.4子程序、过程和自定义函数4.5综合程序设计实例,2020年5月11日2时52分,2/126,4.1程序设计基础,4.1.1算法4.1.2程序及编写要求4.1.3程序文件的建立、编辑与运行,2020年5月11日2时52分,3/126,4.1.1算法,用计算机解决问题时,必须先确定算法,然后根据算法编写程序,最后通过运行程序来达到解决问题的目的。1算法的概念当我们做任何一件事情时,都可以把它看作是一个过程。这个过程就是在允许的范围内进行有步骤的若干个操作序列。例如,学生考试,可以看作是这样的基本操作序列:进入考场,按指定座位入座;填写考生相关信息;答题;检查;如有错,则修改;交卷。事实上,我们在做任何事之前,都要在规定的解题环境内,用所允许的基本操作去构造解题的步骤,这些步骤都是按一定的顺序进行的,缺一不可,次序错了也不行。只不过对于简单的问题,人们并不意识到每件事都需要事先设计出“行动步骤”。这种解题操作序列称之为算法。通俗地说,算法就是在规定的环境下,为解决某一问题而采取的方法和步骤。,2020年5月11日2时52分,4/126,2算法的表示算法的表示方法有多种多样,由于设计算法的目的是借助计算机编程来解决实际问题,所以这里仅介绍与编程相关的算法的表示方法,即流程图表示法。流程图是用一些几何图框表示各种操作,在框内写上简明的文字或符号表示具体的操作,用箭头表示操作的先后顺序。如图4-1所示为ANSI(美国国家标准化协会)规定的常用流程图符号。,4.1.1算法,2020年5月11日2时52分,5/126,4.1.1算法,3算法举例下面通过几个简单例子来说明算法的建立及流程图的表示方法。【例4.1】计算圆面积。(1)算法步骤1:输入圆半径R。步骤2:用圆面积公式计算圆面积。步骤3:输出计算结果。(2)流程图(见图4-3),2020年5月11日2时52分,6/126,程序由若干命令序列组成,这些命令又称作语句。程序设计时,必须按一定的语法规则和要求来编写,才能使程序正常运行。1源程序VisualFoxPro的源程序就是将解决问题的算法翻译成计算机能识别和执行的一序列命令。例如,前面所提到的判断一个数的奇偶性的源程序可写为:*P4-1.PRG*NOTE判断一个数的奇偶”,表示下一行输入的内容是本行的继续。(3)为便于阅读,可以按一定的格式输入程序,即一般程序结构左对齐,而选择结构或控制结构内的语句序列比选择结构或控制结构的语句缩进若干字符。,4.1.2程序及编写要求,2020年5月11日2时52分,8/126,2程序的组成一个VisualFoxPro程序可以分为3个部分:第一部分是程序的说明部分,如本例程序的第1行。一般用于说明程序的功能、文件名等需要说明的有关信息。第二部分是进行数据处理的部分,如本例程序的第2行第9行。通常任何一个有意义的程序,总是要有一些初始数据,否则,这个程序就没有处理对象。同样,程序运行的结果也有必要显示或打印出来,否则,用户将不知道程序运行的结果是什么。因此,第二部分程序通常包括下列3个功能,依次为:提供初始数据的输入功能、数据处理功能和输出处理结果功能。第三部分是程序的控制返回部分,如本例的最后一条命令。它控制程序返回到调用该程序的调用处(若该程序没有被调用,则该语句将不起作用)。在以上3部分中,第一和第三部分基本是固定语句,比较容易编写。而第二部分是程序设计的主要部分,用户必须花较大精力来学习和掌握。,4.1.2程序及编写要求,2020年5月11日2时52分,9/126,4.1.2程序及编写要求,3编程要求为了使程序结构良好、易读、易理解且易维护,编程时语句结构力求简单直接,不能为了追求效率而使语句复杂化。应注意以下几点:(1)在一行内只写一条语句。(2)要直截了当地说明程序的用意。(3)首先保证程序正确,然后才要求提高速度。(4)编写时要做到清晰第一,效率第二。(5)避免使用临时变量而降低可读性。(6)对所有输入的数据都要进行检验,以保证每个数据的正确性和有效性。,2020年5月11日2时52分,10/126,(7)交互式输入数据时,尽量使用提示符明确提示交互式输入的请求,并指明选择项的种类和取值范围。(8)一个大型程序的开发应采用“自顶向下,逐步细化和模块化”的方法。(9)程序模块应该只有一个入口,一个出口,无死循环。,4.1.2程序及编写要求,2020年5月11日2时52分,11/126,4.1.2程序及编写要求,4程序设计的基本步骤进行程序设计一般要经过以下步骤:(1)分析问题或任务,总结或抽象出求解问题的数学模型。(2)根据数学模型确定解决问题的步骤和方法(即建立算法)。(3)根据算法思想确定变量、表达式、数据表或数据库的基本结构及其表之间的关系。(4)画出程序流程图。(5)编写程序,实现功能要求。(6)上机输入并调试程序。(7)用初始数据对程序进行测试,验证程序的正确性和可靠性。发现问题及时修改,直到得出正确结果为止。,2020年5月11日2时52分,12/126,在VisualFoxPro中,程序是保存在一个扩展名为.prg的程序文件中,通过调用和执行该程序文件来运行程序。1建立程序文件在VisualFoxPro环境中可以通过下述途径来创建程序文件:选择“文件”“新建”命令,弹出“新建”对话框,选择“程序”单选按钮,再单击“新建文件”按钮,如图4-7所示。在项目管理器中,切换到“代码”选项卡,选择“程序”选项,再单击“新建”按钮,如图4-8所示。在命令窗口中输入命令:MODIFYCOMMAND这时,VisualFoxPro将打开一个程序文件编辑窗口,用户便可以在该窗口中依次输入程序代码,如图4-9所示。,4.1.3程序文件的建立、编辑与运行,2020年5月11日2时52分,13/126,说明:(1)程序文件名的扩展名为.prg,输入时可以省略。(2)若在文件名中指定了路径,则文件建立在指定的磁盘和文件夹下,否则文件建立在VisualFoxPro的默认文件夹下。(3)若不指定文件名,则由VisualFoxPro自动命名,第一个文件名为“程序1.prg”,第二个为“程序2.prg”,依此类推。当关闭编辑窗口时,可以用另外的文件名保存该文件。(4)文件名将显示在标题栏的左侧。,4.1.3程序文件的建立、编辑与运行,2020年5月11日2时52分,14/126,2保存程序文件创建程序后,一定要注意保存程序。可用如下操作之一保存程序:3修改程序文件,在命令窗口中输入命令:MODIFYCOMMAND选择“文件”“打开”命令,弹出“打开”对话框,依次选择文件位置、文件名、文件类型后,单击“确定”按钮。,选择“文件”“保存”命令。单击常用工具栏中的“保存”按钮。,4.1.3程序文件的建立、编辑与运行,2020年5月11日2时52分,15/126,4、运行程序文件在命令窗口中输入命令:DO选择“程序”“运行”命令,弹出“运行”对话框,选择需要运行的程序文件,单击“运行”按钮来运行程序。若程序文件已打开,可直接单击工具栏中的程序运行按钮运行程序。,4.1.3程序文件的建立、编辑与运行,2020年5月11日2时52分,16/126,4.2程序设计基本语句,4.2.1输入输出语句4.2.2程序设计辅助命令4.2.3程序文件示例,2020年5月11日2时52分,17/126,4.2.1输入输出语句,1简单输出语句格式1:?功能:先计算的值,并将计算结果在主窗口当前光标的下一行输出显示(即换行输出)。说明:表达式也可以是常量或变量,当表达式的个数超过1个时,各表达式之间用逗号“,”分隔。若省略表达式时,则在当前光标的下一行输出一空行。格式2:?功能:该语句的功能与格式1基本相同,不同之处是将计算结果输出在当前光标所在行(即同行输出)。,2020年5月11日2时52分,18/126,4.2.1输入输出语句,例如,在命令窗口中执行命令:?计算机则在主窗口当前光标的下一行显示字符串“计算机”,如图4-10所示。若继续执行命令:?VFP程序设计则在当前光标所在行输出字符串“VFP程序设计”,如图4-11所示。此时可以看到,后一字符串正好与前一字符串在同一行输出。若将上条命令改为“?VFP程序设计”,请读者自行验证显示结果。,2020年5月11日2时52分,19/126,2键盘输入语句(1)接收任意类型数据输入命令INPUT格式:INPUTTO功能:显示,等待用户从键盘上输入任意类型的数据到指定的中,并按【Enter】键确认输入。说明:若选择了,则命令执行时,在屏幕上显示提示信息的内容;否则命令执行时不显示任何信息。可以是字符表达式或字符串,如果是字符串,必须加字符串定界符(如双引号等)。可以输入常数、变量和表达式。输入变量时必须先赋值。,4.2.1输入输出语句,2020年5月11日2时52分,20/126,4.2.1输入输出语句,输入的数据类型可以是:数值型、字符型、日期型和逻辑型。不同类型的输入规则为:数值型数据可以直接输入;字符型数据在输入时必须将输入的内容加上字符串定界符;日期型数据在输入时必须将输入的日期加上大括号(如要输入2008年5月18日,应写为2008/05/18或写为CTOD(05/18/08);逻辑型数据可以是.T.和.F.,或.Y.和.N.,输入时字母两边的点不能漏写.,2020年5月11日2时52分,21/126,【例4.4】INPUT应用示例。从键盘上输入一个成绩92.5到变量X1中,命令可写为:从键盘上输入一个字符型数据“张明燕”到变量XM中,命令应写为:从键盘上输入一个日期型数据08/10/86到变量D1中,命令应写为:从键盘上输入一个逻辑型数据.T.到变量YN中,命令应写为:,4.2.1输入输出语句,2020年5月11日2时52分,22/126,(2)接收字符型数据输入语句ACCEPT格式:ACCEPTTO功能:显示,等待用户从键盘上输入字符型数据到指定的中,并按【Enter】键确认输入。说明:该命令只接收字符型数据的输入,所以在输入数据时,不需加字符串定界符。无论用户输入何种类型的数据,该命令都将输入内容按字符串处理。,4.2.1输入输出语句,2020年5月11日2时52分,23/126,【例4.5】ACCEPT应用示例。若要从键盘上输入一学生姓名“王晓丽”到变量XM中,可使用命令:ACCEPT请输入学生姓名:TOXM当屏幕显示提示信息:“请输入学生姓名:”时,直接从键盘上输入姓名“王晓丽”,并按【Enter】键后,其内容便保存到变量XM中,,4.2.1输入输出语句,2020年5月11日2时52分,24/126,(3)接收单个字符输入语句WAIT格式:WAITTOWINDOWAT功能:暂停程序的运行,等待用户从键盘上输入任何一个字符或单击鼠标后继续执行。说明:若选择了“TO”子句,则从键盘上输入的字符存入该变量中。若定义了,则在屏幕上显示提示信息的内容;若没有定义,则显示系统默认的提示信息:“按任意键继续”。若选择了WINDOW选项,则在主窗口的右上角或用AT短语定义的位置上显示一个WAIT提示窗口,并在其中显示提示信息;否则在VisualFoxPro的主窗口中显示提示信息。,4.2.1输入输出语句,2020年5月11日2时52分,25/126,【例4.6】WAIT应用示例WAIT继续查找吗(Y/N)?TOM当程序执行时,在主窗口左上角显示提示信息“继续查找吗(Y/N)?”后,等待用户从键盘上输入字符Y或N或单击鼠标时程序继续运行,程序运行后,并将输入的字符保存在变量M中。,4.2.1输入输出语句,2020年5月11日2时52分,26/126,4.2.1输入输出语句,三种输入语句的特点是:INPUT能接收数值型、字符型、日期型和逻辑型数据的输入,但除数值型外,其他类型的数据输入时,都要加定界符,所以,常用于数值型数据的输入。ACCEPT只能接收字符型数据的输入,且输入时不必加定界符,用于字符型数据的输入时操作十分方便。WAIT用于接收单个字符的输入,且不用按【Enter】键,操作比较简单。,2020年5月11日2时52分,27/126,4.2.2程序设计辅助命令,1中止程序运行在程序运行中,按【Esc】键可以中止程序的运行,系统会显示“程序错误”对话框让用户选择(见图4-15)。“取消”:中止程序运行,这是默认选择。“挂起”:暂停程序运行,返回命令窗口。当选择“程序”“继续执行”命令或在命令窗口中输入“Resume”命令,系统则从中止的地方继续程序的执行。“忽略”:忽略所按的【Esc】键,继续程序的执行。,2020年5月11日2时52分,28/126,2注释语句(1)程序注释语句格式:NOTE或*功能:对程序的结构或功能用一段文字进行说明。注释内容不需要用定界符定界,执行时也不显示。注释信息如果在一行内没有写完,换行时也必须再写注释命令。NOTE或“*”用于整行注释,因此,它必须写在每一个注释行的开头。,4.2.2程序设计辅助命令,2020年5月11日2时52分,29/126,(2)语句行注释格式:&功能:对程序中的某一条语句进行注释。“&”在语句行末尾注释,表示对当前语句进行说明或解释。程序执行时,只执行“&”前面的语句,“&”之后的语句不执行任何操作。,4.2.2程序设计辅助命令,2020年5月11日2时52分,30/126,3状态设置命令(1)设置会话状态格式:SETTALKON|OFF功能:打开或关闭系统交互对话显示方式,默认为打开显示。(2)设置屏幕状态格式:SETCONSOLEON|OFF功能:在系统的默认状态下,用户从键盘输入的内容都在屏幕上显示。如果要求输入的内容保密而不被显示,这只需使用命令SETCONSOLEOFF便可。,4.2.2程序设计辅助命令,2020年5月11日2时52分,31/126,4.2.2程序设计辅助命令,(3)设置缺省驱动器和目录格式:SETDEFAULTTO功能:用于设置进行输入/输出操作时的缺省驱动器和缺省目录。缺省时为当前目录。例如,若要打开和保存的文件都在D盘下的AA文件夹中,则可用命令:SETDEFAULTTOD:AA表示将当前路径设置为D:AA,这样,用户的所有输入/输出操作均在D:AA中。,2020年5月11日2时52分,32/126,4.2.2程序设计辅助命令,(4)设置独占方式格式:SETEXCLUSIVEON|OFF功能:设置以独占或共享方式打开表文件,默认时为独占方式。(5)设置字符精确匹配格式:SETEXACTOFF|ON功能:决定字符串运算符“=”两边的内容是否必须完全匹配,默认为不必完全匹配。,2020年5月11日2时52分,33/126,4.2.2程序设计辅助命令,4清屏命令CLEAR格式:CLEAR功能:清除屏幕主窗口中的显示信息。5程序文件终止命令CANCEL格式:CANCEL功能:终止程序文件的执行,关闭所有打开的文件,返回VisualFoxPro主窗口。6退出VisualFoxPro系统命令QUIT格式:QUIT功能:关闭所有打开的文件,退出VisualFoxPro系统,返回操作系统状态。,2020年5月11日2时52分,34/126,4.3程序控制结构,4.3.1顺序结构4.3.2分支结构4.3.3循环结构,2020年5月11日2时52分,35/126,4.3.1顺序结构,顺序结构是程序设计中最基本、最常见的结构。顺序结构的程序始终是按照语句排列的先后顺序从上到下逐条顺序执行。【例4.9】打开学生表文件,依次显示该表的表结构和表记录程序代码如下:*P4-4.prg*NOTE顺序结构程序SETTALKOFFCLEARUSE学生表?显示表结构DISPLAYSTRUCTUREWAIT按任意键执行下一条命令CLEAR?显示表记录LISTUSESETTALKONRETURN,2020年5月11日2时52分,36/126,在解决实际问题中,往往需要根据给定的条件来决定应采取的处理方法。我们可以利用计算机具有逻辑判断能力的特点,根据不同的逻辑条件转去执行不同的程序语句,这些不同的转向语句就构成了分支结构。,4.3.2分支结构,2020年5月11日2时52分,37/126,4.3.2分支结构,1简单判断语句(IFENDIF)格式:IFENDIF功能:先判断条件表达式的值,当其值为真时,则执行IF和ENDIF之间的命令序列;反之则转去执行ENDIF语句之后的语句,如图4-18所示。说明:可以是各种表达式的组合,但表达式的返回值只能是逻辑值.T.或.F.。,2020年5月11日2时52分,38/126,【例4.10】从键盘上输入一任意常数,求该数的算术平方根。分析:(1)只有非负数才有算术平方根;(2)输入的任意常数可能包含负数;(3)计算时应先判断输入的数是否为非负数;(4)计算平方根的函数为SQRT(X)。,4.3.2分支结构,2020年5月11日2时52分,39/126,4.3.2分支结构,2二路选择分支结构(IFELSEENDIF)格式:IFELSEENDIF功能:先判断,若其值为真,则执行,然后转去执行ENDIF之后的语句;若其值为假,则执行,然后转去执行ENDIF之后的语句。,2020年5月11日2时52分,40/126,4.3.2分支结构,【例4.11】在“成绩表.dbf”中,按学号查询学生英语等级考试的成绩。当成绩大于等于60分,则显示“通过”,否则显示“不及格”。分析:(1)打开表文件“成绩表.dbf”;(2)从键盘上输入要查询学生的学号;(3)按学号查找学生;(4)判断成绩是否大于等于60分;(5)条件为真则显示“通过”,否则显示“不及格”;(6)关闭表文件。,2020年5月11日2时52分,41/126,4.3.2分支结构,3分支结构的嵌套格式如下:IFIFELSEENDIFENDIF,功能:在执行DOCASE语句时,依次判断各的值是否为真,若为真,则执行CASE语句下的语句序列,直到遇到下一个CASE、OTHERWISE或ENDCASE。,注意:在使用分支结构的嵌套时,IF和ENDIF语句必须成对出现,缺一不可。系统在执行分支结构的嵌套时,由IF语句的最内层开始,逐层将IF和ENDIF配对。切记注意配对关系,以免因配对错误引起程序出错。,2020年5月11日2时52分,42/126,【例4.12】从键盘上输入3个数A、B和C,求它们之间的最小值。分析:(1)先从键盘上随机输入3个数,并分别存于变量A、B和C中;(2)用变量X来存放最小值;(3)判断方法:当A同时比B和C小,则A为最小;反之,A不是最小,此时最小必在B和C中,只须比较B和C便能得出结果。(4)根据给定的判断方法,可采用二重分支结构编程求解。,4.3.2分支结构,2020年5月11日2时52分,43/126,4多路分支选择结构格式:DOCASECASECASECASEOTHERWISEENDCASE,4.3.2分支结构,功能:在执行DOCASE语句时,依次判断各的值是否为真,若为真,则执行CASE语句下的语句序列,直到遇到下一个CASE、OTHERWISE或ENDCASE。,2020年5月11日2时52分,44/126,4.3.2分支结构,说明:当一个被执行后,不再判断其他,而是直接转去执行ENDCASE后面的第一条语句。所以在一个DOCASE结构中,每次最多只能执行一个CASE语句。如果没有一个为真,则执行OTHERWISE后面的,直到ENDCASE为止。如果OTHERWISE语句也没有,则不执行任何操作就转向ENDCASE之后的第一条语句。DOCASE语句的可以是关系表达式、逻辑表达式或其他逻辑变量或常量。,2020年5月11日2时52分,45/126,【例4.13】学期结束时,学校按学生的考试成绩确定学生的成绩档次,规定:成绩大于等于90分为优秀;大于等于80分且小于90分为良好;大于等于70分且小于80分为中等;大于等于60分且小于70分为及格;小于60分为不及格。,4.3.2分支结构,2020年5月11日2时52分,46/126,4.3.3循环结构,在处理实际问题的过程中,常常需要重复执行某些相同的或类似的程序段。具有重复操作功能的程序称为循环结构程序。在编制程序时,重复操作的语句不必重复编写,只要用循环结构的方法来处理,便能实现重复操作。循环结构同分支结构一样,是程序设计不可缺少的语句。VisualFoxPro提供了条件循环、计数循环和扫描循环等循环语句。,2020年5月11日2时52分,47/126,4.3.3循环结构,1条件循环DOWHILEENDDO语句在编程时,当事先不知道要重复执行多少次操作,则可设置一个循环条件,当条件表达式的值为真时就循环,反之则退出循环。这就是条件循环的基本思想。,2020年5月11日2时52分,48/126,格式:DOWHILEEXITLOOPENDDO,4.3.3循环结构,功能:先判断的值,当的值为真时,反复执行DOWHILE与ENDDO之间的循环体语句,直到的值为假时退出循环,转去执行ENDDO之后的语句。,2020年5月11日2时52分,49/126,说明:(1)DOWHILE语句既是循环入口语句,也是循环出口语句,当执行到ENDDO语句时,自动返回DOWHILE语句,再对进行判断。(2)遇到选项LOOP时,使程序无条件地返回到DOWHILE语句,重新判断的值。(3)执行到选项EXIT语句时,使程序无条件地退出循环,转去执行ENDDO后面的语句。,4.3.3循环结构,2020年5月11日2时52分,50/126,注意:(1)在进入循环前,必须先定义循环变量,并对其赋初值。(2)在循环体内,必须有一条能改变循环变量值的语句,以保证循环体执行到一定时候时能退出循环。(3)当DOWHILE后的的值为逻辑常量.T.时,在循环体中一定要有EXIT语句,以保证能退出循环。(4)一定要认真分析题意,选择正确的,以保证能得到正确的运行结果。,4.3.3循环结构,2020年5月11日2时52分,51/126,4.3.3循环结构,【例4.14】打印输出1、2、3、100。分析:(1)程序的功能就是要重复执行输出语句100次,所以应该选用循环结构的方法来实现这一目的;(2)先定义循环变量为X,由于从1开始输出,故X的初值应为1(即X=1);(3)由于输出的终值为100,所以条件表达式应定义为X+CN(CH)SETTALKON在执行主程序时,若输入字符串“ABC123”,则输出结果为:ABC123321CBA,4.4.3自定义函数,2020年5月11日2时52分,102/126,4.4.4参数传递及作用域,在一个系统模块的运行过程中,主程序与子程序之间通过相互传递参数来完成整体上的运行。主程序与子程序之间除了通过命令“DO(或过程名)WITH”进行参数传递外,还可以通过内存变量的作用域属性来传递参数。,2020年5月11日2时52分,103/126,1用内存变量作用域属性传递参数VisualFoxPro中,内存变量具有4种作用域属性:自然属性、公用属性、私有属性和本地属性。(1)自然属性在程序中出现且没有特别声明过,只是通过赋值或数组定义的变量都是自然属性的内存变量,它具有以下特点。作用范围:作用于定义该变量所在的程序及该程序调用的所有下属子程序。传递方向:单向(主子),在主程序中出现的自然属性的变量,在其调用的下属子程序中可直接使用,调用结束时保留并返回最后一次改变的值。变量寿命:主程序运行结束该变量被自动删除。,4.4.4参数传递及作用域,2020年5月11日2时52分,104/126,4.4.4参数传递及作用域,【例4.30】分析“例4.26”中的程序P4-25在调用过程中参数的相互传递及变量的作用范围。N=9&N由赋值语句赋值,具有自然属性DOJIECH&N值能同时传到子程序JIECH中S1=N&返回主程序时,将最后改变的N值代回并赋给S1N=4&对N重新赋初值DOJIECHS2=NN=5DOJIECHS3=NS=S1/(S2*S3)?C(9,4)=,SRETURN,2020年5月11日2时52分,105/126,*计算阶乘的子程序(JIECH.PRG)P=1FORI=1TONP=P*IENDFORN=P&由于P在主程序中没定义过,只能由N将阶乘值传回主程序RETURN,4.4.4参数传递及作用域,2020年5月11日2时52分,106/126,(2)公用属性自然属性的变量由于受作用域、传递方向和使用寿命的限制,不能使变量在整个系统模块中共享,VisualFoxPro为用户提供了一种能在系统模块的所有程序中使用的变量,这种能被所有程序共享的变量,称为具有公用属性的内存变量。它有以下特点:声明格式:PUBLIC作用范围:系统模块中的所有程序。,4.4.4参数传递及作用域,2020年5月11日2时52分,107/126,传递方向:双向(主子);调用时将变量值带入子程序,返回时带回最后一次改变的值。在任一级程序中定义的公共变量,当返回上级或调用下级时都能传递。变量寿命:主程序运行结束仍保留在内存中。说明:已用其他方法定义的变量不能再用PUBLIC定义,公共变量的初值为.F.。在其他子程序中定义的公共变量返回主程序时其值也能被带回。,4.4.4参数传递及作用域,2020年5月11日2时52分,108/126,(3)私有属性有时用户希望变量能在其所有的下属子程序中使用,而不希望与上级主程序共享,并且可以与上级主程序定义的变量同名,在运行时彼此不受影响。为实现这一目的,VisualFoxPro为用户提供了一种称为具有私有属性的内存变量,它有以下特点:声明格式:PRIVATE或PRAVITEALLLIKE/EXCEPTALL指上级程序中的所有变量都被屏蔽。作用范围:该程序及下级子程序。传递方向:主子,与自然属性的变量相同。,4.4.4参数传递及作用域,2020年5月11日2时52分,109/126,变量寿命:程序运行结束被自动删除。特殊作用:可屏蔽上级程序中与当前程序声明过的同名内存变量。说明:用PRIVATE声明的变量能与上级程序用PUBLIC定义的变量同名,当在子程序中使用时,只显示PRIVATE声明的变量值,而用PUBLIC定义的变量值将被自动屏蔽。返回主程序时,私有属性的变量将不返回其值。调用下级子程序时,能将其值下传,并带回最后改变的值。,4.4.4参数传递及作用域,2020年5月11日2时52分,110/126,(4)本地属性有时用户需要变量只能在一个子程序或过程中使用,而不希望被上级主程序或下级子程序共享,运行时,当与上级主程序或下属子程序同名时,彼此不会受影响(即当与上级程序同名时,屏蔽上级程序中的同名变量值,当与下级程序同名时,则保持其原有的值)。这种类似于私有属性又不影响下属子程序中同名变量的属性称为本地属性。本地属性的变量具有以下特点:声明格式:LOCAL作用范围:该程序本身。,4.4.4参数传递及作用域,2020年5月11日2时52分,111/126,传递方向:无。变量寿命:程序运行结束被自动删除。特殊作用:可屏蔽上级程序与当前程序同名的变量,同时也不受下属子程序中同名变量的影响。若在一个程序中出现同一个变量具有两种属性,则赋值时相互不受影响。注意:不能在一个子程序或过程中重复定义,但在上级程序中用PUBLIC和PRIV定义过的变量仍可在子程序或过程中用LOCAL定义;用LOCAL定义的变量初值为.F.。,4.4.4参数传递及作用域,2020年5月11日2时52分,112/126,4.4.4参数传递及作用域,2用DO命令传递参数用内存变量属性传递参数时,要求主、子程序使用的变量名一定要相同。若不想受变量名的限制,可用调用命令来传递参数。(1)传递参数格式:DOWITH说明:WITH后的参数可以是常量、变量或表达式。(2)接收参数的命令格式:格式:PARAMETERS说明:PARAMETERS后的参数只能是变量名。注意:传递参数的命令可以位于主程序中的任意位置,但接收参数的命令必须出现在被调用的子程序或过程中可执行命令的第一行。,2020年5月11日2时52分,113/126,(3)参数传递的方式参数传递的方式有两种,即引用传递和值传递,它们的形式和意义各不相同。引用传递:当WITH后为内存变量名时,则每个变量的值传给PARA中的对应变量,且随子程序中的对应变量的变化而变化。子程序返回主程序时,将传回最后改变的变量值。值传递:当WITH后为常数、表达式或是用圆括号括起来的内存变量时,每个表达式的值传给PARA中的对应变量,但其值不随子程序中的对应变量的变化而变化。子程序返回主程序时,最后改变的变量值将不被传回。,4.4.4参数传递及作用域,2020年5月11日2时52分,114/126,4.5综合程序设计实例,4.5.1数值计算问题4.5.2字符处理问题4.5.3表内容处理问题,2020年5月11日2时52分,115/126,4.5.1数值计算问题,在实际应用中,常常涉及到一些数学上的数值计算问题,如求函数值、大小比较、判断奇偶、求素数、解方程、分解因式等。编程解决以上问题时,涉及到的主要算法有:计算公式、整除、取整、求余数、累加、累乘等。熟练掌握这些算法,将对编程带来极大的方便。,2020年5月11日2时52分,116/126,1整除判断一个数的奇偶性、判断素数、判断一个数能否被另一个数整除等都与整除有关。设m,n是两个整型数值,要判断m是否能被n整除,有下列3种方法。INT(m/n)=m/nMOD(m,n)=0,即用函数判断m/n的余数是否为0。m%n=0,即用算式判断m/n的余数是否为0。例如,若要判断X是否为偶数,只要判断X能否被2整除,判断语句中的表达式可以写为INT(X/2)=X/2或MOD(X,2)=0,也可写为X%2=0。,4.5.1数值计算问题,2020年5月11日2时52分,117/126,4.5.1数值计算问题,2累加形如:1+2+3+100,1!+3!+5!+N!,,等都属于累加的问题。累加问题一般通过在循环体中设置一个累加器来实现。例如,若累加和存于变量S中,X为每次要累加的数值,则累加器就写为S=S+X。在循环之前S的初值为0(即S=0),X的值应随循环而改变。,2020年5月11日2时52分,118/126,4.5.1数值计算问题,3累乘形如:123N,11/21/31/N等都属于累乘问题。累乘问题通过在循环体中设置一个累乘器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大唐电力盘锦市2025秋招采矿工程专业面试追问及参考回答
- 湘潭市中石油2025秋招面试半结构化模拟题及答案油气储运与管道岗
- 国家能源凉山自治州2025秋招面试专业追问及参考电气工程岗位
- 中国广电天水市2025秋招笔试行测题库及答案互联网运营
- 中国移动汕头市2025秋招笔试题库含答案
- 茂名市中石油2025秋招笔试模拟题含答案市场营销与国际贸易岗
- 国家能源惠州市2025秋招心理测评常考题型与答题技巧
- 临沂市中石化2025秋招笔试模拟题含答案财务与审计岗
- 国家能源宿迁市2025秋招机械工程类面试追问及参考回答
- 国家能源南平市2025秋招心理测评常考题型与答题技巧
- 殡葬基础知识培训课件
- 湘教版七年级上册数学第一章有理数单元测试卷(含答案)
- 小学教育专业认证汇报
- 非计划性拔管的预防与护理
- 第3课 公民意味着什么 第一课时 公民身份从何而来 教学设计-2024-2025学年道德与法治六年级上册统编版
- 2024年达州市招聘事业单位工作人员笔试真题
- 2025年工程测量赛项理论考试题库(含答案)
- 《烘焙技巧甜点制作》课件
- SJG 49-2019 深圳市公安交警基层业务用房及配套设施建设标准
- 2025年中心卫生院基本公共卫生服务项目宣传月活动总结(三篇)
- 电站反恐防暴安全
评论
0/150
提交评论