第1章程序設(shè)計(jì)概述.ppt_第1頁(yè)
第1章程序設(shè)計(jì)概述.ppt_第2頁(yè)
第1章程序設(shè)計(jì)概述.ppt_第3頁(yè)
第1章程序設(shè)計(jì)概述.ppt_第4頁(yè)
第1章程序設(shè)計(jì)概述.ppt_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、C語(yǔ)言程序設(shè)計(jì) 第1章 程序設(shè)計(jì)概述,2013年6月.,課件制作日期:2013年6月.張磊,第1章 程序設(shè)計(jì)概述,1.1 程序設(shè)計(jì)語(yǔ)言 1.2 算法 1.3 程序設(shè)計(jì)與實(shí)現(xiàn) 1.4 C語(yǔ)言程序的基本結(jié)構(gòu),1.1 程序設(shè)計(jì)語(yǔ)言,程序設(shè)計(jì)語(yǔ)言: 計(jì)算機(jī)能夠理解和識(shí)別的一種語(yǔ)言體系,它按照特定的規(guī)則組織計(jì)算機(jī)指令,使計(jì)算機(jī)能夠自動(dòng)進(jìn)行各種操作處理。 計(jì)算機(jī)程序: 按照程序設(shè)計(jì)語(yǔ)言的規(guī)則組織起來(lái)的一組計(jì)算機(jī)指令。 程序設(shè)計(jì)語(yǔ)言分類: 機(jī)器語(yǔ)言、匯編語(yǔ)言和高級(jí)語(yǔ)言。 C 語(yǔ)言屬于高級(jí)語(yǔ)言,1972年由美國(guó)的Dennis Ritchie設(shè)計(jì)發(fā)明。 1983年,美國(guó)國(guó)家標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)根據(jù)C語(yǔ)言問(wèn)世以

2、來(lái)各種版本對(duì) C的發(fā)展和擴(kuò)充,制定了C的標(biāo)準(zhǔn),稱為 ANSI C。1987年ANSI又公布了新的標(biāo)準(zhǔn)87 ANSI C。,課件制作日期:2013年6月.張磊,1.1 程序設(shè)計(jì)語(yǔ)言,C語(yǔ)言程序示例: 計(jì)算1到100的所有自然數(shù)的和。,#include int main(void) int i=1,s=0; while(i=100) /* 循環(huán)控制 */ s=s+i; /* 數(shù)據(jù)累加 */ i=i+1; /* 生成下一個(gè)要累加的數(shù) */ printf(sum=%dn,s); /* 輸出結(jié)果 */ return 0; ,課件制作日期:2013年6月.張磊,1.2 算法,1.2.1 算法概念與算法描述

3、 1.2.2 算法的邏輯結(jié)構(gòu) 1.2.4 算法的特性 1.2.4 算法評(píng)價(jià),1.2.1 算法概念與算法描述,算法重要性:程序=數(shù)據(jù)結(jié)構(gòu)+算法 1算法的概念 算法是求解問(wèn)題的方法,是在有限步驟內(nèi)求解某一問(wèn)題所使用的一組定義明確的規(guī)則,是計(jì)算機(jī)處理問(wèn)題所需要的具體步驟。 2算法的描述方法 自然語(yǔ)言 流程圖 N-S圖 PAD圖 偽碼等。,課件制作日期:2013年6月.張磊,1.2.1 算法概念與算法描述, 用自然語(yǔ)言描述算法 “計(jì)算1到100的所有自然數(shù)的和” 步驟 i和s賦初值,使i=1,s=0; 步驟 判斷i的值,若i100 則執(zhí)行步驟;否則,轉(zhuǎn)步驟; 步驟 s加i; 步驟 i加1,轉(zhuǎn)步驟; 步

4、驟 顯示s的值,結(jié)束。,課件制作日期:2013年6月.張磊,1.2.1 算法概念與算法描述, 用流程圖描述算法,課件制作日期:2013年6月.張磊,1.2.1 算法概念與算法描述,“計(jì)算1100自然數(shù)和”的算法,步驟 i=1,s=0; 步驟 若i100 則執(zhí)行步驟;否則,轉(zhuǎn)步驟; 步驟 s加上i; 步驟 i加上1,轉(zhuǎn)步驟; 步驟 顯示s的值,結(jié)束,課件制作日期:2013年6月.張磊,1.2.1 算法概念與算法描述,(3) 用偽代碼描述算法 “計(jì)算1到100的所有自然數(shù)的和”,begin i=1,s=0 while i100 s=s+i i=i+1 end while ptint s end,課

