1.學(xué)習(xí)這部分知識的時候,要掌握各種圖形的形狀、作用以及使用規(guī)則
3.程序語言
程序語言是將自然語言和框圖所表達(dá)的解決問題的步驟用特定的計算機(jī)所識別的低級和高級語言編寫而成。特點(diǎn):能在計算機(jī)上執(zhí)行,但格式要求嚴(yán)格。
程序框圖
2.程序框圖
程序框圖是用規(guī)定的圖形符號來表達(dá)算法的具體過程。
優(yōu)點(diǎn)是:簡捷形象、步驟的執(zhí)行方向直觀明了。
描述算法可以用不同的方式。例如:可以用自然語言和數(shù)學(xué)語言加以敘述,也可以借助形式語言(算法語言)給出精銳的說明,也可以用程序框圖直觀的顯示算法全貌。
1.自然語言
自然語言就是人們?nèi)粘J褂玫恼Z言,可以是人之間來交流的語言、術(shù)語等,通過分步的方式來表達(dá)出來的解決問題的過程。
其優(yōu)點(diǎn)為:好理解,當(dāng)算法的執(zhí)行都是先后順序時比較容易理解;
缺點(diǎn)是:表達(dá)冗長,且不易表達(dá)清楚步驟間的重復(fù)操作、分情況處理現(xiàn)象、先后順序等問題。
2.累加變量的值初始值一般取成0,而累乘變量的初始值一般取成1。
例10.相傳古代的印度國王要獎賞國際象棋的發(fā)明者,問他需要什么。發(fā)明者說:陛下,在國際象棋的第一個格子里面放1粒麥子,在第二個格子里面放2粒麥子,第三個格子放4粒麥子,以后每個格子中的麥粒數(shù)都是他前一個格子中麥粒數(shù)的二倍,依此類推(國際象棋棋盤共有64個格子)。請將這些麥子賞給我,我將感激不盡。國王想這還不容易,就讓人扛了一袋小麥,但不到一會兒就沒了,最后一算結(jié)果,全印度一年生產(chǎn)的糧食也不夠。國王很奇怪,小小的“棋盤”,不足100個格子,如此計算怎么能放這么多麥子?試用程序框圖表示一下算法過程。
解析:將實(shí)際問題轉(zhuǎn)化為數(shù)學(xué)模型,該問題就是來求的和
點(diǎn)評:對于開放探究問題,我們可以建立數(shù)學(xué)模型(上面的題目要與等比數(shù)列的定義、性質(zhì)和公式聯(lián)系起來)和過程模型來分析好算法,通過設(shè)計算法以及語言的描述選擇一些成熟的辦法進(jìn)行處理。像上面應(yīng)用到了等比數(shù)列的通項(xiàng)公式和前n項(xiàng)和公式。
題型1:算法概念
例1.下列說法正確的是( )
A.算法就是某個問題的解題過程;
B.算法執(zhí)行后可以產(chǎn)生不同的結(jié)果;
C.解決某一個具體問題算法不同結(jié)果不同;
D.算法執(zhí)行步驟的次數(shù)不可以為很大,否則無法實(shí)施。
解析:答案為選項(xiàng)B;選項(xiàng)B,例如:判斷一個整數(shù)是否為偶數(shù),結(jié)果為“是偶數(shù)”和“不是偶數(shù)”兩種;選項(xiàng)A ,算法不能等同于解法;選項(xiàng)C,解決某一個具體問題算法不同結(jié)果應(yīng)該相同,否則算法構(gòu)造的有問題;選項(xiàng)D,算法可以為很多次,但不可以無限次。
點(diǎn)評:算法一般是機(jī)械的,有時需要進(jìn)行大量的重復(fù)計算。只要按部就班去做,總能算出結(jié)果。通常把算法過程稱為“數(shù)學(xué)機(jī)械化”。數(shù)學(xué)機(jī)械化的最大優(yōu)點(diǎn)是它可以借助計算機(jī)來完成;實(shí)際上處理任何問題都需要算法。如:中國象棋有中國象棋的棋譜、走法、勝負(fù)的評判準(zhǔn)則;而國際象棋有國際象棋的棋譜、走法、勝負(fù)的評判準(zhǔn)則;再比如申請出國有一系列的先后手續(xù),購買物品也有相關(guān)的手續(xù)……。
例2.下列語句中是算法的個數(shù)為( )
①從濟(jì)南到巴黎:先從濟(jì)南坐火車到北京,再坐飛機(jī)到巴黎;
②統(tǒng)籌法中“燒水泡茶”的故事;
③測量某棵樹的高度,判斷其是否是大樹;
④已知三角形的一部分邊長和角,借助正余弦定理求得剩余的邊角,再利用三角形的面積公式求出該三角形的面積。
A.1 B.2 C.3 D.4
解析:正確選項(xiàng)為C,③中我們對“樹的大小”沒有明確的標(biāo)準(zhǔn),無法完成任務(wù),不是有效的算法構(gòu)造。①中,勾畫了從濟(jì)南到巴黎的行程安排,完成了任務(wù);②中,節(jié)約時間,燒水泡茶完成了任務(wù);④中,純數(shù)學(xué)問題,借助正、余弦定理解三角形,進(jìn)而求出三角形的面積。
點(diǎn)評:算法過程要做到能一步一步的執(zhí)行,每一步執(zhí)行的操作,必須確切,不能含混不清,且在有限步后的必須得到問題的結(jié)果。
題型2:經(jīng)典算法
例3.一個人帶著三只狼和三只羚羊過河,只有一條船,同船可容納一個人和兩只動物,沒有人在的時候,如果狼的數(shù)量不少于羚羊的數(shù)量就會吃羚羊。該人如何將動物轉(zhuǎn)移過河?請設(shè)計算法?
解析:任何動物同船不用考慮動物的爭斗但需考慮承載的數(shù)量,還應(yīng)考慮到兩岸的動物都得保證狼的數(shù)量要小于羚羊的數(shù)量,故在算法的構(gòu)造過程中盡可能保證船里面有狼,這樣才能使得兩岸的羚羊數(shù)量占到優(yōu)勢,具體算法如下:
算法步驟:
第一步:人帶兩只狼過河,并自己返回;
第二步:人帶一只狼過河,自己返回;
第三步:人帶兩只羚羊過河,并帶兩只狼返回;
第四步:人帶一只羊過河,自己返回;
第五步:人帶兩只狼過河。
點(diǎn)評:算法是解決某一類問題的精確描述,有些問題使用形式化、程序化的刻畫是最恰當(dāng)?shù)。這就要求我們在寫算法時應(yīng)精練、簡練、清晰地表達(dá),要善于分析任何可能出現(xiàn)的情況,體現(xiàn)思維的嚴(yán)密性和完整性。本題型解決問題的算法中某些步驟重復(fù)進(jìn)行多次才能解決,在現(xiàn)實(shí)生活中,很多較復(fù)雜的問題經(jīng)常遇到這樣的問題,設(shè)計算法的時候,如果能夠合適地利用某些步驟的重復(fù),不但可以使得問題變得簡單,而且可以提高工作效率。
例4.這是中國古代的一個著名算法案例:一群小兔一群雞,兩群合到一群里,要數(shù)腿48,要數(shù)腦袋17,多少小兔多少雞?
解析:求解雞兔的問題簡單直觀,卻包含著深刻的算法思想。應(yīng)用解二元一次方程組的方法來求解雞兔同籠問題。
第一步:設(shè)有小雞x只,小兔y只,則有
第二步:將方程組中的第一個方程兩變乘-2加到第二個方程中去,得到,得到y(tǒng)=7;
第三步:將y=7代入(1)得x=10。
點(diǎn)評:解決這些問題的基本思想并不復(fù)雜,很清晰,但敘述起來很煩瑣,有的步驟非常多,有的計算量很大,有時候完全依靠人力完成這些工作很困難。但是這些恰恰是計算機(jī)的長處,它能不厭其煩的枯燥的、重復(fù)的、繁瑣的工作。但算法也有優(yōu)劣,我們要追求高效。
題型3:順序結(jié)構(gòu)
例5.寫出通過尺軌作圖確定線段AB一個5等分點(diǎn)的算法。
解析:我們借助于平行線定理,把位置的比例關(guān)系變成已知的比例關(guān)系,只要按照規(guī)則一步一步去做就能完成任務(wù)。
算法分析:
第一步:從已知線段的左端點(diǎn)A出發(fā),任意作一條與AB不平行的射線AP;
第二步:在射線上任取一個不同于端點(diǎn)A的點(diǎn)C,得到線段AC;
第三步:在射線上延AC的方向截取線段CE=AC;
第四步:在射線上延AC的方向截取線段EF=AC;
第五步:在射線上延AC的方向截取線段FG=AC;
第六步:在射線上延AC的方向截取線段GD=AC,那么線段AD=5AB;
第七步:連接DB;
第八步:過C作BD的平行線,交線段AB于M,這樣點(diǎn)M就是線段AB的一個5等分點(diǎn)。
程序框圖:
點(diǎn)評:這個算法步驟具有一般性,對于任意自然數(shù)n,都可以按照這個算法的思想,設(shè)計出確定線段的n等分點(diǎn)的步驟,解決問題。
例6.有關(guān)專家建議,在未來幾年內(nèi),中國的通貨膨脹率保持在3%左右,這將對我國經(jīng)濟(jì)的穩(wěn)定有利無害。所謂通貨膨脹率為3%,指的是每年消費(fèi)品的價格增長率為3%。在這種情況下,某種品牌的鋼琴2004年的價格是10 000元,請用流程圖描述這種鋼琴今后四年的價格變化情況,并輸出四年后的價格。
解析:用P表示鋼琴的價格,不難看出如下算法步驟:
2005年P(guān)=10000×(1+3%)=10300;
2006年P(guān)=10300×(1+3%)=10609;
2007年P(guān)=10609×(1+3%)=10927.27;
2008年P(guān)=10927.27×(1+3%)=11255.09;
因此,價格的變化情況表為:
年份 |
2004 |
2005 |
2006 |
2007 |
2008 |
鋼琴的價格 |
10000 |
10300 |
10609 |
10927.27 |
11255.09 |
程序框圖為:
點(diǎn)評:順序結(jié)構(gòu)只須嚴(yán)格按照傳統(tǒng)的解決數(shù)學(xué)問題的解題思路,將問題解決掉。最后將解題步驟 “細(xì)化”就可以!凹(xì)化”指的是寫出算法步驟、畫出程序框圖。
題型4:條件結(jié)構(gòu)
例7.設(shè)計算法判斷一元二次方程是否有實(shí)數(shù)根,并畫出相應(yīng)的程序框圖。
解析:算法步驟如下:
第一步:輸入一元二次方程的系數(shù):a,b,c;
第二步:計算△的值;
第三步:判斷△≥0是否成立。若△≥0成立,輸出“方程有實(shí)根”;否則輸出“方程無實(shí)根”。結(jié)束算法。
相應(yīng)的程序框圖如下:
點(diǎn)評:根據(jù)一元二次方程的意義,需要計算判別式△的值。再分成兩種情況處理:(1)當(dāng)△≥0時,一元二次方程有實(shí)數(shù)根;(2)當(dāng)△<0時,一元二次方程無實(shí)數(shù)根。該問題實(shí)際上是一個分類討論問題,根據(jù)一元二次方程系數(shù)的不同情況,最后結(jié)果就不同。因而當(dāng)給出一個一元二次方程時,必須先確定判別式的值,然后再用判別式的值的取值情況確定方程是否有解。該例僅用順序結(jié)構(gòu)是辦不到的,要對判別式的值進(jìn)行判斷,需要用到條件結(jié)構(gòu)。
例8.(1)設(shè)計算法,求的解,并畫出流程圖。
解析:對于方程來講,應(yīng)該分情況討論方程的解。
我們要對一次項(xiàng)系數(shù)a和常數(shù)項(xiàng)b的取值情況進(jìn)行分類,分類如下:
(1)當(dāng)a≠0時,方程有唯一的實(shí)數(shù)解是;
(2)當(dāng)a=0,b=0時,全體實(shí)數(shù)都是方程的解;
(3)當(dāng)a=0,b≠0時,方程無解。
聯(lián)想數(shù)學(xué)中的分類討論的處理方式?傻萌缦滤惴ú襟E:
第一步:判斷a是否不為零。若成立,輸出結(jié)果“解為”;
第二步:判斷a=0,b=0是否同時成立。若成立,輸出結(jié)果“解集為R”;
第三步:判斷a=0,b≠0是否同時成立。若成立,輸出結(jié)果“方程無解”,結(jié)束。
程序框圖:
(2)。設(shè)計算法,找出輸入的三個不相等實(shí)數(shù)a、b、c中的最大值,并畫出流程圖。
解析:算法步驟:
第一步:輸入a,b,c的值;
第二步:判斷a>b是否成立,若成立,則執(zhí)行第三步;否則執(zhí)行第四步;
第三步:判斷a>c是否成立,若成立,則輸出a,并結(jié)束;否則輸出c,并結(jié)束;
第四步:判斷b>c是否成立,若成立,則輸出b,并結(jié)束;否則輸出c,并結(jié)束。
程序框圖:
點(diǎn)評:條件結(jié)構(gòu)嵌套與條件結(jié)構(gòu)疊加的區(qū)別是:
(1)條件結(jié)構(gòu)疊加,程序執(zhí)行時需依次對“條件1”、“條件2”、“條件3”……都進(jìn)行判斷只有遇到能滿足的條件才執(zhí)行該條件對應(yīng)的操作。
(2)條件結(jié)構(gòu)的嵌套中,“條件2”是“條件1”的一個分支,“條件3”是“條件2”的一個分支,……依此類推,這些條件中很多在算法執(zhí)行過程中根據(jù)所處的分支位置不同可能不被執(zhí)行。
(3)條件結(jié)構(gòu)嵌套所涉及的“條件2”、“條件3”……是在前面的所有條件依次一個一個的滿足“分支條件成立”的情況下才能執(zhí)行的此操作,是多個條件同時成立的疊加和復(fù)合。
題型5:循環(huán)結(jié)構(gòu)
例9.設(shè)計一個算法,求的值,并劃出程序框圖。。
解析:算法步驟:
第一步:sum=0;
第二步:i=0;
第三步:sum=sum+2i;
第四步:i=i+1;
第五步:判斷i是否大于49,若成立,則輸出sum,結(jié)束;否則返回第三步重新執(zhí)行。
程序框圖:
點(diǎn)評:
1.如果算法問題里涉及的運(yùn)算進(jìn)行了許多次重復(fù)的操作,且先后參與運(yùn)算的數(shù)之間有相同的規(guī)律,就可引入變量循環(huán)參與運(yùn)算(我們稱之為循環(huán)變量),應(yīng)用于循環(huán)結(jié)構(gòu)。在循環(huán)結(jié)構(gòu)中,要注意根據(jù)條件設(shè)計合理的計數(shù)變量、累加和累乘變量及其個數(shù)等,特別要求條件的表述要恰當(dāng)、精確。
3.幾種重要的結(jié)構(gòu)
(1)順序結(jié)構(gòu)
順序結(jié)構(gòu)是最簡單的算法結(jié)構(gòu),語句與語句之間,框與框之間是按從上到下的順序進(jìn)行的。它是由若干個依次執(zhí)行的步驟組成的,它是任何一個算法都離不開的一種基本算法結(jié)構(gòu)。
見示意圖和實(shí)例:
順序結(jié)構(gòu)在程序框圖中的體現(xiàn)就是用流程線將程序框自上而下地連接起來,按順序執(zhí)行算法步驟。如在示意圖中,A框和B框是依次執(zhí)行的,只有在執(zhí)行完A框指定的操作后,才能接著執(zhí)行B框所指定的操作。
(2)條件結(jié)構(gòu)
如下面圖示中虛線框內(nèi)是一個條件結(jié)構(gòu),此結(jié)構(gòu)中含有一個判斷框,算法執(zhí)行到此判斷給定的條件P是否成立,選擇不同的執(zhí)行框(A框、B框)。無論P條件是否成立,只能執(zhí)行A框或B框之一,不可能既執(zhí)行A框又執(zhí)行B框,也不可能A框、B框都不執(zhí)行。A框或B框中可以有一個是空的,即不執(zhí)行任何操作。
見示意圖
(3)循環(huán)結(jié)構(gòu)
在一些算法中要求重復(fù)執(zhí)行同一操作的結(jié)構(gòu)稱為循環(huán)結(jié)構(gòu)。即從算法某處開始,按照一定條件重復(fù)執(zhí)行某一處理過程。重復(fù)執(zhí)行的處理步驟稱為循環(huán)體。
循環(huán)結(jié)構(gòu)有兩種形式:當(dāng)型循環(huán)結(jié)構(gòu)和直到型循環(huán)結(jié)構(gòu)。
①當(dāng)型循環(huán)結(jié)構(gòu),如左下圖所示,它的功能是當(dāng)給定的條件P成立時,執(zhí)行A框,A框執(zhí)行完畢后,返回來再判斷條件P是否成立,如果仍然成立,返回來再執(zhí)行A框,如此反復(fù)執(zhí)行A框,直到某一次返回來判斷條件P不成立時為止,此時不再執(zhí)行A框,離開循環(huán)結(jié)構(gòu)。繼續(xù)執(zhí)行下面的框圖。
②直到型循環(huán)結(jié)構(gòu),如右下圖所示,它的功能是先執(zhí)行重復(fù)執(zhí)行的A框,然后判斷給定的條件P是否成立,如果P仍然不成立,則返回來繼續(xù)執(zhí)行A框,再判斷條件P是否成立。以次重復(fù)操作,直到某一次給定的判斷條件P時成立為止,此時不再返回來執(zhí)行A框,離開循環(huán)結(jié)構(gòu)。繼續(xù)執(zhí)行下面的框圖。
見示意圖
1.算法的概念
(1)算法的定義:廣義的算法是指完成某項(xiàng)工作的方法和步驟,那么我們可以說洗衣機(jī)的使用說明書是操作洗衣機(jī)的算法,菜譜是做菜的算法等等。
在數(shù)學(xué)中,現(xiàn)代意義的算法是指可以用計算機(jī)來解決的某一類問題的程序和步驟,這些程序或步驟必須是明確和有效的,而且能夠在有限步之內(nèi)完成。
(2)算法的特征:①確定性:算法的每一步都應(yīng)當(dāng)做到準(zhǔn)確無誤、“不重不漏”!安恢亍笔侵覆皇强捎锌蔁o的、甚至無用的步驟,“不漏” 是指缺少哪一步都無法完成任務(wù)。②邏輯性:算法從開始的“第一步”直到“最后一步”之間做到環(huán)環(huán)相扣。分工明確,“前一步”是“后一步”的前提, “后一步”是“前一步”的繼續(xù)。③有窮性:算法要有明確的開始和結(jié)束,當(dāng)?shù)竭_(dá)終止步驟時所要解決的問題必須有明確的結(jié)果,也就是說必須在有限步內(nèi)完成任務(wù),不能無限制的持續(xù)進(jìn)行。
(3)算法的描述:自然語言、程序框圖、程序語言。
算法是高中數(shù)學(xué)課程中的新內(nèi)容,本章的重點(diǎn)是算法的概念和算法的三種邏輯結(jié)構(gòu)。
預(yù)測2007年高考對本章的考察是:以選擇題或填空題的形式出現(xiàn),分值在5分左右,考察的熱點(diǎn)是算法的概念。
湖北省互聯(lián)網(wǎng)違法和不良信息舉報平臺 | 網(wǎng)上有害信息舉報專區(qū) | 電信詐騙舉報專區(qū) | 涉歷史虛無主義有害信息舉報專區(qū) | 涉企侵權(quán)舉報專區(qū)
違法和不良信息舉報電話:027-86699610 舉報郵箱:58377363@163.com