pascal第二讲__过程和函数(修改)剖析.ppt

  1. 1、本文档共57页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
pascal第二讲__过程和函数(修改)剖析

值参与变参的区别: 1、传值:为值参分配存储单元,过程体内对值参的操作不影响实参的值。一旦过程体执行结束后,系统将收回值参所占用的存储单元,值参的值也就不再存在。 2、变参是传地址:变参所占用的存储单元中存放的是实参的地址,因此对变参的操作就是对实参的操作。一旦过程体执行完毕,系统将收回变参所占用的存储单元,但运算结果已保留在对应的实参中。 形参种类不同决定了实参的单、双向传递。值参实现单向传递,仅将过程外部的值传递给过程,故称为输入参数,它所对应的实在参数可以是常量、变量或表达式;变参实现的是双向传递,除了将过程外部的值传递给过程外,更重要的是它能将过程中变化的形参值带出来,故又称为输出参数,其对应的实参必须是变量。 实参 值参 实参 变参 过程 过程 指出程序中的全程变量、局部变量、值参、变参,并写出程序运行后的输出结果。 Program lx(input,output); var a,b,c:integer; Procedure suan(var x:integer;y:integer); var m,n:integer; begin m:=x*y;x:=x+1; y:=y+10;n:=x+y; writeln(‘x=‘,x, ‘ y= ’:4,y,’m=’:4,m‘ n=’:4,n) end; begin a:=3;b:=3; suan(a,b); suan(a,b); suan(a,b) end. 全程变量 a,b,c 局部变量 m,n 值参:y 变参:x 结果: x=4 y=13 m=9 n=17 x=5 y=13 m=12 n=18 x=6 y=13 m=15 n=19 练习: [例2-5]如果一个自然数除了1和本身,还有别的数能够整除它, 这样的自然数就是合数。例如15,除了1和15,还有3和5能够整除,所以15是合数。14,15,16是三个连续的合数,试求连续十个最小的合数。 分析:①从最小的素数开始,先确定第一个素数A; ②再确定与A相邻的后面那个素数B;(作为第二个素数); ③检查A,B的跨度是度否在10 以上,如果跨度小于10,就把B 作为新的第一个素数A,重复作步骤②; ④如果A、B跨度大于或等于10,就打印A、B之间的连续10个自然数,即输出 A+1, A+2, A+3 …, A+10。 Program exam44; var a,b,s,n: integer; yes: boolean; procedure sub(x: integer;var yy: boolean); {求x是否为素数 } var k,m: integer; { 用yy逻辑值转出 } begin k:=trunc(sqrt(x)); for m:=3 to k do if odd(m) then if x mod m=0 then yy:=false; end; begin {主程序 } b:=3; repeat a:=b; {a 为第一个素数 } repeat yes:=true; inc(b,2); {b是a后面待求的素数} sub(b,yes); {调用SUB过程来确认b是否为素数 } if yes then s:=b-a; {如果b是素数,则求出跨度s } until yes; until s = 10; for n:=a+1 to a+10 do write(n:6); writeln; readln end. 6、子程序的嵌套 一个函数或过程可能要求调用另一个函数或过程,这种调用称为函数或过程的嵌套。 1、嵌套 例1-7 求组合数C +C 的和。 3 6 5 9 C = m n n! m!(n-m)! n!=n*(n-1)*…*2*1 用fac函数实现。 组合用cnm函数实现。被调用的函数写在调用它的函数前面。 Program ex1-7(input,output); var s:real; function fac(k:integer):real; var I,fa:integer; begin fa:=1; for I:=2 to k do fa:=f

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档