ppt6程序设计初步_第1页
ppt6程序设计初步_第2页
ppt6程序设计初步_第3页
ppt6程序设计初步_第4页
ppt6程序设计初步_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第六章第六章n 教学 顺序结构设计 分支结构设计 循环结构设计 程序设计基础 模块化设计n 程序设计基础程序设计基础数据结构数据结构算法算法对数据的描述:在程序中指定对数据的描述:在程序中指定数据的类型和数据的组织形式数据的类型和数据的组织形式对操作的描述对操作的描述类比理解:菜谱原料操作步骤一系列计算机一系列计算机指令的集合指令的集合 算法的概念算法的概念n在员工表中,按员工编号查询员工的姓名和职称n将酒瓶和油瓶中的液体互换。n解决方法 1.拿来一个空瓶 2.酒瓶的酒倒入空瓶 3.油瓶的油倒入酒瓶 4.空瓶的酒倒入油瓶n思考 如何将变量a、b中存放的值互换?写出算法程序设计基础程序设计基础流

2、程图的基本知识流程图的基本知识名称起止框 输入输出框 判断框处理框 流程线图形功能表示算法的开始和结束表示数据的输入和输出 表示进行条件的判断 表示数据加工的过程 连接各个步骤 顺序结构顺序结构特点特点:依照程序书写顺序执行程序依照程序书写顺序执行程序 use sb &打开表 list fields 名称,价格 for 主要设备 &显示相关记录 replace all 价格 with 价格*0.9 for 主要设备 &数据替换 例:打开设备表,显示所有主要设备的名称及价格,并将主要设备的价格降低10%。分支结构(选择结构)分支结构(选择结构)特点特点:根据条件的 满足与否而 分别执行与 其相对

3、应的 操作开始打开表输入员工号找到吗关闭表结束yn输出查无此人输出姓名等思考思考:分支结构与顺序结构的不同之处 循环结构(重复结构)循环结构(重复结构)特点特点:反复执行某些操作,反复执行的部分称为循环体。 条件循环体yn(a)当型循环y循环体条件n(b)直到型循环思考:思考: 两种循环结构的区别在于?(提示:循环条件)答案答案: 1. 当型是当循环条件成立时执行循环体,条件不成立时退出循环 ;直到型是执行循环体,直到条件成立才退出循环。 2. 当型是先判断后执行,可能一次都不能执行;直到型是先执行后判断,至少执行一次。 小结小结n所有程序从整体上看其执行流程肯定是从上而下顺序执行的,是一种顺

4、序结构。而在其内部的结构中,三种结构是。n例如,对于循环结构,其内部肯定包含有判断条件成立与否的结构,单独来看是一种选择结构,但从整体上是属于循环结构的一部分,而循环体内部的语句自然是一种依次执行的顺序结构。 n如何设计结构化程序? 程序设计基础程序设计基础自顶向下逐步细化结构化编码模块化设计算法设计程序设计基础程序设计基础1、程序注释命令、程序注释命令 :note* 2、置会话状态命令、置会话状态命令3、交互式命令、交互式命令(1)格 式: 功 能:此命令是专门用于字符串的输入。说 明:(1)提示信息是用来在输入时,显示提示性文字。(2)输入的字符串保存在to所指向的内存变量中。(3)在使用

5、此命令来输入字符串时,不需要加上定界符,否则,定界符会被当做字符串本身被存入内存变量中。例 子: accept (2)格 式 : 功 能 :从键盘输入数据保存在指定的内存变量中。说 明 :(1)此命令能够接收各种类型数据的输入。(2)在输入数据时对于有定界符的数据类型一定要带上定界符输入。(3) 系统将整个屏幕划分为: 25行 80列 xy平面坐标系。 say get default read 说明根据员工的编号来修改员工的基本工资和水电费。 clear use 工资表 yg=0001 2,10 say 请输入员工的编号 get yg read locate for 员工编号 = yg 4,1

