嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程_第1頁
嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程_第2頁
嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程_第3頁
嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程_第4頁
嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

函數(shù)與結(jié)構(gòu)化編程嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第1頁!課程安排程序結(jié)構(gòu)化概念函數(shù)定義與使用函數(shù)參數(shù)與返回值程序模塊化嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第2頁!程序=數(shù)據(jù)(組合)+語句(組合)數(shù)據(jù)(組合):基本數(shù)據(jù)類型,組合數(shù)據(jù)類型語句(組合):表達(dá)式與語句,流程控制

在main中開始語句控制流一直到main結(jié)束返回就足夠了么?

main寫了上百甚至幾百上千行,做了很多很多事!以后要維護(hù)、升級從哪里開始?一個公司由采購、研發(fā)、生產(chǎn)、工程、支持等部門組成,便于職能管理。

程序也需要這樣,按職能分割再組合到一起—結(jié)構(gòu)化編程

從回顧開始嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第3頁!1、自頂向下:程序設(shè)計時,應(yīng)先考慮總體,后考慮細(xì)節(jié)不要一開始就追求眾多的細(xì)節(jié),先從最上層總目標(biāo)開始設(shè)計,逐步使問題具體化2、逐步求精:對復(fù)雜的問題,應(yīng)設(shè)計一些子目標(biāo)作過渡,逐步細(xì)化3、模塊化:一個復(fù)雜問題,肯定是由若干個稍簡單的問題構(gòu)成模塊化是把程序要解決的總目標(biāo)分解為分目標(biāo),再進(jìn)一步分解為具體的小目標(biāo),把每個小目標(biāo)稱為一個模塊程序結(jié)構(gòu)化設(shè)計原則嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第4頁!其實你已經(jīng)在進(jìn)行程序結(jié)構(gòu)化了(或許是被迫?。?/p>

#include<stdio.h>--引用庫函數(shù)

intmain(void) { //從控制臺獲得輸入信息

//將輸入信息原樣輸出 return0; }我們調(diào)用C庫函數(shù)實現(xiàn)–

函數(shù)是程序結(jié)構(gòu)化的基礎(chǔ)如何進(jìn)行程序結(jié)構(gòu)化嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第5頁!課程安排程序結(jié)構(gòu)化概念函數(shù)定義與使用函數(shù)參數(shù)與返回值程序模塊化嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第6頁!函數(shù)的定義合法標(biāo)識符函數(shù)返回值類型缺省為int型無返回值為void函數(shù)類型

函數(shù)名(形參類型說明表){

語句部分 語句部分}函數(shù)體嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第7頁!調(diào)用的方法是用實參代替形參:

函數(shù)語句方式調(diào)用:add(10,20);

函數(shù)表達(dá)式方式調(diào)用:sum=add(10,20);

函數(shù)參數(shù)方式調(diào)用:printf(“sumis%d\n”,add(10,20));

函數(shù)調(diào)用方式嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第8頁!最后調(diào)用的函數(shù)最先返回

右邊程序執(zhí)行結(jié)果是什么?

函數(shù)執(zhí)行過程嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第9頁!形式參數(shù):定義函數(shù)時,函數(shù)名后面括號中的變量名 形參必須指定類型實際參數(shù):調(diào)用函數(shù)時,函數(shù)名后面括號中的表達(dá)式 實參必須有確定的值形參與實參類型一致,個數(shù)相同

若形參與實參類型不一致,自動按形參類型轉(zhuǎn)換(隱式轉(zhuǎn)換)

形參與實參嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第10頁!無參函數(shù)

intmain(void)基本類型作為函數(shù)參數(shù)

add(inta,intb);數(shù)組作為函數(shù)參數(shù):傳遞的是數(shù)組地址(用指針表示地址?。?/p>

chardes[128]={0}; charsrc[]={“xnf”}; strcpy(des,src);組合結(jié)構(gòu)類型作為函數(shù)參數(shù):實參整個結(jié)構(gòu)值拷貝給形參 大結(jié)構(gòu)拷貝造成函數(shù)調(diào)用效率低,通常做法是傳遞結(jié)構(gòu)地址(用指針表示地址?。?/p>

show_info(stu_info_tstu);指針作為函數(shù)參數(shù):高效的傳遞方式,學(xué)習(xí)指針時再回來

函數(shù)參數(shù)類型嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第11頁!基本類型作為函數(shù)返回類型

intadd(inta,intb);

不能把數(shù)組作為函數(shù)返回類型只能通過指針實現(xiàn)!組合結(jié)構(gòu)類型作為函數(shù)返回類型

通常通過指針實現(xiàn)!指針作為函數(shù)返回類型:學(xué)習(xí)指針時再回來

函數(shù)返回類型嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第12頁!實際的程序不單只有main.c一個文件,而是可能由多個.c(源文件)和.h(頭文件)組成 這些文件是怎么得來的呢?這就涉及程序的模塊化!一個大型程序往往按功能或者層次結(jié)構(gòu)劃分為多個模塊 例如一個手機(jī)軟件程序:人機(jī)交互界面、通話功能、短信功能、日期時間、用戶密碼、通信錄/通話記錄保存、網(wǎng)絡(luò)通信。。。 那么多功能都塞在一個main.c中完成么?怎么做才方便維護(hù)與管理?

這就要求模塊化—每個子功能實現(xiàn)為一個模塊(一個.c文件和一個對應(yīng).h文件)什么是程序模塊化嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第13頁!主模塊(main.c):

引用stu_info.h頭文件:#include“stu_info.h”

調(diào)用顯示學(xué)生接口函數(shù):show_info(stu);學(xué)生信息輔助模塊(stu_info.c/stu_info.h):

stu_info.h:自定義學(xué)生信息結(jié)構(gòu):stu_info_t

聲明顯示學(xué)生信息函數(shù):voidshow_info(stu_info_tstu);stu_info.c: 實現(xiàn)學(xué)生信息函數(shù)

學(xué)生信息程序模塊化嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第14頁!輔助模塊

手機(jī)程序模塊化嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第15頁!構(gòu)化程序設(shè)計方法引入了工程思想和結(jié)構(gòu)化思想,使大型軟件的開發(fā)和編程都得到極大的改善遵循結(jié)構(gòu)化的程序的設(shè)計原則,按結(jié)構(gòu)化程序設(shè)計方法設(shè)計出的程序具有明顯的優(yōu)點其一,程序易于理解、使用和維護(hù)其二,提高了編程工作的效率,降低了軟件開發(fā)的成本程序結(jié)構(gòu)化設(shè)計優(yōu)點嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第16頁!讓結(jié)構(gòu)化進(jìn)行得更徹底點吧

intmain(void) { //所見即所得

int_out(); return0; }

int_out()從哪里來?--需要自己實現(xiàn)的函數(shù)!如何進(jìn)行程序結(jié)構(gòu)化嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第17頁!C入口函數(shù):main主函數(shù)進(jìn)入main函數(shù)之后,實用程序往往由N多個函數(shù)(庫函數(shù)/自定義函數(shù))組成,通過逐級函數(shù)調(diào)用,實現(xiàn)程序功能一個函數(shù)不宜過長(不要超過50行),函數(shù)使用原則:一個函數(shù)只做一件事(實現(xiàn)一個功能)C是函數(shù)式語言C程序結(jié)構(gòu)嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第18頁!1、函數(shù)的命名

GNU命名規(guī)范:小寫字母,與”_”分隔單詞2、返回值類型可以是基本類型、也可以是結(jié)構(gòu)

但不能直接返回數(shù)組!3、函數(shù)原型聲明先定義,再使用的原則

也可以先聲明,再使用,后定義4、實參和形參

參數(shù)可以是任何類型! 聲明、定義時指定形參,使用時傳入的為實參

函數(shù)基本概念嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第19頁!函數(shù)調(diào)用之前必須先定義或者聲明 函數(shù)聲明方式:函數(shù)類型函數(shù)名(形參類型說明表);

先聲明/定義再調(diào)用嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第20頁!課程安排程序結(jié)構(gòu)化概念函數(shù)定義與使用函數(shù)參數(shù)與返回值程序模塊化嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第21頁!實參是怎么傳遞給形參的? 將實參的值拷貝(賦值)給形參!調(diào)用結(jié)束,形參內(nèi)存被釋放,實參單元仍保留并維持原值

參數(shù)傳遞過程嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第22頁!無返回類型函數(shù)(void函數(shù))

執(zhí)行return;語句返回或者函數(shù)結(jié)束后自動返回有返回類型函數(shù)(非void函數(shù))執(zhí)行return(表達(dá)式);或者return表達(dá)式;返回

返回類型不一致會發(fā)生什么事?函數(shù)返回值嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第23頁!課程安排程序結(jié)構(gòu)化概念函數(shù)定義與使用函數(shù)參數(shù)與返回值程序模塊化嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第24頁!把程序劃分為主模塊和多個輔助功能模塊

主模塊實現(xiàn)為main.c:在主函數(shù)中調(diào)用輔助功能模塊中的接口函數(shù),將子功能串聯(lián)起來實現(xiàn)程序功能

輔助模塊實現(xiàn)為*.c和*.h: *.h:接口類型定義,接口函數(shù)聲明 *.c:實現(xiàn)模塊接口函數(shù)(模塊子功能)

如何進(jìn)行程序模塊化嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第25頁!編譯程序時將所有源文件一起編譯

編譯時需要指明自定義頭文件路徑:

gcc-I./*.c–omain為了使得模塊結(jié)構(gòu)更加清晰,通常工程目錄組織為:

gcc-I./incmain.csrc/*.c–omain學(xué)生信息程序模塊化嵌入式C編程01函數(shù)與結(jié)構(gòu)化編程共27頁,您現(xiàn)在瀏覽的是第26頁!上機(jī)實驗1、實現(xiàn)函數(shù)voidchange_char(charch),將charch=‘a(chǎn)’傳遞給change_char,在change_char中將ch改為’b’,觀查結(jié)果 實現(xiàn)函數(shù)voidchange_str(charstr[]);將charstr[“hello”]傳遞給

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論