5、件制作日期:2013年6月.張磊,1.2.2 算法的邏輯結(jié)構(gòu),順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)是算法的三種基本結(jié)構(gòu),這三種結(jié)構(gòu)互相結(jié)合,可以實(shí)現(xiàn)任何邏輯控制。,算法 步驟 輸入一個(gè)學(xué)生兩門(mén)課的成績(jī)a1,a2; 步驟 計(jì)算平均成績(jī) (a1+a2)/2ave; 步驟 輸出平均成績(jī)ave,結(jié)束。,問(wèn)題1-順序結(jié)構(gòu):輸入一個(gè)學(xué)生的兩門(mén)課的成績(jī),計(jì)算出平均成績(jī)。,偽代碼 begin intput a1,a2 ave=(a1+a2)/2 print ave end,課件制作日期:2013年6月.張磊,課件制作日期:2013年6月.張磊,1.2.2 算法的邏輯結(jié)構(gòu),問(wèn)題2-分支結(jié)構(gòu):輸入一個(gè)學(xué)生的兩門(mén)課的成績(jī),

6、若平均成績(jī)不低于90分,則顯示“優(yōu)等生”,否則顯示“要加油??!”,算法 步驟 輸入一個(gè)學(xué)生兩門(mén)課的成績(jī)a1、a2; 步驟 計(jì)算平均成績(jī)(a1+a2)/2ave; 步驟 若ave90,則執(zhí)行步驟;否則執(zhí)行步驟; 步驟 輸出“優(yōu)等生”,結(jié)束。 步驟 輸出“要加油??!”,結(jié)束。,課件制作日期:2013年6月.張磊,1.2.2 算法的邏輯結(jié)構(gòu),問(wèn)題2-分支結(jié)構(gòu) 輸入一個(gè)學(xué)生的兩門(mén)課的成績(jī),若平均成績(jī)不低于90分,則顯示“優(yōu)等生”,否則顯示“要加油??!”,偽代碼描述算法 begin input a1,a2 ave=(a1+a2)/2 if ave90 then print “優(yōu)等生!” else pri

7、nt “要加油啊!” end,1.2.2 算法的邏輯結(jié)構(gòu),問(wèn)題3-循環(huán)結(jié)構(gòu):按照問(wèn)題2的標(biāo)準(zhǔn),統(tǒng)計(jì)全班的優(yōu)等生人數(shù)(全班共30人)。,算法 步驟 設(shè)置變量count對(duì)輸入的數(shù)據(jù)量計(jì)數(shù),其初值為1;設(shè)置變量result對(duì)優(yōu)等生計(jì)數(shù),其初值為0; 步驟 若count30,則執(zhí)行步驟;否則轉(zhuǎn)步驟; 步驟 輸入一個(gè)學(xué)生兩門(mén)課的成績(jī)a1、a2; 步驟 計(jì)算平均成績(jī)(a1+a2)/2ave; 步驟 若ave90,則執(zhí)行步驟;否則轉(zhuǎn)步驟; 步驟 result+1result; 步驟 count+1count;轉(zhuǎn)步驟; 步驟 輸出統(tǒng)計(jì)結(jié)果,結(jié)束。,1.2.2 算法的邏輯結(jié)構(gòu),問(wèn)題3-循環(huán)結(jié)構(gòu) 按照問(wèn)題2的標(biāo)準(zhǔn)

8、,統(tǒng)計(jì)全班的優(yōu)等生人數(shù)(全班共30人)。,偽代碼描述 begin count=1,result=0 while count30 input a1,a2 ave=(a1+a1)/2 if ave90 then result=result+1 count=count+1 end while print result end,課件制作日期:2013年6月.張磊,1.2.2 算法的邏輯結(jié)構(gòu),算法邏輯結(jié)構(gòu)框圖, 順序結(jié)構(gòu),順序結(jié)構(gòu)傳統(tǒng)流程圖 順序結(jié)構(gòu)N-S圖,課件制作日期:2013年6月.張磊,1.2.2 算法的邏輯結(jié)構(gòu),算法邏輯結(jié)構(gòu)框圖,(2) 分支結(jié)構(gòu),分支結(jié)構(gòu)流程圖 分支結(jié)構(gòu)N-S圖,課件制作日期