6、0 say “请修改基本工资” get 基本工资 6,10 say “请修改水电费” get 水电费 read use 格 式wait to window at , nowait clear | noclear timeout 4、等待命令、等待命令例 子:5、程序结束专用命令、程序结束专用命令 1. 建立或修改程序文件 (1) 命令方式 : :建立或修改一个程序文件。 :命令中的文件名是指定要生成的程序文件的名称,缺省的扩展名为.prg;文件名前也可以指明路径。 (2) 菜单方式(2个步骤) 选择”文件”菜单中的”新建”命令,并在弹出的”新建”对话框中,选择”程序”按钮,再单击”新建文件”命

7、令按钮,弹出文本编辑窗口。 在文本编辑窗口中,输入程序内容即可。 2. 程序的运行(2) 菜单方式(2种方式) 选择”程序”菜单中”运行”命令,在弹出的”运行”对话框中,输入文件名即可。 当程序处在编辑状态下时,右击文本编辑区,在其弹出快捷菜单中选择“执行程序”菜单项即可。 顺序结构程序设计是三种基本结构中最简单也是最常用的一种结构。顺序结构的程序在运行时按照语句排列的先后顺序,自顶向下依次执行。 从键盘输入一个小写字母,要求改用大写字母输出。从键盘输入一个小写字母,要求改用大写字母输出。 set talk off clearaccept 请输入一个小写字母 to aa= upper(a)?

8、“转换结果为: , aset talk onreturn 开 始输入字母大小写转换输出结果结 束例6.2流程图 如果输入的字母为非小写字母,例如,误操作输入了大写字母或是数字字符,那么在此程序运行中仍然将继续执行并显示结果,这显然与题意不符,要解决这个问题,需要用到选择结构程序。 顺序结构程序特点顺序结构程序特点: 依照程序书写顺序执行程序依照程序书写顺序执行程序例例2 2:求长方形的面积。:求长方形的面积。 clear clear set talk off set talk off input “ input “请输入长方形的长:请输入长方形的长:” ” to to l l input “

9、input “请输入长方形的宽:请输入长方形的宽:” ” to to w w s=l s=l* *w w ? “ ? “长方形的面积为:长方形的面积为:”, s, s set talk on set talk on return return分支结构分支结构 程序应具有程序应具有判断判断功能,而判断是通过程序功能,而判断是通过程序中的分支结构(选择结构)来实现的。中的分支结构(选择结构)来实现的。 分支结构是程序中一种常用结构,按照分支结构是程序中一种常用结构,按照分支结构分支结构执行路径的多少执行路径的多少,可分为,可分为单分支、单分支、双分支和多分支双分支和多分支结构。实现分支结构的语句结

10、构。实现分支结构的语句有有 if语句语句和和do case语句。语句。 无论哪种类型的分支结构,都是依据无论哪种类型的分支结构,都是依据所给所给条件为真或为假条件为真或为假,来选择,来选择执行某一分执行某一分支支的相应操作。的相应操作。执行流程:执行流程: 首先计算首先计算条件表达式条件表达式的值,的值, 若其值为真若其值为真,则执行,则执行ifif与与endifendif之间的命令之间的命令 序列序列, ,然后执行然后执行endifendif后面的命令;后面的命令; 若其值为假,若其值为假,则直接执行则直接执行endifendif后面的命令。后面的命令。分支结构特点分支结构特点:根据条件成立

11、与否,分别执行与其相对应的操作。根据条件成立与否,分别执行与其相对应的操作。条件endif后语句后语句n命令序列y思考思考:分支结构与顺序结构的不同之处分支结构与顺序结构的不同之处 例例1 1:求长方形面积。(判断:当输入的边长值为正:求长方形面积。(判断:当输入的边长值为正数时,求面积。)数时,求面积。)clearset talk offinput “请输入长方形的长:请输入长方形的长:” to linput “请输入长方形的宽:请输入长方形的宽:” to wif l0 and w0 s = l * w ? ”长方形的面积为:长方形的面积为:” , sendifreturn在设计程序时,对于

