清華大學(xué)計算機程序設(shè)計基礎(chǔ)PPT課件.ppt_第1頁
清華大學(xué)計算機程序設(shè)計基礎(chǔ)PPT課件.ppt_第2頁
清華大學(xué)計算機程序設(shè)計基礎(chǔ)PPT課件.ppt_第3頁
清華大學(xué)計算機程序設(shè)計基礎(chǔ)PPT課件.ppt_第4頁
清華大學(xué)計算機程序設(shè)計基礎(chǔ)PPT課件.ppt_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

可編輯 1 第3章C語言程序基本控制結(jié)構(gòu)及其應(yīng)用 可編輯 2 本章主要內(nèi)容 算法及結(jié)構(gòu)化程序設(shè)計順序結(jié)構(gòu)程序設(shè)計分支結(jié)構(gòu)程序設(shè)計循環(huán)結(jié)構(gòu)程序設(shè)計結(jié)構(gòu)化程序應(yīng)用舉例 可編輯 3 3 1算法及結(jié)構(gòu)化程序設(shè)計 可編輯 4 3 1 1算法及其特征 軟件開發(fā)步入工程化階段 大型軟件開發(fā)一般要經(jīng)歷 規(guī)劃 需求分析 設(shè)計 編碼 測試 和 運行維護 等階段 可編輯 5 正確的 需求分析 對程序設(shè)計是至關(guān)重要的 編碼 是對需求的實現(xiàn) 在 編碼 過程中 算法很重要 良好的算法決定了程序的質(zhì)量和性能 可編輯 6 軟件的開發(fā)不僅需要處理大量的關(guān)系復(fù)雜的數(shù)據(jù) 這些數(shù)據(jù)通常都具有一定的結(jié)構(gòu)性 因此 軟件設(shè)計的實質(zhì)就是設(shè)計合適的數(shù)據(jù)結(jié)構(gòu)和基于這個數(shù)據(jù)結(jié)構(gòu)的算法 于是N 沃恩提出了著名公式 程序 數(shù)據(jù)結(jié)構(gòu) 算法 程序設(shè)計 程序 程序設(shè)計方法學(xué) 可編輯 7 模塊化將復(fù)雜的算法 或程序 分解成若干個相對獨立 功能單一的模塊 利用這些模塊組合成全局算法 或 程序 自頂向下結(jié)構(gòu)設(shè)計方法從總體出發(fā) 居高臨下 逐層分解和逐步細化 結(jié)構(gòu)化程序設(shè)計方法 可編輯 8 逐步求精結(jié)構(gòu)設(shè)計方法實質(zhì)上也是一種自頂向下的設(shè)計方法 首先拋開細節(jié)設(shè)計出抽象算法 然后把抽象數(shù)據(jù)和操作逐步具體化 直到可以由計算機具體實現(xiàn)為止 可編輯 9 算法特征 有窮性 合理算法應(yīng)在執(zhí)行有限步后結(jié)束如 N 1 2 3 N 1 N而式子 sum 1 2 3 N 不能稱為算法 因為它執(zhí)行有限步后仍不能結(jié)束 確定性 算法的每一步執(zhí)行 其順序和內(nèi)容都必須有確切的規(guī)定 不能模棱兩可可執(zhí)行性 即算法的所有操作都是能通過計算機程序代碼實現(xiàn) 即可操作性0個或多個輸入 1個或多個輸出 可編輯 10 例 求解一元二次方程的算法方程a x x b x c 0 其中a b和c是不等于0的實數(shù) 具體參考步驟如下 可編輯 11 結(jié)構(gòu)化算法的屬性 1 僅有一個入口2 僅有一個出口3 無死塊4 無死循環(huán)塊 3 1 2算法的類型與結(jié)構(gòu) 結(jié)構(gòu)化算法只能由三種控制結(jié)構(gòu)所構(gòu)成 可編輯 12 程序基本控制結(jié)構(gòu) 循環(huán) 可編輯 13 3 2順序結(jié)構(gòu)程序設(shè)計 例 輸入一個小寫字母 輸出對應(yīng)的大寫字母 include stdio h 嵌入頭文件voidmain charc1 c2 定義字符型變量c1 getchar 接收一個字符c2 c1 32 小寫轉(zhuǎn)換成大寫printf c c2 可編輯 14 3 3分支結(jié)構(gòu)程序設(shè)計 可編輯 15 3 3 1if分支 格式 if 表達式 語句如 if a b printf a 可編輯 16 格式 if 條件表達式 程序塊1 else 程序塊2 3 3 2if else分支 可編輯 17 例 輸入一個字符 判斷它是否是0 9的阿拉伯數(shù)字 includevoidmain charc printf inputacharacter c getchar if c 48 可編輯 18 格式 if 表達式1 語句1elseif 表達式2 語句2elseif 表達式3 語句3 elseif 表達式m 語句melse語句n 3 3 3多分支if elseif else形式 可編輯 19 例 有一個函數(shù) 定義如下 0 x50 includevoidmain floatx scanf f 可編輯 20 3 3 4條件分支的嵌套 格式 if 條件表達式a 程序段a1 if 條件表達式b 程序段b1 else程序段b2 程序段a2 else程序段a3 可編輯 21 例 求解ax2 bx c 0的完全解 include include 用到平方根函數(shù)voidmain floata b c x1 x2 p q m scanf f f f 可編輯 22 else m b b 4 0 a c if m 0 x1 b sqrt m 2 0 a x2 b sqrt m 2 0 a printf x1 f n x1 printf x2 f n x2 else p b 2 0 a q sqrt m 2 0 a printf x1 f fi n p q printf x2 f fi n p q 嵌套 可編輯 23 格式 表達式1 表達式2 表達式3執(zhí)行順序 注意 結(jié)合方向為自右至左能取代簡單的if語句三個表達式類型可以不同 最終類型為表達式2和表達式3中較高的類型 條件運算符的應(yīng)用 T F 可編輯 24 條件運算符的結(jié)合方向為 自右向左 如 a b a c d c d等價于a b a c d c d 若a 5 b 15 c 25 d 35 那么整個表達式的值為35 可編輯 25 switch 表達式e case常量表達式c1 程序段1 break case常量表達式cn 程序段n break default 程序段n 1 break 3 3 5開關(guān) switch 分支 整 字符 枚舉型 每個常量表達式的值不能相同 次序不影響執(zhí)行結(jié)果 可編輯 26 例 根據(jù)學(xué)生成績的等級打印出分數(shù)段 includevoidmain chargrade printf inputthegrade A B C D E scanf c 可編輯 27 switch grade case A printf 90 100 n case B printf 80 89 n case C printf 70 79 n case D printf 60 69 n case E printf 0 59 n default printf error n 各分支語句組中若沒有break語句則程序?qū)⒗^續(xù)執(zhí)行下面一個case中的語句組 可編輯 28 switch grade case A case B case C printf pass n break case D printf failure n break default printf error n break 若干分支執(zhí)行相同內(nèi)容時 可共用一組語句 可編輯 29 includevoidmain intx y scanf i i switch語句也可以嵌套使用下面是典型的switch嵌套 可編輯 30 switch x case1 switch y case11 printf Morning n break case12 printf afternoon n break default printf evening n break case2 printf interesting n break default printf Error n switch y 作為case1的語句組 可編輯 31 3 4循環(huán)結(jié)構(gòu)程序設(shè)計 循環(huán)語句常用于迭代 累計等運算 循環(huán)能提高程序的代碼效率 但要注意 死循環(huán) 的問題 不符合結(jié)構(gòu)化程序設(shè)計的特點 盡量少用 可編輯 32 3 4 1while語句 語法 while 條件表達式 程序段 可以是復(fù)合語句 其中必須含有改變條件表達式值的語句 可編輯 33 例 用while循環(huán)求兩個正整數(shù)的最小公倍數(shù) includevoidmain intm n result scanf d d 可編輯 34 語法 do 程序段 while 條件表達式 3 4 2do while語句 其中必須含有改變條件表達式值的語句 可編輯 35 例 使用do while循環(huán)求兩個正整數(shù)的最小公倍數(shù) include stdio h voidmain intm n result scanf d d 可編輯 36 語法 for 語句S1 條件表達式C 語句S2 程序段 3 4 3for語句 循環(huán)前先求解 非0時執(zhí)行循環(huán)體 每次執(zhí)行完循環(huán)體后求解 可編輯 37 例 用for循環(huán)求12 22 32 42 1002 include stdio h voidmain intk longresult 0 for k 1 k 100 k result k k printf result ld n result 用int 會出現(xiàn)什么問題 可編輯 38 include stdio h main inti for i 0 i 8 i printf d i printf d i 輸出結(jié)果 1 3 5 7 8 可編輯 39 for語句注意事項表達式1可以省略如for i 10 i s s i 2 表達式2一般不能省略 否則無法使循環(huán)停止3 表達式3也可以省略 但對于for i 1 i 100 i 如果i 省略 則循環(huán)體內(nèi)一定有i 否則循環(huán)無法結(jié)束 可編輯 40 4 表達式1和表達式3可以通過 包含一個以上的簡單表達式 如 for sum 0 i 1 i 100 i j k i j 5 表達式2一般是 關(guān)系表達式 i 100 邏輯表達式 a b x y 數(shù)值表達式字符表達式 可編輯 41 3 4 4三種循環(huán)的比較 詳見教材 可編輯 42 3 4 5多重循環(huán) 多重循環(huán) 循環(huán)嵌套 for while do while等循環(huán)可以相互嵌套使用 for 表達式1 表達式2 表達式3 while 表達式 嵌套方式有很多 可編輯 43 可編輯 44 includemain inti 1 j k while i 0 printf i d n i for j 1 j i j k i j printf k d n k i 嵌套循環(huán)過程也要避免死循環(huán) 這個程序?qū)⑤敵鍪裁?可編輯 45 1 break 退出當前循環(huán)或當前switch結(jié)構(gòu)繼續(xù)執(zhí)行邏輯上的下一條語句 3 4 6循環(huán)和開關(guān) switch 分支的中途退出 2 continue 用于結(jié)束本次循環(huán) 接著進行是否執(zhí)行下一次循環(huán)的判斷 可編輯 46 main y a x 2 b x c inta b c x y a 5 b 10 c 15 for x 1 x250 結(jié)束本次循環(huán) 進入下一個循環(huán) 結(jié)束的是整個循環(huán) 可編輯 47 include stdio h voidmain inti a 1 b 2 c 3 result for i 1 i20 break 自己上機體會 可編輯 48 include stdio h voidmain charc intnum 0 while c getchar n if c122 continue num printf d n num 自己上機體會 可編輯 49 語法 goto標號 goto語句的使用范圍只局限于一個函數(shù)內(nèi)部 3 4 7goto語句 可編輯 50 例 輸入一串字符 以 n 為結(jié)束標志 include stdio h voidmain charc printf inputa do scanf c 可編輯 51 3 4 8結(jié)構(gòu)化程序設(shè)計注意事項 符合完整性要求 不符合完

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論