關于算法的教學建議 (2)_第1頁
關于算法的教學建議 (2)_第2頁
關于算法的教學建議 (2)_第3頁
關于算法的教學建議 (2)_第4頁
關于算法的教學建議 (2)_第5頁
已閱讀5頁,還剩103頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、關于算法的教學建議(一)算法基礎知識點必須落實的要點選用例題、練習例題、練習處理算法與算法描述l 算法的概念與特征:Ø 算法:為解決某一問題而設計的確定的有限的步驟。Ø 主要特征:² 有窮性: 一個算法必須保證執行有限步驟之后結束。 ² 確切性: 算法的每一步驟必須有確切的含義。² 能行性: 算法的每一步驟都能有效地執行,并得到確定的結果。² 輸入:一個算法有0個或多個輸入。² 輸出:一個算法有一個或多個輸出,沒有輸出的算法是毫無意義的。 l 算法的描述方法:Ø 用自然語言表達;Ø 用流程圖表達;

2、6; 用程序表達。l 流程圖最常用的符號:Ø 起止框;Ø 輸入輸出框;Ø 處理框;Ø 判斷框;Ø 流程線和連接圈。【例1】渡河問題。一個農夫帶著一條狼、一只山羊和一籃蔬菜過河,但只有一條小船,并且每次只能讓農夫帶一樣東西過河。農夫在場的情況下一切相安無事,一旦農夫不在,狼會吃羊,羊會吃蔬菜。問聰明的農夫如何解決過河問題。【例2】用自然語言描述:從鍵盤輸入兩數,求兩數之和并輸出。【例3】將上題用流程圖來描述。【例4】提供一種語言,編寫一個實現求和問題的程序,說明如何用程序描述算法。【例1】采用游戲方式,讓學生體驗解決此問題設計的步驟,引入算法概念

3、,從而說明算法的主要特征。【例2】按解決問題的先后次序描述步驟。說明:此時,只宜出現順序結構。【例3】主要是依據自然語言畫流程圖,降低直接畫流程圖的難度。本例中強調各圖形符號的作用,規范畫法,尤其是流程線的自上而下的流向。【例4】 教師可以選擇較簡單的典型語言環境(如VB,TC,QB等)。華師大版教材中的問題:P37三個end。用計算機解決問題的一般過程l 用計算機解決問題的一般過程:Ø 分析問題;Ø 設計算法;Ø 編寫程序;Ø 上機調試和維護。l 算法中基本步驟:Ø 輸入處理輸出。【例5】已知圓半徑,求面積。【例6】上例中增加求周長,設計出算

4、法,并用流程圖表示。【例5】按解決問題的過程進行分析。l 分析問題:分析解決問題所需要的數據(條件)輸入;確定要計算機解決什么問題,即“做什么”處理;明確最后得到的結果輸出。此例中要求輸入圓半徑,計算圓面積,輸出圓面積。l 設計算法: 設計出解決某一問題的一組(有限個)求解步驟,即怎么做。本例用計算圓面積公式即可得到結果。請學生用自然語言與流程圖分別描述出來。需指出的是,為計算機設計算法就必須依據計算機的工作原理(馮·諾依曼型計算機),因為設計的算法和程序最終要讓計算機去執行的。有些問題的算法計算機與人工的方法是不同的,例如:記錄原始數據和中間結果,計算機要利用存儲器,而人工需要紙和

5、筆;又如解方程,計算機只能根據公式進行數值運算而人工則能進行代數運算。l 編寫程序(略)。本例中“輸入半徑”、“計算面積”、“輸出面積”等步驟,流程圖中只能用文字表達,暫不涉及變量及表示變量的字母,但需強調的是處理后輸出的必要性。【例6】處理時,學生可能會畫出兩個流程圖,此時應說明:可在一個流程圖中實現輸出兩個結果。常量與變量名l 常量:指在程序執行過程中事先設置、其值不發生改變的量,即一個具體的數值。l 變量:Ø 變量:指在程序運行過程中,取值可以改變的量,一般用字母表示。在計算機內部變量對應了一定的存儲單元。Ø 變量命名的基本規則² 只能由字母、數字和下劃線三