12、有数据在设计程序时,对于有数据输入的程序,一定要对输入输入的程序,一定要对输入数据的数据的有效性有效性做相应的检查,做相应的检查,避免由于数据的错误输入而避免由于数据的错误输入而导致程序的出错。这是一个导致程序的出错。这是一个程序员必须养成的良好习惯。程序员必须养成的良好习惯。输入长宽:输入长宽:l和和w开始开始l,w “z”) or (a “z”) or (a “a”) ? “ ? “输入字母错误输入字母错误! ”! ” set talk on set talk on return returnendifendifa= upper(a)a= upper(a)? ? 转换结果为转换结果为: ,

13、 a: , aset talk onset talk onreturn return 2 2、双分支结构、双分支结构 格式:格式:if if 1 else else 2 endif endif执行流程:执行流程: 首先计算首先计算条件表达式条件表达式的值,的值, 若其值为真若其值为真,则执行命令序列,则执行命令序列1 1,然后,然后 再执行再执行endifendif后面的命令;后面的命令; 若其为假若其为假,执行命令序列,执行命令序列2 2,然后再执,然后再执 行行endifendif后面的命令。后面的命令。条件条件语句序列语句序列1 1语句序列语句序列2 2yn双分支结构流程图双分支结构流程

14、图例例3 3:从键盘输入一个数,判断其为奇数还是偶数。从键盘输入一个数,判断其为奇数还是偶数。 分析分析:(1 1)首先是输入一个)首先是输入一个数,然后判断输入的数奇偶数,然后判断输入的数奇偶性。性。(2 2)应输入数值型数据,可)应输入数值型数据,可以用以用inputinput或是或是getget语句来输语句来输入。入。 (3 3)如何判断奇偶性呢?可)如何判断奇偶性呢?可使用使用modmod函数或求余运算符函数或求余运算符“%”%”。对于一个偶数。对于一个偶数x x,modmod(x x,2 2)应该为)应该为0 0,否则为,否则为1 1。 输出偶数偶数开始开始输入数输入数余余数数为为0

15、?0?输出奇数输出奇数结束结束ynset talk offset talk offinput “input “请输入一个数字请输入一个数字” ” to ato aif mod (a,2)=0 & a%2=0if mod (a,2)=0 & a%2=0 ? a, “ ? a, “是一个偶数是一个偶数”elseelse ? a, “ ? a, “是一个奇数是一个奇数”endifendifset talk onset talk onreturn return 分析分析: :1.1.打开工资表打开工资表; ;2.2.输入员工号输入员工号; ;3.3.用用locatelocate命令查找该命令查找该员工

16、;员工;4.4.用用found()found()函数来判函数来判断是否存在该记录。断是否存在该记录。5.5.若若found()found()函数为真,函数为真,表示存在此员工记录,表示存在此员工记录,否则,不存在此员工记否则,不存在此员工记录,给出录,给出“查无此人查无此人”的提示信息。的提示信息。5.5.关闭表。关闭表。开始开始打开表打开表输入员工号输入员工号找到找到吗吗关闭表关闭表结束结束yn输出查无此人输出查无此人输出员工信息输出员工信息查找该员工查找该员工set talk offset talk offuse use 工资表工资表accept “accept “请输入员工编号请输入员工

17、编号” ” to ato alocate for locate for 员工编号员工编号=a=aif if foundfound()() & & 条件条件foundfound()()为真表示存在此员工为真表示存在此员工 disp disp 员工号员工号, ,基本工资基本工资, ,水电费水电费else & else & 条件条件foundfound()()为假表示不存在此员工为假表示不存在此员工 ?“ “查无此人!查无此人!” ”endifendifuse use set talk onset talk onreturnreturn程序采用程序采用格式书写,格式书写,便便于阅读和调试。于阅读和调

