高級(jí)語言程序設(shè)計(jì)-從C到C++(第二版)課件:結(jié)構(gòu)化程序設(shè)計(jì)_第1頁
高級(jí)語言程序設(shè)計(jì)-從C到C++(第二版)課件:結(jié)構(gòu)化程序設(shè)計(jì)_第2頁
高級(jí)語言程序設(shè)計(jì)-從C到C++(第二版)課件:結(jié)構(gòu)化程序設(shè)計(jì)_第3頁
高級(jí)語言程序設(shè)計(jì)-從C到C++(第二版)課件:結(jié)構(gòu)化程序設(shè)計(jì)_第4頁
高級(jí)語言程序設(shè)計(jì)-從C到C++(第二版)課件:結(jié)構(gòu)化程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

4.1順序結(jié)構(gòu)4.2選擇結(jié)構(gòu)4.3循環(huán)結(jié)構(gòu)4.1順序結(jié)構(gòu)順序結(jié)構(gòu)是最簡單的程序結(jié)構(gòu),結(jié)構(gòu)中各語句按自上而下的順序依次執(zhí)行,如圖4-1所示。在結(jié)構(gòu)化程序設(shè)計(jì)中,由于三種基本結(jié)構(gòu)都遵循“單入口、單出口”的原則,因此無論程序中包含了什么樣的結(jié)構(gòu),程序的總流程都是按照順序結(jié)構(gòu)執(zhí)行的。程序的執(zhí)行始終是按照語句自上而下的順序,在執(zhí)行過程中不會(huì)有任何跳轉(zhuǎn)或變化,這就是典型的順序結(jié)構(gòu)的程序執(zhí)行方式。4.2選擇結(jié)構(gòu)在現(xiàn)實(shí)生活中,我們往往需要通過對(duì)給定條件的判斷,決定下一步行為。在程序設(shè)計(jì)中,也會(huì)遇到相同的情況。當(dāng)程序執(zhí)行到某個(gè)階段,出現(xiàn)了可選的不同處理方案,此時(shí)就需要根據(jù)對(duì)某一特定條件的判斷,選擇其中的一個(gè)分支來執(zhí)行。選擇結(jié)構(gòu)按照程序分支的多少可以分為單分支、雙分支和多分支三種形式;根據(jù)使用的關(guān)鍵字不同,可以分為if語句和switch語句。4.2.1if語句if語句是最常用的一種選擇結(jié)構(gòu),其基本形式包括單分支選擇結(jié)構(gòu)、雙分支選擇結(jié)構(gòu)以及多分支選擇結(jié)構(gòu)。1.單分支選擇結(jié)構(gòu)if語句的單分支選擇結(jié)構(gòu)的基本格式為或者程序的控制流程進(jìn)入單分支選擇結(jié)構(gòu)時(shí),首先需要對(duì)圓括號(hào)中的表達(dá)式進(jìn)行判斷,該表達(dá)式即單分支選擇結(jié)構(gòu)是否執(zhí)行的條件。如果條件成立,即表達(dá)式的值非0,則執(zhí)行選擇結(jié)構(gòu)中的語句;如果條件不成立,即表達(dá)式的值為0,則不執(zhí)行選擇結(jié)構(gòu)中的語句,直接執(zhí)行選擇結(jié)構(gòu)后的語句。其結(jié)構(gòu)如圖4-2所示。需要注意的是,如果選擇結(jié)構(gòu)中必須包含多條語句,則需要用“{”和“}”括起,形成復(fù)合語句。復(fù)合語句在程序執(zhí)行的過程中作為完整的個(gè)體,即花括號(hào)中的語句全部執(zhí)行,或者一條也不執(zhí)行。2.雙分支選擇結(jié)構(gòu)if語句的雙分支選擇結(jié)構(gòu)的基本格式為或者程序的控制流程進(jìn)入雙分支選擇結(jié)構(gòu)時(shí),首先需要對(duì)圓括號(hào)中的表達(dá)式進(jìn)行判斷,該表達(dá)式即雙分支選擇結(jié)構(gòu)是否執(zhí)行的條件。如果條件成立,即表達(dá)式的值非0,則執(zhí)行選擇結(jié)構(gòu)中的語句;如果條件不成立,即表達(dá)式的值為0,則不執(zhí)行選擇結(jié)構(gòu)中的語句,直接執(zhí)行選擇結(jié)構(gòu)后的語句。其結(jié)構(gòu)如圖4-3所示。3.多分支選擇結(jié)構(gòu)if語句的多分支選擇結(jié)構(gòu)的基本格式為程序的控制流程進(jìn)入多分支選擇結(jié)構(gòu)時(shí),按照條件表達(dá)式出現(xiàn)的順序進(jìn)行判斷,首先判斷表達(dá)式1的條件是否成立,如果成立,則執(zhí)行該條件控制的語句后結(jié)束選擇結(jié)構(gòu);如果表達(dá)式1的條件不成立,則對(duì)表達(dá)式2進(jìn)行條件判斷,依此類推,按序進(jìn)行;若所有的條件均不成立,則執(zhí)行else后的內(nèi)嵌語句。若其中有一條判斷表達(dá)式成立,則其后的判斷表達(dá)式將不再執(zhí)行,因此符合多選一的原則。其結(jié)構(gòu)如圖4-4所示。4.2.2if語句的嵌套if語句中若包含一個(gè)或多個(gè)if語句,則稱為if語句的嵌套。其基本格式為關(guān)于if語句的幾點(diǎn)說明:(1)?if語句先對(duì)(表達(dá)式)求解,根據(jù)結(jié)果的邏輯值(真或假)選擇相應(yīng)的語句執(zhí)行。(2)?if…else是一個(gè)完整的語句,else是if語句的一部分,但else前后的內(nèi)嵌語句都要加分號(hào)。(3)?else語句不能單獨(dú)使用,并且總是與上面的、最近的、未配對(duì)的if語句進(jìn)行匹配。(4)??if語句可以嵌套,但必須是一條if語句完整地包含另一條if語句,即兩個(gè)分支結(jié)構(gòu)可以嵌套但不能有交叉。4.2.3條件運(yùn)算符對(duì)于二選一的情況,在程序設(shè)計(jì)中會(huì)經(jīng)常出現(xiàn)。C語言優(yōu)化了這個(gè)過程,定義了條件運(yùn)算符來實(shí)現(xiàn),其基本格式為條件運(yùn)算符是C語言的運(yùn)算符之一,它是一個(gè)三元運(yùn)算符,因?yàn)樾枰齻€(gè)操作數(shù)。條件運(yùn)算符的執(zhí)行過程為從條件運(yùn)算符的執(zhí)行過程中可以看出,它與雙分支選擇結(jié)構(gòu)基本一致,但是它比if...else語法更加簡便。4.2.4switch語句除了if語句之外,C語言還為選擇結(jié)構(gòu)定義了switch語句,即多路判斷語句,用于處理多分支的問題。其基本格式為在基本格式中,需要注意:(1)語句部分可以是一條語句,也可以是多條語句;在swicth語句的格式中,即使是多條語句,也不強(qiáng)制使用花括號(hào){},這一點(diǎn)與if語句的語法不同。(2)語句后的break表示停止、中斷,即結(jié)束對(duì)switch語句的執(zhí)行。break語句可根據(jù)需要添加。(3)??default語句部分指缺省狀況,如果switch語句中的所有分支都沒有執(zhí)行到,則執(zhí)行default語句部分,該部分出現(xiàn)與否,可以根據(jù)需要而定。(4)?switch(表達(dá)式)中的表達(dá)式的值只能是整型值。(5)?case之后的常量可以是整型常量,也可以是整型常量表達(dá)式,并且不能出現(xiàn)兩個(gè)case之后的常量表達(dá)式的值相同的狀況。(6)如果switch(表達(dá)式)中表達(dá)式的值與任意一個(gè)case后的常量的值不匹配,而且該語句也沒有提供default部分,則不執(zhí)行switch中的任何語句。switch語句的執(zhí)行過程是:(1)計(jì)算switch(表達(dá)式)語句中表達(dá)式的值。(2)將該表達(dá)式的值依次與case后的整型常量表達(dá)式的值進(jìn)行比較。(3)如果某個(gè)case后的整型常量表達(dá)式的值與該表達(dá)式的值相等,則執(zhí)行該case后的語句。執(zhí)行完畢,若沒有遇到break語句,則繼續(xù)執(zhí)行switch結(jié)構(gòu)內(nèi)的后續(xù)語句;若遇到break語句,則結(jié)束switch結(jié)構(gòu)的執(zhí)行。(4)如果switch(表達(dá)式)語句中表達(dá)式的值與任何一個(gè)case后的整型常量表達(dá)式的值都不相等,若語句中包含default部分,則執(zhí)行default后的語句;若語句中沒有default部分,則結(jié)束switch結(jié)構(gòu)的執(zhí)行。關(guān)于switch語句的幾點(diǎn)說明:(1)?switch后括號(hào)內(nèi)的表達(dá)式和case后的常量表達(dá)式均有確定的整型值。(2)??switch語句用花括號(hào)限定一個(gè)復(fù)合語句,其中可以包含若干條case語句和最多一條default語句。case和default分支中可以是一條也可以是多條語句,此處不必用花括號(hào)限定。多個(gè)case分支也可以共用一組執(zhí)行語句。(3)每一個(gè)case分支的整型常量表達(dá)式的值必須互不相同。(4)當(dāng)表達(dá)式的值與某一個(gè)case分支的整型常量表達(dá)式的值相等時(shí),控制流程就從此case語句進(jìn)入,順序執(zhí)行后面的語句。若所有case分支的整型常量表達(dá)式的值都與switch后表達(dá)式的值不匹配,則執(zhí)行default分支語句;若沒有default分支語句,則不執(zhí)行任何操作。(5)?break語句的作用是結(jié)束switch結(jié)構(gòu)語句的執(zhí)行。(6)?case和default的出現(xiàn)次序不影響執(zhí)行結(jié)果。4.3循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計(jì)中一種很重要的結(jié)構(gòu),其特點(diǎn)是在給定條件成立時(shí),反復(fù)執(zhí)行某程序段,直到條件不成立為止。給定的條件稱為循環(huán)條件,反復(fù)執(zhí)行的程序段稱為循環(huán)體。C語言提供了三種循環(huán)結(jié)構(gòu),分別是while型循環(huán)結(jié)構(gòu)、do…while型循環(huán)結(jié)構(gòu)以及for型循環(huán)結(jié)構(gòu)。在這三種結(jié)構(gòu)中,以for型循環(huán)結(jié)構(gòu)的使用最為靈活、使用頻率最高。4.3.1while型與do...while型循環(huán)1.while型循環(huán)使用關(guān)鍵字while構(gòu)成的循環(huán)結(jié)構(gòu),稱作while型循環(huán)結(jié)構(gòu),也稱作當(dāng)型循環(huán)結(jié)構(gòu)。其基本格式為while型循環(huán)的處理過程為:先判斷表達(dá)式是否成立(即對(duì)表達(dá)式求解),如果表達(dá)式成立(值為非0),則執(zhí)行循環(huán)體中的語句;執(zhí)行完后,再次對(duì)表達(dá)式求解,只要表達(dá)式的值為非0,則循環(huán)體即被反復(fù)執(zhí)行;直到表達(dá)式的值等于0(即循環(huán)條件不成立),才結(jié)束循環(huán)結(jié)構(gòu)的執(zhí)行。其結(jié)構(gòu)如圖4-5所示。2.do...while型循環(huán)do...while型循環(huán)結(jié)構(gòu)是在循環(huán)體執(zhí)行結(jié)束之后才對(duì)循環(huán)條件進(jìn)行判斷,因此也稱作直到型循環(huán)。其基本格式為do...while型循環(huán)的處理過程為:首先執(zhí)行循環(huán)體中的語句,然后求解while表達(dá)式的值,只要表達(dá)式的值為非0(即循環(huán)條件成立),循環(huán)體將被反復(fù)執(zhí)行,直到表達(dá)式的值等于0(循環(huán)條件不成立),控制流程才結(jié)束循環(huán)結(jié)構(gòu)的執(zhí)行,其結(jié)構(gòu)如圖4-6所示。while型循環(huán)與do...while型循環(huán)在格式和用法上有如下區(qū)別:(1)??while型循環(huán)先判斷條件,后執(zhí)行循環(huán)體語句;do...while型循環(huán)先執(zhí)行循環(huán)體語句,后判斷條件。(2)若循環(huán)條件表達(dá)式的初始值為真,則兩種循環(huán)語句的執(zhí)行結(jié)果相同。若循環(huán)條件表達(dá)式的初始值為假,while語句不執(zhí)行循環(huán)體中的語句,而do…while語句則執(zhí)行一次循環(huán)體中的語句。(3)?while語句中,while(表達(dá)式)后接語句;do…while語句中,while(表達(dá)式)后接“;”。(4)?while語句適合解決“當(dāng)型”循環(huán)問題;do…while語句則更適合解決“直到型”循環(huán)問題。4.3.2for型循環(huán)使用關(guān)鍵字for建立的循環(huán)結(jié)構(gòu)是C語言中功能最強(qiáng)大、使用最廣泛的一種循環(huán)結(jié)構(gòu)。其基本格式為或者其中,表達(dá)式1通常用于循環(huán)控制變量的初始化,一般是賦值表達(dá)式;表達(dá)式2通常是循環(huán)條件,一般為關(guān)系表達(dá)式或邏輯表達(dá)式;表達(dá)式3通常用于更新循環(huán)控制變量的值,使循環(huán)條件能夠不成立,從而結(jié)束循環(huán),一般多為自增或自減表達(dá)式。這三個(gè)表達(dá)式可以是單一的表達(dá)式,也可以是使用逗號(hào)分隔的逗號(hào)表達(dá)式。其執(zhí)行過程為:(1)執(zhí)行表達(dá)式1,完成循環(huán)控制變量的初始化,使其能夠參與表達(dá)式2的條件判斷。(2)計(jì)算表達(dá)式2的值,即判斷循環(huán)條件是否成立。如果表達(dá)式2的值為假(0),即循環(huán)條件不成立,則不執(zhí)行循環(huán)體;如果表達(dá)式2的值為真(非0),即循環(huán)條件成立,則執(zhí)行循環(huán)體中的語句。(3)計(jì)算表達(dá)式3的值,即更新循環(huán)控制變量的值。(4)控制流程轉(zhuǎn)回第(2)步,依次重復(fù)執(zhí)行,直到循環(huán)條件(即表達(dá)式2的值為假)不成立。在整個(gè)for循環(huán)過程中,表達(dá)式1只計(jì)算一次,表達(dá)式2和表達(dá)式3則可能計(jì)算多次。循環(huán)體可能被多次執(zhí)行,也可能一次都不執(zhí)行,其結(jié)構(gòu)如圖4-7所示。for語句的書寫非常靈活,只要遵循for型循環(huán)結(jié)構(gòu)的求值順序,循環(huán)功能的實(shí)現(xiàn)將不受影響。在書寫時(shí),可以:(1)在表達(dá)式1、3的位置書寫與循環(huán)控制無關(guān)的表達(dá)式。(2)將循環(huán)體內(nèi)或外的語句添加到表達(dá)式1、3的位置,形成逗號(hào)表達(dá)式。(3)任意省略表達(dá)式1、2、3和循環(huán)體內(nèi)的語句(相應(yīng)位置的分號(hào)不能省)。三種循環(huán)語句的比較:(1)使用while型和do...while型循環(huán),循環(huán)變量的初始化應(yīng)在進(jìn)入while和do...while語句之前完成;在for型循環(huán)中可由表達(dá)式1實(shí)現(xiàn)。(2)使用while型和do...while型循環(huán),循環(huán)體內(nèi)應(yīng)包含使循環(huán)趨于結(jié)束的語句;在for型循環(huán)中可由表達(dá)式3實(shí)現(xiàn)。(3)使用while型和do...while型循環(huán),while后面的括號(hào)內(nèi)應(yīng)說明循環(huán)結(jié)束的條件;在for型循環(huán)中可由表達(dá)式2說明。(4)一般情況下,三種循環(huán)可以互相代替。while語句更適合處理“當(dāng)”型循環(huán);do...while語句更適合處理“直到”型循環(huán);for語句書寫靈活、功能最強(qiáng),適合處理各種循環(huán)問題。使用循環(huán)結(jié)構(gòu)處理問題時(shí),通常需要考慮如下幾個(gè)關(guān)鍵點(diǎn):(1)進(jìn)入循環(huán)結(jié)構(gòu)前需要對(duì)循環(huán)控制變量賦初值。(2)循環(huán)條件表達(dá)式可以是任意類型,但是結(jié)果只能是0(假)和非0(真)兩種情況。(3)循環(huán)結(jié)構(gòu)中應(yīng)該有使循環(huán)趨于結(jié)束的語句,避免出現(xiàn)死循環(huán)。(4)當(dāng)循環(huán)體包含一條以上的語句時(shí),應(yīng)該用花括號(hào)限定,以復(fù)合語句的形式出現(xiàn)。4.3.3循環(huán)結(jié)構(gòu)的嵌套一個(gè)循環(huán)結(jié)構(gòu)內(nèi)包含另一個(gè)完整的循環(huán)結(jié)構(gòu),稱為循環(huán)結(jié)構(gòu)的嵌套。內(nèi)嵌的循環(huán)體中還可以繼續(xù)嵌套循環(huán),這就是多層循環(huán)嵌套。與選擇結(jié)構(gòu)嵌套的要求相同,循環(huán)嵌套必須是一個(gè)循環(huán)結(jié)構(gòu)包含另一個(gè)完整的循環(huán)結(jié)構(gòu),即兩個(gè)循環(huán)結(jié)構(gòu)可以嵌套但不可以交叉。4.3.4break語句與continue語句break語句不但可以使用在switch選擇結(jié)構(gòu)中,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論