《高中信息技术 奥林匹克信息学竞赛班进阶篇 pascal-04 子程序课件.ppt》由会员分享,可在线阅读,更多相关《高中信息技术 奥林匹克信息学竞赛班进阶篇 pascal-04 子程序课件.ppt(13页珍藏版)》请在金锄头文库上搜索。
1、PASCAL-子程序过程过程(子程序)过程过程单独写成一个程序段,可以多次调单独写成一个程序段,可以多次调用,可以用,可以 通过参数处理不同的数据。通过参数处理不同的数据。procedure abc ( x:integer);begin end ;过程名过程名参数表参数表子程序的内容子程序的内容过程过程(子程序)program ex701; var u,v:integer; procedure p1(x,y:integer); var i,j:integer; begin for i:=1 to x do begin j:=y+i; write(j); end; end;Begin u:=6;
2、 v:=5; p1(u,v); writeln; u:=u+v; v:=u*v; p1(u,v); writeln(end);End. 过程在程序中的位置及调用过程在程序中的位置及调用过程过程(子程序) 无参过程无参过程Program draws; procedure line; const length=10; var i : integer; begin for i:=1 to length do write(); writeln; end;Begin line; writeln ( Hello ! ); line;End. 输出输出: Hello! 过程过程(子程序) 有参过程有参过程P
3、rogram draws; procedure line(length:integer); var i : integer; begin for i:=1 to length do write(); writeln; end;Begin line(10); writeln ( Hello ! ); line(8); line(5);End. 输出输出: Hello!过程过程(子程序) 参数:值参、参数:值参、变参变参procedure line ( x : integer );值参值参procedure line ( var y : integer );变参变参过程过程(子程序) 值参和变参的
4、区值参和变参的区别别Program zc; var n:integer; procedure A (x:integer); var i:integer; begin for i:=1 to x do write(); writeln; x:=x+10; end;Begin read(n); A(n); writeln(n=,n);End. 输入:输入:5 5 输出:输出:n=5n=5 55x=155nx5复制复制值参值参15过程过程(子程序) 值参和变参的区值参和变参的区别别Program zc; var n:integer; procedure B (var x:integer); var
5、i:integer; begin for i:=1 to x do write(); writeln; x:=x+10; end;Begin read(n); B(n); writeln(n=,n);End. 输入:输入:5 5 输出:输出:n=15n=15 55x=15变参变参xn没有开新的空间!没有开新的空间!515过程过程(子程序)var a,b:integer;var a,b:integer; x,y:integer; x,y:integer;procedure fun(a,b:integer);procedure fun(a,b:integer);var k:integer;var
6、k:integer;begin k:=a; a:=b; b:=k; end;begin k:=a; a:=b; b:=k; end;beginbegin a:=3; b:=6; a:=3; b:=6; x:=a; y:=b; x:=a; y:=b; fun(x,y); fun(x,y); writeln(No.1:, a , b ); writeln(No.1:, a , b ); fun(a,b); fun(a,b); writeln(No.2:, a , b ); writeln(No.2:, a , b );end.end.例:2007年联赛第4题 : 指向内存地址指向内存地址 : 该地
7、址的内容该地址的内容输出:No.1: 3 6No.2: 3 6忘了值参值参过程过程(子程序) 全局变量和局部全局变量和局部变量变量在主程序说明的为全局变量;在主程序说明的为全局变量;在子程序说明的为局部变量;在子程序说明的为局部变量; 当全局变量和局部变量同名时,当全局变量和局部变量同名时,子程序中的变量不影响全局变量。子程序中的变量不影响全局变量。仅在该子程序中有效仅在该子程序中有效过程过程(子程序)Program same; var x:integer; procedure let; var x:integer; begin x:=1; writeln(x); end;Begin x:=0
8、; let; writeln(x);End. 全局变量和局部变量全局变量和局部变量同名同名运行结果:运行结果:输出:输出: 1 0 局部变量局部变量全局变量全局变量计算机内存:计算机内存:全局全局x局部局部x (let过程)函数函数:和过程类似,都是独立的程序段,不同函数:和过程类似,都是独立的程序段,不同之处之处 在于它会返回一个值。在于它会返回一个值。function abc ( x:integer) : boolean;begin abc:=.;end ;函数名函数名参数表参数表给函数赋值给函数赋值函数类型函数类型函数program area; 求五边形面积求五边形面积 var L1,L
9、2,L3,L4,L5,L6,L7,s:real; function ts(a,b,c:real):real; 计算三角形面积计算三角形面积ts var p:real; begin p:=(a+b+c)/2; ts:=sqrt(p*(p-a)*(p-b)*(p-c); 海伦公式海伦公式 end;Begin read(L1,L2,L3,L4,L5,L6,L7); 输入各边长输入各边长 s:=ts(L1,L2,L6)+ts(L6,L3,L7)+ts(L7,L4,L5); 计算五边形面积计算五边形面积 writeln(area=,s); 输出面积输出面积End. S1L2S2S3L1L6L3L7L5L4