18、试。注意:注意:1 1、ifif与与endifendif必须成对出现,且各占一行。必须成对出现,且各占一行。2 2、 可以为关系表达式、逻辑表达式或可以为关系表达式、逻辑表达式或其他逻辑量。其他逻辑量。clearclearset talk offset talk offinput “input “请输入请输入a a的值:的值:” ” to a to a input “input “请输入请输入b b的值:的值:” ” to b to b input “input “请输入请输入c c的值:的值:” ” to c to c if ab &aif ab &a和和b b比较大小,若比较大小,若a a

19、大,则大,则a a、b b 交换交换 s=as=a a=b a=b b=s b=sendifendifif ac &aif ac &a和和c c比较大小,若比较大小,若a a大,则大,则a a、c c 交换交换 s=as=a a=c a=c c=s c=sendifendifif bc &bif bc &b和和c c比较大小,若比较大小,若b b大,则大,则b b、c c 交换交换 s=bs=b b=c b=c c=s c=sendifendif? a ,b , c? a ,b , creturnreturn3.if3.if语句的嵌套语句的嵌套 实际生活中,很多问题不仅仅只有两种可能,而是要实

20、际生活中,很多问题不仅仅只有两种可能,而是要求对多种情况进行不同的处理,则需要用到求对多种情况进行不同的处理,则需要用到ifif语句嵌套。语句嵌套。 嵌套嵌套是指在某种结构中含有其它结构。是指在某种结构中含有其它结构。一般格式:一般格式: if if 1 if if 2 endif endif else else if if 3 endif endif endif endif 注意:注意:1 1、ifif一定要与一定要与endifendif配对。配对。2 2、在、在ifif结构之间可以嵌套,结构之间可以嵌套,但不能交叉。但不能交叉。input “input “请输入学生成绩请输入学生成绩” t

21、o pto pif p60if p60 ? “? “不及格不及格” elseelse if p70 if p70 ? “ ? “及格及格” else else if p80 if p80 ? “ ? “良良” elseelse if p90 if p100) or ( p0) ? 输入的成绩有误,请重新输入输入的成绩有误,请重新输入else do case case p60 ? 不及格不及格 case p70 ? 及格及格 case p80 ? 良良 case p90 ? 好好 otherwise ? 优优 endcaseendifreturn课堂练习:课堂练习:编一缴税程序,以编一缴税程序,

