模塊化程序設(shè)計(jì)_第1頁
模塊化程序設(shè)計(jì)_第2頁
模塊化程序設(shè)計(jì)_第3頁
模塊化程序設(shè)計(jì)_第4頁
模塊化程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、教 案課 題:第3章 模塊化程序設(shè)計(jì)(1)教學(xué)目標(biāo)1、掌握函數(shù)的定義及其調(diào)用方法。2、理解掌握形式參數(shù)和實(shí)際參數(shù)的概念及使用方法。3、掌握函數(shù)的調(diào)用及嵌套調(diào)用的方法。4、理解函數(shù)的遞歸調(diào)用方法教學(xué)重點(diǎn)、難點(diǎn)1、掌握函數(shù)的調(diào)用及嵌套調(diào)用的方法。2、理解函數(shù)的遞歸調(diào)用方法技能培訓(xùn)重點(diǎn)、難點(diǎn)1、掌握函數(shù)的定義。2、掌握函數(shù)的調(diào)用。3、熟悉形式參數(shù)和實(shí)際參數(shù)。4、理解和應(yīng)用函數(shù)的返回值。教法案例教學(xué)法學(xué)法思考,討論,練習(xí)鞏固教具使用投影儀演示或教學(xué)機(jī)房學(xué)內(nèi)容教師活動(dòng)學(xué)生活動(dòng)備注導(dǎo)入新課第二章學(xué)習(xí)了C語言簡單程序設(shè)計(jì),掌握了解決簡單問題的程序設(shè)計(jì)方法。模塊化程序設(shè)計(jì)的思想就是將一個(gè)復(fù)雜的問題分解為若干個(gè)

2、簡單的問題求解。所以,一個(gè)較大的應(yīng)用程序一般由若干個(gè)程序模塊組成,其中有一個(gè)是主模塊,每一個(gè)模塊都實(shí)現(xiàn)一個(gè)特定的功能。在C語言中,程序模塊是由函數(shù)實(shí)現(xiàn)的。一個(gè)C語言程序可由一個(gè)主函數(shù)(主模塊)和若干函數(shù)(子程序)構(gòu)成。主函數(shù)調(diào)用其它函數(shù),其它函數(shù)也可以互相調(diào)用。同一個(gè)函數(shù)可以被一個(gè)或多個(gè)函數(shù)多次調(diào)用。講授新課小結(jié)案例3.1:定義函數(shù)求平均分/*源程序:案例3_1.c*/(略)1、函數(shù)定義的一般形式(1)無參數(shù)函數(shù)的定義格式類型標(biāo)識(shí)符函數(shù)名()聲明部分語句用“類型標(biāo)識(shí)符”指定函數(shù)值的類型,即函數(shù)返回值的類型。若函數(shù)沒有帶回函數(shù)值,可以不寫“類型標(biāo)識(shí)符”。(2)有參數(shù)函數(shù)的定義格式類型標(biāo)識(shí)符函數(shù)名

3、(形式參數(shù)表列)聲明部分語句(3)“空函數(shù)” 的定義格式類型說明符函數(shù)名()此函數(shù)在調(diào)用時(shí),沒有產(chǎn)生任何實(shí)際作用。2、函數(shù)參數(shù)。在定義函數(shù)時(shí),函數(shù)名后面括號中的參數(shù)為“形式參數(shù)”(簡稱“形參”)。在調(diào)用一個(gè)函數(shù)時(shí),函數(shù)名后面括號中的參數(shù)(可以是一個(gè)表達(dá)式)稱為“實(shí)際參數(shù)”(簡稱“實(shí)參”)。關(guān)于形參和實(shí)參的說明:定義函數(shù)中指定的形參,在函數(shù)未被調(diào)用時(shí),并不占用內(nèi)存中的存儲(chǔ)單元。只有在函數(shù)被調(diào)用時(shí),形參才占用內(nèi)存中的存儲(chǔ)單元。在函數(shù)調(diào)用結(jié)束后,形參所占的內(nèi)存單元也隨之被釋放。實(shí)參可以是常量、變量或表達(dá)式,并要求有確定的值。在定義函數(shù)時(shí),必須指定形參的類型。實(shí)參與形參的類型應(yīng)相同或賦值兼容。C語言規(guī)

