資源簡介 算法初步教學詳解東莞群英學校 梁斌玉1.1算法與程序框圖1.1.1算法的概念 計算機的問世可謂20世紀最偉大的發明,它把人類社會帶進了信息技術的時代,而算法是計算機科學的重要基礎,就像使用算盤一樣,人們要給計算機編制“口訣”——算法,才能讓它工作。要想了解計算機的工作原理,算法的學習是一個開始。做任何事情都有一定的步驟。例如,你想考大學首先要填報名志愿表,拿到準考證,參加考試,得到錄取通知書,到大學報名注冊等。這些步驟都是按一定順序進行的,缺一不可?,F實生活中,我們很多事情都是這樣一步一步的完成的。 可見算法并不是一個全新的概念,它融入在我們的現實生活中。在我國古代,“算法”取得了輝煌的成就。 燒水泡茶請看一下燒水泡茶的過程解:燒水泡茶可分下面4步完成。Step1:洗好開水壺;Step2:灌上涼水,放在火上,等待水開;Step3:洗茶杯,茶杯里放好茶葉;Step4:水開后再沖水泡茶。例2.人鬼過河現在河的岸邊有三個人和三個鬼,河上只有一條小船,船上最多能坐兩個“人”,在河的任何一邊,當鬼的個數比人多時,鬼就會吃掉人。請問如何才能使人和鬼都平安的到達對岸。解: 要想使人鬼都安全過河,需要下面11步。 Step1: Step2: Step3: Step4: Step5: Step6: Step7: Step8: Step9: Step10: Step11: 從事各種工作和活動,都要事先想好工作的步驟,然后按部就班的進行,這樣就可以避免產生錯誤。 定義:我們把用來解決問題的一系列步驟叫做算法(algorithm)。算法一詞源于算術(algorism),即算術方法,是指一個由已知推求未知的運算過程。隨著計算機的出現,人們常把這些“步驟”編寫為“程序”由計算機來解決。算法必須符合以下條件:1.算法的每一步要做什么必須是明確的,不能含糊不清,模棱兩可;例如,要把全班同學分成兩隊,“高個子的同學站出來”這個步驟就是不確定的,含糊的,哪些同學算高,哪些同學算矮?個子中等的同學就會不知所措。2.算法的每一步都應當能有效的執行,并得到確定的結果。例如若是無效的,不能執行的。3.算法必須在有限步內完成,如果需要無限步完成,就失去了實際意義。算法的有限性往往指“在合理的范圍之內”。如果讓計算機執行一個歷時1000年才結束的算法,雖然是有限的,但超過了合理的限度,人們也不把它視作有效算法。究竟什么算“合理限度”并無嚴格標準,由人們的常識和需要而定。例3. 給計算機編寫一個算法,輸入一個自變量的值,求分段函數的函數值.解:Step1:輸入x的值;Step2:進行判斷,如果,則, 否則。Step3: 輸出y的值。 2.計算y 說明:1.輸入x的值就是把自變量x的值由鍵盤輸入計算機,例如要計算x=2時的函數值,就輸入2。 2.根據相應的x的值計算相應的函數值,比如輸入3,則 ;如果輸入-4,則。 3.輸出結果就是把計算結果顯示在計算機屏幕上。以上算法可以通過輸給計算機一系列“命令”來實現,這些命令叫做計算機語言。例4.篩選法求質數質數亦叫作素數,是大于1的自然數,并且除了該數本身和1以外沒有其它的數能整除它,如2,3,5,7,11,13,…,質數有無窮多個。 (1)判斷143是否為質數。解:Step1:143÷2不為整數;Step2:143÷3不為整數;Step3:143÷4不為整數;Step4:143÷5不為整數;Step5:143÷6不為整數;Step6:143÷7不為整數;Step7:143÷8不為整數;Step8:143÷9不為整數;Step9:143÷10不為整數;Step10:143÷11=13,143能被11整除;Step11:結論:143不是質數。(2)判斷17是否為質數。解:Step1:17÷2不為整數;Step2:17÷3不為整數;Step3:17÷4不為整數;Step4:17÷5不為整數;Step5:17÷6不為整數;Step6:17÷7不為整數;Step7:17÷8不為整數;Step8:17÷9不為整數;Step9:17÷10不為整數;Step10:17÷11不為整數;Step11:17÷12不為整數;Step12:17÷13不為整數;Step13:17÷14不為整數;Step14:17÷15不為整數;Step15:17÷16不為整數;Step16:結論:17是質數。 (3)判斷216091是不是質數該題的計算量非常大,我們可以把算法編為程序,由計算機幫我們計算。(4)設計一個算法,輸入大于2的整數n,由計算機判斷它是不是質數。解:Step1:輸入整數n;Step2:依次檢驗2~(n-1)是不是n的因數,若有這樣的數,則n不是質數,否則,n為質數。Step3:輸出結果。說明:其中第3步在計算機中可以通過一個循環來實現,今后會學到。 [思考] 你能舉出跟多算法的例子嗎?與一般的解決問題的過程比較,你認為算法最重要的特征是什么?______________________________________________________________________________________________________________________[練習]:1.任意給定一個正數,設計一個算法,求以這個數為半徑的圓的面積。2.設計一個算法,求的值。3.?;⑦^河。一個人帶三只老虎和三頭牛過河。只有一條船,可以容一個人和兩只動物。沒有人在的時候,如果老虎的數量不少于牛的數量就會吃掉牛。設計安全渡河的算法。4.任意給定一個大于1 的正整數n,設計一個算法,求出n的所有因數。1.1算法與程序框圖1.2.2程序框圖 算法可以用自然語言來表示,但為了使算法的步驟表達得更為直觀,我們更經常地用圖形方式來表達,這就是程序框圖。 程序有三種基本邏輯結構——順序結構、選擇結構和循環結構。復雜的程序都是由這三種結構組成。一、順序結構 例5.請敘述一下燒水泡茶的過程解:該算法用自然語言表述為Step1:洗好開水壺;Step2:灌上涼水,放在火上,等待水開;Step3:洗茶杯,茶杯里放好茶葉;Step4:水開后再沖水泡茶。 可以用程序框圖表示為: 例6. 已知一個三角形的三邊長分別是,它的面積可用海倫—秦九韶公式計算。,其中。為計算機設計一個算法,輸入三角形的三條邊長,輸出三角形的面積S。解:程序框圖為 程序框圖符號和它們所表示的功能:圖形符號名稱功能起止框(終端框)表示一個算法的起始和結束輸入輸出框表示一個算法輸入和輸出的信息 處理框(執行框)賦值、計算流程線連接程序框順序結構由若干個依次執行的處理步驟組成。這是任何一個算法都離不開的基本結構。二、選擇結構例7.給計算機編寫一個算法,輸入一個自變量的值,求分段函數的函數值解:該算法用自然語言表述為Step1:輸入x的值;Step2:進行判斷,如果,則, 否則。Step3: 輸出結果。可以用程序框圖表示為: 其中被虛線框起來的是選擇結構 選擇結構的一般形式 [探究] 當x取7,0,-5時,程序分別沿著哪條路線運行?請畫出來。______________________________________________________________________________________________________________________選擇結構由一個判斷框和兩個分支組成。當條件框內的條件成立時,程序沿著分支1進行;否則程序沿分支2進行。圖形符號名稱功能判斷框判斷某一條件是否成立,它有兩個出口:“是”或“否”。條件成立時,程序沿著“是”這個分支走下去;當條件不成立時,程序沿著“否”這個分支進行。 流程線連接程序框連接點當一個程序框圖很大,一頁紙寫不下時,用來連接程序框圖的兩部分。一般在連接處標上相同的數字序號。 例8.判斷一元二次函數是否有根。分析:,當時,方程有實根;當時,方程無實根。解:程序框圖表示為[思考](1)比較例7和例8,說出何時使用平行四邊形,何時使用直角矩形?___________________________________________________________ (2)例8中為什么只有這一個判斷框,而沒有時的判斷框?___________________________________________________________選擇結構的嵌套例9.函數,編寫一個算法,輸入x的值,輸出y的值解: 此框圖是嵌套選擇結構,外層選擇結構的“Yes”分支很簡單,“No”分支中又包含了一個條件結構。[探究] 當x取2,0,-2時,程序分別沿著哪條路線運行?請畫出來。 ______________________________________________________________________________________________________________________三、循環結構(1)當型循環結構(WHILE型)例10.智力競賽的中,主持人提問,選手回答,若回答正確,加10分,如果錯誤,不加分,然后主持人繼續提問,選手繼續回答,如此循環下去,直到提問結束。用程序框圖來描述這一情況。解:由于過程中出現了循環,需要用循環結構果來表示。 循環結構的一般形式虛線框起來的不分是循環結構,它由一個判斷框和循環體組成。[探究] (1)何時循環進行,何時循環結束?__________________________________________________________________________________________________________________________(2)“分數=分數+ 10分”的含義是:“后來的分數=原分數+10分”。假設前三個問題選手都回答正確,請在下表中填入相應的數字。(3)如果用變量s表示分數,上述表達式該如何表示? _________________________________________________________ 例11. 寫出求1+2+3+4+5+6的一個算法。解: Step1:計算1+2得到3;Step2:將第一步中的運算結果3與3相加得到6;Step3:將第二步中的運算結果6與4相加得到10;Step4:將第三步中的運算結果10與5相加得到15;Step5:將第四步中的運算結果15與6相加得到21。 例12.設計一個計算的算法解:如果按例11的方法,步驟很多。我們可以設想有一個空箱子S,第1次放入1個球,第2次放入2個球……第100次放入100個球。這樣重復100次后,箱子里的總球數就是個。每放一次球我們可以看作一次循環,總共循環了100次。 該算法用程序框圖可表示為: 說明: (1)程序按箭頭所指方向進行, 在判斷框處 ,如果,則按yes所指方向進行循環,否則按No所指方向進行。(2)i叫做計數變量,用于記錄循環次數,同時它的取值還可以用來判斷循環是否中止。循環第一圈時i的值為1,第二圈時i的值為2……第100圈時,i的值為100。這種變化是通過語句i=i+1來實現的。其含義是“后來的i值=原i值+1”每循環一圈,i=i+1被執行一遍,i的值就增加了1。(3)S叫做累加變量,用于記錄累加結果。循環第1圈在S上加1;循環第2圈在S上加2;循環第3圈在S上加3;…………循環第i圈在S上加i;…………循環第100圈在S上加100;“循環第i圈在S上加i”用語句S=S+i表示,把這時i的值加到S上。當循環到100圈時,S的值就是的和。為了真正理解該程序,請在下表中填入相應的數字。 累加變量 計數變量[思考] 計數變量和累加變量的作用。______________________________________________________________________________________________________________________例13.設計一個計算的算法,并模仿例12進行分析。 分析:先考慮清楚下面兩個問題。從2到100的偶數共有多少個?______兩個相鄰偶數的間隔是多少?_______ 解:程序框圖為:請在下表中填入相應的數字。 累加變量 計數變量(2)直到型循環結構(UNTIL型)例.14 餓漢吃餅下面是描述描述一個餓漢吃餅的情況,如果饑餓的話就吃一張餅,直到吃飽為止。分別用當型和直到型兩種循環結構進行描述。當型 直到型[探究] 找出當型和直到型的區別(1) 當 型:先判斷條件,再執行循環體;直到型:______________________________。(2) 當型和直到型的條件_________。 (3) 當 型:滿足條件時執行循環體;直到型:____________________________。直到型循環結構(UNTIL型)的一般形式: 當型型循環結構在執行循環體之前,對循環條件進行判斷,當條件滿足時執行循環體,不滿足則停止循環,執行循環結構后面的步驟。直到型循環結構在執行了一次循環體之后,對循環條件進行判斷,當條件不滿足時執行循環體,滿足則停止循環,執行循環結構后面的步驟。總之:當型循環結構的特點是“當滿足條件時就循環”;直到型循環結高的特點是“直到滿足條件時退出”。 [練習]設計一個求任意數的絕對值得算法,并劃出程序框圖。 任意給定3個正實數,設計一個算法,判斷分別以這3個數為邊長的三角形是否存在。畫出這個算法的程序框圖。某居民區的物業部門每月向居民收取衛生費,計費方法是:3人和三人以下的住戶,每人收取5元;超過3人的住戶,每超出一人,加收1.2元。寫出一人數x為自變量,以衛生費y為函數值的分段函數。設計一個算法,根據輸入的人數,計算應收取的衛生費,畫出程序框圖。設計一個求解一元二次方程的算法,畫出程序框圖。設計一個計算的算法,畫出程序框圖。設計一個算法,求的值.,畫出程序框圖。1.2基本算法語句計算機完成任何一項任務都需要算法。但是,我們用自然語言或程序框圖描述的算法,計算機是無法“理解”的。因此還需要把算法翻譯成計算機能理解的“計算機程序設計語言”(Progamming Language),編制成計算機程序。我們前面學過,算法有三種基本結構:順序結構、條件結構和循環結構。為了實現算法中三種基本的邏輯結構,各種程序設計語言都包括下列算法語句:輸入語句、輸出語句、賦值語句、條件語句和循環語句。程序設計語言有很多種,如BASIC,Foxbase,C語言,C++,J++,VB等。它們的基本原理是相同的。本章中,我們學習的程序設計語言是“QuickBASIC”語言,它是一種類BASIC語言。BASIC是Beginner Allpurpose Symbolic Instruction Code(初學者通用符號指令代碼)的英文縮寫,與1964年由美國的兩位教授設計,具有簡單、易學的特點。1.2.1輸入語句、輸出語句和賦值語句 輸入語句、輸出語句、和賦值語句基本上對應于算法中的順序結構。計算機從上而下按照語句排列的順序執行這些語句。一、輸入語句例15.編制一個程序,在電腦屏幕上顯示“Hello,evryone!”。解:運行QuickBASIC軟件,在編輯窗口內輸入下面程序。 編輯程序 運行結果 其中的PRINT是一個命令,它的作用是輸出它后面引號中的內容。運行該程序,會在電腦屏幕上顯示:Hello,everyone!例16. 設變量x=123,編制一個程序,在屏幕上顯示出x的值。解:“運行QuickBASIC軟件,在編輯窗口內輸入下面程序。 編輯程序 運行結果[思考] PRINT語句后的輸出內容中,加引號和不加引號的區別? __________________________________________________________________________________________________________________________________上面幾個例子中“PRINT”語句就是輸出語句,對應于程序框圖中的輸出語句。其一般格式為: 注意,提示內容和變量之間用分號“:”隔開;如果要輸出多個變量,用逗號隔開,例如 PRINT “ a,b,c=”; a,b,c想一想下面語句會輸出什么結果? 編輯程序 運行結果例17.當x=123時求函數的值。解:“運行QuickBASIC軟件,在編輯窗口內輸入下面程序。 編輯程序 運行結果程序中的運算符,和我們平常用的有所不同,具體如下:數學運算加減乘除程序符號+-*/x^nsqr(a)abs(a)二、輸出語句例18.編寫一個程序,輸入x的值求函數的值。解:“運行QuickBASIC軟件,在編輯窗口內輸入下面程序。編輯程序這個程序中,第一行的INPUT語句就是輸出語句,其后的x是一個變量。該語句的作用是從鍵盤輸入x的值。例如要計算x=100時的函數值,就輸入100。輸出語句對應于程序框圖中的輸出框,其一般格式為: 輸出語句可以在計算機屏幕上輸出常量、變量和提示信息。運行程序后會出現如下提示窗口:運行后程序提示輸入x的值輸入x的值111后程序自動計算出y=1401960三、賦值語句賦值語句前面已經見過,請再在看一下例3 :x=123y=x^3+3*x^2-24*x+30PRINT “y=” ; yEND.第一行和第二行叫做賦值語句,顧名思義,賦值語句就是將表達式所帶表的值賦給變量。賦值語句中的“=”叫做賦值號,它和數學中的等號不完全一樣。計算機執行賦值語句時,先計算“=”右邊的表達式式的值,然后把這個值賦給左邊的變量。例如第一行中,就把左邊的123賦給右邊的變量x(即讓x等于123);第二行,先計算出左邊的表達式的值為1401960,然后把1401960賦給變量y。賦值語句的一般格式為: 可以把變量看作一個存放數據的盒子,而且是最多只能存放一個數據的盒子。當一個新數據放進去時,原來的數就被“擠”了出去。請說出下面程序輸出的結果a=10a=a+20PRINT “a=”;aEND第一行:把等號右邊的數值10賦給左邊的變量a; aa a:第二行:先計算等號右邊a+20的值10+20=30,然后把數據30存入變量a,a中原來的10被沖掉。 1 a:輸出結果:a =30 例19.編寫程序,計算一個學生數學、語文、英語三門課的平均成績。解:程序為:INPUT “Maths=”;a INPUT “ Chines=”;b INPUT “ English=”;c x=(a+b+c)/3 PRINT “ The average is”;x END[探究] 請把下面的程序框圖翻譯為程序,并說出那些框圖對應輸出語句,那些框圖對應輸入語句,那些框圖對應賦值語句。例20.已知,,交換的值。分析:請看下面的程序 a=2b=5a=bb=aPRINT a,bEND 把上述程序輸入QuikeBASIC,運行,得到結果:5 ,5 沒有達到我們的目的,為什么會這樣呢?請分析程序每行中a、b的值,并填寫下表。 a b 第1行:第2行:第3行: 第4行:第5行:第一行:a的值為2;第二行:b的值為5; 第三行: 把b的值賦給a,這時b的值為5,所以a=5;(注意:這時a中原來存儲的數值2 已經被沖掉了。) 第四行:把a的值賦給b,而這時a的值為5,所以b的值還是5; 第五行:因為a,b的值均為5,所以輸出結果為5 5。 解:(空桶法)交換裝滿水的兩個水桶里的水需要再找一個空桶,交換兩個變量正確的方法是設置一個中間變量t。 a=2b=5t=aa=bb=tPRINT a,bEND 請分析一下每行中a、b、t的值,并填表。 a b t 第1行: 第2行:第3行: 第4行:第5行:第6行:第三行t=a的作用:把a的值2保存在變量x中,這樣當執行a=b時,a中的值仍可以在t中找到。[練習]已知華氏溫度和攝氏溫度的轉化公式為: 編寫一個程序,輸入一個華氏溫度,輸出其相應的攝氏溫度。編寫一個程序,輸入兩個非零實數,輸出他們加、減、乘、除的結果。已知一個三角形的三邊長分別是,它的面積可用海倫—秦九韶公式計算。 ,其中 設計一個算法,輸入三角形的三條邊長,輸出三角形的面積S。寫出程序框圖和相應的程序。春節到了,糖果店的售貨員忙極了。已知水果糖每千克10.4元,奶糖每千克15.6元,果仁巧克力每千克25.2元,那么依次購買這三種果糖千克,應收取多少錢?請你設計一個程序,幫售貨員算賬。編寫一個程序,輸入梯形的上底、下底和高的值,計算并輸出其面積。編寫一個程序,交換兩個變量a 、b的值,并輸出交換前后的值。1.2.2條件語句算法中的條件結構由條件語句來表達。一、基本條件語句(1)兩個分支的條件結構例21. 給計算機編寫一個程序,輸入一個自變量的值,輸出分段函數的函數值.解: 程序框圖 QuickBASIC程序語句 QuickBASIC語言中的符號。數學運算等于不等于大于小于大于等于小于等于程序符號=<>><>=<=[探究] 比較程序框圖和QuickBASIC程序語句,回答下列問題。(1)條件結構和那一段語句對應?條件語句以什么開始,以什么結尾?__________________________________________________________________________________________________________________________________(2)判斷框中的“條件”在條件語句中處于什么位置?__________________________________________________________________________________________________________________________________(3)“Yes”分支中的步驟在條件語句中處于什么位置?__________________________________________________________________________________________________________________________________(4)“No”分支中的步驟在條件語句中處于什么位置?__________________________________________________________________________________________________________________________________(5)當x=5的時候,計算機會執行哪些語句?__________________________________________________________________________________________________________________________________(6)當x=-5的時候,計算機會執行哪些語句?__________________________________________________________________________________________________________________________________條件語句的一般形式條件結構框圖 條件語句當計算機執行上述語句時,首先對IF后的條件進行判斷,如果條件成立,就執行THEN之后的語句體,否則執行ELSE之后的語句體。(2)一個分支的條件結構 當計算機執行上述語句時,首先對IF后的條件進行判斷,如果條件成立,就執行THEN之后的語句體,否則條件語句結束,執行END IF之后的語句二、條件結構的嵌套例22.函數,編寫一個程序,輸入x的值,輸出y的值解:用程序框圖表示為用QuickBASIC 語言可寫為 INPUT “x =” ; x IF x>0 THEN y = 1 ELSE IF x=0 THEN y = 0 ELSE y = -1 END IF END IF PRINT “ y=”; y END該程序中有兩個IF語句,大IF語句中嵌套了一個小IF語句。[思考] 請將程序框圖和相應的語句對應起來。_________________________________________________________________________________________________________________________________例23 編寫一個程序,求一元二次方程的根.分析:,當時方程有兩個不相等的實根;當時,方程有兩個相等的實根;當時,方程沒有實根。解:程序框圖為 由程序框圖寫出QuickBASIC 程序INPUT a,b,cD=b^2-4*a*cIF D>=0 THEN IF D>0 THEN x1=(-b+sqr(D))/2*a x1=(-b-sqr(D))/2*a PRINT “x1=”;x1,”x2=”;x2 ELSE x=-b/2*a PRINT “x=”;x END IFELSE PRINT “No root.”END IFEND[思考]比較程序框圖和程序語句,回答下列問題。(1)在程序框圖中找出外層條件結構和內層條件結構。 __________________________________________________________________________________________________________________________________(2)在程序語句中找出外層條件語句和內層條件語句。 __________________________________________________________________________________________________________________________________(3)找出程序框圖和程序語句的對應關系。 __________________________________________________________________________________________________________________________________(4)試給a,b,c取不同的值,使程序沿著三條不同的路線由開始走到結束。__________________________________________________________________________________________________________________________________例24. 排序編寫一個程序,使得任意輸入的3個整數按從大到小的順序輸出。算法分析:我們用a,b,c表示輸入的三個整數,比較三個整數,把最大的整數存入變量a中,次大的整數存入b中,最小的整數存入c中。Step1:輸入三個整數a,b,c;Step2:將a與b比較,如果aStep3:將a與c比較,如果a (第2步和第3步后,a中存儲的已經是最大的整數)Step4:將b與c比較,如果b (第4步后,b中存儲的是次大的整數,c中存儲的是最小的整數)Step5:按順序輸出a,b,c。注意:交換兩個變量的值要用例20的“空桶法”。解:程序框圖為 根據程序框圖,寫出計算機程序為: INPUT “a,b,c=”;a,b,c IF b>a THEN t=a a=b b=t END IF IF c>a THEN t=a a=c c=t END IFIF c>b THEN t=b b=c c=t END IF PRINT a,b,c END[探究](1)假設輸入的數據是4,6,5,在右面填入相應的數字。 _________________________________________________________________(2) 程序運行到第5行可以達到的目的是:__________________________________________________________________________________________________________________________________(3) 程序運行到第10行可以達到的目的是:__________________________________________________________________________________________________________________________________(4) 程序運行到第15行可以達到的目的是:__________________________________________________________________________________________________________________________________[練習]1.讀程序,說出該程序的功能。 INPUT “Please input an inter:”;x IF 9 a=x10 b=x MOD 10 PRINT a,b END IFENDQuickBASIC語言中的符號。數學運算且或的商的余數程序符號ANDORa MOD b注:(1)在程序中用“AND”表示“且”,用“OR”表示“或”。 (2)用“a/b”表示,而商用“ab”表示。例如3410=3,578=7。 (3)的余數用“a MOD b”表示,例如34 MOD 10=4,57 MOD 8=1。2.編寫程序,判斷一個整數是偶數還是奇數,即從鍵盤上輸入一個整數,輸出該數的奇偶性。3.閏年是指年份能被4整除但不能被100整除,或者能被400整除的年份。編寫一個程序,判斷輸入的年份是否為閏年。4.編寫一個程序,輸入兩個整數a,b,判斷a是否能否被b整除。5.已知函數編寫一個程序,輸入自變量x的值,輸出相應的函數值。1.2.3循環語句算法中的循環結構是由循環語句來實現的。一、當型循環語句程序語言中,當型循環結構由當型循環語句(While)表示。例25設計一個計算的算法并寫出相應的程序。解: 程序框圖 程序語言 [探究] 比較程序框圖和程序語句,回答下列問題。(1)循環結構和那一段語句對應?當型循環語句以什么開始,以什么結尾?__________________________________________________________________________________________________________________________________(2)判斷框中的“循環條件”在循環語句中處于什么位置?__________________________________________________________________________________________________________________________________(3)循環結構中的“循環體”在當型循環語句中處于什么位置?__________________________________________________________________________________________________________________________________(4)請說出程序中每一條語句被執行了多少次。___________________________________________________________________________________________________________________________________________________________________________________________________循環結構的一般形式為:循環結構框圖 循環語句 當計算機遇到WHILE語句時,先判斷條件是否成立,如果符合條件,就執行WHILE和WEND之間的循環體;然后再檢查條件,如果仍然符合,再次執行循環體,這個過程反復進行,直到某一次條件不符合為止。這時計算機將不執行循環體,直接跳到WEND之后,執行WEND之后的語句。例26下面是一個計算的算法。請填寫程序框圖和相應的程序。解:程序框圖 程序語句 例27下面是一個計算的算法。請填寫程序框圖并寫出相應的程序。 解:[思考] 綜合例25、例26、例27思考計數變量和累加變量如何配合從而達到目的的?___________________________________________________________________________________________________________________________________________________________________________________________________二、直到型循環結構程序語言中,直到型循環結構由直到型循環語句(Until)表示。例28設計一個計算的算法并寫出相應的程序。解: 程序框圖 程序語言 注:英文LOOP是循環的意思。[探究] 比較程序框圖和程序語句,回答下列問題。(1)直到型循環結構和那一段語句對應?循環語句以何開始,以何結尾?__________________________________________________________________________________________________________________________________(2)判斷框中的“循環條件”在直到型循環語句中處于什么位置?_________________________________________________________________(3)循環結構中的“循環體”在直到型循環語句中處于什么位置?_________________________________________________________________循環結構的一般形式為:直到型循環結構框圖 UNTIL循環語句[思考]參照直到型循環結構,說說計算機是按怎樣的順序執UNTI語句的?__________________________________________________________________________________________________________________________________例29.編寫一個程序,輸入大于2的整數n,由計算機判斷它是不是質(Prime Number)。解:根據例3的算法,程序框圖為[思考](1)哪一部分為循環結構,哪一部分為條件結構?__________________________________________________________________________________________________________________________________(2)怎么判斷n能夠被i整除?_________________________________________________________________(3)根據例3的算法,什么時候循環結束?_________________________________________________________________(4)循環結束后,意味著什么?意味著什么?_________________________________________________________________由程序框圖寫出程序: INPUT “n=”;n i=2 DO r= n MOD i i=i+1 LOOP UNTIL i >= n AND r =0IF r=0 THENPRINT “n is not a prime mumber.”ELSEPRINT “n is a prime mumber.”END IFEND[探究](1)如果n= 35,請填寫下表(2)請說出程序中每一條語句被執行了多少次。___________________________________________________________________________________________________________________________________________________________________________________________________(3)輸出結果為:___________________________。(4)如果n=11,請用上述方法進行分析。 [練習]編寫程序,輸入正整數n,計算它的階乘。編寫程序,計算下面n個數的和:。某牛奶廠2002年初有資金1000萬元,由于引進了先進的設備,資金年平均增長率可達到50%。請你設計一個程序,計算這家牛奶廠2008年底的資金總額。(待續)這是第四稿,非常感謝大家的鼓勵,能夠得到大家的認可,我感到非常欣慰。還望大家多提寶貴意見。本文既適合學生閱讀,也可用來代替教材,進行教學,我就是這樣做的。教完后的感受是,對學生來說算法初步并不難,比三角函數等要簡單,只是教師感到很陌生罷了。有出版社愿意出版本書,但要包銷5000本,我覺得數量太多,還在猶豫。這本書包含了我大量的心血,當然很想出版。如果哪位老師能幫忙,請和我聯系,您能幫我銷售100本左右就可以了。只要能保證不虧很多,我就出版。梁斌玉 [email protected] QQ25804226 手機:13925528030 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