![pascal_第6講_過(guò)程和函數(shù)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/e131440a-23ff-4894-84a2-2fc77cd340e6/e131440a-23ff-4894-84a2-2fc77cd340e61.gif)
![pascal_第6講_過(guò)程和函數(shù)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/e131440a-23ff-4894-84a2-2fc77cd340e6/e131440a-23ff-4894-84a2-2fc77cd340e62.gif)
![pascal_第6講_過(guò)程和函數(shù)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/e131440a-23ff-4894-84a2-2fc77cd340e6/e131440a-23ff-4894-84a2-2fc77cd340e63.gif)
![pascal_第6講_過(guò)程和函數(shù)_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/e131440a-23ff-4894-84a2-2fc77cd340e6/e131440a-23ff-4894-84a2-2fc77cd340e64.gif)
![pascal_第6講_過(guò)程和函數(shù)_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-1/6/e131440a-23ff-4894-84a2-2fc77cd340e6/e131440a-23ff-4894-84a2-2fc77cd340e65.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、一、過(guò)程的定義一、過(guò)程的定義Pascal的過(guò)程定義由過(guò)程首部與過(guò)程體組成,其形式:的過(guò)程定義由過(guò)程首部與過(guò)程體組成,其形式:Procedure 過(guò)程名過(guò)程名(形式參數(shù)表形式參數(shù)表); 說(shuō)明部分說(shuō)明部分; BEGIN 過(guò)程體過(guò)程體(語(yǔ)句塊語(yǔ)句塊) END;1.過(guò)程首部過(guò)程首部(1)過(guò)程首部以關(guān)鍵詞)過(guò)程首部以關(guān)鍵詞Procedure 開(kāi)頭。開(kāi)頭。(2)過(guò)程名與函數(shù)名的使用規(guī)則相同,但要注意過(guò)程名不)過(guò)程名與函數(shù)名的使用規(guī)則相同,但要注意過(guò)程名不能和同一程序中的變量、數(shù)組、函數(shù)同名。同時(shí)過(guò)程名不能能和同一程序中的變量、數(shù)組、函數(shù)同名。同時(shí)過(guò)程名不能代表任何數(shù)據(jù),因此不必說(shuō)明類型。代表任何數(shù)據(jù),因此
2、不必說(shuō)明類型。(3)參數(shù)表中為過(guò)程的形式參數(shù),用逗號(hào)分隔。過(guò)程和)參數(shù)表中為過(guò)程的形式參數(shù),用逗號(hào)分隔。過(guò)程和函數(shù)一樣也可以不帶形參,此時(shí),只是在主程序調(diào)用它時(shí),函數(shù)一樣也可以不帶形參,此時(shí),只是在主程序調(diào)用它時(shí),執(zhí)行指定的操作。執(zhí)行指定的操作。(4)形式參數(shù)的使用主要有值形參與變量形參。)形式參數(shù)的使用主要有值形參與變量形參。如下例:如下例:Procedure FAC(A,B:real; C:integer; var x,y:reaL);其中:其中:A,B,C稱為值形參,它們與在函數(shù)中介紹的形參相稱為值形參,它們與在函數(shù)中介紹的形參相同;同;X,Y稱為變量形參,在它們的前面冠有保留字稱為變量
3、形參,在它們的前面冠有保留字Var;關(guān)于形式參數(shù)的有關(guān)內(nèi)容將在后面介紹。關(guān)于形式參數(shù)的有關(guān)內(nèi)容將在后面介紹。 2過(guò)程體:過(guò)程體:過(guò)程體與函數(shù)體相同,也包括說(shuō)明和執(zhí)行這兩個(gè)部分。過(guò)程體與函數(shù)體相同,也包括說(shuō)明和執(zhí)行這兩個(gè)部分。(1)在過(guò)程體內(nèi)使用的有關(guān)常量、變量等必須在過(guò)程體的)在過(guò)程體內(nèi)使用的有關(guān)常量、變量等必須在過(guò)程體的說(shuō)明部分內(nèi)加以說(shuō)明或定義。說(shuō)明部分內(nèi)加以說(shuō)明或定義。(2)在過(guò)程體說(shuō)明的有關(guān)量,只有在過(guò)程體執(zhí)行期間有效,)在過(guò)程體說(shuō)明的有關(guān)量,只有在過(guò)程體執(zhí)行期間有效,當(dāng)退出過(guò)程體后,為這些量分配的存儲(chǔ)單元被釋放。當(dāng)退出過(guò)程體后,為這些量分配的存儲(chǔ)單元被釋放。(3)過(guò)程體的執(zhí)行部分不能給
4、過(guò)程名賦值,因?yàn)檫^(guò)程名不)過(guò)程體的執(zhí)行部分不能給過(guò)程名賦值,因?yàn)檫^(guò)程名不能代表任何數(shù)據(jù)。能代表任何數(shù)據(jù)。二、過(guò)程的調(diào)用二、過(guò)程的調(diào)用主程序是通過(guò)一條獨(dú)立的過(guò)程調(diào)用語(yǔ)句來(lái)調(diào)用過(guò)程的。主程序是通過(guò)一條獨(dú)立的過(guò)程調(diào)用語(yǔ)句來(lái)調(diào)用過(guò)程的。調(diào)用過(guò)程必須給出一個(gè)過(guò)程名,并用實(shí)在參數(shù)代替形式參數(shù),調(diào)用過(guò)程必須給出一個(gè)過(guò)程名,并用實(shí)在參數(shù)代替形式參數(shù),一般形式是:一般形式是: 過(guò)程名過(guò)程名(實(shí)在參數(shù)表實(shí)在參數(shù)表);對(duì)于過(guò)程的調(diào)用要注意以下幾點(diǎn):對(duì)于過(guò)程的調(diào)用要注意以下幾點(diǎn):(1)調(diào)用的過(guò)程必須在調(diào)用之前進(jìn)行說(shuō)明,也就是說(shuō)必)調(diào)用的過(guò)程必須在調(diào)用之前進(jìn)行說(shuō)明,也就是說(shuō)必須先說(shuō)明后調(diào)用。須先說(shuō)明后調(diào)用。(2)調(diào)用過(guò)
5、程時(shí),通常是通過(guò)值形參給過(guò)程提供原始數(shù))調(diào)用過(guò)程時(shí),通常是通過(guò)值形參給過(guò)程提供原始數(shù)據(jù),通過(guò)變量形參將值帶回調(diào)用程序。因此我們可以這樣據(jù),通過(guò)變量形參將值帶回調(diào)用程序。因此我們可以這樣來(lái)理解:值形參是過(guò)程的輸入?yún)?shù),變量形參是過(guò)程的輸來(lái)理解:值形參是過(guò)程的輸入?yún)?shù),變量形參是過(guò)程的輸出參數(shù)。出參數(shù)。(3)僅當(dāng)在主程序中調(diào)用過(guò)程時(shí),過(guò)程中的語(yǔ)句塊才被)僅當(dāng)在主程序中調(diào)用過(guò)程時(shí),過(guò)程中的語(yǔ)句塊才被執(zhí)行,調(diào)用完畢自動(dòng)返回主程序的調(diào)用點(diǎn),使主程序繼續(xù)執(zhí)行,調(diào)用完畢自動(dòng)返回主程序的調(diào)用點(diǎn),使主程序繼續(xù)往下執(zhí)行。因此,過(guò)程中的過(guò)程定義僅起一個(gè)說(shuō)明作用。往下執(zhí)行。因此,過(guò)程中的過(guò)程定義僅起一個(gè)說(shuō)明作用。例如
6、,執(zhí)行下面程序:例如,執(zhí)行下面程序:(1)const x=100;(2)Procedure sub(x:integer); Begin X:=x+200; Write(sub x=,x); End;(3)begin Write(x=,x); End.執(zhí)行結(jié)果是:執(zhí)行結(jié)果是:x=100為了說(shuō)明問(wèn)題,在程序的前面附加了為了說(shuō)明問(wèn)題,在程序的前面附加了(1)(2)(3)的標(biāo)號(hào)。從程序的標(biāo)號(hào)。從程序的標(biāo)號(hào)來(lái)看,雖然程序第的標(biāo)號(hào)來(lái)看,雖然程序第(1)標(biāo)號(hào)語(yǔ)句的下一語(yǔ)句的標(biāo)號(hào)是標(biāo)號(hào)語(yǔ)句的下一語(yǔ)句的標(biāo)號(hào)是(2),也就是過(guò)程也就是過(guò)程sub的入口點(diǎn)。然而,由于執(zhí)行該程序時(shí)并沒(méi)有的入口點(diǎn)。然而,由于執(zhí)行該程序時(shí)
7、并沒(méi)有調(diào)用調(diào)用sub過(guò)程,因此執(zhí)行完第過(guò)程,因此執(zhí)行完第(1)語(yǔ)句后,程序并不會(huì)自動(dòng)進(jìn)語(yǔ)句后,程序并不會(huì)自動(dòng)進(jìn)入從第入從第(2)語(yǔ)句開(kāi)始的該過(guò)程,因而打印出來(lái)的結(jié)果是語(yǔ)句開(kāi)始的該過(guò)程,因而打印出來(lái)的結(jié)果是x=100。例例1:編寫程序,求:編寫程序,求:S=2!+4!+6!+8!+10!測(cè)試數(shù)據(jù):測(cè)試數(shù)據(jù):輸入:無(wú)輸入:無(wú)輸出:輸出:3669866分析:此題不用過(guò)程也很好求分析:此題不用過(guò)程也很好求S,但經(jīng)仔細(xì)研究可發(fā)現(xiàn):,但經(jīng)仔細(xì)研究可發(fā)現(xiàn):用一個(gè)過(guò)程去完成每次求階乘的計(jì)算,避免了同一功能用一個(gè)過(guò)程去完成每次求階乘的計(jì)算,避免了同一功能程序的重復(fù),使程序更為簡(jiǎn)潔,也更加容易閱讀。程序的重復(fù),使
8、程序更為簡(jiǎn)潔,也更加容易閱讀。 程序如下:程序如下:program aa; var i:integer; b,s:longint; procedure njs(x:integer; var t:longint); var j:integer; begin t:=1; for j:=1 to x do t:=t*j; end; begin s:=0; for i:=2 to 10 do if not odd(i) then begin njs(i,b); s:=s+b; end; writeln(s); end.1.判斷程序運(yùn)行結(jié)果,不準(zhǔn)用計(jì)算判斷程序運(yùn)行結(jié)果,不準(zhǔn)用計(jì)算機(jī)算,只能用筆算。機(jī)算,
9、只能用筆算。program g1; var s,a,b:longint; procedure add(x,y:longint; var sum:longint); var i:integer; begin sum:=0; for i:=x to y do begin sum:=sum+i; end; end; begin s:=0; read(a,b); add(a,b,s); writeln(s); end.輸入輸入:9 10輸出輸出:練習(xí)一2.判斷程序運(yùn)行結(jié)果,不準(zhǔn)用計(jì)算機(jī)算,只能用筆算。判斷程序運(yùn)行結(jié)果,不準(zhǔn)用計(jì)算機(jī)算,只能用筆算。program g2; var k:real; proc
10、edure p(x:real; var y:real); var z:real; begin z:=x*x+3; y:=y+z; end; begin k:=1.0; p(2.0,k); writeln(k:0:2); end.輸出輸出:3.判斷程序運(yùn)行結(jié)果,不準(zhǔn)用計(jì)算機(jī)算,只能用筆算。判斷程序運(yùn)行結(jié)果,不準(zhǔn)用計(jì)算機(jī)算,只能用筆算。program g3; var a,b,c:integer; procedure pro; var c:integer; begin a:=1; b:=2; c:=3; end; begin a:=100; b:=200; c:=300; pro; writeln(
11、a:5,b:5,c:5); end.輸出輸出:4.(文件名:(文件名:g4.pas)將求一個(gè)數(shù)階乘的方法設(shè))將求一個(gè)數(shù)階乘的方法設(shè)計(jì)為一個(gè)過(guò)程,利用這個(gè)過(guò)程,求輸入的任意的計(jì)為一個(gè)過(guò)程,利用這個(gè)過(guò)程,求輸入的任意的兩個(gè)數(shù)的階乘和。(兩個(gè)數(shù)的階乘和。(N,M8)測(cè)試數(shù)據(jù):測(cè)試數(shù)據(jù):輸入:一行,兩個(gè)數(shù)之間隔一空格輸入:一行,兩個(gè)數(shù)之間隔一空格3 5輸出:一行,兩個(gè)的階乘和。輸出:一行,兩個(gè)的階乘和。126例例2:學(xué)校舉行晚會(huì),要:學(xué)校舉行晚會(huì),要M個(gè)學(xué)生中選個(gè)學(xué)生中選N個(gè)學(xué)生到舞臺(tái)個(gè)學(xué)生到舞臺(tái)上表演一個(gè)游戲,問(wèn)有多少種選擇方法。這是數(shù)學(xué)中上表演一個(gè)游戲,問(wèn)有多少種選擇方法。這是數(shù)學(xué)中的組合運(yùn)算,的
12、組合運(yùn)算,可用下列公式計(jì)算可用下列公式計(jì)算 ,其中,其中M,N由鍵由鍵盤輸入。盤輸入。分析:從上述公式我們發(fā)現(xiàn),它有三個(gè)完全相同的計(jì)分析:從上述公式我們發(fā)現(xiàn),它有三個(gè)完全相同的計(jì)算階乘的運(yùn)算。若我們把計(jì)算階乘的程序拿出來(lái),作算階乘的運(yùn)算。若我們把計(jì)算階乘的程序拿出來(lái),作為一獨(dú)立的過(guò)程,那么計(jì)算這道題目的程序結(jié)構(gòu)就變?yōu)橐华?dú)立的過(guò)程,那么計(jì)算這道題目的程序結(jié)構(gòu)就變得非常簡(jiǎn)單了。得非常簡(jiǎn)單了。 )!*(!nmnmCnm程序如下:程序如下:program aa; var L,m,n:integer; a,b,c:real; x:longint; procedure fac(k:integer); va
13、r i:integer; f:longint; begin f:=1; for i:=1 to k do f:=f*i; x:=f; end;測(cè)試數(shù)據(jù):測(cè)試數(shù)據(jù):輸入:輸入:m,n=10 7輸出:輸出:120begin write(m,n=); read(m,n); if m=n then L:=1 else L:=m-n; fac(m);a:=x; fac(n);b:=x; fac(L);c:=x; c:=a/(b*c); writeln(c:0:0) end.例例3:利用自定義過(guò)程求任意兩個(gè)整數(shù)的乘積:利用自定義過(guò)程求任意兩個(gè)整數(shù)的乘積(將求兩個(gè)將求兩個(gè)整數(shù)乘積的程序段設(shè)為一個(gè)過(guò)程整數(shù)乘積
14、的程序段設(shè)為一個(gè)過(guò)程).program lkj;var a,b,c:longint;procedure sum(a,b:longint;var c:longint); begin c:=a*b; end;begin readln(a,b); sum(a,b,c); writeln(c);end.測(cè)試數(shù)據(jù):測(cè)試數(shù)據(jù):輸入輸入:5 10輸出輸出:50可以看出,可以看出,Pascal的過(guò)程函數(shù)相似,都需要先定義后的過(guò)程函數(shù)相似,都需要先定義后調(diào)用,但有以下幾個(gè)主要差別:調(diào)用,但有以下幾個(gè)主要差別:(1)函數(shù)通常被設(shè)計(jì)成求一個(gè)函數(shù)值;而過(guò)程通常被)函數(shù)通常被設(shè)計(jì)成求一個(gè)函數(shù)值;而過(guò)程通常被設(shè)計(jì)成能得到
15、若干個(gè)運(yùn)算結(jié)果,也可以用來(lái)完成一系設(shè)計(jì)成能得到若干個(gè)運(yùn)算結(jié)果,也可以用來(lái)完成一系列的數(shù)據(jù)處理或與計(jì)算無(wú)關(guān)的各種操作。列的數(shù)據(jù)處理或與計(jì)算無(wú)關(guān)的各種操作。(2)調(diào)用方式不同。函數(shù)的調(diào)用出現(xiàn)在表達(dá)式中,而)調(diào)用方式不同。函數(shù)的調(diào)用出現(xiàn)在表達(dá)式中,而過(guò)程調(diào)用,是由一個(gè)獨(dú)立的語(yǔ)句(過(guò)程語(yǔ)句)來(lái)完成過(guò)程調(diào)用,是由一個(gè)獨(dú)立的語(yǔ)句(過(guò)程語(yǔ)句)來(lái)完成的。的。(3)過(guò)程沒(méi)有類型,也不能給過(guò)程名賦值。)過(guò)程沒(méi)有類型,也不能給過(guò)程名賦值。(4)返回值的實(shí)現(xiàn)方法不同。函值返回時(shí),只由函數(shù))返回值的實(shí)現(xiàn)方法不同。函值返回時(shí),只由函數(shù)名帶回一個(gè)函數(shù)值;過(guò)程返回時(shí),可由實(shí)參將運(yùn)算的名帶回一個(gè)函數(shù)值;過(guò)程返回時(shí),可由實(shí)參將運(yùn)
16、算的值帶回,需要時(shí)可以帶回多個(gè)值。值帶回,需要時(shí)可以帶回多個(gè)值。 引入函數(shù)和過(guò)程(相當(dāng)于在程序中引入了可以按引入函數(shù)和過(guò)程(相當(dāng)于在程序中引入了可以按名引用的模塊)之后,名引用的模塊)之后,Pascal中的程序獲得了簡(jiǎn)中的程序獲得了簡(jiǎn)化?;?Pascal的過(guò)程和用戶自定義函數(shù)的參數(shù)傳遞,的過(guò)程和用戶自定義函數(shù)的參數(shù)傳遞,局部變量等都將給程序以全新的面貌。局部變量等都將給程序以全新的面貌。 更重要的是過(guò)程和函數(shù)還具有完全遞歸的功能。更重要的是過(guò)程和函數(shù)還具有完全遞歸的功能。所謂遞歸就是一個(gè)函數(shù)或過(guò)程可以直接或間接地調(diào)所謂遞歸就是一個(gè)函數(shù)或過(guò)程可以直接或間接地調(diào)用自己。關(guān)于這方面的知識(shí),將在下面
17、專門介紹。用自己。關(guān)于這方面的知識(shí),將在下面專門介紹。 1program g5; var x,y,z:integer; procedure sy(x:integer; var y:integer); var z:integer; begin x:=5; y:=6; z:=7; writeln(x,y,z); end; begin x:=1; y:=2; z:=3; sy(y,x); writeln(x,y,z); end.輸出輸出:練習(xí)二判斷程序運(yùn)行結(jié)果2program g6; var y,t:integer; a,b:real; procedure f(m:integer; var s,k:
18、real); begin y:=2*y; s:=s*y; k:=s/4; k:=k+s+y; end; begin read(y,a); f(y,a,b); writeln(a:0:2,b:10:2); end.輸入輸入:1 2輸出輸出:3(文件名:(文件名:g7.pas)利用自定義過(guò)程求任)利用自定義過(guò)程求任意兩個(gè)整數(shù)的和意兩個(gè)整數(shù)的和(將求兩個(gè)整數(shù)和的程序段設(shè)將求兩個(gè)整數(shù)和的程序段設(shè)為一個(gè)過(guò)程為一個(gè)過(guò)程).測(cè)試數(shù)據(jù):測(cè)試數(shù)據(jù):輸入:輸入:10 5輸出:輸出:154.(文件名:(文件名:g8.pas)將求兩個(gè)數(shù)的最小公倍數(shù)的程序設(shè)定為)將求兩個(gè)數(shù)的最小公倍數(shù)的程序設(shè)定為一個(gè)過(guò)程一個(gè)過(guò)程,編程
19、求任意兩個(gè)數(shù)的最小公倍數(shù)。編程求任意兩個(gè)數(shù)的最小公倍數(shù)。測(cè)試數(shù)據(jù):測(cè)試數(shù)據(jù):輸入:輸入:12 8輸出:輸出:24提示:求最小公倍數(shù)過(guò)程提示:求最小公倍數(shù)過(guò)程 procedure abc(m,n:longint; var y:longint); begin y:=m; while y=m*n do begin if y mod n=0 then break; y:=y+m; end; end;program aa; var a:integer; procedure add(x:integer); var a1:integer; begin a1:=x+10; writeln(a1=,a1); e
20、nd; begin a:=15; add(a); writeln(a=,a); end.請(qǐng)思考請(qǐng)思考:哪個(gè)是局部量?哪個(gè)是局部量?哪個(gè)是全程量?哪個(gè)是全程量?各自的作用域是什么?各自的作用域是什么?測(cè)試數(shù)據(jù):測(cè)試數(shù)據(jù):輸出:輸出:a1=25a=15關(guān)于這個(gè)問(wèn)題,我們來(lái)看下面的一個(gè)例子:關(guān)于這個(gè)問(wèn)題,我們來(lái)看下面的一個(gè)例子:局部變量的作用域的實(shí)質(zhì)我們可以這樣來(lái)理解,當(dāng)局部變量的作用域的實(shí)質(zhì)我們可以這樣來(lái)理解,當(dāng)其所在的子程序被調(diào)用時(shí),局部變量才分配有確定其所在的子程序被調(diào)用時(shí),局部變量才分配有確定的存儲(chǔ)單元,而當(dāng)程序的執(zhí)行一旦返回到調(diào)用程序的存儲(chǔ)單元,而當(dāng)程序的執(zhí)行一旦返回到調(diào)用程序時(shí),局部變量
21、所占用的存儲(chǔ)單元就被釋放。時(shí),局部變量所占用的存儲(chǔ)單元就被釋放。至于全程變量的作用域,情況就要復(fù)雜一點(diǎn),我們至于全程變量的作用域,情況就要復(fù)雜一點(diǎn),我們還是先來(lái)看以下的一個(gè)例題:還是先來(lái)看以下的一個(gè)例題:program aa; var a,b:integer; procedure sub; var a:integer; begin a:=0; writeln(a2=,a, b2=,b); a:=a+10; b:=b+10; writeln(a3=,a, b3=,b); end;測(cè)試數(shù)據(jù):測(cè)試數(shù)據(jù):輸出:輸出:a1=15 b1=20a2=0 b2=20a3=10 b3=30a4=15 b4=30
22、begin a:=15; b:=20; writeln(a1=,a, b1=,b); sub; writeln(a4=,a, b4=,b); end. 前面我們提到,前面我們提到,Pascal語(yǔ)言中過(guò)程與函數(shù)的主要參語(yǔ)言中過(guò)程與函數(shù)的主要參數(shù)種類有值參數(shù)與變量參數(shù)。變量參數(shù)在形式上比值參數(shù)種類有值參數(shù)與變量參數(shù)。變量參數(shù)在形式上比值參數(shù)多了一個(gè)前綴數(shù)多了一個(gè)前綴VAR,但兩者不僅含義不同,且相應(yīng)的,但兩者不僅含義不同,且相應(yīng)的實(shí)在參數(shù)的個(gè)數(shù)、順序和類型都必須與形式參數(shù)一一對(duì)實(shí)在參數(shù)的個(gè)數(shù)、順序和類型都必須與形式參數(shù)一一對(duì)應(yīng)。應(yīng)。 Free Pascal在處理數(shù)據(jù)傳送時(shí)有三種方法。一種在處理數(shù)據(jù)
23、傳送時(shí)有三種方法。一種是傳名,一種是傳值,另一種方法是傳地址。是傳名,一種是傳值,另一種方法是傳地址。 傳名就是通過(guò)全程量傳遞數(shù)據(jù),變量在主程序中定傳名就是通過(guò)全程量傳遞數(shù)據(jù),變量在主程序中定義,在子程序不被重新定義而被使用,那么它在主程序義,在子程序不被重新定義而被使用,那么它在主程序和子程序中就是同一個(gè)變量,所以在調(diào)用函數(shù)或過(guò)程時(shí)和子程序中就是同一個(gè)變量,所以在調(diào)用函數(shù)或過(guò)程時(shí)其值發(fā)生改變,返回主程序,它的值仍然是改變的。它其值發(fā)生改變,返回主程序,它的值仍然是改變的。它的用法比較簡(jiǎn)單,在此就不作詳細(xì)介紹了,下面主要說(shuō)的用法比較簡(jiǎn)單,在此就不作詳細(xì)介紹了,下面主要說(shuō)明傳值和傳地址兩種傳值方
24、法的使用。明傳值和傳地址兩種傳值方法的使用。 在調(diào)用過(guò)程或函數(shù)時(shí),傳值就是把一個(gè)調(diào)在調(diào)用過(guò)程或函數(shù)時(shí),傳值就是把一個(gè)調(diào)用語(yǔ)句中的實(shí)在參數(shù)的值,賦給對(duì)應(yīng)的形式參用語(yǔ)句中的實(shí)在參數(shù)的值,賦給對(duì)應(yīng)的形式參數(shù)。一旦過(guò)程(或函數(shù))執(zhí)行完了,相應(yīng)分配數(shù)。一旦過(guò)程(或函數(shù))執(zhí)行完了,相應(yīng)分配給形式參數(shù)的存儲(chǔ)單元就被釋放,其值也隨之給形式參數(shù)的存儲(chǔ)單元就被釋放,其值也隨之消失,相應(yīng)實(shí)參的值并沒(méi)有發(fā)生變化。也就是消失,相應(yīng)實(shí)參的值并沒(méi)有發(fā)生變化。也就是說(shuō),實(shí)在參數(shù)的值僅向形式參數(shù)作單向傳送,說(shuō),實(shí)在參數(shù)的值僅向形式參數(shù)作單向傳送,形式參數(shù)的值發(fā)生變化不會(huì)反過(guò)來(lái)影響實(shí)在參形式參數(shù)的值發(fā)生變化不會(huì)反過(guò)來(lái)影響實(shí)在參數(shù)
25、的值。例如函數(shù)調(diào)用時(shí)就是采用了數(shù)的值。例如函數(shù)調(diào)用時(shí)就是采用了“按值傳按值傳送送”的方法,返回時(shí)只由函數(shù)名帶回一個(gè)函數(shù)的方法,返回時(shí)只由函數(shù)名帶回一個(gè)函數(shù)值。值。program aa; var a:integer; procedure add(a1:integer); begin a1:=a1+20; writeln(a1=,a1); end; begin a:=10; add(a); writeln(a=,a); end.執(zhí)行結(jié)果為:執(zhí)行結(jié)果為:a1=30a=10Free Pascal的過(guò)程也可用值參數(shù)方法傳遞數(shù)據(jù),請(qǐng)看下例:的過(guò)程也可用值參數(shù)方法傳遞數(shù)據(jù),請(qǐng)看下例: 請(qǐng)注意兩個(gè)打印結(jié)果。請(qǐng)
26、注意兩個(gè)打印結(jié)果。A1是值參數(shù),在過(guò)程是值參數(shù),在過(guò)程語(yǔ)句開(kāi)始執(zhí)行時(shí),實(shí)參數(shù)語(yǔ)句開(kāi)始執(zhí)行時(shí),實(shí)參數(shù)A的值的值10傳遞給傳遞給A1,經(jīng),經(jīng)過(guò)過(guò)程體的運(yùn)算,過(guò)過(guò)程體的運(yùn)算,A1的值結(jié)果為的值結(jié)果為30,此時(shí)輸出,此時(shí)輸出A1=30,然而,當(dāng)過(guò)程執(zhí)行完畢返回主程序時(shí),原,然而,當(dāng)過(guò)程執(zhí)行完畢返回主程序時(shí),原實(shí)在參數(shù)實(shí)在參數(shù)A的值并未受影響,打印結(jié)果仍為的值并未受影響,打印結(jié)果仍為10。 此例體現(xiàn)了此例體現(xiàn)了Pascal語(yǔ)言語(yǔ)言“按值傳送按值傳送”方法的方法的一個(gè)規(guī)則:變量和表達(dá)式能用傳值方法來(lái)傳送數(shù)據(jù)。一個(gè)規(guī)則:變量和表達(dá)式能用傳值方法來(lái)傳送數(shù)據(jù)。一般說(shuō)來(lái),只要在過(guò)程或函數(shù)中不出現(xiàn)對(duì)實(shí)參變量一般說(shuō)來(lái)
27、,只要在過(guò)程或函數(shù)中不出現(xiàn)對(duì)實(shí)參變量的賦值操作,實(shí)參變量的值是不會(huì)因調(diào)用過(guò)程或函的賦值操作,實(shí)參變量的值是不會(huì)因調(diào)用過(guò)程或函數(shù)而變更的(實(shí)參變量對(duì)過(guò)程或函數(shù)而言是全程變數(shù)而變更的(實(shí)參變量對(duì)過(guò)程或函數(shù)而言是全程變量)。量)。 傳地址是指將實(shí)在參數(shù)在內(nèi)存的存儲(chǔ)單元的傳地址是指將實(shí)在參數(shù)在內(nèi)存的存儲(chǔ)單元的地址分配給形式參數(shù)。也就是說(shuō),實(shí)在參數(shù)與形地址分配給形式參數(shù)。也就是說(shuō),實(shí)在參數(shù)與形式參數(shù)實(shí)際上共同一個(gè)存儲(chǔ)單元。式參數(shù)實(shí)際上共同一個(gè)存儲(chǔ)單元。 傳地址的優(yōu)點(diǎn)是被調(diào)用的過(guò)程能夠影響傳送傳地址的優(yōu)點(diǎn)是被調(diào)用的過(guò)程能夠影響傳送給它的變量的值,從而能把信息傳給調(diào)用者。這給它的變量的值,從而能把信息傳給調(diào)
28、用者。這是因?yàn)槭且驗(yàn)椤鞍粗穫魉桶粗穫魉汀狈椒▽?shí)質(zhì)是在傳指針,它指方法實(shí)質(zhì)是在傳指針,它指向數(shù)據(jù)存儲(chǔ)的地址,所以過(guò)程知道變量存放什么向數(shù)據(jù)存儲(chǔ)的地址,所以過(guò)程知道變量存放什么地方,因而能夠?qū)ζ溥M(jìn)行讀、寫操作。地方,因而能夠?qū)ζ溥M(jìn)行讀、寫操作。 以下的例子就是用以下的例子就是用“按址傳送按址傳送”的方法進(jìn)行的:的方法進(jìn)行的: 程序中,實(shí)參程序中,實(shí)參A起了起了雙向傳遞數(shù)據(jù)的作用,即雙向傳遞數(shù)據(jù)的作用,即把實(shí)際參數(shù)把實(shí)際參數(shù)A的存儲(chǔ)單元的存儲(chǔ)單元的地址傳遞到過(guò)程的形式的地址傳遞到過(guò)程的形式參數(shù)參數(shù)C,在過(guò)程體中進(jìn)行,在過(guò)程體中進(jìn)行運(yùn)算后,再把結(jié)果帶回主運(yùn)算后,再把結(jié)果帶回主程序輸出。由此可知,用程序
29、輸出。由此可知,用傳地址方法傳送的變量值傳地址方法傳送的變量值能被調(diào)用的過(guò)程改變。能被調(diào)用的過(guò)程改變。program aa; var a:integer; procedure add(var c:integer); begin c:=c+10; writeln(c=,c); end; begin a:=10; add(a); writeln(a=,a); end.運(yùn)行結(jié)果:運(yùn)行結(jié)果:c=20a=20 從上面兩例的對(duì)比中可以看出:實(shí)參數(shù)據(jù)的單、從上面兩例的對(duì)比中可以看出:實(shí)參數(shù)據(jù)的單、雙向傳遞,是由過(guò)程定義中相應(yīng)的形參種類所決定的,雙向傳遞,是由過(guò)程定義中相應(yīng)的形參種類所決定的,利用變量形參是從
30、一個(gè)過(guò)程中傳回?cái)?shù)據(jù)的主要手段之利用變量形參是從一個(gè)過(guò)程中傳回?cái)?shù)據(jù)的主要手段之一。一。 綜上所述,我們可以得到如下的結(jié)論:綜上所述,我們可以得到如下的結(jié)論:Free Pascal中的參數(shù)若是值形參則參數(shù)傳遞必為傳值,若中的參數(shù)若是值形參則參數(shù)傳遞必為傳值,若形式參數(shù)為變量形參,則傳地址。由于值形參的作用形式參數(shù)為變量形參,則傳地址。由于值形參的作用僅僅是將子程序外部的值傳遞給過(guò)程或函數(shù),因此又僅僅是將子程序外部的值傳遞給過(guò)程或函數(shù),因此又稱值參數(shù)是輸入?yún)?shù),所以對(duì)應(yīng)的實(shí)際參數(shù)可以是常稱值參數(shù)是輸入?yún)?shù),所以對(duì)應(yīng)的實(shí)際參數(shù)可以是常數(shù)、變量或表達(dá)式。而變量參數(shù)除了能將子程序外部數(shù)、變量或表達(dá)式。而變
31、量參數(shù)除了能將子程序外部的數(shù)據(jù)傳遞給過(guò)程或函數(shù),更重要是它能將子程序中的數(shù)據(jù)傳遞給過(guò)程或函數(shù),更重要是它能將子程序中變化的形式參數(shù)的值帶出來(lái),所以又將變量參數(shù)稱之變化的形式參數(shù)的值帶出來(lái),所以又將變量參數(shù)稱之為輸出參數(shù),其對(duì)應(yīng)的實(shí)際參數(shù)必須為變量。為輸出參數(shù),其對(duì)應(yīng)的實(shí)際參數(shù)必須為變量。 program g9; var x,y:integer; procedure pd(a:integer;var b:integer); begin a:=1; b:=a+b; end; begin x:=10; y:=20; pd(x,y); writeln(x,y:5); end.輸出輸出:_1.判斷程序運(yùn)
32、行結(jié)果,不準(zhǔn)在計(jì)算機(jī)上運(yùn)算,只能用筆算。判斷程序運(yùn)行結(jié)果,不準(zhǔn)在計(jì)算機(jī)上運(yùn)算,只能用筆算。練習(xí)三program g10; var x:integer; procedure pr(var z:integer); begin z:=z+100; write(x=,x); end; begin x:=10; pr(x); x:=100; writeln( x=,x); end.輸出:輸出:_2. 判斷程序運(yùn)行結(jié)果,不準(zhǔn)在計(jì)算機(jī)上運(yùn)算,只能用筆算。判斷程序運(yùn)行結(jié)果,不準(zhǔn)在計(jì)算機(jī)上運(yùn)算,只能用筆算。3. 判斷程序運(yùn)行結(jié)果,判斷程序運(yùn)行結(jié)果,program g11; var a,b:integer; pr
33、ocedure sub; var a:integer; begin a:=0; writeln(a2=,a, b2=,b); a:=a+15; b:=b+20; writeln(a3=,a, b3=,b); end; begin a:=5; b:=10; writeln(a1=,a, b1=,b); sub; writeln(a4=,a, b4=,b); end.4.(文件名:(文件名:g12.pas)將求梯形面積的方法設(shè)計(jì)為一)將求梯形面積的方法設(shè)計(jì)為一個(gè)過(guò)程,利用這個(gè)過(guò)程,現(xiàn)在輸入任意上底、下底和個(gè)過(guò)程,利用這個(gè)過(guò)程,現(xiàn)在輸入任意上底、下底和高的值,求梯形的面積。底、高、面積的值均為實(shí)型高
34、的值,求梯形的面積。底、高、面積的值均為實(shí)型數(shù),最后結(jié)果保留二位小數(shù)。數(shù),最后結(jié)果保留二位小數(shù)。測(cè)試數(shù)據(jù)測(cè)試數(shù)據(jù)輸入:三個(gè)數(shù),分別是上底、下底和高,數(shù)字間隔一輸入:三個(gè)數(shù),分別是上底、下底和高,數(shù)字間隔一空格空格2.5 3.5 6.6輸出:輸出:19.80但要注意:這些函數(shù)必須在程序中定義,也只能在本程序中但要注意:這些函數(shù)必須在程序中定義,也只能在本程序中使用。使用。(1)函數(shù)首部以保留字)函數(shù)首部以保留字Function開(kāi)頭,其后的函數(shù)名必須與保開(kāi)頭,其后的函數(shù)名必須與保留字之間有一個(gè)以上的空格。留字之間有一個(gè)以上的空格。(2)函數(shù)名是對(duì)用戶定義的一個(gè)函數(shù)的標(biāo)識(shí),用于存放調(diào)用后的)函數(shù)名是
35、對(duì)用戶定義的一個(gè)函數(shù)的標(biāo)識(shí),用于存放調(diào)用后的函數(shù)值。函數(shù)名與標(biāo)識(shí)符的構(gòu)成規(guī)則相同。在同一程序中,所定函數(shù)值。函數(shù)名與標(biāo)識(shí)符的構(gòu)成規(guī)則相同。在同一程序中,所定義的函數(shù)名,不能用作變量數(shù)組或過(guò)程名。義的函數(shù)名,不能用作變量數(shù)組或過(guò)程名。(3)圓括號(hào)中的形參表是用逗號(hào)隔開(kāi)的一個(gè)或多個(gè)形參名。形參)圓括號(hào)中的形參表是用逗號(hào)隔開(kāi)的一個(gè)或多個(gè)形參名。形參名由用戶自己決定,所有形參都必須同時(shí)說(shuō)明類型,不同類型的名由用戶自己決定,所有形參都必須同時(shí)說(shuō)明類型,不同類型的說(shuō)明之間用分號(hào)隔開(kāi)。說(shuō)明之間用分號(hào)隔開(kāi)。例如:例如:Function EX01(X,Y:Real; m,n:integer):real;形參即函
36、數(shù)的自變量,其初值來(lái)源于函數(shù)的調(diào)用。只有在程序執(zhí)形參即函數(shù)的自變量,其初值來(lái)源于函數(shù)的調(diào)用。只有在程序執(zhí)行過(guò)程中調(diào)用了函數(shù),形參才有可能得到具體的值并參與運(yùn)算,行過(guò)程中調(diào)用了函數(shù),形參才有可能得到具體的值并參與運(yùn)算,求得函數(shù)值??梢?jiàn)形參表相當(dāng)于變量說(shuō)明,但應(yīng)特別注意:此處求得函數(shù)值??梢?jiàn)形參表相當(dāng)于變量說(shuō)明,但應(yīng)特別注意:此處只能使用類型標(biāo)識(shí)符,而不能直接使用類型。只能使用類型標(biāo)識(shí)符,而不能直接使用類型。若函數(shù)沒(méi)有自變量,則形參表可以缺省,稱為無(wú)參函數(shù)。此若函數(shù)沒(méi)有自變量,則形參表可以缺省,稱為無(wú)參函數(shù)。此時(shí)函數(shù)的定義形式為:時(shí)函數(shù)的定義形式為:Function 函數(shù)名:函數(shù)類型;函數(shù)名:函數(shù)
37、類型; 函數(shù)首部函數(shù)首部(4)函數(shù)的類型也就是函數(shù)值的類型,它由函數(shù)首部來(lái)說(shuō))函數(shù)的類型也就是函數(shù)值的類型,它由函數(shù)首部來(lái)說(shuō)明,所求得的函數(shù)值通過(guò)函數(shù)名傳送回調(diào)用程序。由此可見(jiàn)明,所求得的函數(shù)值通過(guò)函數(shù)名傳送回調(diào)用程序。由此可見(jiàn)函數(shù)的作用一般是為了求得一個(gè)值。函數(shù)的作用一般是為了求得一個(gè)值。 函數(shù)體也由說(shuō)明與執(zhí)行部分組成。函數(shù)體也由說(shuō)明與執(zhí)行部分組成。(1)說(shuō)明部分用來(lái)對(duì)函數(shù)體內(nèi)所用的類型、常量、變)說(shuō)明部分用來(lái)對(duì)函數(shù)體內(nèi)所用的類型、常量、變量等進(jìn)行說(shuō)明,這些量只在本函數(shù)內(nèi)有效,與函數(shù)體量等進(jìn)行說(shuō)明,這些量只在本函數(shù)內(nèi)有效,與函數(shù)體外的同名量無(wú)關(guān)。外的同名量無(wú)關(guān)。(2)函數(shù)體的執(zhí)行部分以)函數(shù)
38、體的執(zhí)行部分以BEGIN開(kāi)始,以開(kāi)始,以END結(jié)束結(jié)束(其后緊跟一個(gè)分號(hào))。中間為語(yǔ)句塊但至少要有一(其后緊跟一個(gè)分號(hào))。中間為語(yǔ)句塊但至少要有一條賦值語(yǔ)句。即:條賦值語(yǔ)句。即:函數(shù)名函數(shù)名:=表達(dá)式;表達(dá)式;該操作把表達(dá)式的值賦給函數(shù)名,然后把這個(gè)值通過(guò)該操作把表達(dá)式的值賦給函數(shù)名,然后把這個(gè)值通過(guò)函數(shù)名返回調(diào)用它的程序中去。函數(shù)名返回調(diào)用它的程序中去。 自定義函數(shù)定義了一個(gè)求值的模塊,當(dāng)一個(gè)語(yǔ)自定義函數(shù)定義了一個(gè)求值的模塊,當(dāng)一個(gè)語(yǔ)句中使用了這個(gè)函數(shù)時(shí),這個(gè)模塊才被調(diào)用執(zhí)句中使用了這個(gè)函數(shù)時(shí),這個(gè)模塊才被調(diào)用執(zhí)行。行。 例例1:用函數(shù)求:用函數(shù)求a+b=c的值的程序是:的值的程序是:參考程
39、序:參考程序: program aa; var a,b,c:longint; function add(a,b:longint):longint; var s:longint; begin s:=a+b; add:=s; end; begin read(a,b); c:=add(a,b); writeln(c); end.測(cè)試數(shù)據(jù):測(cè)試數(shù)據(jù):輸入:輸入:8987 7798輸出:輸出:16785該程序中的該程序中的ADD函函數(shù),就演示了函數(shù)數(shù),就演示了函數(shù)結(jié)構(gòu)。結(jié)構(gòu)。函數(shù)的調(diào)用函數(shù)的調(diào)用 函數(shù)一經(jīng)定義,就可以在同一程序中與函數(shù)值類型兼容的函數(shù)一經(jīng)定義,就可以在同一程序中與函數(shù)值類型兼容的表達(dá)式中
40、多次被調(diào)用。其調(diào)用形式如下:表達(dá)式中多次被調(diào)用。其調(diào)用形式如下: 變量變量:=函數(shù)名函數(shù)名(實(shí)在參數(shù)表實(shí)在參數(shù)表);函數(shù)調(diào)用的說(shuō)明:函數(shù)調(diào)用的說(shuō)明: (1)自定義函數(shù)中的形參稱為形式參數(shù),由于它不是實(shí))自定義函數(shù)中的形參稱為形式參數(shù),由于它不是實(shí)際存在的變量,所以又稱虛擬變量。例如:前面所舉例子中的際存在的變量,所以又稱虛擬變量。例如:前面所舉例子中的X即為形式參數(shù)。即為形式參數(shù)。 它們并不占用內(nèi)存單元,只有在調(diào)用函數(shù)時(shí),才臨時(shí)開(kāi)辟它們并不占用內(nèi)存單元,只有在調(diào)用函數(shù)時(shí),才臨時(shí)開(kāi)辟相應(yīng)的內(nèi)存單元,存放實(shí)在參數(shù)的值。相應(yīng)的內(nèi)存單元,存放實(shí)在參數(shù)的值。所謂實(shí)在參數(shù)是在調(diào)用函數(shù)時(shí)所用的自變量,只是在
41、調(diào)用函數(shù)所謂實(shí)在參數(shù)是在調(diào)用函數(shù)時(shí)所用的自變量,只是在調(diào)用函數(shù)時(shí),才將實(shí)在參數(shù)的值傳送到相應(yīng)于形參的臨時(shí)的內(nèi)存單元中時(shí),才將實(shí)在參數(shù)的值傳送到相應(yīng)于形參的臨時(shí)的內(nèi)存單元中去。去。形參實(shí)質(zhì)上是實(shí)參的一個(gè)形參實(shí)質(zhì)上是實(shí)參的一個(gè)“替身替身”和和“代辦代辦”,實(shí)參在程序中,實(shí)參在程序中可以千變?nèi)f化,但可以千變?nèi)f化,但“代辦代辦”只有一個(gè),從而保證了一個(gè)子程序只有一個(gè),從而保證了一個(gè)子程序可被多次調(diào)用。通常,將這種數(shù)值傳送稱為可被多次調(diào)用。通常,將這種數(shù)值傳送稱為“參數(shù)傳值參數(shù)傳值”。在調(diào)用函數(shù)時(shí),實(shí)在參數(shù)將值賦給形式參數(shù)。因而,必須注意在調(diào)用函數(shù)時(shí),實(shí)在參數(shù)將值賦給形式參數(shù)。因而,必須注意實(shí)在參數(shù)的個(gè)
42、數(shù)、類型應(yīng)該與形式參數(shù)一一對(duì)應(yīng),并且必須要實(shí)在參數(shù)的個(gè)數(shù)、類型應(yīng)該與形式參數(shù)一一對(duì)應(yīng),并且必須要有確定的值。有確定的值。(2)函數(shù)調(diào)用的步驟為:計(jì)算實(shí)參的值,傳送給對(duì)應(yīng)的形參;)函數(shù)調(diào)用的步驟為:計(jì)算實(shí)參的值,傳送給對(duì)應(yīng)的形參;然后執(zhí)行函數(shù)體;最后將函數(shù)值返回到調(diào)用處。然后執(zhí)行函數(shù)體;最后將函數(shù)值返回到調(diào)用處。(3)函數(shù)說(shuō)明是靜態(tài)的,不具備執(zhí)行的含義。也就是說(shuō),如)函數(shù)說(shuō)明是靜態(tài)的,不具備執(zhí)行的含義。也就是說(shuō),如果一個(gè)函數(shù)說(shuō)明之后未被調(diào)用,則該函數(shù)永遠(yuǎn)不會(huì)被執(zhí)行。果一個(gè)函數(shù)說(shuō)明之后未被調(diào)用,則該函數(shù)永遠(yuǎn)不會(huì)被執(zhí)行。1(文件名:(文件名:h1.pas)將求兩個(gè)整數(shù)的差設(shè)計(jì))將求兩個(gè)整數(shù)的差設(shè)計(jì)為
43、一個(gè)函數(shù),然后求任意兩個(gè)整數(shù)的差。為一個(gè)函數(shù),然后求任意兩個(gè)整數(shù)的差。測(cè)試數(shù)據(jù):測(cè)試數(shù)據(jù):輸入:輸入:98778 8788輸出:輸出:89990練習(xí)一2(文件名:(文件名:h2.pas)將求三角形的面積設(shè)計(jì))將求三角形的面積設(shè)計(jì)為一個(gè)函數(shù),然后求任意底和高的三角形的面積。為一個(gè)函數(shù),然后求任意底和高的三角形的面積。保留二位小數(shù)。保留二位小數(shù)。測(cè)試數(shù)據(jù):測(cè)試數(shù)據(jù):輸入:輸入:10.2 2.5輸出:輸出:12.753.3.(文件名:(文件名:h3.pash3.pas)利用標(biāo)準(zhǔn)函數(shù),對(duì)輸入)利用標(biāo)準(zhǔn)函數(shù),對(duì)輸入的一個(gè)長(zhǎng)度不小于的一個(gè)長(zhǎng)度不小于8 8的字符串的字符串, ,分別輸出它的長(zhǎng)分別輸出它的長(zhǎng)度
44、、第度、第2 2個(gè)字符和第個(gè)字符和第5 5個(gè)字符個(gè)字符, ,不同的輸出結(jié)果之不同的輸出結(jié)果之間間隔一個(gè)字符間間隔一個(gè)字符. .提示:用到的函數(shù)有提示:用到的函數(shù)有l(wèi)engthlength、copycopy測(cè)試數(shù)據(jù)測(cè)試數(shù)據(jù): :輸入輸入: :asdf3536sdfasdf3536sdf輸出輸出: :11 s 3 11 s 3 4.(文件名文件名:h4.pas)輸入兩個(gè)字符串,判斷第一個(gè)輸入兩個(gè)字符串,判斷第一個(gè)字符串在第二個(gè)字符串中的起始位置。兩個(gè)字符字符串在第二個(gè)字符串中的起始位置。兩個(gè)字符串位于兩行。串位于兩行。提示:用到的函數(shù)有提示:用到的函數(shù)有pos測(cè)試數(shù)據(jù):測(cè)試數(shù)據(jù):輸入:輸入:abc
45、dasdfabcdsdffsf輸出:一行,起始位置輸出:一行,起始位置55.(文件名為h5.pas)編一程序,將攝氏溫度換為華氏溫度。公式為:其中f為華氏溫度,c是攝氏溫度。將上述公式編為一個(gè)函數(shù),要求輸入攝氏溫度,輸出華氏溫度,(保留兩位小數(shù)). 例例2:先編寫一個(gè)自定義函數(shù)用以求:先編寫一個(gè)自定義函數(shù)用以求X2-5X+4,然后再通過(guò)主程序調(diào)用此函數(shù),分別求然后再通過(guò)主程序調(diào)用此函數(shù),分別求Y1=32-5*3+4;Y2=(A+5)2-5*(A+5)+4 program aa; var y1,y2,a:integer; function fun(x:integer):integer; begi
46、n fun:=x*x-5*x+4 end; begin write(input a=); read(a); y1:=fun(3); y2:=fun(a+5); writeln(y1=,y1); writeln(y2=,y2); end.測(cè)試數(shù)據(jù):測(cè)試數(shù)據(jù):輸入:輸入:input a=2輸出:輸出:y1=-2y2=18程序如下:程序如下:例例3:現(xiàn)設(shè)計(jì)一個(gè)函數(shù)完成乘方運(yùn)算。當(dāng)然可以:現(xiàn)設(shè)計(jì)一個(gè)函數(shù)完成乘方運(yùn)算。當(dāng)然可以用用power函數(shù)來(lái)實(shí)現(xiàn)。函數(shù)來(lái)實(shí)現(xiàn)。分析:根據(jù)數(shù)學(xué)知識(shí)乘方運(yùn)算的定義是:分析:根據(jù)數(shù)學(xué)知識(shí)乘方運(yùn)算的定義是: ,而當(dāng)而當(dāng)n0 then for i:=1 to n1 do t:=
47、t*x1; if n10 then for i:=1 to -n1 do t:=t/x1; fc:=t; end;begin read(x,n); y:=fc(x,n); writeln(y:0:2); end. 測(cè)試數(shù)據(jù):測(cè)試數(shù)據(jù):輸入輸入:2 3輸出輸出:8.00 例例4:設(shè)計(jì)一個(gè)函數(shù)設(shè)計(jì)一個(gè)函數(shù)digit(n,k),它能將自然數(shù),它能將自然數(shù)N的從右邊開(kāi)始的第的從右邊開(kāi)始的第K位上的數(shù)字取出來(lái)。位上的數(shù)字取出來(lái)。 例如:例如:digit(13579,3)=5 digit(2468,6)=0調(diào)用此函數(shù),求出調(diào)用此函數(shù),求出3次輸入后,得到的第次輸入后,得到的第K位上的位上的數(shù)字之和。數(shù)字之
48、和。 分析:為了取得一個(gè)數(shù)的第分析:為了取得一個(gè)數(shù)的第K位,可將其右邊位,可將其右邊K-1位數(shù)字去掉,即:位數(shù)字去掉,即:k-1次次(N DIV 10)所得到數(shù)的所得到數(shù)的個(gè)位就是所求的數(shù)字。個(gè)位就是所求的數(shù)字。 程序如下:程序如下:program aa; var n1,k1,j,s:longint; function digit(n,k:longint):integer; var i:integer; begin n:=abs(n); for i:=1 to k-1 do n:=n div 10; digit:=n mod 10; end; 測(cè)試數(shù)據(jù):測(cè)試數(shù)據(jù):輸入:輸入:133756 25
49、34534534 698809 3輸出:輸出:18begin s:=0; for j:=1 to 3 do begin readln(n1,k1); s:=s+digit(n1,k1); end; writeln(s); end.例例5:求出正整數(shù):求出正整數(shù)NM之間的完全數(shù)(之間的完全數(shù)(NM)。)。分析:所謂完全數(shù)是指它的因子之和等于它本身的分析:所謂完全數(shù)是指它的因子之和等于它本身的數(shù),如:數(shù),如:6=1+2+3。為了判定完全數(shù),可以定義一。為了判定完全數(shù),可以定義一個(gè)布爾函數(shù),若是完全數(shù),其值為個(gè)布爾函數(shù),若是完全數(shù),其值為TRUE,否則為,否則為FALSE。程序如下:程序如下:program a
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 美食廣場(chǎng)服務(wù)員工作總結(jié)
- 100萬(wàn)噸綠色清潔能源頁(yè)巖氣液化項(xiàng)目可行性研究報(bào)告寫作模板-申批備案
- 2025-2030全球電池保護(hù)板行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)工業(yè)級(jí)4-苯氧基苯酚行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)桁架式門式起重機(jī)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)AI虛擬人交互一體機(jī)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球心理情感咨詢服務(wù)平臺(tái)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)工業(yè)絕熱冷卻器行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球重餾分輪胎熱解油行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球消費(fèi)電子注塑機(jī)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 福建省泉州市晉江市2024-2025學(xué)年七年級(jí)上學(xué)期期末生物學(xué)試題(含答案)
- 2025年春新人教版物理八年級(jí)下冊(cè)課件 第十章 浮力 第4節(jié) 跨學(xué)科實(shí)踐:制作微型密度計(jì)
- 貨運(yùn)車輛駕駛員服務(wù)標(biāo)準(zhǔn)化培訓(xùn)考核試卷
- 財(cái)務(wù)BP經(jīng)營(yíng)分析報(bào)告
- 三年級(jí)上冊(cè)體育課教案
- 2024高考物理二輪復(fù)習(xí)電學(xué)實(shí)驗(yàn)專項(xiàng)訓(xùn)練含解析
- 2024年全國(guó)統(tǒng)一高考英語(yǔ)試卷(新課標(biāo)Ⅰ卷)含答案
- 高中英語(yǔ):倒裝句專項(xiàng)練習(xí)(附答案)
- 2025屆河北衡水?dāng)?shù)學(xué)高三第一學(xué)期期末統(tǒng)考試題含解析
- 2024信息技術(shù)數(shù)字孿生能力成熟度模型
- 交通銀行股份有限公司操作風(fēng)險(xiǎn)管理政策
評(píng)論
0/150
提交評(píng)論