9、:2013年6月.張磊,1.2.2 算法的邏輯結(jié)構(gòu),算法邏輯結(jié)構(gòu)框圖,(3) 循環(huán)結(jié)構(gòu),循環(huán)結(jié)構(gòu)流程圖 循環(huán)結(jié)構(gòu)N-S圖,課件制作日期:2013年6月.張磊,1.2.3 算法的特性,算法特性 有窮性:經(jīng)過(guò)有限步驟解決問(wèn)題。 確定性:每個(gè)步驟所規(guī)定的操作必須是確定的。 有效性:每一個(gè)步驟必須能夠有效地執(zhí)行 。 輸入和輸出特性。有零個(gè)或多個(gè)輸入,有一個(gè)或多個(gè)輸出。,還應(yīng)注意 算法的多樣性:一個(gè)具體問(wèn)題可以有不同的解決方法,因此可以設(shè)計(jì)解決問(wèn)題的不同算法。 算法的通用性:一個(gè)算法應(yīng)是適用于某類問(wèn)題,而不只是適用于某一個(gè)問(wèn)題。,課件制作日期:2013年6月.張磊,1.2.4 算法評(píng)價(jià),算法復(fù)雜程度 算

10、法的時(shí)間復(fù)雜性:規(guī)模與執(zhí)行速度關(guān)系 算法空間復(fù)雜性:對(duì)系統(tǒng)資源的需求程度 算法的通用性 正確和清晰易讀永遠(yuǎn)是一個(gè)好算法的基本條件。,課件制作日期:2013年6月.張磊,1.3 程序設(shè)計(jì)與實(shí)現(xiàn),1.3.1 程序設(shè)計(jì)的基本過(guò)程 1.3.2 使用VisualC+ 6.0實(shí)現(xiàn)C語(yǔ)言程序 1.3.3 程序設(shè)計(jì)示例,課件制作日期:2013年6月.張磊,1.3.1 程序設(shè)計(jì)的基本過(guò)程,分析要處理的問(wèn)題涉及的各種概念、數(shù)據(jù)特點(diǎn)、已知條件、所求結(jié)果,以及已知條件與所求結(jié)果之間的關(guān)系等各方面的信息。 明確:要做什么?,確定具體的算法,并選擇合適的算法表達(dá)工具對(duì)算法進(jìn)行描述。,用程序設(shè)計(jì)語(yǔ)言的語(yǔ)句和命令實(shí)現(xiàn)算法的每

11、一個(gè)步驟。,課件制作日期:2013年6月.張磊,1.3.2 使用VC+ 6.0實(shí)現(xiàn)C語(yǔ)言程序,使用VC+ 6.0實(shí)現(xiàn)C程序的基本步驟有4個(gè): 1建立源程序文件,3構(gòu)建可執(zhí)行文件,2編譯源程序,4運(yùn)行可執(zhí)行文件,啟動(dòng)VC+ 6.0系統(tǒng) 使用“File”“New”命令,打開(kāi)VC+ 6.0的程序編輯窗口 錄入編輯源程序,保存文件,使用“Build”“Compile”命令對(duì)源程序進(jìn)行編譯,生成二進(jìn)制目標(biāo)代碼文件。,程序通過(guò)編譯之后,使用“Build”“Build”命令將編譯階段生成的目標(biāo)文件和系統(tǒng)的庫(kù)函數(shù)文件等連接起來(lái),生成擴(kuò)展名是“.exe”的可執(zhí)行文件。,使用“Build”“!Execute”命令

12、運(yùn)行程序,獲得執(zhí)行結(jié)果。,課件制作日期:2013年6月.張磊,1.3.3 程序設(shè)計(jì)示例,例1-1 設(shè)計(jì)計(jì)算矩形面積的程序。,3編寫(xiě)程序,2算法設(shè)計(jì),4調(diào)試運(yùn)行程序,1問(wèn)題分析, 設(shè)矩形的邊長(zhǎng)為a和b、矩形面積為s,則s=ab。 通過(guò)鍵盤(pán)輸入等方式為矩形邊長(zhǎng)a、b提供數(shù)據(jù)。 程序執(zhí)行后要輸出計(jì)算結(jié)果。 2算法設(shè)計(jì) 3編寫(xiě)程序 4調(diào)試運(yùn)行程序, 假設(shè)該矩形都是整型數(shù)據(jù),因此,要使用int對(duì)a、b、s進(jìn)行說(shuō)明。 使用scanf()函數(shù)輸入數(shù)據(jù)a、b。 使用“s=a*b”計(jì)算矩形面積,并存儲(chǔ)到s中。 使用printf()函數(shù)輸出計(jì)算結(jié)果s。 把上面的一些具體語(yǔ)句放在main()函數(shù)中。 程序清單,課件