4、定,實(shí)參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞。只能由實(shí)參傳給形參,而不能由形參傳給實(shí)參。實(shí)參和形參占用不同的存儲(chǔ)單元。例如:/*源程序:3_1_1.c*/(略)3、函數(shù)的返回值。通過函數(shù)調(diào)用,使主調(diào)函數(shù)能得到一個(gè)確定的值,這就是函數(shù)的返回值。(1)函數(shù)的返回值是通過return語句獲得的。return語句的功能是把被調(diào)用函數(shù)中的一個(gè)確定值帶回主調(diào)函數(shù)。(2)函數(shù)值的類型。函數(shù)的返回值都有確定的類型,在定義函數(shù)時(shí)必須指定函數(shù)返回值的類型。C語言規(guī)定,凡不加類型說明的函數(shù),一律自動(dòng)按整型處理。在定義函數(shù)時(shí),函數(shù)值的類型一般和return語句中的表達(dá)式類型一致。(3)如果函數(shù)值的類型和r

5、eturn語句中的表達(dá)式的類型不一致時(shí),要以函數(shù)類型為準(zhǔn)。對數(shù)值型數(shù)據(jù),可以自動(dòng)進(jìn)行類型轉(zhuǎn)換。即函數(shù)類型決定返回值的類型。(4)為了明確表示“不返回值”,可以用“void”定義“無類型”(或稱“空類型”)。這樣,就保證系統(tǒng)不使函數(shù)帶回任何值。為確保程序正確,凡是不要求返回函數(shù)值的函數(shù),一般定義為void類型。4、函數(shù)的調(diào)用。函數(shù)調(diào)用的一般形式是:函數(shù)名(實(shí)參表列);調(diào)用無參數(shù)函數(shù),可以不寫“實(shí)參表列”,但括號不能省略。如果是有參數(shù)函數(shù),實(shí)參與形參的個(gè)數(shù)應(yīng)相等,類型應(yīng)一致。當(dāng)實(shí)參表列中有多個(gè)實(shí)參時(shí),各參數(shù)之間需要用逗號隔開。實(shí)參與形參按順序一一對應(yīng)傳遞數(shù)據(jù)。但應(yīng)說明的是,如果實(shí)參表列中有多個(gè)實(shí)參

6、,那么系統(tǒng)求實(shí)參值的順序是不確定的,可以按照“自左至右”或“自右至左”的順序求實(shí)參的值。 按照函數(shù)在程序中出現(xiàn)的位置不同,其調(diào)用方式有以下三種:函數(shù)語句。把函數(shù)調(diào)用作為一個(gè)語句。例如:temp(a);函數(shù)表達(dá)式。函數(shù)出現(xiàn)在一個(gè)表達(dá)式中,這種表達(dá)式稱為函數(shù)表達(dá)式。要求函數(shù)帶回一個(gè)確定的值,并參予表達(dá)式的運(yùn)算。例:s=sum( )*10+5;函數(shù)sum是表達(dá)式的一部分。函數(shù)參數(shù)。把函數(shù)調(diào)用作為一個(gè)函數(shù)的實(shí)參,例如:aver=average(s); 改成:aver=average(sum( );后,sum( )是一次函數(shù)調(diào)用,它的值作為函數(shù)average調(diào)用的實(shí)參。函數(shù)調(diào)用作為函數(shù)的參數(shù),實(shí)質(zhì)上也是

7、一種函數(shù)表達(dá)式。函數(shù)的參數(shù)就是表達(dá)式形式。5、被調(diào)用函數(shù)的聲明和函數(shù)原型。被調(diào)用函數(shù)(在一個(gè)函數(shù)中調(diào)用另一函數(shù))需要具備下列條件:(1)被調(diào)用的函數(shù)必須是已經(jīng)存在的函數(shù)(庫函數(shù)或用戶自己定義的函數(shù))。(2)如果使用庫函數(shù),應(yīng)該在本文件開頭用#include命令將調(diào)用有關(guān)庫函數(shù)所需要的信息“包含”到文件中。例如:# include<stdio.h>(3)如果用戶使用自己定義的函數(shù),而且該函數(shù)與調(diào)用它的函數(shù)(即主調(diào)函數(shù))在同一個(gè)文件中,一般還應(yīng)該在主調(diào)函數(shù)中對被調(diào)用的函數(shù)作聲明(向編譯系統(tǒng)聲明將要調(diào)用此函數(shù),并將有關(guān)信息通知編譯系統(tǒng))。(4)函數(shù)的“定義”是指對函數(shù)功能的確立,包括指定

8、函數(shù)名,函數(shù)值類型,行參及其類型,函數(shù)體等。7、函數(shù)的嵌套調(diào)用。8、函數(shù)的遞歸調(diào)用。3、變量按其作用范圍可以分為局部變量和全局變量。小結(jié):在C語言中,程序模塊是由函數(shù)實(shí)現(xiàn)的。一個(gè)C語言程序可由一個(gè)主函數(shù)(主模塊)和若干函數(shù)(子程序)構(gòu)成。主函數(shù)調(diào)用其它函數(shù),其它函數(shù)也可以互相調(diào)用。輸入案例程序教師可以進(jìn)行啟發(fā)式提問講解各功能模塊案例思考案例思考作業(yè) 教 案課 題:第3章模塊化程序設(shè)計(jì)(2)教學(xué)目標(biāo)1、熟悉變量的存儲(chǔ)屬性2、熟練運(yùn)用局部變量和全局變量。教學(xué)重點(diǎn)、難點(diǎn)熟練運(yùn)用局部變量和全局變量。技能培訓(xùn)重點(diǎn)、難點(diǎn)1、理解變量的存儲(chǔ)屬性。2、運(yùn)用變量的存儲(chǔ)屬性編寫程序。教法案例教學(xué)法學(xué)法思考,討論,

9、練習(xí)和鞏固教具使用投影儀演示或教學(xué)機(jī)房學(xué)內(nèi)容教師活動(dòng)學(xué)生活動(dòng)備注導(dǎo)入新課變量是對程序中數(shù)據(jù)存儲(chǔ)空間的抽象表示。我們在第二章的學(xué)習(xí)中接觸了數(shù)據(jù)類型,數(shù)據(jù)類型是變量的操作屬性。影響變量的使用的還有變量的存儲(chǔ)屬性。講授新課分析案例程序運(yùn)行結(jié)果小結(jié)案例3.2: 變量的存儲(chǔ)類別/*源程序:案例3_2_1.c*/# include <stdio.h>main( )int fact(int n);int n,k;printf(“n=”);scanf(“%d”,&n);for(k=1;k<=n;k+)printf(“f=%dn”,fact(k);getch( );int fact(i

10、nt k)int f=1;f=f*k;return(f);/*源程序:案例3_2_2.c*/# include <stdio.h>main( )int fact(int n);int n,k;printf(“n=”);scanf(“%d”,&n);for(k=1;k<=n;k+)printf(“f=%dn”,fact(k);getch( );int fact(int k)static int f=1;f=f*k;return(f);/*源程序:案例4_2.c*/(略)從案例可以看出,兩個(gè)程序只有一個(gè)地方不同,即fact函數(shù)中變量f的定義。第一個(gè)程序是:int f=1;