6、類字符組成,但第一個字符必須是字母。² 字母大小寫都可以,變量名長度適當。Ø 變量名與實際意義Ø 變量類型【例7】上例中設圓的半徑為5cm,如果半徑用字母r表示,周長用字母c表示,面積用字母s表示,求圓的周長和面積。設計出算法,并用流程圖表示。【例8】判斷下列變量名是否正確。a,c1,class*1, sum,3f,grade、aa , data, a/a。【例9】舉些生活中常用數據用變量來表示,并起一個合適變量名。例如:mark-成績數據,name-姓名,no-學號等。【例10】上述變量分別是哪種變量的類型。【例7】分清常量與變量。Ø 本例中數字5就是

7、常量。Ø 本例中r、c、s就是變量。Ø 流程圖中,可以把“輸入半徑”、“計算周長”、“計算面積”、“輸出面積”改為“輸入r”、“計算c”、“計算s”、“輸出s”。【例8】熟悉變量名的命名規則。【例9】確定合適變量名,是便于理解與記憶。【例10】變量的類型要求知道數值型、字符型兩種。變量的賦值l 變量賦值的格式:Ø 變量常量 或變量變量。Ø 變量=常量 或變量=變量l 功能:將賦值號右邊常量的值或變量的值存放在左邊變量名對應的存儲單元中,成為左邊變量的值。【例11】 a=3 a=5 【例12】b=a c=a d=ab=3【例11】說明變量的變量名與變量值。

8、a 變量名3 變量值存儲單元Ø 變量名實際上是一個符號地址,對應一定的內存儲單元。Ø 變量值指內存儲單元中的值。 Ø 變量一般先賦值,后調用,重新賦值后,變量的值改變。【例12】說明變量的值“取之不盡,一沖就丟”。Ø 變量a的值賦給b后,變量a中的值還在,可以繼續賦給c與d ,說明變量值可以重復調用,變量值“取之不盡”,與“讀”存儲器對應。Ø 當執行到b=3時,b變量值中原來的值被改寫為3了,原來值沒有了,說明變量值一旦重新賦值后,立即被新值代替,變量值“一沖就丟”,與“寫”存儲器對應。運算符與表達式l 運算符及運算次序:Ø 算術運算

9、符 +、-、*、/、mod。Ø 字符運算符 &或+。Ø 關系運算符 >、<、>=、<=、=、<>。Ø 邏輯運算符 and、or、not。Ø 算術運算最優先,關系運算次之,最后為邏輯運算,括號可以改變次序。l 表達式:Ø 表達式:指用運算符將常量、變量連接起來有意義的式子。Ø 表達式的類型:² 算術表達式。² 字符表達式。² 關系表達式。² 邏輯表達式。l 采用列表法記錄變量值變化的過程與結果【例13】寫出變量a,b,c,d的值。(1)a=2 (2)a=

10、2 b=a+a b=3 c=a+b b=a+bb=a-b a=a-b(3)a=”開” (4)a=0b=”放” a=a+3c=a+b d=b+a【例14】判斷下列關系表達式結果是true或false。(1)30>3(2)12<=5(3)30>3 and 12<=530>3 or 12<=5【例15】說出下列表達式運算的次序。a+b>c and b+c>a and c+a>b【例16】表達式表示法: sa*h/2或s=a*h/2aa+2或a=a+2【例17】將下列描述用賦值語句表示。(1)設圓的半徑為5cm,將它存放在變量r中,將圓周長賦值給變

11、量c,面積賦值給變量s。(2)假設一元二次方程的系數存放在變量a,b,c,將判別式賦給變量d。(3)將“信息科技”字符信息賦值給變量title。(4)某商店一商品價格存放在變量price中,將price打對折,賦值給變量price中。(5)將國民生成總值gnp翻2翻。【例18】某學校需購買n套學生課桌椅,已知每套單價200元,另加總價的3.5%的送貨費,請計算學校應付款是多少?請畫出流程圖。(單價用變量j表示,套數用n表示,總價用m表示,應付款用p表示)【例13】(1)說明賦值語句中賦值號右邊可以是一個式子,引出運算符與表達式。Ø 表達式可以是單個的常量或變量。Ø 關系表達

