高中信息技術(shù) 奧林匹克信息學(xué)競賽班進階篇 pascal-04 子程序課件.ppt
PASCAL-子程序,過程(子程序),過程單獨寫成一個程序段,可以多次調(diào)用,可以 通過參數(shù)處理不同的數(shù)據(jù)。,procedure abc ( x:integer); begin end ;,過程名,參數(shù)表,子程序的內(nèi)容,過程(子程序),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; v:=5; p1(u,v); writeln; u:=u+v; v:=u*v; p1(u,v); writeln(end); End.,過程在程序中的位置及調(diào)用,過程(子程序),無參過程,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! ,過程(子程序),有參過程,Program 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! ,過程(子程序),參數(shù):值參、變參,procedure line ( x : integer );,值參,procedure line ( var y : integer );,變參,過程(子程序),值參和變參的區(qū)別,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 輸出: n=5,5,5,x=15,5,復(fù)制,值參,15,過程(子程序),值參和變參的區(qū)別,Program zc; var n:integer; procedure B (var x:integer); var 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 輸出: n=15,5,5,x=15,變參,沒有開新的空間!,5,15,過程(子程序),var a,b:integer; x,y:integer; procedure fun(a,b:integer); var k:integer; begin k:=a; a:=b; b:=k; end; begin a:=3; b:=6; x:=a; y:=b; fun(x,y); writeln(No.1:, a , b ); fun(a,b); writeln(No.2:, a , b ); end.,例:2007年聯(lián)賽第4題, : 指向內(nèi)存地址, : 該地址的內(nèi)容,輸出: No.1: 3 6 No.2: 3 6,忘了,值參,過程(子程序),全局變量和局部變量,在主程序說明的為全局變量;,在子程序說明的為局部變量;,當全局變量和局部變量同名時,子程序中的變量不影響全局變量。,僅在該子程序中有效,過程(子程序),Program same; var x:integer; procedure let; var x:integer; begin x:=1; writeln(x); end; Begin x:=0; let; writeln(x); End.,全局變量和局部變量同名,運行結(jié)果: 輸出: 1 0,局部變量,全局變量,計算機內(nèi)存:,函數(shù),函數(shù):和過程類似,都是獨立的程序段,不同之處 在于它會返回一個值。,function abc ( x:integer) : boolean; begin abc:=; end ;,函數(shù)名,參數(shù)表,給函數(shù)賦值,函數(shù)類型,函數(shù),program area; 求五邊形面積 var L1,L2,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.,