吉林大學(xué)程序設(shè)計(jì)基礎(chǔ)教材第五章-模塊化程序設(shè)計(jì)--函數(shù).ppt
《吉林大學(xué)程序設(shè)計(jì)基礎(chǔ)教材第五章-模塊化程序設(shè)計(jì)--函數(shù).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《吉林大學(xué)程序設(shè)計(jì)基礎(chǔ)教材第五章-模塊化程序設(shè)計(jì)--函數(shù).ppt(59頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第五章模塊化程序設(shè)計(jì) 函數(shù) 求給定三角形的外心 模塊化程序設(shè)計(jì)函數(shù)程序設(shè)計(jì)實(shí)例 例5 1 求給定三角形的外心 以e為例 求解垂直平分線 假設(shè)A點(diǎn)坐標(biāo)為xa yaB點(diǎn)坐標(biāo)為xb ybC點(diǎn)坐標(biāo)為xc ycAC邊的中點(diǎn)E的坐標(biāo)為xe yeAC邊的直線方程表示為Y a1 X b1AB邊的直線方程表示為Y a2 X b2AC邊垂直平分線e的直線方程為Y u1 X v1AB邊垂直平分線f的直線方程為Y u2 X v2 include 括入標(biāo)準(zhǔn)輸入輸出函數(shù)庫(kù)頭文件voidmain 主函數(shù)floatxa ya xb yb xc yc 分別保存三角形三個(gè)頂點(diǎn)的X Y方向坐標(biāo)floatxe ye AC邊的中點(diǎn)E的坐標(biāo)floatxf yf AB邊的中點(diǎn)F的坐標(biāo)floata1 b1 AC邊的直線方程系數(shù)floata2 b2 AB邊的直線方程系數(shù)floatu1 v1 AC邊的垂直平分線的直線方程系數(shù)floatu2 v2 AB邊的垂直平分線的直線方程系數(shù)floatxo yo 外心O的坐標(biāo) 輸入三個(gè)點(diǎn)的X Y方向坐標(biāo) printf pleaseinputxa ya xb yb xc yc n scanf f f f f f f 求AC邊垂直平分線e xe xa xc 2 先求AC邊的中點(diǎn)Eye ya yc 2 a1 ya yc xa xc 再求過(guò)A C兩點(diǎn)的直線方程b1 ya a1 xa u1 1 a1 求過(guò)E點(diǎn)的與AC垂直的直線的直線方程v1 ye u1 xe 求AB邊垂直平分線f xf xa xb 2 先求AB邊的中點(diǎn)Eyf ya yb 2 a2 ya yb xa xb 再求過(guò)A B兩點(diǎn)的直線方程b2 ya a1 xa u2 1 a2 求過(guò)F點(diǎn)的與AC垂直的直線的直線方程v2 yf u2 xf 求e f交點(diǎn)O xo u2 u1 v2 v1 yo u1 xo v1 打印輸出 printf 外心坐標(biāo) x 10 3fy 10 3f n xo yo 計(jì)算過(guò)程一致 而參與運(yùn)算的數(shù)據(jù)不同 例5 2 用函數(shù)改寫例5 1的程序 include 括入標(biāo)準(zhǔn)輸入輸出函數(shù)庫(kù)頭文件1 求垂直平分線 參數(shù) 兩個(gè)頂點(diǎn)r s的x y坐標(biāo) floataa 全局變量 用于保存?zhèn)鬟frs邊的垂直平分線的直線方程斜率2floatlines floatxr floatyr floatxs floatys 3floatxt yt 中點(diǎn)T的坐標(biāo)4floata b 過(guò)r s兩點(diǎn)的直線方程系數(shù)5 先求中點(diǎn)T xt xr xs 2 6yt yr ys 2 7 再求過(guò)r s兩點(diǎn)的直線方程rs a yr ys xr xs 8b yr a xr 9 求過(guò)中點(diǎn)T的與rs垂直的直線方程 aa 1 a 計(jì)算斜率aa10returnyt aa xt 計(jì)算截距b 并帶著b值返回11 voidmain 主函數(shù)13floatxa ya xb yb xc yc 分別保存三角形三個(gè)頂點(diǎn)的X Y坐標(biāo)14floatu1 v1 AC邊的垂直平分線的直線方程系數(shù)15floatu2 v2 AB邊的垂直平分線的直線方程系數(shù)16floatxo yo 外心O的坐標(biāo)17 輸入三個(gè)點(diǎn)的X Y方向坐標(biāo)346360416108116212 printf pleaseinputxa ya xb yb xc yc n 18scanf f f f f f f 求AC邊垂直平分線e v1 lines xa ya xc yc 截距20u1 aa 斜率21 求AB邊垂直平分線f v2 lines xa ya xb yb 截距22u2 aa 斜率23 求e f交點(diǎn)O xo v2 v1 u2 u1 24yo u1 xo v1 25 打印輸出 printf 外心坐標(biāo) x 10 3fy 10 3f n xo yo 26 子程序 自頂向下 逐步求精 程序設(shè)計(jì)技術(shù)的基礎(chǔ)從問(wèn)題的整體 最頂層 出發(fā) 向下分解問(wèn)題 逐層細(xì)分 得到整個(gè)問(wèn)題的解決方法使用子程序技術(shù)分離了 做什么 與 怎么做 程序邏輯結(jié)構(gòu)清晰 易寫 易讀 易懂 程序的設(shè)計(jì) 調(diào)試 維護(hù)變得容易 5 2函數(shù) 例5 2 程序執(zhí)行過(guò)程函數(shù)概念的組成函數(shù)定義函數(shù)調(diào)用使用函數(shù)注意事項(xiàng)先定義該函數(shù) 標(biāo)準(zhǔn)庫(kù)函數(shù)除外 類似于數(shù)學(xué)中的函數(shù)定義 再在表達(dá)式中調(diào)用該函數(shù) 數(shù)學(xué)中計(jì)算某函數(shù)的一個(gè)特定值 5 2 1函數(shù)定義 function declaration 除標(biāo)準(zhǔn)庫(kù)函數(shù)外 程序中使用函數(shù)必須先定義 然后再用 函數(shù)調(diào)用 調(diào)用它 函數(shù)定義形式類型說(shuō)明符標(biāo)識(shí)符 參數(shù)列表 復(fù)合語(yǔ)句 floatdis floatxr floatyr floatxs floatys returnsqrt xr xs xr xs yr ys yr ys 函數(shù)類型 函數(shù)名字 形參列表 復(fù)合語(yǔ)句函數(shù)體 函數(shù)定義說(shuō)明符 函數(shù)定義說(shuō)明符上述形式的第一行稱 函數(shù)定義說(shuō)明符 形式如下TTF 參數(shù)列表 具體指明以下點(diǎn) 函數(shù)的結(jié)果類型 由 類型說(shuō)明符 TT 標(biāo)明 函數(shù)的名字 由類型說(shuō)明符后的 標(biāo)識(shí)符 F 標(biāo)明 函數(shù)的形式參數(shù)個(gè)數(shù)和每個(gè)形式參數(shù)的特性 由 參數(shù)列表 標(biāo)明 函數(shù)類型函數(shù)的結(jié)果類型缺省int類型結(jié)果類型不能是數(shù)組類型 函數(shù)類型函數(shù)可以是無(wú)值的 即 無(wú)類型 void參數(shù)列表 parameter list 每個(gè)參數(shù)聲明具體說(shuō)明形式 類型說(shuō)明符標(biāo)識(shí)符參數(shù)列表形式Tid Tid Tid C允許使用無(wú)參函數(shù) 無(wú)參函數(shù)的參數(shù)列表為空 或使用 空類型 的類型說(shuō)明符 void TTF TTF void 復(fù)合語(yǔ)句 compound statement 由聲明和語(yǔ)句列表組成聲明部分具體的說(shuō)明本函數(shù)內(nèi)使用的其它量 語(yǔ)句部分規(guī)定在本函數(shù)中要執(zhí)行的算法動(dòng)作 函數(shù)定義的形式 TTF Tid Tid Tid intf intx inty floatz intf intx y floatz intf intx y floatz 5 2 2函數(shù)調(diào)用 調(diào)用過(guò)程首先順序計(jì)算實(shí)參表中各實(shí)參值然后把這些值順序傳入形參表的各個(gè)形參中最后進(jìn)入函數(shù)執(zhí)行復(fù)合語(yǔ)句 一般形式F U U U F 例子lines xa ya xc yc lines xa ya xb yb printf 外心坐標(biāo) x 10 3fy 10 3f n xo yo 主程序 調(diào)用函數(shù) 返回 結(jié)束 函數(shù) 參數(shù)結(jié)合規(guī)則靜態(tài)上看 實(shí)參表中的實(shí)參與被調(diào)用函數(shù)中形參表的形參 按位置從左向右依次一一對(duì)應(yīng)對(duì)應(yīng)位置上的形實(shí)參間要賦值兼容各個(gè)實(shí)參的計(jì)算次序是依賴于實(shí)現(xiàn)的 參數(shù)結(jié)合動(dòng)作計(jì)算實(shí)參表達(dá)式的值把實(shí)參的值按賦值轉(zhuǎn)換規(guī)則 轉(zhuǎn)換成形參的類型 如果不能完成該轉(zhuǎn)換 則稱函數(shù)參數(shù)不一致 產(chǎn)生錯(cuò)誤把轉(zhuǎn)換后的實(shí)參值送入形參 3 intf intx inty returnx y voidmain inta 3 b 2 x 9 intc c f a b a x printf d n c printf d n x 2 9 程序輸出為 609 a b x 返回值 x y c main f 內(nèi)存 5 12 60 60 0 x y v z u main f 內(nèi)存 g 返回值 返回值 由左至右 include stdio h intx y intf intz x x 1 return z z intg intu intv voidmain x 0 g x f 2 0 2 1 4 4 0 x y v z u main f 內(nèi)存 g 返回值 返回值 由右至左 include stdio h intx y intf intz x x 1 return z z intg intu intv voidmain x 0 g x f 2 1 2 1 4 4 并行計(jì)算 不知道結(jié)果 include stdio h intx y intf intz x x 1 return z z intg intu intv voidmain x 0 g x f 2 代碼中參數(shù)值不能依賴計(jì)算次序 根據(jù)參數(shù)出現(xiàn)的位置形式參數(shù) 函數(shù)聲明 局部于函數(shù)的變量 intf intx inty returnx y 實(shí)際參數(shù) 函數(shù)調(diào)用voidmain inta 2 b 3 f a b b f 2 b 3 根據(jù)參數(shù)值的傳遞規(guī)則值參當(dāng)調(diào)用函數(shù)時(shí) 把實(shí)參的值傳入形參變量變參當(dāng)調(diào)用函數(shù)時(shí) 把實(shí)參的地址值傳入形參變量C語(yǔ)言中的參數(shù)都是值參 函數(shù)返回返回方式 return return表達(dá)式 函數(shù)運(yùn)行到復(fù)合語(yǔ)句末尾 最后那個(gè)閉花括號(hào) 后 例子returnsqrt xr xs xr xs yr ys yr ys returnsqrt s s uv s uw s vw 函數(shù)值 有返回類型的函數(shù)intf intx inty if x y returnx elsereturny 無(wú)返回類型的函數(shù)voidg intw if w 1 return elsex 3 有返回類型函數(shù)的函數(shù)值使用returne 向調(diào)用函數(shù)的主程序傳遞函數(shù)值returne 的執(zhí)行過(guò)程是 計(jì)算表達(dá)式e的值把表達(dá)式值按賦值轉(zhuǎn)換規(guī)則 轉(zhuǎn)換成函數(shù)的結(jié)果類型 返回語(yǔ)句中表達(dá)式的類型與函數(shù)的結(jié)果類型必須賦值兼容 用類型轉(zhuǎn)換后的值作為函數(shù)值 并帶著它返回到調(diào)用該函數(shù)處 無(wú)返回類型函數(shù)的函數(shù)值voidg intw if w 1 return elsex 3 在函數(shù)調(diào)用處 所調(diào)函數(shù)無(wú)值可以帶回 對(duì)于無(wú)類型函數(shù) 在函數(shù)調(diào)用處不需要函數(shù)值 這種返回是正常的 對(duì)于有類型函數(shù) 在函數(shù)調(diào)用處極可能需要函數(shù)值參加下一步運(yùn)算 這將帶來(lái)不可預(yù)料的結(jié)果 5 2 3先調(diào)用后定義 函數(shù)原型為什么使用函數(shù)原型任何標(biāo)識(shí)符都必須聲明 而且必須先聲明后使用在聲明定義函數(shù)時(shí)必須保證函數(shù)聲明位置在使用前出現(xiàn)從程序行文順序上控制 一般比較難實(shí)現(xiàn)函數(shù)原型 方便靈活 一般形式TTF T T T TTF Tid Tid Tid 例子floatf int float int char floatf intz floatu intv charw 函數(shù)原型的功能滿足了C標(biāo)識(shí)符先定義后使用的要求并向編譯系統(tǒng)提供所調(diào)用函數(shù)的信息函數(shù)返回類型函數(shù)的參數(shù)個(gè)數(shù)函數(shù)參數(shù)特性等信息程序設(shè)計(jì)風(fēng)格最好把所有函數(shù)原型集中 放在主函數(shù)之前 floatxa ya xb yb xc yc xd yd floats1 s2 ss m floatliners floatxr floatyr floatxs floatys floatareauvw floatxu floatyu floatxv floatyv floatxw floatyw voidmain void printf pleaseinputxa ya xb yb xc yc xd yd n scanf f f f f f f f f returnsqrt s s uv s uw s vw 程序設(shè)計(jì)實(shí)例 重寫打印字符矩陣重寫打印100以內(nèi)素?cái)?shù)驗(yàn)證Pascal定理 重寫打印字符方陣 ABCDEFGHIABCDEFGHIABCDEFGHIABBBCDEFGHIABCDEFGHIABCCCCCDEFGHIABCDEFGHIABCDDDDDDDEFGHIABCDEFGHIABCDEEEEEEEEEFGHIABCDEFGHIABCDEFFFFFFFFFFFGHIABCDEFEFGHIABCDEEEEEEEEEFGHIABCDEDEFGHIABCDDDDDDDEFGHIABCDCDEFGHIABCCCCCDEFGHIABCBCDEFGHIABBBCDEFGHIABABCDEFGHIABCDEFGHIA 打印前6行 打印后5行 x voidwritelinex char voidmain charx for x A x A x writelinex x voidwritelinex charu 打印第u行chary inti for y u y I y printf c y for y A y u 1 y printf c y for i 1 i 5 u A 2 i printf for i 1 i 2 u A 1 i printf c u for i 1 i 5 u A 2 i printf for y u 1 y I y printf c y for y A y u y printf c y printf n 重寫打印100以內(nèi)素?cái)?shù) returnfalse for j i 2 j 2 j returntrue i j 0 include stdio h boolprime int voidmain inti for i 2 i 2 j if n j 0 returnfalse returntrue 驗(yàn)證Pascal定理 圓內(nèi)接六邊形三雙對(duì)邊延線的交點(diǎn)在一條直線上 將6個(gè)點(diǎn)的極坐標(biāo)轉(zhuǎn)換成直角坐標(biāo) 已知極角theta 矢徑r 求一點(diǎn)的直角坐標(biāo) px py 求交點(diǎn)B1 B2 B3的坐標(biāo) 已知四點(diǎn)r s t u求兩條直線交點(diǎn)B 已知四點(diǎn)r s t u求兩條直線l1 l2的方程 已知兩點(diǎn)坐標(biāo)px py qx qy 求直線的斜率a和截距b 已知兩條直線方程斜率分別為ma na 截距mb nb 求直線交點(diǎn) wx wy 驗(yàn)證B1 B2 B3是否在一條直線上 PROGRAMPascaltheorem include math h include stdio h definePI3 1415927 defineeps1e 5floatradius 圓的半徑 floattheta1 theta2 theta3 theta4 theta5 theta6 六個(gè)極角的度數(shù) floatxa ya xb yb xc yc xd yd xe ye xf yf 六個(gè)頂點(diǎn)的直角坐標(biāo) floatb1 x b1 y b2 x b2 y b3 x b3 y 三個(gè)交點(diǎn)的直角坐標(biāo) floatb12 a b12 b B1和B2構(gòu)成直線的斜率和截距 主程序之前這段為 函數(shù)原型 以及各個(gè)函數(shù)返回結(jié)果所用變量 voidtrans abcdef floatpx py 用來(lái)保存coordinate 轉(zhuǎn)換的直角坐標(biāo) voidcoordinate float float voidthree inter voidintersection float float float float float float float float floatl1 a l1 b l2 a l2 b 兩條直線的斜率和截距 voidequation float float float float float float float float floata b 直線方程的斜率和截距 voidstraightline float float float float floatwx wy 直線交點(diǎn)的直角坐標(biāo) voidinter float float float float inttest float float float float float float 主函數(shù) voidmain 讀入圓形的半徑 printf pleaseinputtheradiusofthecircle scanf f 計(jì)算六個(gè)頂點(diǎn)坐標(biāo) voidtrans abcdef coordinate radius theta1 xa px ya py coordinate radius theta2 xb px yb py coordinate radius theta3 xc px yc py coordinate radius theta4 xd px yd py coordinate radius theta5 xe px ye py coordinate radius theta6 xf px yf py 計(jì)算一個(gè)頂點(diǎn)坐標(biāo) voidcoordinate floatr floattheta 先把 角度 轉(zhuǎn)換成 弧度 再轉(zhuǎn)換成直角坐標(biāo) px r cos PI theta 180 py r sin PI theta 180 求三個(gè)交點(diǎn) voidthree inter intersection xa ya xb yb xd yd xe ye b1 x wx b1 y wy intersection xb yb xc yc xe ye xf yf b2 x wx b2 y wy intersection xc yc xd yd xf yf xa ya b3 x wx b3 y wy 已知四點(diǎn) 求兩條直線交點(diǎn) voidintersection floatrx floatry floatsx floatsy floattx floatty floatux floatuy equation rx ry sx sy tx ty ux uy inter l1 a l1 b l2 a l2 b 已知四點(diǎn) 求兩條直線方程 voidequation floatrx floatry floatsx floatsy floattx floatty floatux floatuy straightline rx ry sx sy l1 a a l1 b b straightline tx ty ux uy l2 a a l2 b b 計(jì)算由兩點(diǎn)確定直線方程的斜率 a 和截距 b voidstraightline floatex floatey floatfx floatfy a fy ey fx ex 斜率 b ey a ex 截距 已知兩個(gè)直線方程的斜率和截距 求它們交點(diǎn) voidinter floatma floatmb floatna floatnb wx nb mb ma na wy ma wx mb 檢驗(yàn) booltest floatb1 x floatb1 y floatb2 x floatb2 y floatb3 x floatb3 y straightline b1 x b1 y b2 x b2 y if fabs b3 y a b3 x b eps returntrue elsereturnfalse 本章小結(jié) 函數(shù)的定義函數(shù)的調(diào)用模塊化程序設(shè)計(jì)思想 作業(yè) 5 45 8- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 吉林大學(xué) 程序設(shè)計(jì) 基礎(chǔ) 教材 第五 模塊化 函數(shù)
鏈接地址:http://m.italysoccerbets.com/p-6294614.html