![第3章模塊化程序設(shè)計_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/4/dbc279de-41fb-4108-9fb7-8690f9a48853/dbc279de-41fb-4108-9fb7-8690f9a488531.gif)
![第3章模塊化程序設(shè)計_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/4/dbc279de-41fb-4108-9fb7-8690f9a48853/dbc279de-41fb-4108-9fb7-8690f9a488532.gif)
![第3章模塊化程序設(shè)計_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/4/dbc279de-41fb-4108-9fb7-8690f9a48853/dbc279de-41fb-4108-9fb7-8690f9a488533.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第3章模塊化程序設(shè)計第3章模塊化程序設(shè)計課題:第3章模塊化程序設(shè)計(1)教學(xué)目標(biāo)1、掌握函數(shù)的定義及其調(diào)用方法。2、理解掌握形式參數(shù)和實際參數(shù)的概念及 使用方法。3、掌握函數(shù)的調(diào)用及嵌套調(diào)用的方法。4、理解函數(shù)的遞歸調(diào)用方法教學(xué) 重點、 難點1、掌握函數(shù)的調(diào)用及嵌套調(diào)用的方法。2、理解函數(shù)的遞歸調(diào)用方法技能 培訓(xùn) 重點、 難點1、掌握函數(shù)的定義。2、掌握函數(shù)的調(diào)用。3、熟悉形式參數(shù)和實際參數(shù)。4、理解和應(yīng)用函數(shù)的返回值。教法案例教學(xué)法學(xué)法思考,討論,練習(xí)鞏固教具 使用投影儀演示或教學(xué)機房學(xué)內(nèi) 容環(huán)H、工丄學(xué)備教師活動丄、生汪活 動導(dǎo)入新課第一章學(xué)習(xí)了 C語言簡單程序 設(shè)計,掌握了解決簡單問題的
2、程序設(shè) 計方法。模塊化程序設(shè)計的思想就是 將一個復(fù)雜的問題分解為若干個簡 單的問題求解。所以,一個較大的應(yīng) 用程序一般由若干個程序模塊組成, 其中有一個是主模塊,每一個模塊都 實現(xiàn)一個特定的功能。在C語言中, 程序模塊是由函數(shù)實現(xiàn)的。一個C語言程序可由一個主函數(shù) (主模塊) 和若干函數(shù)(子程序)構(gòu)成。主函數(shù)調(diào) 用其它函數(shù),其它函數(shù)也可以互相調(diào) 用。同一個函數(shù)可以被一個或多個函 數(shù)多次調(diào)用。講授新課案例3.1 :定義函數(shù)求平均分/*源程序:案例3_1.c*/(略)1、函數(shù)定義的一般形式(1)無參數(shù)函數(shù)的定義格式 類型標(biāo)識符函數(shù)名()輸 入 案 例 程 序聲明部分語句用“類型標(biāo)識符”指定函數(shù)值的
3、類型,即函數(shù)返回值的類型。若函數(shù) 沒有帶回函數(shù)值,可以不寫“類型標(biāo) 識符”。(2)有參數(shù)函數(shù)的定義格式類型標(biāo)識符函數(shù)名(形式參數(shù) 表列)聲明部分語句(3)“空函數(shù)”的定義格式 類型說明符函數(shù)名() 此函數(shù)在調(diào)用時,沒有產(chǎn)生任何 實際作用。2、函數(shù)參數(shù)。在定義函數(shù)時, 函數(shù)名后面括號中的參數(shù)為“形式參 數(shù)”(簡稱“形參”)。在調(diào)用一個函數(shù)時,函數(shù)名后面括號中的參數(shù)(可 以是一個表達(dá)式)稱為頭際參數(shù)(簡稱“實參”)。關(guān)于形參和頭參的說明: 定義函數(shù)中指定的形參,在函 數(shù)未被調(diào)用時,并不占用內(nèi)存中的存 儲單兀。只有在函數(shù)被調(diào)用時,形參 才占用內(nèi)存中的存儲單元。在函數(shù)調(diào) 用結(jié)束后,形參所占的內(nèi)存單元也
4、隨 之被釋放。 實參可以是常量、變量或表達(dá) 式,并要求有確定的值。 在定義函數(shù)時,必須指定形參 的類型。 實參與形參的類型應(yīng)相同或 賦值兼容。 C語言規(guī)定,實參變量對形參 變量的數(shù)據(jù)傳遞是“值傳遞”,即單 向傳遞。只能由實參傳給形參,而不 能由形參傳給實參。實參和形參占用 不同的存儲單元。例如:/* 源程序:3_1_1.c*/ (略)3、函數(shù)的返回值。通過函數(shù)調(diào) 用,使主調(diào)函數(shù)能得到一個確定的 值,這就是函數(shù)的返回值。(1)函數(shù)的返回值是通過 return語句獲得的。return語句的功 能是把被調(diào)用函數(shù)中的一個確定值帶回主調(diào)函數(shù)。(2)函數(shù)值的類型。函數(shù)的返 回值都有確定的類型,在定義函數(shù)時
5、 必須指定函數(shù)返回值的類型。C語言規(guī)定,凡不加類型說明的 函數(shù),一律自動按整型處理。在定義 函數(shù)時,函數(shù)值的類型一般和return 語句中的表達(dá)式類型 致。(3)如果函數(shù)值的類型和 return語句中的表達(dá)式的類型不一 致時,要以函數(shù)類型為準(zhǔn)。對數(shù)值型 數(shù)據(jù),可以自動進(jìn)行類型轉(zhuǎn)換。即函 數(shù)類型決定返回值的類型。(4)為了明確表示“不返回值”, 可以用“ void”定義“無類型”(或 稱“空類型”)。這樣,就保證系統(tǒng)不教 師 可 以 進(jìn) 行 啟 發(fā) 式 提 問 講小結(jié)使函數(shù)帶回任何值。為確保程序正 確,凡是不要求返回函數(shù)值的函數(shù), 一般疋義為void類型。4、函數(shù)的調(diào)用。函數(shù)調(diào)用的一 般形式是:
6、函數(shù)名(實參表列);調(diào)用無參數(shù)函數(shù),可以不寫“實 參表列”,但括號不能省略。如果是 有參數(shù)函數(shù),實參與形參的個數(shù)應(yīng)相 等,類型應(yīng) 致。當(dāng)實參表列中有多 個實參時,各參數(shù)之間需要用逗號隔 開。頭參與形參按順序一一對應(yīng)傳遞 數(shù)據(jù)。但應(yīng)說明的是,如果實參表列 中有多個實參,那么系統(tǒng)求實參值的 順序是不確疋的,可以按照自左至 右”或“自右至左”的順序求實參的 值。按照函數(shù)在程序中出現(xiàn)的位置 不冋,其調(diào)用方式有以下三種:函數(shù)語句。把函數(shù)調(diào)用作為一 個語句。例如:temp(a);解各功能模塊 函數(shù)表達(dá)式。函數(shù)出現(xiàn)在一個 表達(dá)式中,這種表達(dá)式稱為函數(shù)表達(dá) 式。要求函數(shù)帶回一個確定的值,并 參丁表達(dá)式的運算。
7、例:s=sum( )*10+5;函數(shù)sum是表達(dá)式的部分。 函數(shù)參數(shù)。把函數(shù)調(diào)用作為一 個函數(shù)的實參,例如:aver=average(s);改成: aver=average(sum();后,sum()是 一次函數(shù)調(diào)用,它的值作為函數(shù) average調(diào)用的實參。函數(shù)調(diào)用作為函數(shù)的參數(shù),實質(zhì) 上也是一種函數(shù)表達(dá)式。函數(shù)的參數(shù) 就是表達(dá)式形式。5、被調(diào)用函數(shù)的聲明和函數(shù)原 型。被調(diào)用函數(shù)(在一個函數(shù)中調(diào)用 另一函數(shù))需要具備下列條件:(1) 被調(diào)用的函數(shù)必須是已經(jīng) 存在的函數(shù)(庫函數(shù)或用戶自己定義 的函數(shù))。(2) 如果使用庫函數(shù),應(yīng)該在本文件開頭用#include命令將調(diào)用 有關(guān)庫函數(shù)所需要的信息
8、“包含”到 文件中。例如:# include vstdi o.h(3)如果用戶使用自己定義的 函數(shù),而且該函數(shù)與調(diào)用它的函數(shù)(即主調(diào)函數(shù))在同一個文件中,一 般還應(yīng)該在主調(diào)函數(shù)中對被調(diào)用的 函數(shù)作聲明(向編譯系統(tǒng)聲明將要調(diào) 用此函數(shù),并將有關(guān)信息通知編譯系 統(tǒng))。(4)函數(shù)的“定義”是指對函數(shù) 功能的確立,包括指定函數(shù)名,函數(shù) 值類型,行參及其類型,函數(shù)體等。7、函數(shù)的嵌套調(diào)用。8、函數(shù)的遞歸調(diào)用。3、變量按其作用范圍可以分為局 部變量和全局變量。小結(jié):在C語言中,程序模塊 是由函數(shù)實現(xiàn)的。一個 C語言程序 可由一個主函數(shù)(主模塊)和若干函 數(shù)(子程序)構(gòu)成。主函數(shù)調(diào)用其它函數(shù),其它函數(shù)也可以
9、互相調(diào)用。案例思考案例思考作業(yè)課題:第3章模塊化程序設(shè)計(2)教學(xué)目標(biāo)1、熟悉變量的存儲屬性2、熟練運用局部變量和全局變量。教學(xué) 重點、 難點熟練運用局部變量和全局變量。技能 培訓(xùn) 重點、 難點1、理解變量的存儲屬性。2、運用變量的存儲屬性編寫程序。教法案例教學(xué)法學(xué)法思考,討論,練習(xí)和鞏固教具 使用投影儀演示或教學(xué)機房學(xué)內(nèi) 容教師活動學(xué) 生 活 動備 注導(dǎo)入變量是對程序中數(shù)據(jù)存儲空間新課的抽象表示。我們在第二章的學(xué)習(xí)中 接觸了數(shù)據(jù)類型,數(shù)據(jù)類型是變量的 操作屬性。影響變量的使用的還有變 量的存儲屬性。講授新課案例3.2:變量的存儲類別分析 案例 程序 運行 結(jié)果/* /源源程序穀案例例源2序M
10、略例3_2_1.c*/3_2_2.c*/#in clud#in eludemai n()mai n()intfact(int int fact(intn);n);int n ,k;int n,k;pri ntf(“n=”)printf( “n =輸入 程序 調(diào) 試從案例可以看出,兩個程序只有 一個地方不同,即fact函數(shù)中變量f 的定義。第一個程序是:int f=1;第二個程序是:static int f=1;而結(jié)果卻完全不同。這是變量的 不同存儲類別造成的。1、動態(tài)存儲方式與靜態(tài)存儲方 式。按變量的作用域來劃分將變量分 為全局變量和局部變量。按變量值存 在方式(即生存期)來劃分,可以分 為靜
11、態(tài)存儲方式和動態(tài)存儲方式。內(nèi)存中供用戶使用的存儲空間可以分成三個部分,如圖3-5所示:用戶 區(qū)教師程序分可區(qū)析以靜態(tài)討進(jìn)存儲論行區(qū)啟動態(tài)發(fā)存儲式區(qū)提圖3-52、auto變量。函數(shù)中的局部變 量,如不聲明為static存儲類別,都 使用動態(tài)分配技術(shù)。數(shù)據(jù)存儲在動態(tài) 存儲區(qū)中。函數(shù)中的形參和在函數(shù)中 定義的變量(包括在復(fù)合語句中定義 的變量),都屬于auto變量。在調(diào)用 該函數(shù)時系統(tǒng)會給它們分配存儲空 間,在函數(shù)調(diào)用結(jié)束時就自動釋放這 些存儲空間。因此,這類局部變量稱 為自動變量。程序中大多數(shù)變量屬于問小結(jié)自動變量。自動變量用關(guān)鍵字 auto 作存儲類別的聲明。注:關(guān)鍵字“ auto”可以省略,
12、auto不寫就默認(rèn)為自動存儲類別, 它屬于動態(tài)存儲方式。3、用static聲明局部變量。為 了使函數(shù)中的局部變量的值在函數(shù) 調(diào)用結(jié)束后保留原值,使其占用的存 儲單元不被釋放,以供下次調(diào)用該函 數(shù)時使用。這時就可指定該局部變量 為“靜態(tài)局部變量”。用關(guān)鍵字“static聲明。對靜態(tài)局部變量的說明: 靜態(tài)局部變量屬于靜態(tài)存儲 類別,在靜態(tài)存儲區(qū)域內(nèi)分配存儲單 元。在整個程序運行期間都不被釋 放。而自動變量(即動態(tài)局部變量) 屬于動態(tài)存儲類別,占用動態(tài)存儲區(qū) 空間,在函數(shù)調(diào)用結(jié)束后即被釋放。 靜態(tài)局部變量在編譯時賦初 值,也只賦一次初值。在此后調(diào)用函 數(shù)時,不再賦值,而保留上次函數(shù)調(diào)用結(jié)束時的值。對
13、自動變量賦初值, 不是在編譯時進(jìn)行的,而是在函數(shù)調(diào) 用時進(jìn)行的,每調(diào)用一次函數(shù)重新賦 一次初值。 如果在定義局部變量時不賦 初值。靜態(tài)變量在編譯時自動賦初值 0 (對數(shù)值型變量)或空字符(對字 符型變量);自動變量的值是一個不 確定的值。這是由于每次函數(shù)調(diào)用結(jié) 束后存儲單元已被釋放,下次調(diào)用時 又重新分配存儲單元,而所分配的存 儲單元中的值是不確定的。 雖然靜態(tài)局部變量在函數(shù)調(diào) 用結(jié)束后仍然存在,但其它函數(shù)是不 能引用的。4、egister 變量5、用extern聲明外部變量6、在多文件的程序中聲明外部變 量。7、用static聲明外部變量8、內(nèi)部函數(shù)和外部函數(shù)小結(jié):變量的存儲屬性、說明和應(yīng)用
14、方法。案例思考案例思考作業(yè)習(xí)題課題:第3章模塊化程序設(shè)計(3)教學(xué) 目標(biāo)1、了解模塊化程序設(shè)計思想。2、熟練運用局部變量和全局變量。3、理解內(nèi)部函數(shù)和外部函數(shù)的概念。教學(xué) 重點、 難點1、熟練運用局部變量和全局變量。2、模塊化程序設(shè)計技能 培訓(xùn) 重 點、 難點1、了解模塊化程序設(shè)計的思想2、掌握宏定義、“文件包含”處理命令教法案例教學(xué)法學(xué)法思考,討論,練習(xí)和鞏固教具 使用投影儀演示或教學(xué)機房學(xué)內(nèi) 容教師活動學(xué) 生 活 動備 注導(dǎo)入新課在程序設(shè)計中,通常將一些常用 的功能模塊編寫成函數(shù),放在函數(shù)庫 中,以供調(diào)用。充分使用庫函數(shù),可 以減少編寫程序的工作量。本章主要 介紹如何使用函數(shù)實現(xiàn)C語言的模
15、 塊化程序設(shè)計功能。講授新課案例3.3:學(xué)籍管理系統(tǒng)的 框架函數(shù)/*源程序:案例3_3.c*# include vstdi o.h# include vcon io.hmain()void create();void search();void print();void input();void output();void search_num();void search_name();void search_class();void print_num();void print_class(); void print_score(); int select;while(1) clrscr()
16、;printf( nnttt 學(xué)生信 息管理系統(tǒng)nn);printf(tt1-學(xué)生信息 庫建立n);printf(tt2-學(xué)生信 息查詢n);printf(tt3-學(xué)生信 息輸出n);printf(tt0-結(jié)束 n);printf(tt 請輸入你 的選擇(0-3):);scanf(%d, &select); switch(select) 分case 1:create();析break;討case 2:search();論教break;師case 3: print();可break;以case 0:exit(0);進(jìn)行啟發(fā)1、案例中函數(shù)調(diào)用關(guān)系式2、“文件包含處理命令。提所謂“文件包含”處理是指
17、一個 源文件可以將另一個源文件(頭文 件)的全部內(nèi)容包含進(jìn)來。頭文件通 常以“ .h”為后綴,也可用“ c”為 后綴或者沒有后綴。但用h作后綴更能表示此文件的性質(zhì)。頭文件除 了可以包括函數(shù)原型和宏定義外,也 可以包括結(jié)構(gòu)體類型定義和全局變 量定義等。C語言提供了 #include命 令用來實現(xiàn)“文件包含”的操作?!拔膯柨偨Y(jié)件包含”可以減少程序設(shè)計人員的重 復(fù)勞動。其一般格式為:#include文件名”或#include墳件名案例中用到scanf和printf函 數(shù),其函數(shù)原型在頭文件stdio.h中, 只要用“文件包含”處理命令:# include 3、C語言提供的預(yù)處理功 能:宏定義、文件包含和條件編譯(1)、宏定義不帶參數(shù)的宏定義用一個指定的標(biāo)識符(即名字) 來代表一個字符串,它的一般格式 為:# define標(biāo)識符字符串帶參數(shù)的宏定義。其定義的一 般格式為:# define標(biāo)識符(參數(shù)表) 字符串字符串中包含參數(shù)表中的參數(shù),(2)、條件編譯。 般情況下, 源程序中所有程序行都進(jìn)行編譯。但 是,有時
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度建筑公司內(nèi)部設(shè)備維護(hù)承包合同
- 2025年度果樹苗木種植與農(nóng)產(chǎn)品加工合作合同范本
- 2025年度國際貿(mào)易貨物環(huán)保認(rèn)證合同
- 2025合同模板城市供用水合同(示范文本)范本
- 2025年三方委托借款合同(三篇)
- 2025年度公路運輸合同電子簽約操作手冊
- 2025年度健康醫(yī)療大數(shù)據(jù)平臺建設(shè)合作合同模板
- 2025年度數(shù)據(jù)中心建設(shè)安裝工程合同
- 2025年度新型環(huán)保設(shè)備鋼材買賣居間代理合同
- 2025年度建筑工程起重機施工質(zhì)量保證合同
- 國際尿失禁咨詢委員會尿失禁問卷表
- 國開行政管理論文行政組織的變革及其現(xiàn)實性研究
- 運動技能學(xué)習(xí)中的追加反饋
- 《淄博張店區(qū)停車問題治理現(xiàn)狀及優(yōu)化對策分析【開題報告+正文】15000字 》
- 常用電子元器件基礎(chǔ)知識演示
- GB/T 32918.4-2016信息安全技術(shù)SM2橢圓曲線公鑰密碼算法第4部分:公鑰加密算法
- 2023年藥事法規(guī)教學(xué)案例庫及案例分析
- 北京市水務(wù)安全生產(chǎn)風(fēng)險評估指南
- 吸引器教學(xué)講解課件
- 醫(yī)學(xué)心理學(xué)人衛(wèi)八版66張課件
- 仿古建筑施工常見質(zhì)量通病及防治措施
評論
0/150
提交評論