22、以800800元为基数,超出部分元为基数,超出部分的缴税比例如下:的缴税比例如下: 800-1500(含(含800) 5% 1500-2500(含(含1500) 10% 2500-5000(含(含2500) 20% 5000以上以上 (含(含5000) 25% 注意事项:注意事项:小结小结 分支结构使得程序功能得到完善,分支结构使得程序功能得到完善,分支结构的目的在于分支结构的目的在于对不同情况做出对不同情况做出不同处理不同处理,这种结构的出现使得计算,这种结构的出现使得计算机在一定程度上具有了机在一定程度上具有了判断判断的功能,的功能,是计算机走向智能化的重要结构。是计算机走向智能化的重要结

23、构。1.1.条条 件件 循循 环环 2.2.步步 长长 循循 环环 3.3.扫扫 描描 循循 环环 1、条件循环、条件循环:命令序列命令序列exitloopenddo后面语句后面语句条件条件ftenddo注意事项:注意事项:(1)此循环为当型循环。对于当型循环,如果条件第一次就不成立,那么循环一次也不做。(2)。(3)可在适当时候控制循环,。 求1+2+3+100之和。分析分析: 0 + 1 = 1 1 + 2 = 3 3 + 3 = 6 6 + 4 = 10 4950+100=5050s i s s=0i =1s=s+ii =i+1【例【例6.126.12】s=s+ii =i+1s=s+ii

24、 =i+1结 束输出s开 始i=100?s,i赋初值0s=s+ii=i+1yn例6.12流程图set talk offcleari=1s=0i=100i5为止,求此时n的值。 (1)此题为一个多项式累加求结果。但是显然具体多项式有多少项并不清楚所以不知循环次数。 (2)采用循环结构,循环体中每次是对s累加前一项式的值,而且多项式之间存在着每次分母都比上一次增加1规律。 (3)由题目给出条件得知,只有当s小于5时循环才能继续。因此得出循环的条件应该为s5 exitexit endifenddoenddo? “n的值应该为”,nset talk onreturn(1)此题要求判断100到200之间

25、的所有数,那么是一个循环判断的过程。 (2)设一个变量i初值为100,循环条件为i=200。 (3)循环体中,对每次的i先利用mod函数判断奇偶性。若i为奇数则累加到变量s中,否则,通过loop语句退出本次循环,进入下一次循环判断。 【例【例6.156.15】求100到200之间所有奇数之和。 set talk offclears=0i=100do while i=200 2、步长循环、步长循环条件循环可以实现已知和未知循环次数的循环。对于的循环还可采用步长循环。 格式格式:数值表达式,默认值为1。说明说明:几种步长循环形式:几种步长循环形式: for i=1 to 100 n=n+1 end

26、for 没有给出步长,默认为1,退出循环后n的值为100。假设n的初值为0 for i=1 to 1 step 10 n=n+1 endfor 循环只做一次 , 退出循环后n的值为1。 求1+2+3+100之和。【例【例6.126.12】 set talk off clear s=0 s=0 for i=1 to 100 step 1 for i=1 to 100 step 1 s=s+i s=s+i endfor endfor ? 1-100之和为,s set talk on return :求123100之积。s1s=s*i积 求所有的3位数中能同时被5和12整除的数有多少个?其和是多少?

27、并按照每行输出5个,输出这些数。 1.所有的三位数,也就确定了范围是从100999,使用步长循环,初值为100,终值为999,步长为1。 2.用循环到的数对5和12求余,若其余数为0,则是一个需要的数,那么存放统计个数的变量加1,用于求和的变量累加上该数值。 3.对于每个满足条件的数都使用“?”来保证同行输出,一旦输出了5个,则使用“?”换行。即,如果统计的个数能被5整除,就输出一个“?”,用来换行。 【例【例6.136.13】store 0 to s,t & 保存, 保存满足条件的for i=100 to 999 if (i%5=0) and (i%12=0) s=s+i t=t+1 ? i

28、, if t%5=0 ? &已经输出5个数,则换行输出。 endif endif endfor?满足条件的数的个数为:, t?满足条件的数之和为:, s :输出所有的四位数中能同时被9和11整除的数,每行输出6个。 1.在表中添加新的空记录可以使用append blank命令。 2.用步长循环来控制添加记录的数量。 3.内部数据的输入可以用定位输入命令来完成。 set talk off clear use 员工表 for 【例【例6.146.14】在员工表中添加10条新记录。 return小小 结结a) 循环变量、和(或积或个数)变量要赋初值。b) do while循环体内要有修改循环变量的语

29、句(即为了避免程序成为死循环)。c)尽可能不要在for循环内部使用改变循环变量的语句。3、扫描循环、扫描循环格格 式式:说说 明明:use 员工表store 0 to n1,n2,j1,j2 if 性别=“男” n1=n1+1 else n2=n2+1 endif do case case 职称=“教授” j1=j1+1 case 职称=“副教授” j2=j2+1 enddo【例【例6.156.15】统计员工表中男女人数,以及教授和副教授的人数。 ?“总共有”,n1,“个男员工”?“总共有”,n2,“个女员工”?“总共有”,j1,“个教授” ?“总共有”,j2,“个副教授” use 总结总结

30、a) 条件循环命令适用于各种类型的循环程序。 b) 计数循环适用于已知循环次数的循环程序。 c) 扫描循环命令适用于对数据库操作的循环程序。 d) 事实上,forendfor和scanendscan是 do whileenddo的特殊形式。作作 业业1.用扫描循环依次修改学生表中第10-40条记录中女生的总分。2.编写一个密码输入程序,密码为“abc”,若用户输入正确,显示“欢迎使用”,若不正确,允许输入三次,三次输入不正确,显示“无权使用本系统”,并退出程序执行。3.在屏幕上打印如下图形: * * * 4.实现输入任意一个15以内的数求其阶乘。5、设s=1+1/2+1/3+1/n,求使s不超

