10-函數(shù)省公開課一等獎(jiǎng)全國示范課微課金獎(jiǎng)?wù)n件_第1頁
10-函數(shù)省公開課一等獎(jiǎng)全國示范課微課金獎(jiǎng)?wù)n件_第2頁
10-函數(shù)省公開課一等獎(jiǎng)全國示范課微課金獎(jiǎng)?wù)n件_第3頁
10-函數(shù)省公開課一等獎(jiǎng)全國示范課微課金獎(jiǎng)?wù)n件_第4頁
10-函數(shù)省公開課一等獎(jiǎng)全國示范課微課金獎(jiǎng)?wù)n件_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

函數(shù)f(x)=x2+5x+1求f(2),f(3),f(5)第1頁問題:已知f(x)=x2+5x+1.分別求f(2),f(3),f(5)并輸出cout<<2*2+5*2+1;cout<<3*3+5*3+1;cout<<5*5+5*5+1;煩不煩?。∧軌蚍謩e寫3個(gè)語句數(shù)學(xué)中能夠先定義函數(shù),然后經(jīng)過函數(shù)計(jì)算。C++中也能夠第2頁#include<iostream>usingnamespacestd;doublef(doublex){returnx*x+5*x+1.0;}voidmain(){cout<<f(2)<<endl;cout<<f(3)<<endl;cout<<f(5)<<endl;}函數(shù)定義函數(shù)調(diào)用經(jīng)過定義函數(shù)來簡化重復(fù)計(jì)算第3頁C++函數(shù)定義doublef(doublex){

returnx*x+5*x+1.0;}返回類型函數(shù)參數(shù)函數(shù)名函數(shù)體,怎樣由參數(shù)計(jì)算出結(jié)果第4頁C++函數(shù)定義類型函數(shù)名(類型1參數(shù)1,類型2參數(shù)2,...)

{

.....

return返回值表示式;

}