13、制作日期:2013年6月.張磊,1.3.3 程序設(shè)計(jì)示例,/* program e1-1.c */ #include int main() int a,b,s; printf(Input a,b: ); scanf(%d,%d, ,1.3.3 程序設(shè)計(jì)示例,4調(diào)試運(yùn)行程序,例1-1 設(shè)計(jì)計(jì)算矩形面積的程序。, 建立源程序文件。 啟動(dòng)VC+ 6.0,使用“File”“New”命令,打開(kāi) “new”窗口,選用“Files”選項(xiàng)卡,在主窗口中選擇“C+ Source File”項(xiàng),在“File”對(duì)話框中輸入文件名,在“Location”對(duì)話框中指定文件的存儲(chǔ)位置。,1.3.3 程序設(shè)計(jì)示例,4調(diào)試運(yùn)

14、行程序,例1-1 設(shè)計(jì)計(jì)算矩形面積的程序。, 建立源程序文件 單擊“OK”按鈕,打開(kāi)程序編輯窗口錄入編輯源程序,并及時(shí)存盤(pán)。,課件制作日期:2013年6月.張磊,1.3.3 程序設(shè)計(jì)示例,4調(diào)試運(yùn)行程序,例1-1 設(shè)計(jì)計(jì)算矩形面積的程序。, 建立源程序文件 編譯源程序 程序編輯完成后,使用“Build”“Compile ”命令編譯,執(zhí)行“Build”“Compile”命令后的提示信息,編譯結(jié)果顯示在編譯報(bào)告窗口,1.3.3 程序設(shè)計(jì)示例,4調(diào)試運(yùn)行程序,例1-1 設(shè)計(jì)計(jì)算矩形面積的程序。, 建立源程序文件。 編譯源程序。 構(gòu)建可執(zhí)行文件。 程序編譯完成后,使用“Build”“Build ”構(gòu)建

15、可執(zhí)行文件。 運(yùn)行可執(zhí)行文件。 成功構(gòu)建可執(zhí)行文件之后,使用“Build”“!Execute”命令即可運(yùn)行程序。,1.4 C語(yǔ)言程序的基本結(jié)構(gòu),1.4.1 程序的函數(shù)化結(jié)構(gòu) 1.4.2 程序中的常量和變量 1.4.3 程序中的基本語(yǔ)句 1.4.4 標(biāo)識(shí)符與保留字 1.4.5 程序風(fēng)格,1.4 1 程序的函數(shù)化結(jié)構(gòu),1簡(jiǎn)單C語(yǔ)言程序的結(jié)構(gòu) C語(yǔ)言程序是由函數(shù)構(gòu)成的,任何一個(gè)C語(yǔ)言程序都有一個(gè)稱為主函數(shù)的main()函數(shù),例如,前面介紹的C語(yǔ)言程序e1-0.c和e1-1.c,其主體內(nèi)容都是main()函數(shù)。 程序中main()函數(shù)的一般結(jié)構(gòu): int main(void) 函數(shù)體 ,例1-2 更簡(jiǎn)

16、單的C程序。 #include int main(void) printf(Hello!n); return 0; ,特別強(qiáng)調(diào): 任何一個(gè)C語(yǔ)言程序,main()函數(shù)都是不可缺少的,當(dāng)一個(gè)C語(yǔ)言程序只有一個(gè)函數(shù)模塊時(shí),這個(gè)函數(shù)必然是main()函數(shù)。,1.4.1 程序的函數(shù)化結(jié)構(gòu),上述程序,在“int main()”之前都有一行代碼“#include”, 作為初學(xué)者,為方便起見(jiàn),不妨先將其視為C語(yǔ)言程序的基本構(gòu)成部分。 可以認(rèn)為,簡(jiǎn)單C語(yǔ)言程序的基本結(jié)構(gòu):,#include int main(void) 函數(shù)體 ,1.4.1 程序的函數(shù)化結(jié)構(gòu),2C語(yǔ)言程序的一般結(jié)構(gòu) 一個(gè)C語(yǔ)言程序,在結(jié)構(gòu)上不