12、式與邏輯表達式的舉例在【例14】中。Ø 可以采用列表法記錄變量值變化的過程與結果,例1(2)abcda=22b=33b=a+b5b=a-b-3a=a-b5當變量值變化時列出新值,取值時取出最后一次的結果。【例14】知道邏輯型常量true或false,以及關系表達式的結果為邏輯值true或false知道。Ø 關系運算符與邏輯運算符。Ø 關系運算和邏輯運算的結果是邏輯值true或false。Ø 邏輯運算次序 先not 后and 再or Ø 關系運算符與邏輯運算符可在分支結構單元學習時再舉些實例。【例15】各類運算次序。 算術運算最優先,關系運算次之

13、,最后為邏輯運算,括號可以改變次序。【例16】兩種表示法的含義相同,都是將符號右邊的表達式的值賦給左邊的變量,要注意的是符號左右用同一字母表示的變量的含義和值都不同。賦值語句格式可統一為:變量=<表達式>,先運算,后賦值。【例17】為以后的例題準備。Ø 學生容易將運算符*省略掉。Ø 字符類型變量的賦值。Ø p1=price/2 price=p1 p1起了過渡的作用,在算法中可以寫成price=price/2 ,說明同一變量可以不斷地反復地進行賦值,變量值取最新(近)一次賦值為準,若學生不能理解可以先給price賦一個確定值500,然后一一列出賦值后變量

14、的值。Ø 不引進累加器和計數器,在循環結構單元中說明。【例18】按計算機處理問題的一般過程。l 分析問題:輸入:所需要的數據單價是已知的,套數需從鍵盤輸入。處理:計算應付款,應付款= 總價+總價*0.035,總價=單價*套數 ;(也可寫成一個表達式:應付款=單價*套數*1.035 )。輸出:應付款。l 設計算法: 先用自然語言描述,再畫出流程圖,檢查流程圖的規范性。注意表達式中乘號的寫法。根據教學實際情況,教師可更改流程圖中的步驟。l 編寫程序(略)。l 上機調試與維護(略)。說明:這部分教學中,一定要注意以下幾點 有關概念要注意準確和清晰,切忌模糊,使學生一開始就能有正確的認識。

15、要注意循序漸進,還沒有出現的概念和知識,決不能事先應用。 各知識點的落實,最后要在解決問題的流程圖中統一體現。關于算法的教學建議(二)順序結構知識點必須落實的要點選用例題、練習例題、練習處理順序結構l 順序結構: 嚴格按照先后順序執行各個步驟的算法結構。l 常用函數Ø sqr(x)算術平方根 Ø abs(x)絕對值Ø int(x)取整函數【例1】鍵盤輸入一個正方形的邊長a,求該正方形與其內切圓所夾部分的面積并輸出。選用例題:一物體以速度v米/秒勻速運動,求經過t秒后物體運動的距離s。【例2】鍵盤輸入一個二位正整數n,輸出它的十位數x。【例3】輸入任意一個三位正整數

16、n,輸出這個三位數各位數字之和total。例如:輸入456,輸出結果為15。可選用例題:輸入任意一個三位正整數,將它們反向輸出。例輸入456,輸出654。【例4】輸入一元二次方程的系數a、b、c(確保b2-4ac>0),計算并輸出兩個實根x1、x2。可選用例題:(1)輸入平面直角坐標系中的兩點的坐標a(x1,y1)、b(x2,y2), 計算并輸出兩點間的距離L。(2)已知三角形三條邊的長a、b、c,利用海倫公式求三角形面積。其中s=(a+b+c)/2【例5】交換兩個變量的值。【例6】求銀行利息:n元人民幣存一年,到期后領取的總金額是多少?可得利息多少?假設年利率為4.14%。【例1】利用