31、过10的最大的n值。6、求1-1000之间能被3整除的偶数的个数及其和。7、打印如下图形: * * * *附加题: 1、任意输入10个数,能求出它们中的最大值和最小值。 2、打印九九乘法表。 1.1.子子 程程 序序 2.2.过程与过程文件过程与过程文件 3.3.自定义函数自定义函数 4.4.内存变量的作用域内存变量的作用域 5.5.数据传递数据传递 1、子程序、子程序 子程序实际上是一个程序,其是一个相对的概念,通常称调用的程序为主程序,被调用的程序为子程序。 1、主程序执行时遇到do命令,执行就转向子程序。子程序执行完后就会返回到主程序。 2、参数表可以是表达式,若为内存变量,必须具有初值

32、。 3、调用子程序时,参数表中的参数要传送给子程序。 parameters parameters 功能:功能:接受主程序发送的参数值,调用返回主程序时把变 量的值回送给主程序相应的变量。 说明:说明: a) a) parameters必须是被调用程序的第一个语句。 b)b) 程序返回主程序后,该命令定义的参数即被清除。 c)c) do 命令传送参数的个数不能多于parameters参数 表中所列参数的个数。 d)d) do命令所带的参数叫实际参数,parameters所对 应的叫形式参数。求一个半径等于边长的圆与正方形面积之差。主程序:主程序:store 0 to s1,s2input “输入

33、半径或边长的值: to ado yuan.prgyuan.prg with a,s1do zhen.prgzhen.prg with a,s2?s1-s2yuan.prgyuan.prgparameters r,ss=3.14*r2returnzhen.prgzhen.prgparameters l,ss=l2return【例【例6.156.15】store 0 to s1,s2input “输入半径或边长的;值:” to ado yuan.prgyuan.prg with a,s1do zhen.prgzhen.prg with a,s2?s1-s2yuan.prgyuan.prgparam

34、eters r, ss=3.14*r2returnzhen.prgzhen.prgparameters l, ss=l2returna ,s2a ,s1主程序:主程序: 注注 意意 1、只有当do命令中参数为内存变量时,子程序的参数才能返回给主程序,若参数为常量或表达式时,子程序的参数值不能够返回给主程序。 2、若子程序不需要参数时,do命令也可以不带参数。 return to master|to return to master|to 说明: to master 直接返回到最外层主程序;to 强制返回到指定的程序文件。主程序 do a a.prg do b retutnb.prg do c

35、returnto masterc.prg returnto a主程序主程序cleardo a ?“所有程序执行完毕”a.prg?开始执行ado b ?a执行完毕returnb.prg ?开始执行b do c?b执行完毕return to masterc.prg ?开始执行creturn to a2、过程与过程文件、过程与过程文件 如果将多模块程序中的每个模块(主程序,子程序或自定义函数)分别保存为一个独立的.prg文件,则每执行一个模块就要打开一个文件,势必会增加运行时间。为此vfp允许在一个.prg文件中设置多个程序模块,并将主程序以外的每个模块定义为一个过程,即“过程文件”,仍以.prg为

36、扩展名。 procedure procedure parameters parameters returnreturn说说 明明 a) 每个过程均以procedure开始,以return结束。每个过程实际上是一个独立的子程序或一个用户定义函数。 b) procedure 用于过程的第一条语句,它标识了每个过程的开始,同时定义了过程名。 c) 过程如果以return 作为结束语句,则该过程既可用do do 的形式执行,又可当做一个合法的自定义函数,可供随时调用。将子程序中的例题改为过程。store 0 to s1 ,s2input “输入半径或边长的值:” to ado yuan with a

