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

下載本文檔

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

文檔簡介

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

2、來各種版本對 C的發(fā)展和擴(kuò)充,制定了C的標(biāo)準(zhǔn),稱為 ANSI C。1987年ANSI又公布了新的標(biāo)準(zhǔn)87 ANSI C。,課件制作日期:2013年6月.張磊,1.1 程序設(shè)計語言,C語言程序示例: 計算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; /* 生成下一個要累加的數(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 算法評價,1.2.1 算法概念與算法描述,算法重要性:程序=數(shù)據(jù)結(jié)構(gòu)+算法 1算法的概念 算法是求解問題的方法,是在有限步驟內(nèi)求解某一問題所使用的一組定義明確的規(guī)則,是計算機(jī)處理問題所需要的具體步驟。 2算法的描述方法 自然語言 流程圖 N-S圖 PAD圖 偽碼等。,課件制作日期:2013年6月.張磊,1.2.1 算法概念與算法描述, 用自然語言描述算法 “計算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 算法概念與算法描述,“計算1100自然數(shù)和”的算法,步驟 i=1,s=0; 步驟 若i100 則執(zhí)行步驟;否則,轉(zhuǎn)步驟; 步驟 s加上i; 步驟 i加上1,轉(zhuǎn)步驟; 步驟 顯示s的值,結(jié)束,課件制作日期:2013年6月.張磊,1.2.1 算法概念與算法描述,(3) 用偽代碼描述算法 “計算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)任何邏輯控制。,算法 步驟 輸入一個學(xué)生兩門課的成績a1,a2; 步驟 計算平均成績 (a1+a2)/2ave; 步驟 輸出平均成績ave,結(jié)束。,問題1-順序結(jié)構(gòu):輸入一個學(xué)生的兩門課的成績,計算出平均成績。,偽代碼 begin intput a1,a2 ave=(a1+a2)/2 print ave end,課件制作日期:2013年6月.張磊,課件制作日期:2013年6月.張磊,1.2.2 算法的邏輯結(jié)構(gòu),問題2-分支結(jié)構(gòu):輸入一個學(xué)生的兩門課的成績,

6、若平均成績不低于90分,則顯示“優(yōu)等生”,否則顯示“要加油??!”,算法 步驟 輸入一個學(xué)生兩門課的成績a1、a2; 步驟 計算平均成績(a1+a2)/2ave; 步驟 若ave90,則執(zhí)行步驟;否則執(zhí)行步驟; 步驟 輸出“優(yōu)等生”,結(jié)束。 步驟 輸出“要加油啊!”,結(jié)束。,課件制作日期:2013年6月.張磊,1.2.2 算法的邏輯結(jié)構(gòu),問題2-分支結(jié)構(gòu) 輸入一個學(xué)生的兩門課的成績,若平均成績不低于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),問題3-循環(huán)結(jié)構(gòu):按照問題2的標(biāo)準(zhǔn),統(tǒng)計全班的優(yōu)等生人數(shù)(全班共30人)。,算法 步驟 設(shè)置變量count對輸入的數(shù)據(jù)量計數(shù),其初值為1;設(shè)置變量result對優(yōu)等生計數(shù),其初值為0; 步驟 若count30,則執(zhí)行步驟;否則轉(zhuǎn)步驟; 步驟 輸入一個學(xué)生兩門課的成績a1、a2; 步驟 計算平均成績(a1+a2)/2ave; 步驟 若ave90,則執(zhí)行步驟;否則轉(zhuǎn)步驟; 步驟 result+1result; 步驟 count+1count;轉(zhuǎn)步驟; 步驟 輸出統(tǒng)計結(jié)果,結(jié)束。,1.2.2 算法的邏輯結(jié)構(gòu),問題3-循環(huán)結(jié)構(gòu) 按照問題2的標(biāo)準(zhǔn)

8、,統(tǒng)計全班的優(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ī)定的操作必須是確定的。 有效性:每一個步驟必須能夠有效地執(zhí)行 。 輸入和輸出特性。有零個或多個輸入,有一個或多個輸出。,還應(yīng)注意 算法的多樣性:一個具體問題可以有不同的解決方法,因此可以設(shè)計解決問題的不同算法。 算法的通用性:一個算法應(yīng)是適用于某類問題,而不只是適用于某一個問題。,課件制作日期:2013年6月.張磊,1.2.4 算法評價,算法復(fù)雜程度 算

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

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

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

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

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

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

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

17、僅要有main()函數(shù),還可以包括其他獨(dú)立的函數(shù),一個函數(shù)可以在另一個函數(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語言程序的基本特點(diǎn) C語言程序由函數(shù)構(gòu)成,而且每個程序可以有多個函數(shù)。 一個源程序不論由多少個函數(shù)組成,有且只能有一個main()函數(shù),而且main()函數(shù)可以放在程序的任何位

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

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

評論

0/150

提交評論