17、一般數學或物理公式進行計算。復習、鞏固變量、變量值、表達式。l 分析問題:Ø 輸入什么數據?(正方形邊長a)Ø 處理什么問題?(計算正方形與其內切圓所夾部分面積)Ø 輸出什么數據?(所求得的面積)l 設計算法:根據數學知識知道:正方形面積s1= a2,圓面積s2=a2/4,所夾部分面積s=s1-s2。l 流程圖: 【例2】利用取整函數取十位數。x=int(n/10)【例3】利用取整函數取各位數字。l 分析問題:Ø 輸入什么數據?(三位正整數n)Ø 處理什么問題?(分別求出各位數字,并計算它們的和total)Ø 輸出什么數據?(所求得的

18、和total)l 設計算法:百位數 a=int(n/100);十位數 b=int(n-a*100)/10);個位數 c=n-a*100-b*10;total=a+b+c。Ø 注:除了用取整函數外,還可以與取余數運算符mod結合使用。個位數 c=n mod 10;十位數 b=(int(n/10) mod 10;百位數 a=int(n/100)。l 流程圖:【例4】用帶函數的數學公式計算。l 分析問題Ø 輸入什么數據?(系數a、b、c,保證b2-4ac>0)Ø 處理什么問題?(計算方程的兩個實根x1和x2)Ø 輸出什么數據?(所求得的兩個實根x1和x2

19、)l 設計算法:根據數學知識得知:d=b*b-4*a*c;x1=(-b+sqr(d)/2/a;x2=(-b-sqr(d)/2/a。或 x1=(-b+sqr(d)/(2*a);x2=(-b-sqr(d)/(2*a)。注意表達式的寫法,表達式中的(2*a)學生容易漏掉()。l 流程圖 :【例5】實現的方法有多種:Ø 借用第三個變量先試著直接交換,a=1,b=2,a=b,b=a。 用表格跟蹤變量變化過程,結果變量a與b值都為2,原因就是“一沖就丟”。aba=11b=22a=b2b=a2為了防止有用的數據丟失,預先將a的值保護起來,可以引入使用第三個變量t,將a值暫存。次序如圖所示,寫出語句

20、。a b t t=a a=bb=tØ 寫出下列運行后a與b的值a=3b=5a=a+bb=a-ba=a-ba 與b 的值分別為多少?Ø 思考還有什么方法解決?并注意學生在提出其它方法是否有條件的限制。【例6】解決實例中所需數據的來源。Ø 數據怎么來?一是在程序中直接賦值,二是程序運行中從輸入設備讀取。此例中年利率值確定不變,可以直接賦值給一變量p,而存款n的值由用戶來決定,需從鍵盤輸入,以此增加程序通用性。Ø 在表達式中用到年利率變量時可直接用數值表示,無需用利息變量。Ø 強調輸出的必要性。Ø 檢查流程圖的規范性。說明:這部分教學中,一

21、定要注意以下幾點: 順序結構學生不難理解,因此,在這部分教學過程中,注意鞏固有關變量、變量值、表達式的相關知識,以及有關函數的知識。 結合順序結構,讓學生進一步體會計算機解決問題的環節:輸入處理輸出,后面分支結構和循環結構主要解決處理環節中的各種變化,在順序結構中,把輸入、輸出環節的問題解決,就能為后兩種結構學習掃除障礙。 取整函數int(x)和mod運算的應用,交換兩個變量的值是解決問題中常用工具和算法,學生理解了這部分內容,就為以后應用創造了條件。關于算法的教學建議(三)分支結構知識點必須落實的要點選用例題、練習例題、練習處理分支結構l 分支結構:根據給定條件是否成立而決定執行不同步驟的算

22、法結構。l 分支的條件設定l 判斷框及規范使用l 基本模式: Ø 雙分支結構:根據給定條件是否成立,分別執行不同語句塊的分支結構。Ø 單分支結構:當給定條件成立時,執行指定的語句塊,給定條件不成立時,直接退出的分支結構。l 流程圖規范畫法:Ø 流程線,走直角,自上而下。Ø 雙分支結構中,條件判斷的是、非結果左右分列;單分支結構中,條件判斷成立時,往下執行預定步驟,否則跳過預定步驟。Ø 無論單、雙分支都一定有判斷框和匯聚點,判斷框是選擇的開始,匯聚點是選擇的結束。Ø 判斷框有一個入口,兩個出口,而分支結構只有一個入口,即判斷框的入口,一

23、個出口,即匯聚點的出口。l 分支嵌套【例1】舉生活中需要作判斷與選擇的實例,例如上完體育課,如果是上午最后一節,下課后去食堂吃飯;否則,進教室上課。華師大版本的教材中,對于分支結構沒有特別的列出具體的例題與分析方法,地圖版教材中分支結構引用的是“判斷密碼是否正確”。但學生往往會對該例題出現理解的錯誤,以及在寫語句時會出現忽略定義字符型這樣的錯誤,建議先用現實生活中的實際問題引入,然后引出雙分支結構,通過雙分支結構再引出單分支結構。講述完兩種分支結構后再用例題鞏固。【例2】出門帶傘問題:如果下雨,帶傘后出門,否則直接出門。【例3】打印出從鍵盤輸入的兩個不相等的數中較大的數。(雙分支結構)拓展練習

24、題:【練習1】求分段函數值 x2 x>3 y=2x+1 x<=3 學生可能在繪制流程圖時將“輸出y的值”這一個輸出框繪制兩次,分別出現在不同的分支中,要注意強調分析題目的會聚點在何處,規范學生的畫法。同樣在程序代碼中的語句“Print y”也無需出現在分支結構的語句塊中。在分支結構的最初幾節課中教師應注意規范學生的畫法和寫法。【練習2】輸入一個數到變量a,輸出它的絕對值(不用絕對值函數)。【例4】輸入兩個不相等的數a,b,比較大小,將大數放在a中,小數放在b中,然后輸出a,b。(單分支結構)【例5】某超市促銷蘋果,購買一斤蘋果,為每斤3元,購買5斤以下每斤原價;超過5斤部分每斤打8

25、折,輸入購買的斤數,輸出應付款額。(雙分支結構)【例6】分段函數問題。(分支嵌套) 1 (x>0)y= 0 (x=0) -1 (x<0)【例7】購買地鐵車票:乘1-4 站 3元/位;5-9站 4元/位;9站以上5元/位;輸入人數person、站數n,輸出應付款pay。拓展練習題:【練習1】某手機話費套餐規定:每月60元,可通話300分鐘,超過300分鐘的部分,另按每分鐘0.4元計算。鍵盤輸入當月通話時間(分鐘),計算當月實際需付的手機費。如果輸入的通話時間小于0,則應輸出“輸入數據有誤”的提示信息。【練習2】輸入一元二次方程ax2+bx+c=0的系數a、b、c(a<>0

26、),計算一元二次方程的根。本題與地圖版教材中的例題相同,但須在前幾節課的鋪墊下進行練習。【例8】輸入三個不相等的數a,b,c ,將最大數賦值給變量max并輸出。教師在講述本例題時,可以適當復習前一部分的邏輯表達式,提示學生用邏輯表達式來作為分支的判斷條件。學生在思考本題時可能會出現一些錯誤:1、 用算法1可能會出現在嵌套分支中的ELSE語句處累贅出現判斷語句。2、 用算法2的同學要注意他們在嵌套分支中的語句是否完整,可能會出現漏寫,由于比較多的嵌套語句,還要注意語句書寫的正確,首尾呼應。3、 算法3學生不容易想到,但卻是最精煉的一種算法,可以嘗試提示不用嵌套結構完成本題。但往往學生也會出現條件

27、重復判斷的錯誤。【例9】輸入一個三位數的整數,將數字位置重新排列,組成一個盡可大的三位數。例如:輸入213,重新排列可得到盡可能大的三位數是321。本例題是對學生思路的一種拓展,需要結合前面學習的函數與運算符,如mod運算符 和 int函數。教師可以提示學生這些運算符和函數的功能。編程的時候注意IF和END IF語句的格式與規范,不要因為嵌套,出現遺漏語句的錯誤。始終強調用縮進與對齊可以規范書寫格式,養成良好的編程習慣,避免錯誤。 本例也可以不用邏輯表達式作為判斷條件和分支嵌套,而是將三個數字重新排列后,得到所需的三位數。【例1】從現實生活中引入需判斷的實際問題,此例目的是引出雙分支結構,出示

28、雙分支流程圖。流程圖:從例題中引出分支結構的概念:根據給定條件是否成立而決定執行A或B框中的算法步驟,與順序結構不同,執行到分支結構時,在兩條可能的路徑中,根據條件是否成立而選擇其中一條執行。任何一種高級語言都有相應的IF 語句實現分支結構。IF 語句的一般格式:IF <條件> THEN <條件成立執行的語句塊>ELSE <條件不成立時執行的語句塊>END IF教師在講述分支結構語句時,一定要強調IF和END IF的對應,學生容易在書寫時遺漏END IF。同時在本節課開始要強調分支結構中語句塊采用縮進方法書寫,養成良好的編程書寫規范,可以減少錯誤。【例2】引

29、出單分支結構,并出示單分支流程圖。流程圖:從例題中引出單分支結構,根據給定條件,當條件不滿足,不需要執行任何操作。單分支的語句格式:IF <條件> THEN <條件成立執行的語句塊>END IF討論單、雙分支結構的區別和聯系。這時要注意兩種結構的規范畫法。【例3】理解條件與結果之間的對應關系。l 分析問題:Ø 輸入什么數據?(輸入兩個不相等的數,分別存放在變量a,b中)Ø 處理什么問題?(比較a,b的大小,找出較大的一個數)Ø 輸出什么數據?(較大的那個數)l 設計算法:比較變量a與變量b的大小,如果a大于b,則輸出變量a的值;否則,輸出變

30、量b的值。l 流程圖:(學生可能不一定將判斷條件寫成a>b,相應的分支語句也要變化。)l 程序代碼:a=InputBox(“請輸入第一個數”)b=InputBox(“請輸入第二個數”)IFa>b THEN Print aELSEPrint bEND IFØ 改變條件的寫法,或改變是否(T、F)的位置,理解判斷條件的寫法是很重要的,它與結果之間有聯動性。l 流程圖:(注意判斷條件的寫法,是根據分段函數的定義來確定的。)l 程序代碼:x=InputBox(“請輸入x的值”)IF x>3 THEN y=x*xELSEy=2*x+1END IF Print yl 流程圖:(

31、學生可能會在流程圖的畫法上出現錯誤,鞏固單分支結構的規范畫法。)l 程序代碼:a=InputBox(“請輸入一個數”)IF a<0 THEN a=-aEND IF Print a【例4】為后續的三數比大小做準備。l 分析問題:Ø 輸入什么數據?(從鍵盤輸入兩個不相等的數,分別存放在變量a、b中)Ø 處理什么問題?(比較a、b的大小,把大的數放入變量a,小的數放入變量b)Ø 輸出什么數據?(變量a、b的值)l 設計算法:根據題意,判斷變量a與變量b的大小,若變量a的值大于變量b的值,則直接輸出變量a和變量b的值,否則交換變量a與變量b的值,然后輸出。用單分支結

32、構實現。l 流程圖:(學生可能會遺忘交換兩個變量值的典型算法,教師可以在本例題中提醒學生。)l 程序代碼:a=InputBox(“請輸入第一個數”) b=InputBox(“請輸入第二個數”) IF a<b THEN a=a+bb=a-ba=a-bEND IFPrint a,b【例5】注意表達式寫法。l 分析問題:Ø 輸入什么數據?(從鍵盤輸入購買的斤數weight)Ø 處理什么問題?(按規定計算應付款額pay)Ø 輸出什么數據?(應付款額pay)l 設計算法:Ø 判別蘋果的斤數是否超過5斤,如果小于等于5斤,則pay=weight*3;否則pay

33、=3*5+(weight-5)*3*0.8。 Ø 容易疏忽的地方分支的會聚點,輸出應付款額。l 流程圖:l 程序代碼:weight=InputBox(“請輸入購買蘋果的斤數:”)IF weight<=5 THEN pay=weight*3ELSEpay=3*5+(weight-5)*3*0.8END IF Print pay從本題開始,流程圖中對分支條件的判斷結果用T和F表示,其中的T就是原來的“是”,F就是“否”。教師可以讓學生用這種方式來繪制流程圖。【例6】分段函數學生容易理解,條件顯而易見,可以用數軸的辦法,讓學生觀察數值區域,選擇從大到小,或從小到大的判斷方法,用分支嵌

34、套來實現。l 流程圖:l 程序代碼:x=InputBox(“請輸入x的值”)IF x<0 THEN y=-1ELSE IF x=0 THEN y=0ELSE y=1 END IFEND IFPrint y【例7】分支嵌套學會劃分條件。l 分析問題:Ø 輸入什么數據?(輸入乘車的人數person與乘車的站數n)Ø 處理什么問題?(根據n范圍,計算應付款pay)Ø 輸出什么數據?(應付款pay)l 設計算法:最重要的是判斷條件的劃分,切入點用哪個數值,選擇一個數據點,進行條件的劃分。l 教學建議:請同學討論并思考在分支結構解決問題的關鍵是什么?教師在學生劃分完條

35、件后,讓學生進行交流,并總結不管先判斷哪個條件,后判哪個條件,都要看到條件不成立時隱含著的條件,判斷過的無需反復進行判斷,但也不要漏掉哪段范圍,尤其是一個個的邊界值。 l 總結:條件的劃分是關鍵的,條件之間應做到不重復、不遺漏。l 流程圖:l 程序代碼:person=InputBox(“請輸入乘車的人數:”)n=InputBox(“請輸入乘車的站數”)IF n<=4 THEN pay=person*3ELSE IF n<=9 THEN pay=person*4ELSEpay=person*5END IFEND IFPrint payl 流程圖:l 程序代碼:t=InputBox(“

36、請輸入通話的時間:”)IF t<=0 THEN Print “輸入數據有誤”ELSEIF t<=300 THEN m=60ELSEm=60+(t-300)*0.4END IFEND IFPrint m【練習2】的選用比較接近高一學生的數學知識,既可以鍛煉他們對分支結構的認識,又可以實踐將數學問題用計算機解決。l 流程圖:略。l 程序代碼:a=InputBox(“請輸入第一個系數”)b=InputBox(“請輸入第二個系數”)c=InputBox(“請輸入第三個系數”)d=b*b-4*b*cIF d<0 THEN Print “方程無實數解。”ELSE IF d=0 THEN

37、x=-b/(2*a) Print “方程有兩個相同的實數解:”,x,x ELSEx1=(-b+sqr(d)/(2*a)x2=(-b-sqr(d)/(2*a)Print “方程有兩個不同的實數解:”,x1,x2END IFEND IF【例8】說明一題多解。算法1l 流程圖:ll 程序代碼:a=InputBox(“請輸入第一個數”)b=InputBox(“請輸入第二個數”)c=InputBox(“請輸入第三個數”)IF a>=b and a>=c THEN max=aELSE IF b>=a and b>=c THEN max=b ELSE max=c END IFEND

38、IFPRINT max算法2:抓大放小逐步判斷。l 部分代碼:IF a>=b THEN IF a>=c THEN max=a ELSE max=c END IFELSE IF b>=c THEN max=b ELSE max=c END IFEND IF算法3:擂臺法。l 部分代碼:max=aIF b>max THEN max=bEND IFIF c>max THEN max=cEND IF算法2、3由學生自行完成流程圖,然后討論三種算法,得出各自的價值取向。【例9】是將函數的應用、數的大小比較相結合的一道題目,用以對前面拓展練習的進一步變化,鍛煉學生思考解決題目

39、、舉一反三的能力。l 流程圖:略。l 程序代碼:n=InputBox(“請輸入一個三位數”)a=n mod 10b=int(n/10) mod 10c=int(n/100)IF a>=b and a>=c THEN IF b>=c THEN newnumb=a*100+b*10+c ELSE newnumb=a*100+c*10+b END IFELSE IF b>=a and b>=c THEN IF a>=c THEN newnumb=b*100+a*10+c ELSE newnumb=b*100+c*10+a END IF ELSE IF b>=

40、a THEN newnumb=c*100+b*10+a ELSE newnumb=c*100+a*10+b END IF END IFEND IFPrint newnumb或n=InputBox(“請輸入一個三位數”)a=n mod 10b=int(n/10) mod 10c=int(n/100)IF a>b THEN t=aa=bb=tEND IFIF a>c THEN t=a a=c c=tEND IFIF b>c THENt=bb=cc=tEND IFnewnumb=c*100+b*10+aPrint newnumb關于算法的教學建議(四)循環結構知識點必須落實的要點選

41、用例題、練習例題、練習處理循環結構l 定義:有需要重復執行步驟的結構。l 組成:Ø 循環體:重復執行的步驟。Ø 循環條件:判斷是否執行循環體的條件。l 特點:Ø 有判斷框,判斷框內為循環條件。Ø 有返回判斷框或循環體的流程線。Ø 循環結構中雖然有判斷框,但循環結構只有一個入口,一個出口。l 基本模式:Ø 當型循環(重點)。² 先判斷循環條件,再決定是否執行循環體。² 循環體有可能一次也不執行。Ø 直到型循環。² 先執行循環體,再判斷循環條件,決定是否繼續執行循環體。² 循環體至少執行一

42、次。l 流程圖規范畫法:Ø 當型循環² 循環體畫在判斷框下面。² 循環條件成立,畫在判斷框下面的一個頂點上,進入循環體。² 循環條件不成立,畫在判斷框右面的一個頂點,并向下轉到循環結構的后續步驟,退出循環結構。² VB語句:DO WHILE <循環條件> 循環體LOOPØ 直到型循環² 循環體下面畫判斷框。² 循環條件成立,畫在判斷框下面一個頂點上,向下連到循環結構的后續步驟。² 循環條件不成立,畫在判斷框左面的一個頂點上,并向上返回循環體的入口。l 控制循環的方法:Ø 計數法

43、78; 設置一個變量i記錄循環體執行次數并控制循環執行情況的方法。² 循環變量:變量i是控制循環體執行次數的變量。稱為循環變量或計數變量。² 循環體每執行一次,循環變量i的值增加1,用賦值語句i=i+1實現,i=i+1起了計數的作用,因此,循環變量i也稱為計數器。計數語句i=i+1應包含在循環體內。² 循環變量的要素:循環變量的初值,終值,遞增量決定了循環體執行次數,稱為循環變量的三要素。Ø 標志法² 在循環次數確定的情況下,一般用計數法。若循環次數不確定,往往用設置標志性條件的方法來控制循環,稱為標志法。² 設置標志性條件的方法通常

44、有:以輸入某一個特殊的數據作為結束循環的標志;以循環體中某個或幾個變量滿足規定條件作為結束循環的標志等。【例1】過馬路問題:如果紅燈,則等待,重復前面過程,否則過馬路。【例2】輸出由30個“=”組成的一行分割線。【例3】求65+90+10+35+75的和s。拓展練習題:【練習1】求某學生5門學科考試成績的總分sum。【例4】計算s=1+2+3+4+5的值。【練習2】求s=1+2+3+n的值,其中n由鍵盤輸入。【例5】求s=1×2×3××n的值,其中n由鍵盤輸入。【練習3】求s=2+4+6+n的值,其中n為偶數,由鍵盤輸入。 【練習4】求s=1×

45、3×5××n的值,其中n為奇數,由鍵盤輸入。【例6】求滿足1+2+3+4+n>20最小的n值。【練習5】求滿足1+2+3+4+n<20最大的n值。【例7】輸入若干數x,當輸入為999時結束,求輸入數據的和s。【例8】輸入某次考試成績mark,統計100分人數good。(輸入-1表示結束)拓展練習:【練習6】求S=1/2+1/4+1/2n的值, 其中n由鍵盤輸入。【練習7】求s=1×2+2×3+3×4+4×5+n×(n+1)的值,其中n由鍵盤輸入。【練習8】用循環結構解決求s=a*b的值。(a,b為正數,由鍵盤輸入)【練習9】求s=1-1/2+1/3-1/4+-1/n的值(n為偶數,由鍵盤輸入)。【練習10】輸入n個數,統計正數的個數nz和非正數的個數nfz。(n的值由鍵盤輸入)【練習11】輸入若干個正數,當輸入為0時結束,求所有輸入數據的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論