37、, s1do zhen with a , s2?s1-s2procedure yuanparameters r , s s=3.14*r2returnprocedure zhenparameters l , s s=l2return12【例【例6.166.16】【例【例6.176.17】写出下列程序的运行结果。set talk offa=10b=8do subb with a , bset talk on returnprocedure subb parameters x , y ?x,y store 25 to x x=302*sqrt(x) y=y+x ?x,yreturn结果为:10 8

38、20 28格格 式:式:set procedure to set procedure to 功功 能:能:打开过程文件。打开过程文件。 【例【例6.186.18】用过程文件实现求一个半径等于边长的圆与正方形面积之差的问题。 * *main.prgmain.prgclearset talk offset procedure to sub &打开过程文件打开过程文件sub.prgsub.prgstore 0 to s1,s2input “输入半径或边长的值: to ado yuan with a,s1 &调用过程文件中的过程调用过程文件中的过程yuanyuando zhen with a,s2 &

39、调用过程文件中的过程调用过程文件中的过程zhenzhen?s1-s2set talk onreturn * *过程文件过程文件sub.prgsub.prgprocedure yuan &过程过程yuanyuan parameters r,s s=3.14*r2returnprocedure zhen &过程过程zhenzhen parameters i,s s=i2return 3、自定义函数、自定义函数 function function parameters parameters return return 若使用function语句来指出函数名,表示该函数包含在调用程序中;若缺省,则表示

40、此函数是一个独立文件,函数名在定义文件名时确定。return用于返回函数值,只能返回一个值。若缺省该语句则返回值为.t.。 自定义函数与系统函数调用方法相同: 函数名() 【例【例6.196.19】将子程序中的例题改为自定义函数。clears=0input “输入半径或边长的值:” to a?yuan(a)-zhen(a)?yuan(a)-zhen(a)function yuanyuan parameters r s=3.14*r2return sfunction zhenzhen parameters l s=l2return s【例【例6.206.20】 定义一个判断n是否是素数的函数,然

41、后调用该函数求21000内的全部素数。分析:分析: a) 素数也叫质数,它是大于1且除了1和它本身之外,不能被其他任何整数所整除的整数。 b) 为了判断某数n是否是素数,一个最简单的方法是用2345n-1这些数逐个去除n,看能否除尽,如果全都除不尽,则n是素数,否则,只要其中一个数除尽了,则n不是素数。为了减少除的次数,提高运行效率,除到n n开方开方即可。程序:程序: *此子程序判断n是否是素数function primeparameters nflag=.t.k=int(sqrt(n)j=2do while j=k and flag if mod(n,j)=0 flag=.f. enif

42、j=j+1enddoreturn flag*main.prg调用该函数求21000内的全部素数。clearfor m=2 to 1000 if prime(m) ?m endifendfor4、内存变量的作用域、内存变量的作用域一、全局变量一、全局变量 public public 功能:功能:声明并建立全局变量。说明:说明: a) 一旦定义可供所有的程序,模块使用。 b) 在命令窗口定义的变量是全局变量。 c) 程序执行完后不会自动清除。若以内存变量的作用域分类,可分为下列三种: 全局变量、局部变量、隐藏局部变量全局变量、局部变量、隐藏局部变量 *temp.prgtemp.prg public

43、 i i=2 ?执行temp1前的i:,i do temp1do temp1 ?执行temp1后的i:,i* *temp1.prgtemp1.prg i=i+4 ?temp1中的i:,i 结果:结果: 执行temp1前的i:2 temp1中的i:6 执行temp1后的i:6【例【例6.216.21】二、局部变量二、局部变量 在程序中定义的变量,若没带public声明,它只能在定义它的程序及其下级程序中使用,一旦定义它的程序运行结束,它便自动被清除。例:* *main.prgmain.prg r=100 do subdo sub ?p return* *sub.prgsub.prg p=2*3.14*r return结果结果:由于p是在子程序中的局部变量,退出子程序后自动被清除,则在主程序中输出p的值时出现

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论