17、僅要有main()函數(shù),還可以包括其他獨(dú)立的函數(shù),一個(gè)函數(shù)可以在另一個(gè)函數(shù)中被使用。,例1-3 輸出圖案程序。 /* program e1-3.c */ #include int main(void) /* 主函數(shù) */ void p_s(void); p_s(); p_s(); p_s(); return 0; void p_s() /* 其他函數(shù) */ printf($#$n); ,1.4.1 程序的函數(shù)化結(jié)構(gòu),3C語(yǔ)言程序的基本特點(diǎn) C語(yǔ)言程序由函數(shù)構(gòu)成,而且每個(gè)程序可以有多個(gè)函數(shù)。 一個(gè)源程序不論由多少個(gè)函數(shù)組成,有且只能有一個(gè)main()函數(shù),而且main()函數(shù)可以放在程序的任何位

18、置。 一個(gè)源程序無(wú)論由多少個(gè)函數(shù)構(gòu)成,總是從main()函數(shù)開(kāi)始執(zhí)行程序,與main()函數(shù)在程序中的位置無(wú)關(guān)。,1.4.2 程序中的常量和變量,1常量 程序中的常量分為直接常量和符號(hào)常量?jī)煞N。 直接常量就是具體的數(shù)據(jù),有整數(shù)、實(shí)數(shù)、字符和字符串四種類型。例如,程序e-0.c中的“1”和“100”是整數(shù)常量,程序e1-2.c中的“Hello!”是字符串常量; 符號(hào)常量是通過(guò)特殊方式定義的一類常量,其定義方法將在第2章介紹。 2變量 程序中的變量用變量名標(biāo)識(shí),每個(gè)變量具有特定的數(shù)據(jù)類型,計(jì)算機(jī)按照一定的規(guī)則為變量分配一定的內(nèi)存空間,變量的值存儲(chǔ)在變量所在的存儲(chǔ)空間中。 C語(yǔ)言的每個(gè)變量在使用之前

19、必須首先進(jìn)行變量定義,為變量指定數(shù)據(jù)類型和變量名。 C語(yǔ)言中變量的基本類型有3種:整型、實(shí)型和字符型,分別用的int、float和char進(jìn)行標(biāo)識(shí)。,1.4.3 程序中的基本語(yǔ)句,按照功能劃分3類 數(shù)據(jù)定義語(yǔ)句,流程控制語(yǔ)句,數(shù)據(jù)處理語(yǔ)句,對(duì)程序中使用的變量名稱、數(shù)據(jù)類型等進(jìn)行說(shuō)明。例如,程序e1-1.c的“int a,b,c;”語(yǔ)句。,對(duì)程序中的數(shù)據(jù)進(jìn)行運(yùn)算、輸入、輸出等。例如,程序e1-1.c的“ “s=a*b;”、“printf(“Area: %dn,s);” 等。,對(duì)程序的執(zhí)行流程進(jìn)行控制,分為分支控制和循環(huán)控制兩類。例如,程序e1-0.c中的while語(yǔ)句。,1.4.4 標(biāo)識(shí)符與保留字,1. 標(biāo)識(shí)符 在程序中使用的變量名、函數(shù)名等。 標(biāo)識(shí)符構(gòu)成 任何一個(gè)標(biāo)識(shí)符只能是由字母(AZ,az)、數(shù)字(09)和下劃線“_”構(gòu)成的字符串,其他符號(hào)不能出現(xiàn)在標(biāo)識(shí)符中,并且標(biāo)識(shí)符的第一個(gè)字符必須是字母或下劃線。 合法標(biāo)識(shí)符 a BOOK1 max _add num_1 非法標(biāo)識(shí)符 3sum 不允許以數(shù)字開(kāi)頭 ab#cd 使用了非法字符“#” book-1 出現(xiàn)非法字符“-”(減號(hào)),注意: 兩個(gè)標(biāo)識(shí)符中的字母相同而大小寫(xiě)形式不同時(shí),C語(yǔ)言認(rèn)為是兩個(gè)不同

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論