返回類型函數(shù)體參數(shù)列表要符合標(biāo)識符要求第5頁intSum(intn){inti;intnSum=0;for(i=1;i<=n;i++)nSum+=i;returnnSum;}例:一個(gè)求1+2+3+...+n函數(shù)函數(shù)體內(nèi)能夠定義自己變量,經(jīng)過復(fù)雜計(jì)算得到結(jié)果,最終經(jīng)過return語句返回第6頁intGetMin(intx,inty){if(x<y)returnx;elsereturny;}例:一個(gè)求x與y最小值函數(shù)。帶有兩個(gè)參數(shù)函數(shù)能夠帶多個(gè)參數(shù)返回類型函數(shù)體內(nèi)能夠有多個(gè)return語句。return語句退出該函數(shù),并帶回函數(shù)運(yùn)算結(jié)果返回值能夠是任何單值數(shù)據(jù)類型(基本數(shù)據(jù)類型,指針類型等),但不能是數(shù)組第7頁voidDisplayHello(void){ cout<<"Hello,world"<<endl;}無參數(shù)、無返回值函數(shù)函數(shù)能夠沒有參數(shù)函數(shù)能夠無返回值無參數(shù)函數(shù)普通完成固定功效無參數(shù)時(shí),參數(shù)列表中寫void或者空白無返回值函數(shù)普通用于執(zhí)行一定動(dòng)作(比如顯示信息等)。其它語言中普通將無返回值函數(shù)稱為“過程”無返回值函數(shù)不需要使用return語句。也使用return語句退出void能夠不寫返回類型必須寫第8頁return語句return語句用來退出函數(shù)并返回計(jì)算結(jié)果,該返回值通常是一個(gè)表示式,且返回值類型要和函數(shù)返回類型相一致。一個(gè)函數(shù)也能夠有多個(gè)return語句,在函數(shù)執(zhí)行過程中,碰到任一個(gè)return語句,將馬上停頓執(zhí)行,并返回到調(diào)用函數(shù)。第9頁帶自定義函數(shù)C++程序結(jié)構(gòu).....intf1(...){...}floatf2(...){f1(...)}intmain(){f2(...);}程序從main()函數(shù)開始運(yùn)行全部函數(shù)并列定義,不能在另一個(gè)函數(shù)內(nèi)部定義返回到f2()函數(shù)返回到main()函數(shù)第10頁函數(shù)定義次序.....intf1(...){...}floatf2(...){f1(...)}普通先定義,后使用調(diào)用f1函數(shù)f1函數(shù)定義第11頁也能夠把函數(shù)定義放在函數(shù)調(diào)用之后,不過必須在調(diào)用之前進(jìn)行“函數(shù)申明”.....intf1(...);floatf2(...){f1(...)}intf1(...){...}函數(shù)申明經(jīng)過申明函數(shù)能夠先調(diào)用函數(shù)定義第12頁函數(shù)申明類型函數(shù)名(類型1參數(shù)1,類型2參數(shù)2,...);函數(shù)申明由返回類型、函數(shù)名和參數(shù)列表組成函數(shù)申明中參數(shù)名能夠省略,只寫參數(shù)類型函數(shù)申明也叫函數(shù)原型函數(shù)申明之后,能夠先調(diào)用,再定義對于系統(tǒng)庫函數(shù),申明語句在對應(yīng)頭文件中。我們只需要包含對應(yīng)頭文件就能夠直接調(diào)用函數(shù)申明,就是在函數(shù)頭后面加上分號第13頁//例5:函數(shù)申明示例(求一個(gè)數(shù)n次方)#include<iostream>usingnamespacestd;intPower(intbase,intexponent);voidmain(){ cout<<"2^8="<<Power(2,8)<<'\n';}intPower(intbase,intexponent){ intresult=1; for(inti=0;i<exponent;++i) result*=base; returnresult;}Power()函數(shù)申明第14頁main()函數(shù)C++程序主要由一系列函數(shù)組成。不過從main()函數(shù)開始執(zhí)行最新C++標(biāo)準(zhǔn)要求:main()函數(shù)參數(shù)和返回類型應(yīng)該以下:intmain(intargc,char*argv[]){......return返回代碼;//返回代碼普通取0}但VC和原有C++標(biāo)準(zhǔn)都支持void返回類型,所以我們依然能夠使用void返回類型,寫起來更簡捷假如要編寫兼容最新標(biāo)準(zhǔn)C++程序,應(yīng)該使用上面標(biāo)準(zhǔn)main()函數(shù)返回類型。使用void類型返回值是不夠標(biāo)準(zhǔn)假如程序帶命令行參數(shù)運(yùn)行,argc參數(shù)能夠知道有幾個(gè)參數(shù),argv中保留了命令參數(shù)字符串第15頁局部變量、全局變量和靜態(tài)局部變量intgv;voidfunc(){ inta;staticintb; ...}全局變量:定義在任何函數(shù)外部變量局部變量:定義函數(shù)內(nèi)部變量局部變量:定義函數(shù)內(nèi)部變量,并在前面有static修飾符第16頁局部變量voidfunc(){ inta; ...}voidmain(){ inta; func();}局部變量只在定義它函數(shù)內(nèi)可見局部變量a,只在func()函數(shù)里可見局部變量a,只在main()函數(shù)中可見每個(gè)函數(shù)局部變量互不干擾,即使同名變量都沒有影響第17頁#include<iostream>usingnamespacestd;inta=5;intb;voidfunc(){ a=10; b=15;}voidmain(){ b+=2; cout<<"a="<<a<<",b="<<b<<endl; func(); cout<<"a="<<a<<",b="<<b<<endl;}a、b是全局變量,在函數(shù)func里它們也是可見a、b是全局變量,在函數(shù)main里也可見在任何函數(shù)外定義變量是全局變量全局變量:在全部函數(shù)內(nèi)都可見第18頁#include<iostream>usingnamespacestd;intcount() { staticintnCount=0; return++nCount; }voidmain(){ for(inti=0;i<=9;i++) { cout<<count()<<";"; } cout<<endl;}靜態(tài)局部變量除了限制只能在所定義函數(shù)內(nèi)訪問之外,其它性質(zhì)與全局變量相同靜態(tài)局部變量第19頁假如變量定義時(shí)未初始化,那么:局部變量初始值是隨機(jī)全局變量和靜態(tài)局部變量初始值是0第20頁思索:判斷對錯(cuò):在main()函數(shù)中定義變量是全局變量我們以前在main()函數(shù)中定義變量都是局部變量嗎?第21頁練習(xí):#include<iostream>usingnamespacestd;intmaxnum=100;voidmain(){ staticintc=0;inti;for(i=0;i<maxnum;i++)c+=i;cout<<c<<endl;}以下變量定義中,哪個(gè)是全局變量、局部變量、靜態(tài)局部變量?第22頁函數(shù)調(diào)用方式定義函數(shù)目標(biāo)是為了調(diào)用它完成一定功效函數(shù)調(diào)用普通形式以下:函數(shù)名(實(shí)際參數(shù)1,實(shí)際參數(shù)2,...)假如沒有返回值,或者不需要返回值,能夠直接調(diào)用DisplayHello();假如需要函數(shù)返回值,則函數(shù)調(diào)用能夠作為表示式。cout<<Area(3.5,4.2)<<endl;第23頁函數(shù)調(diào)用機(jī)制局部變量返址和現(xiàn)場函數(shù)參數(shù)調(diào)用函數(shù)將實(shí)際參數(shù)表示式按照“從右到左”次序依次計(jì)算,并入棧將函數(shù)返回地址和現(xiàn)場信息入棧在棧中為函數(shù)全部局部變量留出空間執(zhí)行函數(shù)代碼返回并釋放調(diào)用框架,并返回結(jié)果調(diào)用框架很多與函數(shù)調(diào)用相關(guān)問題,需要了解函數(shù)調(diào)用機(jī)制函數(shù)調(diào)用,需要使用內(nèi)存棧(stack)棧有“后進(jìn)先出”特點(diǎn),后入棧數(shù)據(jù)會(huì)先出棧這些步驟形成內(nèi)存布局稱為函數(shù)“調(diào)用框架”第24頁#include<iostream>usingnamespacestd;

