《分支結(jié)構(gòu)程序設計》由會員分享,可在線閱讀,更多相關《分支結(jié)構(gòu)程序設計(8頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、分支結(jié)構(gòu)
分支結(jié)構(gòu)程序設計
教學目標
知識與技能:理解程序設計的分支結(jié)構(gòu)基本思想
掌握分支結(jié)構(gòu)語句特點
過程與方法:培養(yǎng)用算法分析問題的能力
能夠使用分支結(jié)構(gòu)繪制流程圖和編寫簡單的程序解決具體問題
情感態(tài)度與價值觀:
體會用結(jié)構(gòu)化方法解決數(shù)學問題的便捷性
明確結(jié)構(gòu)化在程序設計中的重要作用
激勵嘗試 使用多種方法解決問題,明確實踐是檢驗真理的唯一標準
培養(yǎng)良好的編程習慣和態(tài)度,增強集體觀念,在合作學習時,尊重別人的意見和勞動,培養(yǎng)學
2、生相互協(xié)作的集體精神。
教學重點:
理解程序設計的分支結(jié)構(gòu)基本思想
教學難點:
分支結(jié)構(gòu)實現(xiàn)語句的格式和功能
編寫簡單的程序的過程
教學過程:
知識點
必須落實的要點
選用例題、練習
例題、練習處理
分支
結(jié)構(gòu)
知識點
l 分支結(jié)構(gòu):根據(jù)給定條件是否成立而決定執(zhí)行不同步驟的算法結(jié)構(gòu)。
l 分支的條件設定
l 判斷框及規(guī)范使用
l 基本模式:
? 雙分支結(jié)構(gòu):根據(jù)給定條件是否成立,分別執(zhí)行不同語句塊的分支結(jié)構(gòu)。
? 單分支
3、結(jié)構(gòu):當給定條件成立時,執(zhí)行指定的語句塊,給定條件不成立時,直接退出的分支結(jié)構(gòu)。
l 流程圖規(guī)范畫法:
? 流程線,走直角,自上而下。
? 雙分支結(jié)構(gòu)中,條件判斷的是、非結(jié)果左右分列;單分支結(jié)構(gòu)中,條件判斷成立時,往下執(zhí)行預定步驟,否則跳過預定步驟。
? 無論單、雙分支都一定有判斷框和匯聚點,判斷框是選擇的開始,匯聚點是選擇的結(jié)束。
? 判斷框有一個入口,兩個出口,而分支結(jié)構(gòu)只有一個入口,即判斷框的入口,一個出口,即匯聚點的出口。
l 分支嵌套
【例
4、1】舉生活中需要作判斷與選擇的實例,例如上完體育課,如果是上午最后一節(jié),下課后去食堂吃飯;否則,進教室上課。
【例2】打印出從鍵盤輸入的兩個不相等的數(shù)中較大的數(shù)。(雙分支結(jié)構(gòu))
拓展練習題:
【練習1】求分段函數(shù)值
x2 x>3
5、
y=
2x+1 x<=3
學生可能在繪制流程圖時將“輸出y的值”這一個輸出框繪制兩次,分別出現(xiàn)在不同的分支中,要注意強調(diào)分析題目的會聚點在何處,規(guī)范學生的畫法。同樣在程序代碼中的語句“Print y”也無需出現(xiàn)在分支結(jié)構(gòu)的語句塊中。在分支結(jié)構(gòu)的最初幾節(jié)課中教師應注意規(guī)范學生的畫法和寫法。
【練習3】輸入一個數(shù)到變量a,輸出它的絕對值(不用絕對值函數(shù))。
【例4】輸入兩個不相等的數(shù)a,b,比較大小,將大數(shù)放在a中,小數(shù)放在b中,然后輸出a,b。(單分支結(jié)構(gòu))
【例5】某
6、超市促銷蘋果,購買一斤蘋果,為每斤3元,購買5斤以下每斤原價;超過5斤部分每斤打8折,輸入購買的斤數(shù),輸出應付款額。(雙分支結(jié)構(gòu))
【例6】分段函數(shù)問題。(分支嵌套)
1 (x>0)
y= 0 (x=0)
-1 (x<0)
【例7】購買地鐵車票:乘1-4 站 3元/位;5-9站 4元/位;9站以上5元/位;輸入人數(shù)person、站數(shù)n,輸出應付款pay。
7、
拓展練習題:
【練習1】某手機話費套餐規(guī)定:每月60元,可通話300分鐘,超過300分鐘的部分,另按每分鐘0.4元計算。鍵盤輸入當月通話時間(分鐘),計算當月實際需付的手機費。如果輸入的通話時間小于0,則應輸出“輸入數(shù)據(jù)有誤”的提示信息。
【練習2】輸入一元二次方程ax2+bx+c=0的系數(shù)a、b、c(a<>0),計算一元二次方程的根。
【例8】輸入三個不相等的數(shù)a,b,c ,將最大數(shù)賦值給變量max并輸出。
教師在講述本例題時,可以適當復習前一部分的邏輯表達式,
8、提示學生用邏輯表達式來作為分支的判斷條件。
學生在思考本題時可能會出現(xiàn)一些錯誤:
1、 用算法1可能會出現(xiàn)在嵌套分支中的ELSE語句處累贅出現(xiàn)判斷語句。
2、 用算法2的同學要注意他們在嵌套分支中的語句是否完整,可能會出現(xiàn)漏寫,由于比較多的嵌套語句,還要注意語句書寫的正確,首尾呼應。
3、 算法3學生不容易想到,但卻是最精煉的一種算法,可以嘗試提示不用嵌套結(jié)構(gòu)完成本題。但往往學生也會出現(xiàn)條件重復判斷的錯誤。
【例9】輸入一個三位數(shù)的整數(shù),將數(shù)字位置重新排列,組成一個盡可大的三位數(shù)。例如:輸入2
9、13,重新排列可得到盡可能大的三位數(shù)是321。
本例題是對學生思路的一種拓展,需要結(jié)合前面學習的函數(shù)與運算符,如mod運算符 和 int函數(shù)。教師可以提示學生這些運算符和函數(shù)的功能。編程的時候注意IF和END IF語句的格式與規(guī)范,不要因為嵌套,出現(xiàn)遺漏語句的錯誤。始終強調(diào)用縮進與對齊可以規(guī)范書寫格式,養(yǎng)成良好的編程習慣,避免錯誤。
【例1】從現(xiàn)實生活中引入需判斷的實際問題,此例目的是引出雙分支結(jié)構(gòu),出示雙分支流程圖。
流程圖:
從例題中引出分支結(jié)構(gòu)的概念:根據(jù)給定條件是否成立而決定執(zhí)行A或B框中的算法步驟,與順序結(jié)構(gòu)不同,執(zhí)行到分支
10、結(jié)構(gòu)時,在兩條可能的路徑中,根據(jù)條件是否成立而選擇其中一條執(zhí)行。任何一種高級語言都有相應的IF 語句實現(xiàn)分支結(jié)構(gòu)。IF 語句的一般格式:
IF <條件> THEN
<條件成立執(zhí)行的語句塊>
ELSE
<條件不成立時執(zhí)行的語句塊>
END IF
教師在講述分支結(jié)構(gòu)語句時,一定要強調(diào)IF和END IF的對應,學生容易在書寫時遺漏END IF。同時在本節(jié)課開始要強調(diào)分支結(jié)構(gòu)中語句塊采用縮進方法書寫,養(yǎng)成良好的編程書寫規(guī)范,可以減少錯誤。
【例2】引出單分支結(jié)構(gòu),并出示單分支流程圖。
流程圖:
從例題中引出單分支結(jié)構(gòu),根據(jù)給定條件,
11、當條件不滿足,不需要執(zhí)行任何操作。單分支的語句格式:
IF <條件> THEN
<條件成立執(zhí)行的語句塊>
END IF
討論單、雙分支結(jié)構(gòu)的區(qū)別和聯(lián)系。這時要注意兩種結(jié)構(gòu)的規(guī)范畫法。
【例2】理解條件與結(jié)果之間的對應關系
l 分析問題:
? 輸入什么數(shù)據(jù)?(輸入兩個不相等的數(shù),分別存放在變量a,b中)
? 處理什么問題?(比較a,b的大小,找出較大的一個數(shù))
? 輸出什么數(shù)據(jù)?(較大的那個數(shù))
l 設計算法:
比較變量a與變量b的大小,如果a大于b,則輸出變量a的值;否則,輸出變量b的值。
l 流程圖:
(學生可能不一
12、定將判斷條件寫成a>b,相應的分支語句也要變化。)
? 改變條件的寫法,或改變是否(T、F)的位置,理解判斷條件的寫法是很重要的,它與結(jié)果之間有聯(lián)動性。
? 流程圖:
(注意判斷條件的寫法,是根據(jù)分段函數(shù)的定義來確定的。)
Print y
l 流程圖:
(學生可能會在流程圖的畫法上出現(xiàn)錯誤,鞏固單分支結(jié)構(gòu)的規(guī)范畫法。)
【例4】為后續(xù)的三數(shù)比大小做準備。
l 分析問題:
? 輸入什么數(shù)據(jù)?(從鍵盤輸入兩個不相等的數(shù),分別存放在變量a、b中)
? 處理什么問題?(比較a、b的大小,把大的數(shù)
13、放入變量a,小的數(shù)放入變量b)
? 輸出什么數(shù)據(jù)?(變量a、b的值)
l 設計算法:
根據(jù)題意,判斷變量a與變量b的大小,若變量a的值大于變量b的值,則直接輸出變量a和變量b的值,否則交換變量a與變量b的值,然后輸出。用單分支結(jié)構(gòu)實現(xiàn)。
(學生可能會遺忘交換兩個變量值的典型算法,教師可以在本例題中提醒學生。)
【例5】注意表達式寫法。
l 分析問題:
? 輸入什么數(shù)據(jù)?(從鍵盤輸入購買的斤數(shù)weight)
? 處理什么問題?(按規(guī)定計算應付款額pay)
? 輸出什么數(shù)據(jù)?(應付款額pay)
l 設計算法:
? 判別蘋果的斤數(shù)是否超過5斤,如果小于等于5斤,則pay=wei
14、ght*3;否則pay=3*5+(weight-5)*3*0.8。
? 容易疏忽的地方
分支的會聚點,輸出應付款額。
l 流程圖:
從本題開始,流程圖中對分支條件的判斷結(jié)果用T和F表示,其中的T就是原來的“是”,F(xiàn)就是“否”。教師可以讓學生用這種方式來繪制流程圖。
【例6】分段函數(shù)學生容易理解,條件顯而易見,可以用數(shù)軸的辦法,讓學生觀察數(shù)值區(qū)域,選擇從大到小,或從小到大的判斷方法,用分支嵌套來實現(xiàn)。
流程圖:
【例7】分支嵌套學會劃分條件。
l 分析問題:
? 輸入什么數(shù)據(jù)?(輸入乘
15、車的人數(shù)person與乘車的站數(shù)n)
? 處理什么問題?(根據(jù)n范圍,計算應付款pay)
? 輸出什么數(shù)據(jù)?(應付款pay)
l 設計算法:
最重要的是判斷條件的劃分,切入點用哪個數(shù)值,選擇一個數(shù)據(jù)點,進行條件的劃分。
l 教學建議:
請同學討論并思考在分支結(jié)構(gòu)解決問題的關鍵是什么?教師在學生劃分完條件后,讓學生進行交流,并總結(jié)不管先判斷哪個條件,后判哪個條件,都要看到條件不成立時隱含著的條件,判斷過的無需反復進行判斷,但也不要漏掉哪段范圍,尤其是一個個的邊界值。
l 總結(jié):
條件的劃分是關鍵的,條件之間應做到不重復、不遺漏。
l 流程圖:
16、
l 流程圖:
【練習2】的選用比較接近高一學生的數(shù)學知識,既可以鍛煉他們對分支結(jié)構(gòu)的認識,又可以實踐將數(shù)學問題用計算機解決。
l 流程圖:略。
【例8】說明一題多解。
算法1
l 流程圖:
算法2:抓大放小逐步判斷。
l 部分代碼:
IF a>=b THEN
IF a>=c THEN
max=a
ELSE
max=c
END IF
ELSE
IF b>=c THEN
max=b
ELSE
max=c
END IF
END IF
算法3:擂臺法。
l 部分代碼:
max=a
IF b>max THEN
max=b
END IF
IF c>max THEN
max=c
END IF
算法2、3由學生自行完成流程圖,然后討論三種算法,得出各自的價值取向。
【例9】是將函數(shù)的應用、數(shù)的大小比較相結(jié)合的一道題目,用以對前面拓展練習的進一步變化,鍛煉學生思考解決題目、舉一反三的能力。
流程圖:略。
8