11、第二個(gè)程序是:static int f=1;而結(jié)果卻完全不同。這是變量的不同存儲(chǔ)類別造成的。1、動(dòng)態(tài)存儲(chǔ)方式與靜態(tài)存儲(chǔ)方式。按變量的作用域來劃分將變量分為全局變量和局部變量。按變量值存在方式(即生存期)來劃分,可以分為靜態(tài)存儲(chǔ)方式和動(dòng)態(tài)存儲(chǔ)方式。內(nèi)存中供用戶使用的存儲(chǔ)空間可以分成三個(gè)部分,如圖3-5所示:用戶區(qū)程序區(qū)靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)圖3-52、auto變量。函數(shù)中的局部變量,如不聲明為static存儲(chǔ)類別,都使用動(dòng)態(tài)分配技術(shù)。數(shù)據(jù)存儲(chǔ)在動(dòng)態(tài)存儲(chǔ)區(qū)中。函數(shù)中的形參和在函數(shù)中定義的變量(包括在復(fù)合語句中定義的變量),都屬于auto變量。在調(diào)用該函數(shù)時(shí)系統(tǒng)會(huì)給它們分配存儲(chǔ)空間,在函數(shù)調(diào)用結(jié)束時(shí)就

12、自動(dòng)釋放這些存儲(chǔ)空間。因此,這類局部變量稱為自動(dòng)變量。程序中大多數(shù)變量屬于自動(dòng)變量。自動(dòng)變量用關(guān)鍵字auto作存儲(chǔ)類別的聲明。注:關(guān)鍵字“auto”可以省略,auto不寫就默認(rèn)為“自動(dòng)存儲(chǔ)類別”,它屬于動(dòng)態(tài)存儲(chǔ)方式。3、用static聲明局部變量。為了使函數(shù)中的局部變量的值在函數(shù)調(diào)用結(jié)束后保留原值,使其占用的存儲(chǔ)單元不被釋放,以供下次調(diào)用該函數(shù)時(shí)使用。這時(shí)就可指定該局部變量為“靜態(tài)局部變量”。用關(guān)鍵字“static”聲明。對靜態(tài)局部變量的說明:靜態(tài)局部變量屬于靜態(tài)存儲(chǔ)類別,在靜態(tài)存儲(chǔ)區(qū)域內(nèi)分配存儲(chǔ)單元。在整個(gè)程序運(yùn)行期間都不被釋放。而自動(dòng)變量(即動(dòng)態(tài)局部變量)屬于動(dòng)態(tài)存儲(chǔ)類別,占用動(dòng)態(tài)存儲(chǔ)區(qū)空

