《Python電子教案4-1 程序的控制結(jié)構(gòu)》由會員分享,可在線閱讀,更多相關《Python電子教案4-1 程序的控制結(jié)構(gòu)(42頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第4章 程序的控制結(jié)構(gòu)程序的基本結(jié)構(gòu) 程序流程圖用一系列圖形、流程線和文字說明描述程序的基本操作和控制流程,它是程序分析和過程描述的最基本方式程序流程圖 起止框表示一個程序的開始和結(jié)束; 判斷框判斷一個條件是否成立,根據(jù)判斷結(jié)果選擇不同的執(zhí)行路徑 處理框表示一組處理過程; 輸入輸出框表示數(shù)據(jù)輸入或結(jié)果輸出;程序流程圖 注釋框增加程序的解釋; 流向線以帶箭頭直線或曲線形式指示程序的執(zhí)行路徑; 連接點將多個流程圖連接到一起,常用于將一個較大流程圖分割為若干部分。程序流程圖程序流程圖 順序結(jié)構(gòu)是程序按照線性順序依次執(zhí)行的一種運行方式,如圖4.3所示,其中S1和S2表示一個或一組順序執(zhí)行的語句。程序的
2、基本結(jié)構(gòu) 分支結(jié)構(gòu)是程序根據(jù)條件判斷結(jié)果而選擇不同向前執(zhí)行路徑的一種運行方式。由二分支結(jié)構(gòu)會組合形成多分支結(jié)構(gòu)。程序的基本結(jié)構(gòu) 循環(huán)結(jié)構(gòu)是程序根據(jù)條件判斷結(jié)果向后反復執(zhí)行的一種運行方式,根據(jù)循環(huán)體觸發(fā)條件不同,循環(huán)結(jié)構(gòu)包括條件循環(huán)和遍歷循環(huán)結(jié)構(gòu)。程序的基本結(jié)構(gòu) 對于一個計算問題,可以用IPO描述、流程圖描述或者直接以Python代碼方式描述。本書僅對這幾種描述進行介紹,功能簡單的問題建議大家直接編寫Python代碼,功能復雜的問題讀者可以采用IPO描述或流程圖描述為手段。下面給出3個微實例,通過不同的描述方法具體解釋程序的三種基本結(jié)構(gòu)。程序的基本結(jié)構(gòu)實例 根據(jù)圓的半徑計算圓的面積和周長。圖4.
3、6分別給出了該問題的IPO描述、流程圖描述和Python代碼描述。微實例4.1:圓面積和周長的計算。輸入輸入:圓半徑R處理處理:圓面積:S = *R*R圓周長:L = 2*R輸出輸出:圓面積S、周長L 程序的描述方式主要有三類,分別是自然語言、流程圖和偽代碼。 自然語言描述方式指使用人類語言直接描述程序,IPO描述是這類的一種。優(yōu)點是靈活自然,缺點是比較繁瑣,容易出現(xiàn)二義性,一個描述可以產(chǎn)生多種不同的程序代碼。 流程圖描述是程序最直觀易懂的表達方式,主要適用于較短算法。優(yōu)點是直觀、清晰且邏輯確定,缺點是流程圖繪制比較繁瑣,當程序較大時流程圖會很復雜,反而降低了表達的清晰性。程序的基本結(jié)構(gòu)實例
4、偽代碼描述是介于自然語言與編程語言之間的一種算法描述語言。使用偽代碼不用拘泥于具體編程語言,對整個算法運行過程的描述最接近自然語言。與直接的自然語言描述不同,偽代碼在保持程序結(jié)構(gòu)的情況下描述算法程序的基本結(jié)構(gòu)實例 計算用戶給定實數(shù)的絕對值。圖4.7分別給出了該計算問題的IPO描述、流程圖描述和Python代碼描述。微實例4.2:實數(shù)絕對值的計算微實例4.3:整數(shù)累加。輸入:正整數(shù)R處理:S=1+2+3+R輸出:輸出S 計算1到正整數(shù)R的算術和。圖4.8分別給出了該計算問題的IPO描述、流程圖描述和Python代碼描述。 IPO描述、流程圖描述和Python代碼描述是解決計算問題的三種描述方式,
5、細致程度逐步遞進。IPO描述主要用于區(qū)分程序的輸入輸出關系,重點在于結(jié)構(gòu)劃分,主要采用自然語言描述。流程圖描述側(cè)重于描述算法的具體流程關系,流程圖的結(jié)構(gòu)化關系相比自然語言描述更進一步,有助于闡述算法的具體操作過程。Python代碼描述是最終的程序產(chǎn)出,最為細致。程序的基本結(jié)構(gòu)實例程序的分支結(jié)構(gòu) Python中if語句的語法格式如下:if : 是if條件滿足后執(zhí)行的一個或多個語句序列,中語句通過與if所在行形成縮進表達包含關系。單分支結(jié)構(gòu): if語句 If語句首先評估的結(jié)果值,如果結(jié)果為True,則執(zhí)行里的語句序列,然后控制轉(zhuǎn)向程序的下一條語句。如果結(jié)果為False,里的語句會被跳過。if語句的
6、控制過程如圖4.9所示單分支結(jié)構(gòu): if語句 if語句中執(zhí)行與否依賴于條件判斷。但無論什么情況,控制都會轉(zhuǎn)到if語句后與該語句同級別的下一條語句。 if語句中部分可以使用任何能夠產(chǎn)生True或False的語句或函數(shù)。形成判斷條件最常見的方式是采用關系操作符。單分支結(jié)構(gòu): if語句 Python語言共有6個關系操作符,見表4.1所示。單分支結(jié)構(gòu): if語句操作符數(shù)學符號操作符含義小于=大于等于大于=等于!=不等于 一個簡化版的空氣質(zhì)量標準采用三級模式:0-35為優(yōu),35-75為良,75以上為污染。人們也許不關心PM2.5指數(shù)值具體為多少,更關心空氣質(zhì)量到底怎樣。計算機可以通過PM2.5指數(shù)分級發(fā)
7、布空氣質(zhì)量提醒。微實例4.4:PM 2.5空氣質(zhì)量提醒(1) 該問題的IPO描述如下:輸入:接收外部輸入PM2.5值處理:if PM2.5值 = 75,打印空氣污染警告if 35 = PM2.5值 75,打印空氣污染警告if PM2.5值 35,打印空氣質(zhì)量優(yōu),建議戶外運動輸出:打印空氣質(zhì)量提醒 微實例4.4:PM 2.5空氣質(zhì)量提醒(1)微實例4.4:PM 2.5空氣質(zhì)量提醒(1) 微實例4.4展示了用數(shù)字進行條件比較的例子,字符或字符串也可以用于條件比較。字符串比較本質(zhì)上是字符串對應的Unicode編碼的比較,因此,字符串的比較按照字典順序進行。 例如,英文大寫字符對應的Unicode編碼
8、比小寫字符小。以下是一些例子:微實例4.4:PM 2.5空氣質(zhì)量提醒(1) Python中if-else語句用來形成二分支結(jié)構(gòu),語法格式如下:if :else: 二分支結(jié)構(gòu): if-else語句 是在if條件滿足后執(zhí)行的一個或多個語句序列,是if條件不滿足后執(zhí)行的語句序列。 二分支語句用于區(qū)分的兩種可能True或者False,分別形成執(zhí)行路徑。二分支結(jié)構(gòu): if-else語句二分支結(jié)構(gòu): if-else語句 二分支結(jié)構(gòu)還有一種更簡潔的表達方式,適合通過判斷返回特定值,語法格式如下: if else 其中,一般是數(shù)字類型或字符串類型的一個值,微實例4-5可以改造為:二分支結(jié)構(gòu): if-else語
9、句 Python的if-elif-else描述多分支結(jié)構(gòu),語句格式如下,如圖4.10所示if : elif : . else: 多分支結(jié)構(gòu): if-elif-else語句 多分支結(jié)構(gòu)是二分支結(jié)構(gòu)的擴展,這種形式通常用于設置同一個判斷條件的多條執(zhí)行路徑。 Python依次評估尋找第一個結(jié)果為True的條件,執(zhí)行該條件下的語句塊,同時跳過整個if-elif-else結(jié)構(gòu),執(zhí)行后面的語句。如果沒有任何條件成立,else下面的語句塊被執(zhí)行。else子句是可選的。多分支結(jié)構(gòu): if-elif-else語句 微實例4.4通過多條獨立的if語句對同一個變量PM進行判斷,這種情況更適合多分支結(jié)構(gòu),改造后的代碼
10、如下:多分支結(jié)構(gòu): if-elif-else語句實例5: 身體質(zhì)量指數(shù)BMI 身體質(zhì)量指數(shù)BMI BMI值可以“客觀的”衡量個人的肥胖程度或者說健康程度。世界衛(wèi)生組織(WHO)根據(jù)對全球人口體重的統(tǒng)計認為,BMI值低于18.5 kg/m2時屬于“過輕”,表明個體可能營養(yǎng)不良或者飲食無法保障;BMI值高于25 kg/m2時屬于“過重”。分類國際BMI值(kg/m2)國內(nèi)BMI值(kg/m2)偏瘦18.5=30=28身體質(zhì)量指數(shù)BMI 本實例編寫一個根據(jù)體重和身高計算BMI值的程序,并同時輸出國際和國內(nèi)的BMI指標建議值。該問題的IPO描述如下:輸入:身高和體重值處理:計算BMI值,并根據(jù)BMI指
11、標分類找到合適分類輸出:打印指標分類信息身體質(zhì)量指數(shù)BMI實例代碼5.1實例代碼5.1程序執(zhí)行后的效果如下: 實例代碼5.1采用了多分支結(jié)構(gòu)對BMI數(shù)值按照不同區(qū)間范圍進行分類,這種采用if-elif-else分支語句進行程序設計的方式十分常見。盡管需要同時打印國際和國內(nèi)兩套BMI標準,程序中采用兩個if-elif-else語句分別計算兩類不同BMI值。這種做法的好處是代碼清晰明了,容易調(diào)試。身體質(zhì)量指數(shù)BMI實例代碼5.2 程序執(zhí)行后的效果如下: 比較實例代碼5.1和實例代碼5.2可以看到,if語句的運用主要與程序編寫者對問題的理解及算法設計有關,采用一組if語句將兩套BMI指標融合在一起,這實際上是算法的改變。即使對專業(yè)程序員來說,程序的簡潔性和可讀性都比更少的代碼行數(shù)重要,這里,推薦采用實例代碼5.1的方式編寫程序。身體質(zhì)量指數(shù)BMI 若有不當之處,請指正,謝謝!若有不當之處,請指正,謝謝!