




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、模塊化編程模塊化編程模塊化設(shè)計(jì)和建造模塊化設(shè)計(jì)和建造 在對(duì)產(chǎn)品進(jìn)行功能分析的基礎(chǔ)上在對(duì)產(chǎn)品進(jìn)行功能分析的基礎(chǔ)上,將產(chǎn)品將產(chǎn)品分解成若干個(gè)功能模塊分解成若干個(gè)功能模塊,預(yù)制好的模塊再預(yù)制好的模塊再進(jìn)行組裝進(jìn)行組裝,形成最終產(chǎn)品形成最終產(chǎn)品. 模塊模塊:提供特定功能的相對(duì)獨(dú)立的單元提供特定功能的相對(duì)獨(dú)立的單元. 標(biāo)準(zhǔn)化標(biāo)準(zhǔn)化:標(biāo)準(zhǔn)尺寸和標(biāo)準(zhǔn)接口標(biāo)準(zhǔn)尺寸和標(biāo)準(zhǔn)接口 可組裝可組裝:多個(gè)模塊可以方便靈活地組合多個(gè)模塊可以方便靈活地組合 可替換可替換:改變系統(tǒng)的局部功能改變系統(tǒng)的局部功能 可維護(hù)可維護(hù):對(duì)模塊進(jìn)行局部修改或設(shè)置對(duì)模塊進(jìn)行局部修改或設(shè)置Lu Chaojun, SJTU 2模塊化編程模塊化編程
2、 將程序分解為獨(dú)立的、可替換的、具有將程序分解為獨(dú)立的、可替換的、具有預(yù)定功能的模塊預(yù)定功能的模塊,每個(gè)模塊實(shí)現(xiàn)一個(gè)功能每個(gè)模塊實(shí)現(xiàn)一個(gè)功能.各模塊組合在一起形成最終程序各模塊組合在一起形成最終程序. 好處好處: 易設(shè)計(jì)易設(shè)計(jì):復(fù)雜問(wèn)題化成簡(jiǎn)單問(wèn)題復(fù)雜問(wèn)題化成簡(jiǎn)單問(wèn)題 易實(shí)現(xiàn)易實(shí)現(xiàn):可以團(tuán)隊(duì)開(kāi)發(fā)可以團(tuán)隊(duì)開(kāi)發(fā) 易測(cè)試易測(cè)試:可各自測(cè)試可各自測(cè)試 易維護(hù)易維護(hù):增加模塊增加模塊 可重用可重用:一個(gè)模塊可參與組合不同程序一個(gè)模塊可參與組合不同程序Lu Chaojun, SJTU 3分離關(guān)注點(diǎn)分離關(guān)注點(diǎn) 關(guān)注點(diǎn)關(guān)注點(diǎn):是指設(shè)計(jì)者關(guān)心的某個(gè)系統(tǒng)特性是指設(shè)計(jì)者關(guān)心的某個(gè)系統(tǒng)特性或行為或行為 分離關(guān)注點(diǎn)分離
3、關(guān)注點(diǎn)(SoC):將系統(tǒng)分解為互不重將系統(tǒng)分解為互不重疊的若干部分疊的若干部分,每個(gè)部分對(duì)應(yīng)于一個(gè)關(guān)注每個(gè)部分對(duì)應(yīng)于一個(gè)關(guān)注點(diǎn)點(diǎn). 在模塊化編程中在模塊化編程中,以程序的各個(gè)功能作為以程序的各個(gè)功能作為關(guān)注點(diǎn)關(guān)注點(diǎn),模塊劃分就是分離關(guān)注點(diǎn)的結(jié)果模塊劃分就是分離關(guān)注點(diǎn)的結(jié)果.Lu Chaojun, SJTU 4編程語(yǔ)言中的模塊化構(gòu)造編程語(yǔ)言中的模塊化構(gòu)造 匯編語(yǔ)言匯編語(yǔ)言:子例程子例程,宏宏 高級(jí)語(yǔ)言高級(jí)語(yǔ)言:函數(shù)函數(shù),過(guò)程過(guò)程 有的語(yǔ)言不加區(qū)分有的語(yǔ)言不加區(qū)分,統(tǒng)稱為函數(shù)統(tǒng)稱為函數(shù). 包包,模塊模塊,函數(shù)庫(kù)函數(shù)庫(kù),類(lèi)庫(kù)類(lèi)庫(kù)Lu Chaojun, SJTU 5Python函數(shù)函數(shù) 函數(shù)是一種程序
4、構(gòu)件函數(shù)是一種程序構(gòu)件,是構(gòu)成大程序的小是構(gòu)成大程序的小功能部件功能部件 function一詞本身就有一詞本身就有功能功能的含義的含義 我們已經(jīng)熟悉的函數(shù)我們已經(jīng)熟悉的函數(shù):Python內(nèi)建函數(shù)內(nèi)建函數(shù),如如abs()Python庫(kù)函數(shù)庫(kù)函數(shù),如如math.sqrt() 模塊化的程序是由許多函數(shù)組合而成的模塊化的程序是由許多函數(shù)組合而成的.Lu Chaojun, SJTU 6為什么需要函數(shù)為什么需要函數(shù)? 編程更容易把握編程更容易把握 大程序分解成小功能部件大程序分解成小功能部件 代碼重用代碼重用,避免重復(fù)相同避免重復(fù)相同/相似代碼相似代碼 提高開(kāi)發(fā)效率提高開(kāi)發(fā)效率 更易維護(hù)更易維護(hù) 程序更可
5、讀程序更可讀,更易理解更易理解 代碼簡(jiǎn)潔美觀代碼簡(jiǎn)潔美觀Lu Chaojun, SJTU 7函數(shù)用途函數(shù)用途:減少重復(fù)代碼減少重復(fù)代碼 編程實(shí)例編程實(shí)例:畫(huà)一棵樹(shù)畫(huà)一棵樹(shù)print *print *print *print *print *print *print *print *print #print #print # def treetop(): print * print * print * print *def tree(): treetop() treetop() print # print # print # tree()重復(fù)代碼的弊端重復(fù)代碼的弊端 程序不必要地冗長(zhǎng)程序不必要地
6、冗長(zhǎng) 代碼一致性維護(hù)麻煩代碼一致性維護(hù)麻煩:若修改一處代碼若修改一處代碼,則則所有重復(fù)的地方都要一致地修改所有重復(fù)的地方都要一致地修改 程序看上去累贅不美觀程序看上去累贅不美觀 輸入大量重復(fù)代碼很單調(diào)乏味輸入大量重復(fù)代碼很單調(diào)乏味函數(shù)用途函數(shù)用途:改善程序結(jié)構(gòu)改善程序結(jié)構(gòu)(1) 模塊化模塊化:將程序分解成多個(gè)較小的相對(duì)獨(dú)將程序分解成多個(gè)較小的相對(duì)獨(dú)立的函數(shù)立的函數(shù),可使程序結(jié)構(gòu)清晰可使程序結(jié)構(gòu)清晰,容易理解容易理解.def treetop(): print * print * print * print *def tree(): treetop() treetop() print # prin
7、t # print # tree()def treetop(): print * print * print * print *def treetrunk(): print # print # print # def main(): treetop() treetop() treetrunk()main()函數(shù)用途函數(shù)用途:改善程序結(jié)構(gòu)改善程序結(jié)構(gòu)(2)def treetop(): print * print * print * print *def treetrunk(): print # print # print # def main(): treetop() treetop() tre
8、etrunk()main()def treetop1(): print * print * print * print *def treetop(): treetop1() treetop1()def treetrunk(): print # print # print # def main(): treetop() treetrunk()main()主程序結(jié)構(gòu)清晰主程序結(jié)構(gòu)清晰函數(shù)用途函數(shù)用途:提高程序通用性提高程序通用性 換用換用字符來(lái)畫(huà)樹(shù)字符來(lái)畫(huà)樹(shù),以便比較美觀度以便比較美觀度.def treetop1(): print * print * print * print *def tree
9、top2(): print print print print def star_treetop(): treetop1() treetop1()def caret_treetop(): treetop2() treetop2().def treetop(ch): print %s % (ch) print %s % (3*ch) print %s % (5*ch) print %s % (7*ch)def star_treetop(): treetop(*) treetop(*)def caret_treetop(): treetop() treetop().利用函數(shù)參數(shù)利用函數(shù)參數(shù)提高通用
10、性提高通用性小結(jié)小結(jié):函數(shù)的定義和調(diào)用函數(shù)的定義和調(diào)用 先定義先定義(define) 再通過(guò)函數(shù)名調(diào)用再通過(guò)函數(shù)名調(diào)用 調(diào)用時(shí)傳遞參數(shù)調(diào)用時(shí)傳遞參數(shù) 調(diào)用執(zhí)行的是函數(shù)體調(diào)用執(zhí)行的是函數(shù)體(語(yǔ)句序列語(yǔ)句序列) 調(diào)用產(chǎn)生返回值調(diào)用產(chǎn)生返回值 函數(shù)定義可置于程序中任何地方函數(shù)定義可置于程序中任何地方,但必須但必須在調(diào)用之前在調(diào)用之前Lu Chaojun, SJTU 13def func(x): y = x * x return ya = func(2)函數(shù)調(diào)用過(guò)程函數(shù)調(diào)用過(guò)程 函數(shù)定義函數(shù)定義def (): 函數(shù)調(diào)用函數(shù)調(diào)用() 調(diào)用者暫停調(diào)用者暫停 函數(shù)形參被賦值為實(shí)參函數(shù)形參被賦值為實(shí)參 執(zhí)行函
11、數(shù)體執(zhí)行函數(shù)體 控制返回調(diào)用者控制返回調(diào)用者(調(diào)用點(diǎn)的下一條語(yǔ)句調(diào)用點(diǎn)的下一條語(yǔ)句)函數(shù)調(diào)用過(guò)程圖解函數(shù)調(diào)用過(guò)程圖解(1)函數(shù)調(diào)用過(guò)程圖解函數(shù)調(diào)用過(guò)程圖解(2)函數(shù)調(diào)用過(guò)程圖解函數(shù)調(diào)用過(guò)程圖解(3)參數(shù)傳遞參數(shù)傳遞 對(duì)于函數(shù)定義對(duì)于函數(shù)定義def f(x,y,z): . 按位置傳遞按位置傳遞f(1,2,3) 按名傳遞按名傳遞:形參形參=實(shí)參實(shí)參f(x=1,z=3,y=2) 實(shí)參可以是字面值實(shí)參可以是字面值,也可以是已賦值的變也可以是已賦值的變量量f(1,a,b)變量的作用域變量的作用域 變量具有變量具有作用域作用域(scope):即可以引用該變量的程序區(qū)域即可以引用該變量的程序區(qū)域. 不同作用
12、域中的變量不同作用域中的變量,即使同名即使同名,也是不同的變量也是不同的變量! 作用域可以是局部作用域可以是局部,也可以是全局也可以是全局 函數(shù)中定義的變量是函數(shù)中定義的變量是局部的局部的:即作用域是函數(shù)體即作用域是函數(shù)體. 函數(shù)的形參可視為局部變量函數(shù)的形參可視為局部變量,只不過(guò)是在調(diào)用時(shí)才賦值只不過(guò)是在調(diào)用時(shí)才賦值.x,y = 0,0def f(x): y = 1 print x,yf(x)print x,y函數(shù)如何使用外部數(shù)據(jù)函數(shù)如何使用外部數(shù)據(jù) Python中中,函數(shù)體可直接引用外部的變量函數(shù)體可直接引用外部的變量.x = 0def f(y): z = 1 print x,y,zf(1
13、0) 但這用法很不好但這用法很不好!不符合模塊化要求不符合模塊化要求. 應(yīng)當(dāng)通過(guò)參數(shù)向函數(shù)傳遞數(shù)據(jù)應(yīng)當(dāng)通過(guò)參數(shù)向函數(shù)傳遞數(shù)據(jù)x = 0def f(p,y): z = 1 print p,y,zf(x,10)f() xy,zx全局變量全局變量 函數(shù)若需引用并修改外部變量函數(shù)若需引用并修改外部變量,可聲明可聲明全局變量全局變量 x = 1 def f(): print x #未定義變量視為全局變量未定義變量視為全局變量 x = 2 #賦值引入局部變量賦值引入局部變量,則前行出錯(cuò)則前行出錯(cuò)! f() def h(): global x print x x = 2 #此賦值是針對(duì)全局變量的此賦值是針對(duì)
14、全局變量的 print x h()f() xh() xx全局變量的用途全局變量的用途 多個(gè)函數(shù)處理共享數(shù)據(jù)多個(gè)函數(shù)處理共享數(shù)據(jù)def f(): global x x = x + 1 print xdef g(): global x x = x 1 print xx = 0f()g() 函數(shù)的返回值函數(shù)的返回值 函數(shù)與調(diào)用者之間的信息交互函數(shù)與調(diào)用者之間的信息交互: 通過(guò)形參從調(diào)用者輸入值通過(guò)形參從調(diào)用者輸入值 通過(guò)通過(guò)返回值返回值向調(diào)用者輸出值向調(diào)用者輸出值 定義定義def (): return return計(jì)算各表達(dá)式計(jì)算各表達(dá)式,將結(jié)果返回調(diào)用者將結(jié)果返回調(diào)用者,退退出函數(shù)出函數(shù)函數(shù)返回值
15、的使用函數(shù)返回值的使用 如果沒(méi)有或者用不上函數(shù)返回值如果沒(méi)有或者用不上函數(shù)返回值,則函數(shù)調(diào)用可則函數(shù)調(diào)用可以直接當(dāng)成一條語(yǔ)句以直接當(dāng)成一條語(yǔ)句f(3) 相當(dāng)于某些語(yǔ)言中的相當(dāng)于某些語(yǔ)言中的過(guò)程調(diào)用過(guò)程調(diào)用 如果想使用函數(shù)返回值如果想使用函數(shù)返回值,則有兩種用法則有兩種用法 用變量接收返回值用變量接收返回值,如如x = f(3)print 2 + x * 4 直接用在表達(dá)式中直接用在表達(dá)式中,如如print 2 + f(3) * 4 忘記接收函數(shù)返回值是忘記接收函數(shù)返回值是Python初學(xué)者的常見(jiàn)錯(cuò)初學(xué)者的常見(jiàn)錯(cuò)誤誤函數(shù)返回值使用例函數(shù)返回值使用例(1) def sq(x): return x
16、* x sq(2)4 print sq(3) + 110 a = 4 b = sq(a) print b16 函數(shù)返回值使用例函數(shù)返回值使用例(2) 求兩點(diǎn)距離的函數(shù)求兩點(diǎn)距離的函數(shù)from math import sqrtdef sq(x): return x * xdef dist(u,v): d = sqrt(sq(v0-u0)+sq(v1-u1) return d 用一個(gè)函數(shù)輔助定義另一個(gè)函數(shù)用一個(gè)函數(shù)輔助定義另一個(gè)函數(shù),這是化繁為這是化繁為簡(jiǎn)的常用做法簡(jiǎn)的常用做法.函數(shù)返回值使用例函數(shù)返回值使用例(3) 多個(gè)返回值的接收多個(gè)返回值的接收 def headtail(list): ret
17、urn list0,listlen(list)-1 用多個(gè)變量用多個(gè)變量 h,t = headtail(1,2,3,4,5) print h,t1 5 用一個(gè)變量用一個(gè)變量,接受的值是元組接受的值是元組. v = headtail(1,2,3,4,5) v(1, 5) 關(guān)于關(guān)于return return通常出現(xiàn)在函數(shù)末尾通常出現(xiàn)在函數(shù)末尾,因?yàn)楹瘮?shù)一般都是因?yàn)楹瘮?shù)一般都是執(zhí)行完所有步驟之后才能得出計(jì)算結(jié)果并返回執(zhí)行完所有步驟之后才能得出計(jì)算結(jié)果并返回. 有時(shí)在函數(shù)到達(dá)末尾之前就終止執(zhí)行并返回有時(shí)在函數(shù)到達(dá)末尾之前就終止執(zhí)行并返回.def f(x): if x from moduletest import days days(1
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025裝飾設(shè)計(jì)合同模板
- 2025車(chē)輛買(mǎi)賣(mài)合同標(biāo)準(zhǔn)范本
- 2025年廣州市汽車(chē)維修與美容行業(yè)職工勞動(dòng)合同
- 疝氣護(hù)理記錄規(guī)范與實(shí)施
- 美麗鄉(xiāng)村建設(shè)培訓(xùn)體系
- 特殊用藥的護(hù)理
- 2025年成本會(huì)計(jì)試題
- 護(hù)理儀器使用與管理規(guī)范
- 《電與磁》知識(shí)點(diǎn)總結(jié)模版
- 辦公5S管理標(biāo)準(zhǔn)
- 第7課《溜索》一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)
- WMO五年級(jí)初級(jí)測(cè)評(píng)專(zhuān)項(xiàng)訓(xùn)練
- 班主任節(jié)PPT幻燈片課件
- 北師大高中英語(yǔ)必修一 (Celebrations)課件(第8課時(shí))
- 中興(ZXA10-XPON)高級(jí)工程師認(rèn)證考試題庫(kù)(含答案)
- 單值-移動(dòng)極差X-MR控制圖-模板
- 建筑水電安裝施工專(zhuān)項(xiàng)方案
- 離婚協(xié)議書(shū)電子版可打印
- 天然氣輸氣管道
- 2023屆高三語(yǔ)文模擬試卷及參考答案2023年全國(guó)高考(重慶卷)語(yǔ)文試題及答案
- 潔凈風(fēng)管制作安裝技術(shù)方案
評(píng)論
0/150
提交評(píng)論