13、間,在函數(shù)調(diào)用結(jié)束后即被釋放。靜態(tài)局部變量在編譯時(shí)賦初值,也只賦一次初值。在此后調(diào)用函數(shù)時(shí),不再賦值,而保留上次函數(shù)調(diào)用結(jié)束時(shí)的值。對自動(dòng)變量賦初值,不是在編譯時(shí)進(jìn)行的,而是在函數(shù)調(diào)用時(shí)進(jìn)行的,每調(diào)用一次函數(shù)重新賦一次初值。如果在定義局部變量時(shí)不賦初值。靜態(tài)變量在編譯時(shí)自動(dòng)賦初值0(對數(shù)值型變量)或空字符(對字符型變量);自動(dòng)變量的值是一個(gè)不確定的值。這是由于每次函數(shù)調(diào)用結(jié)束后存儲(chǔ)單元已被釋放,下次調(diào)用時(shí)又重新分配存儲(chǔ)單元,而所分配的存儲(chǔ)單元中的值是不確定的。雖然靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后仍然存在,但其它函數(shù)是不能引用的。4、 egister變量5、用extern聲明外部變量6、在多文件的程

14、序中聲明外部變量。7、用static聲明外部變量8、內(nèi)部函數(shù)和外部函數(shù)小結(jié):變量的存儲(chǔ)屬性、說明和應(yīng)用方法。輸入程序調(diào)試運(yùn)行分析討論教師可以進(jìn)行啟發(fā)式提問案例思考案例思考作業(yè)習(xí)題教 案課 題:第3章 模塊化程序設(shè)計(jì)(3)教學(xué)目標(biāo)1、了解模塊化程序設(shè)計(jì)思想。2、熟練運(yùn)用局部變量和全局變量。3、理解內(nèi)部函數(shù)和外部函數(shù)的概念。教學(xué)重點(diǎn)、難點(diǎn)1、熟練運(yùn)用局部變量和全局變量。2、模塊化程序設(shè)計(jì)技能培訓(xùn)重點(diǎn)、難點(diǎn)1、了解模塊化程序設(shè)計(jì)的思想2、掌握宏定義、“文件包含”處理命令教法案例教學(xué)法學(xué)法思考,討論,練習(xí)和鞏固教具使用投影儀演示或教學(xué)機(jī)房學(xué)內(nèi)容教師活動(dòng)學(xué)生活動(dòng)備注導(dǎo)入新課在程序設(shè)計(jì)中,通常將一些常用的

15、功能模塊編寫成函數(shù),放在函數(shù)庫中,以供調(diào)用。充分使用庫函數(shù),可以減少編寫程序的工作量。本章主要介紹如何使用函數(shù)實(shí)現(xiàn)C語言的模塊化程序設(shè)計(jì)功能。講授新課總結(jié)案例3.3:學(xué)籍管理系統(tǒng)的框架函數(shù)/*源程序:案例3_3.c*# include <stdio.h># include <conio.h>main( )void create( );void search( );void print( );void input( );void output( );void search_num( );void search_name( );void search_class( );vo

16、id print_num( );void print_class( );void print_score( );int select;while(1)clrscr( );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",&a

17、mp;select);switch(select)case 1:create( );break;case 2:search( );break;case 3: print( );break;case 0:exit(0);1、案例中函數(shù)調(diào)用關(guān)系2、“文件包含”處理命令。所謂“文件包含”處理是指一個(gè)源文件可以將另一個(gè)源文件(頭文件)的全部內(nèi)容包含進(jìn)來。頭文件通常以“.h”為后綴,也可用“c”為后綴或者沒有后綴。但用“h”作后綴更能表示此文件的性質(zhì)。頭文件除了可以包括函數(shù)原型和宏定義外,也可以包括結(jié)構(gòu)體類型定義和全局變量定義等。C語言提供了#include命令用來實(shí)現(xiàn)“文件包含”的操作?!拔募笨?/p>

18、以減少程序設(shè)計(jì)人員的重復(fù)勞動(dòng)。其一般格式為:#include “文件名”或#include <文件名>案例中用到scanf和printf函數(shù),其函數(shù)原型在頭文件stdio.h中,只要用“文件包含”處理命令:# include <stdio.h>3、C語言提供的預(yù)處理功能:宏定義、文件包含和條件編譯(1)、宏定義不帶參數(shù)的宏定義用一個(gè)指定的標(biāo)識(shí)符(即名字)來代表一個(gè)字符串,它的一般格式為:# define 標(biāo)識(shí)符 字符串帶參數(shù)的宏定義。其定義的一般格式為:# define 標(biāo)識(shí)符(參數(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)容里面會(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

提交評論