double

area(doublel,doublew) //area函數(shù)定義

{

doublevalue;value=l*w; returnvalue;

}voidmain()//主函數(shù),程序從該函數(shù)開始執(zhí)行

{

doublelength,width;

cout<<“請輸入長方形長和寬:”;

cin>>length>>width;

cout<<"長方形面積是:"<<area(length,width)<<endl;}第25頁double

area(doublel,doublew){doublevalue;......returnvalue;

}voidmain(){

doublelength,width;

............area(length,width);}局部變量value返址和現(xiàn)場參數(shù)lwidtharea()length參數(shù)wmain()將width,length值依次入棧將返回地址入棧留出局部變量位置第26頁#include<iostream>usingnamespacestd;voidSwap(inta,intb){ intnTmp; nTmp=b; b=a; a=nTmp;}voidmain(){ inta=10;intb=20; cout<<"交換前a="<<a<<",b="<<b<<endl; Swap(a,b); cout<<"交換后a="<<a<<",b="<<b<<endl;}一個(gè)打算交換兩個(gè)變量值函數(shù)Swap第27頁函數(shù)調(diào)用分析局部變量temp返址和現(xiàn)場參數(shù)a=10b=20Swap()a=10參數(shù)b=20main()voidSwap(inta,intb){ intnTmp; nTmp=b; b=a; a=nTmp;}voidmain(){inta=10;intb=20;........Swap(a,b);.......}函數(shù)僅僅交換了參數(shù)a,b值,至于原來a,b還保留原有值參數(shù)a=20參數(shù)b=10Swap()函數(shù)退出后,函數(shù)調(diào)用框架被釋放,a,b值依舊第28頁能夠經(jīng)過傳遞變量地址來修改變量值#include<iostream>usingnamespacestd;voidSwap(int*pa,int*pb){ intnTmp; nTmp=*pb; *pb=*pa; *pa=nTmp;}voidmain(){ inta=10;intb=20; cout<<"交換前a="<<a<<",b="<<b<<endl; Swap(&a,&b); cout<<"交換后a="<<a<<",b="<<b<<endl;}第29頁函數(shù)調(diào)用分析局部變量temp返址和現(xiàn)場pab=20Swap()a=10pbmain()voidSwap(int*pa,int*pb){ intnTmp; nTmp=*pb; *pb=*pa;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論