第一篇:人教B版高中數(shù)學(xué)必修三+1.1.1算法的概念+教案
1.1.1算法的概念
教學(xué)目標(biāo):
1.知識(shí)與技能目標(biāo)
(1)了解算法的含義,體會(huì)算法的思想。(2)能夠說(shuō)明解決簡(jiǎn)單問(wèn)題的算法步驟。
(3)了解正確的算法應(yīng)滿足的要求,即算法的特點(diǎn)。
(4)初步了解高斯消去法的思想,會(huì)寫(xiě)出解線性方程(組)的算法。(5)了解利用Scilab求二元一次方程組解的方法。2.過(guò)程與方法目標(biāo)
通過(guò)分析高斯消去法的過(guò)程,體會(huì)算法的思想,發(fā)展對(duì)具體問(wèn)題的過(guò)程與 步驟的分析能力,發(fā)展從具體問(wèn)題中提煉算法思想的能力,發(fā)展有條理地清晰地 思維的能力,提高學(xué)生的算法素養(yǎng)。
3.情感、態(tài)度與價(jià)值觀目標(biāo)
通過(guò)本節(jié)的學(xué)習(xí),使我們對(duì)計(jì)算機(jī)的算法語(yǔ)言有一個(gè)基本的了解,明確算法的要求,認(rèn)識(shí)到計(jì)算機(jī)是人類(lèi)征服自然的一各有力工具,進(jìn)一步提高探索、認(rèn)識(shí)世界的能力。
重點(diǎn):算法的概念和算法的合理表述。難點(diǎn):算法的合理表述、高斯消去法。
教學(xué)過(guò)程:
一、引入新課
1.要把大象裝入冰箱分幾步? 第一步 把冰箱打開(kāi)。第二步 把大象放進(jìn)冰箱。第三步 把冰箱門(mén)關(guān)上。
2.組織學(xué)生模擬參加幸運(yùn)52的競(jìng)猜游戲。
價(jià)格競(jìng)猜中我們運(yùn)用了曾經(jīng)學(xué)過(guò)的二分法的數(shù)學(xué)思想。利用二分法求函數(shù)的零點(diǎn)時(shí),我們是一步一步進(jìn)行的,每一步都能得到一個(gè)結(jié)果,如果結(jié)果滿足精確度則停止運(yùn)算;若不滿足則繼續(xù)尋找,直到找到滿足精確度的結(jié)果為止。這樣的求解過(guò)程就是這一類(lèi)問(wèn)題的算法。今天我們就來(lái)學(xué)習(xí)算法的概念。
我們學(xué)過(guò)的求函數(shù)零點(diǎn)的二分法以及在解析幾何初步中利用公式計(jì)算的幾何問(wèn)題進(jìn)行
分步求解,這些計(jì)算方法都有一個(gè)共同的特點(diǎn),就是對(duì)一類(lèi)問(wèn)題(不是個(gè)別問(wèn)題)都有效,計(jì)算可以一步一步地進(jìn)行,每一步都能得到惟一的結(jié)果,通常我們把這一類(lèi)問(wèn)題的求解過(guò)程叫做解決這一類(lèi)問(wèn)題的算法。這些算法雖然很機(jī)械,計(jì)算量大,但優(yōu)點(diǎn)是一種通法,只要按部就班地去做,總能算出結(jié)果。通常把算法過(guò)程成為“數(shù)學(xué)機(jī)械化”,數(shù)學(xué)機(jī)械化最大的優(yōu)點(diǎn)是它可以利用計(jì)算機(jī)來(lái)完成。所以學(xué)習(xí)算法是為了學(xué)習(xí)編輯程序,讓計(jì)算機(jī)去幫助我們?nèi)ソ鉀Q更多的問(wèn)題。
用學(xué)生熟悉的問(wèn)題來(lái)引入算法的概念,降低新課的入門(mén)難度,有利于學(xué)生正確理解算法的概念。二.新課講解
隨著計(jì)算科學(xué)和信息技術(shù)的飛速發(fā)展,算法的思想已經(jīng)滲透到了社會(huì)的方方面面。在以前的學(xué)習(xí)中,雖然沒(méi)有出現(xiàn)算法這個(gè)名詞,但是實(shí)際在數(shù)學(xué)學(xué)習(xí)中已經(jīng)滲透了大量的算法的思想,如四則運(yùn)算的過(guò)程(先乘除后加減),完成這些工作都需要一系列程序化的步驟,這就是算法的思想。
(一)算法的概念:算法可以理解為由基本運(yùn)算及規(guī)定的運(yùn)算順序構(gòu)成的完整的解題步驟,或看成按要求設(shè)計(jì)好的有限的、確切的計(jì)算序列,并且這樣的步驟或序列能解決一類(lèi)問(wèn)題。
(二)描述算法的方式:自然語(yǔ)言、數(shù)學(xué)語(yǔ)言、形式語(yǔ)言、框圖語(yǔ)言 【例1】寫(xiě)出你在家中燒開(kāi)水的過(guò)程。解: S1、往壺內(nèi)注水; S2、點(diǎn)火加熱;
S3、觀察:如果水開(kāi),則停止燒火,否則繼續(xù)燒火; S4、如果水未開(kāi),重復(fù)“3”直至水開(kāi)。
總結(jié):1其實(shí)大部分事情都是按照一定的程序執(zhí)行,因此要理清事情的每一步。2判斷水是否燒開(kāi)與是否繼續(xù)燒火的過(guò)程是一個(gè)反饋與判斷過(guò)程,因此有必要不斷重復(fù)過(guò)程3。
廣義地說(shuō),對(duì)于一項(xiàng)任務(wù),按照事先設(shè)計(jì)好的步驟,一步一步地執(zhí)行并在有限步內(nèi)完成任務(wù),則這些步驟稱為該任務(wù)的一個(gè)算法.簡(jiǎn)單地說(shuō),算法就是就是完成工作所需要的一系列程序化的步驟,就是做某一件事的步驟或程序。菜譜是做菜肴的算法,洗衣機(jī)的使用說(shuō)明書(shū)是操作洗衣機(jī)的算法,歌譜是一首歌曲的算法。在數(shù)學(xué)中,主要研究計(jì)算機(jī)能實(shí)現(xiàn)的算法,即按照某種機(jī)械程序步驟一定可以得到結(jié)果的解決問(wèn)題的程序。比如解方程的算法、函數(shù)求值的算法、作圖的算法,等等。
【例2】一群小兔一群雞,兩群合到一群里,要數(shù)腿共48,要數(shù)腦袋整17,多少小兔
多少雞?
算法1:
解 :S1 首先計(jì)算沒(méi)有小兔時(shí),小雞的數(shù)為:17只,腿的總數(shù)為34條。
S2 再確定每多一只小兔、減少一只小雞增加的腿數(shù)2條。S3 再根據(jù)缺的腿的條數(shù)確定小兔的數(shù)量:(48-34)/2=7只 S4 最后確定小雞的數(shù)量:17-7=10只.算法2:
解 :S1 首先設(shè)x只小雞,y只小兔。
?2x?4y?48S2 再列方程組為:?
x?y?17?S3 解方程組得:??y?7
?x?10S4 指出小雞10只,小兔7只。
本題講解緊扣算法的定義,層層誘導(dǎo),提示學(xué)生如何設(shè)計(jì)步驟,可以先由學(xué)生提出,師生共同總結(jié)。最后提示學(xué)生,一個(gè)問(wèn)題算法可能不止一個(gè)。深化對(duì)算法概念的理解,使學(xué)生體會(huì)到算法并不是高滲莫測(cè)的東西,實(shí)際上是我們從前解題步驟的總結(jié)。
再歸納一般二元一次方程組的通用方法,即用高斯消去法解一般的二元一次方程組
?a11x1?a12x2?b1。??a21x1?a22x2?b2S1 假定a11?0(如果a11?0,可以將第一個(gè)方程與第二個(gè)方程互換),① ?(?a21aaab)?②,得到:(a22?2112)x2?b2?211 a11a11a11原方程組化為:
(3)?a11x1?a12x2?b1 ???aa?aax?ab?ab(4)21122112211?1122S2 如果a11a22?a21a12?0,輸出方程組無(wú)解或有無(wú)數(shù)組解
如果a11a22?a21a12?0,解(4)得x2?a11b2?a21b1(5)
a11a22?a21a1
2S3 將(5)代入(3),整理得:x1?a22b1?a12b2(6)
a11a22?a21a12S4 輸出結(jié)果x1,x2、方程組無(wú)解或有無(wú)數(shù)組解
令D?a11a22?a21a12,若D?0,方程組無(wú)解或有無(wú)數(shù)多解。若D?0,則x1?b1a22?b2a12ba?b1a21,x2?211。
DD由此可得解二元一次方程組的算法。
S
1計(jì)算D?a11a22?a21a12;
S
2如果D?0,則原方程組無(wú)解或有無(wú)窮多組解;否則(D?0),x1?b1a22?b2a12ba?b1a21,x2?211
DDS
3輸出計(jì)算結(jié)果x1、x2或者無(wú)法求解的信息。
(三)寫(xiě)算法的要求
算法不同于求解一個(gè)具體問(wèn)題的方法,是這種方法的高度概括。一個(gè)好的算法有如下要求:
1.求解的過(guò)程是事先確定的,事先都考慮好了,有確定的步驟.2.寫(xiě)出的算法,必須能解決一類(lèi)問(wèn)題(如一元二次方程求根公式),并且能重復(fù)使用。3.算法執(zhí)行過(guò)程中的每一步都是能夠做到的,要簡(jiǎn)潔,要清晰可讀,不能弄搞繁雜,以以致于易程序化。
4.算法過(guò)程要能一步一步執(zhí)行,每一步執(zhí)行的操作,必須確切,不能含混不清,而且在有限步內(nèi)有結(jié)果,應(yīng)完成給定的任務(wù)。
(四)算法的特征
確定性,通用性,可行性,有窮性,有輸出
【例3】.寫(xiě)出一個(gè)求有限整數(shù)序列中的最大值的算法。解:為了便于理解,算法步驟用自然語(yǔ)言敘述: 算法1:
S1 先假定序列中的第一個(gè)數(shù)為“最大值”。
S2 將序列的第二個(gè)整數(shù)值與“最大值”比較,如果第二個(gè)整數(shù)大于“最大值”,這時(shí)就假定這個(gè)數(shù)為“最大值”。
S3 將序列的第三個(gè)整數(shù)值與“最大值”比較,如果第三個(gè)整數(shù)大于“最大值”,這時(shí)就假定這個(gè)數(shù)為“最大值”。
S4 將序列的第四個(gè)整數(shù)值與“最大值”比較,如果第四個(gè)整數(shù)大于“最大值”,這時(shí)就假定這個(gè)數(shù)為“最大值” 依此類(lèi)推
Sn 將序列的第n個(gè)整數(shù)值與“最大值”比較,如果第n個(gè)整數(shù)大于“最大值”,這時(shí)就假定這這個(gè)數(shù)為“最大值”。
Sn+1 直到序列中沒(méi)有可比的數(shù)為止,“最大值”就是序列的最大值。算法2 S1 先假定序列中的第一個(gè)數(shù)為“最大值”。
S2 將序列中的下一個(gè)整數(shù)值與“最大值”比較,如果大于“最大值”,這時(shí)就假定這個(gè)數(shù)為“最大值”。
S3 如果序列中還有其它整數(shù),重復(fù)S2。
S4 直到序列中沒(méi)有可比的數(shù)為止,這時(shí)假定的“最大值”就是序列的最大值。帶領(lǐng)學(xué)生分析題目,找出算法。讓學(xué)生觀察算法1,思考如何簡(jiǎn)化算法?讓學(xué)生體會(huì)到算法的特點(diǎn)是:“機(jī)械的、呆板的、可以按部就班執(zhí)行”,體會(huì)到學(xué)習(xí)算法的意義和必要性。體會(huì)到算法優(yōu)化的意義,指出算法要設(shè)計(jì)合理,運(yùn)行要高效,讓學(xué)生體會(huì)順序結(jié)構(gòu)的簡(jiǎn)單直觀,但有時(shí)卻很繁瑣的特點(diǎn)。促使學(xué)生產(chǎn)生改進(jìn)方法的欲望。
試用數(shù)學(xué)語(yǔ)言寫(xiě)出對(duì)任意3個(gè)整數(shù)a、b、c中最大值的求法
S
1max=a S
2如果b>max,則max=b S
3如果c>max,則max=c, S
4max就是a、b、c中的最大值。
三、鞏固練習(xí)
1.給出求100!?1?2?3???100的一個(gè)算法。
2.給出求點(diǎn)P(x0,y0)關(guān)于直線Ax?By?C?0的對(duì)稱點(diǎn)的一個(gè)算法。
3.一位商人有9枚銀元,其中有1枚略輕的是假銀元。你能用天平(不用砝碼)將假銀元找出來(lái)嗎?
四、課堂小結(jié):
1.算法的概念:由基本運(yùn)算及規(guī)定的運(yùn)算順序所構(gòu)成的完整的解題步驟,或者是按照要求設(shè)計(jì)好的有限的計(jì)算序列,并且這樣的步驟或序列能解決一類(lèi)問(wèn)題。
2.描述算法的方式:自然語(yǔ)言、數(shù)學(xué)語(yǔ)言、形式語(yǔ)言、框圖語(yǔ)言 3.算法的特征:確定性,通用性,可行性,有窮性,有輸出
五、作業(yè)
P7練習(xí)A
P8練習(xí)B 1、2、3
第二篇:高中數(shù)學(xué) 1.1.1 算法的概念教案2 新人教A版必修3
算法的概念
教學(xué)目的:理解并掌握算法的概念與意義,會(huì)用“算法”的思想編制數(shù)學(xué)問(wèn)題的算法。教學(xué)重點(diǎn):算法的設(shè)計(jì)與算法意識(shí)的的培養(yǎng) 教學(xué)過(guò)程:
一、問(wèn)題情景:
請(qǐng)大家研究解決下面的一個(gè)問(wèn)題
1.兩個(gè)大人和兩個(gè)小孩一起渡河,渡口只有一條小船,每次只能渡1 個(gè)大人或兩個(gè)小孩,他們四人都會(huì)劃船,但都不會(huì)游泳。試問(wèn)他們?cè)鯓佣蛇^(guò)河去?請(qǐng)寫(xiě)出一個(gè)渡河方案。
(通過(guò)學(xué)生討論得出渡河方案與步驟如下)
S1 兩個(gè)小孩同船過(guò)河去; S2 一個(gè)小孩劃船回來(lái); S3 一個(gè)大人劃船過(guò)河去; S4 對(duì)岸的小孩劃船回來(lái); S5 兩個(gè)小孩同船渡過(guò)河去; S6 一個(gè)小孩劃船回來(lái);
S7 余下的一個(gè)大人獨(dú)自劃船渡過(guò)河去;對(duì)岸的小孩劃船回來(lái); S8 兩個(gè)小孩再同時(shí)劃船渡過(guò)河去。
2.一群小兔一群雞,兩群合到一群里,要數(shù)腿共48,要數(shù)腦袋整17,多少小兔多少雞?
先列方程組解題,得雞10只,兔7只; 再歸納一般二元一次方程組的通用方法,即用高斯消去法解一般的二元一次?a11x1?a12x2?b1方程組?。
ax?ax?b2222?211令D?a11a22?a21a12,若D?0,方程組無(wú)解或有無(wú)數(shù)多解。若D?0,則x1?b1a22?b2a12ba?b1a21,x2?211。
DD由此可得解二元一次方程組的算法。
S1 計(jì)算D?a11a22?a21a12;
S2 如果D?0,則原方程組無(wú)解或有無(wú)窮多組解;否則(D?0),x1?b1a22?b2a12ba?b1a21,x2?211
DDS3 輸出計(jì)算結(jié)果x1、x2或者無(wú)法求解的信息。
二、數(shù)學(xué)構(gòu)建:
算法的概念:由基本運(yùn)算及規(guī)定的運(yùn)算順序所構(gòu)成的完整的解題步驟,或者是按照要求設(shè)計(jì)好的有限的計(jì)算序列,并且這樣的步驟或序列能解決一類(lèi)問(wèn)題。
算法的五個(gè)重要特征:
(1)有窮性:一個(gè)算法必須保證執(zhí)行有限步后結(jié)束;(2)確切性:算法的每一步必須有確切的定義;
(3)可行性:算法原則上能夠精確地運(yùn)行,而且人們用筆和紙做有限次即可完成;
(4)輸入:一個(gè)算法有0個(gè)或多個(gè)輸入,以刻劃運(yùn)算對(duì)象的初始條件。所謂0個(gè)輸入是指算法本身定出了初始條件。
(5)輸出:一個(gè)算法有1個(gè)或多個(gè)輸出,以反映對(duì)輸入數(shù)據(jù)加工后的結(jié)果。沒(méi)有輸出的算法是毫無(wú)意義的。
三、知識(shí)運(yùn)用:
例1.一個(gè)人帶三只狼和三只羚羊過(guò)河,只有一條船,同船可以容納一個(gè)人和兩只動(dòng)物。沒(méi)有人在的時(shí)候,如果狼的數(shù)量不少于羚羊的數(shù)量,狼就會(huì)吃掉羚羊。(1)設(shè)計(jì)過(guò)河的算法;(2)思考每一步算法所遵循的相同之處原則是什么。
解:算法或步驟如下: S1 人帶兩只狼過(guò)河 S2 人自己返回
S3 人帶一只羚羊過(guò)河 S4 人帶兩只狼返回 S5 人帶兩只羚羊過(guò)河 S6 人自己返回 S7 人帶兩只狼過(guò)河
S8 人自己返回帶一只狼過(guò)河
例2.寫(xiě)出一個(gè)求有限整數(shù)序列中的最大值的算法。解:為了便于理解,算法步驟用自然語(yǔ)言敘述:
S1 先將序列中的第一個(gè)整數(shù)設(shè)為最大值;
S
2將序列中的下一個(gè)整數(shù)值與“最大值”比較,如果它大于此“最大值”,這時(shí)就假定“最大值”就是這個(gè)整數(shù);
S3 如果序列中還有其它整數(shù),重復(fù)S2;
S4 在序列中一直進(jìn)行到?jīng)]有可比的數(shù)為止,這時(shí)假定的“最大值”就是這個(gè)序列中的最大值。
試用數(shù)學(xué)語(yǔ)言寫(xiě)出對(duì)任意3個(gè)整數(shù)a、b、c中最大值的求法
S1 max=a S2 如果b>max,則max=b S3 如果c>max,則max=c, S4 max就是a、b、c中的最大值。
四、學(xué)力發(fā)展:
1.給出求100!?1?2?3???100的一個(gè)算法。
2.給出求點(diǎn)P(x0,y0)關(guān)于直線Ax?By?C?0的對(duì)稱點(diǎn)的一個(gè)算法。
五、課堂小結(jié):
算法的概念:由基本運(yùn)算及規(guī)定的運(yùn)算順序所構(gòu)成的完整的解題步驟,或者是按照要求設(shè)計(jì)好的有限的計(jì)算序列,并且這樣的步驟或序列能解決一類(lèi)問(wèn)題。
算法的五個(gè)重要特征:
(1)有窮性:一個(gè)算法必須保證執(zhí)行有限步后結(jié)束;(2)確切性:算法的每一步必須有確切的定義;
(3)可行性:算法原則上能夠精確地運(yùn)行,而且人們用筆和紙做有限次即可完成;
(4)輸入:一個(gè)算法有0個(gè)或多個(gè)輸入,以刻劃運(yùn)算對(duì)象的初始條件。所謂0個(gè)輸入是指算法本身定出了初始條件。
(5)輸出:一個(gè)算法有1個(gè)或多個(gè)輸出,以反映對(duì)輸入數(shù)據(jù)加工后的結(jié)果。沒(méi)有輸出的算法是毫無(wú)意義的。
六、課外作業(yè):
1.優(yōu)化設(shè)計(jì)P3-4:變式練習(xí)1-10題。2.課本P6:練習(xí)1-4題
第三篇:高中數(shù)學(xué)必修2教學(xué)設(shè)計(jì): 1.1.1算法的概念
文字資料] 1.1.1算法的概念
算法是指完成一個(gè)任務(wù)所需要的具體步驟和方法。也就是說(shuō)給定初始狀態(tài)或輸入數(shù)據(jù),經(jīng)過(guò)計(jì)算機(jī)程序的有限次運(yùn)算,能夠得出所要求或期望的終止?fàn)顟B(tài)或輸出數(shù)據(jù)。
算法常常含有重復(fù)的步驟和一些比較或邏輯判斷。如果一個(gè)算法有缺陷,或不適合于某個(gè)問(wèn)題,執(zhí)行這個(gè)算法將不會(huì)解決這個(gè)問(wèn)題。不同的算法可能用不同的時(shí)間、空間或效率來(lái)完成同樣的任務(wù)。一個(gè)算法的優(yōu)劣可以用空間復(fù)雜度與時(shí)間復(fù)雜度來(lái)衡量。〖算法的歷史〗
“算法”(algorithm)來(lái)自于9世紀(jì)波斯數(shù)學(xué)家比阿勒·霍瓦里松的名字al-Khwarizmi,比阿勒·霍瓦里松在數(shù)學(xué)上提出了算法這個(gè)概念?!八惴ā痹瓰椤癮lgorism”,意思是阿拉伯?dāng)?shù)字的運(yùn)算法則,在18世紀(jì)演變?yōu)椤癮lgorithm”。第一次編寫(xiě)算法是Ada Byron于1842年為巴貝奇分析機(jī)編寫(xiě)求解解伯努利方程的程序,因此Ada Byron被大多數(shù)人認(rèn)為是世界上第一位程序員。因?yàn)榘拓惼?Charles Babbage)未能完成他的巴貝奇分析機(jī),這個(gè)算法未能在巴貝奇分析機(jī)上執(zhí)行。因?yàn)椤皐ell-defined procedure”缺少數(shù)學(xué)上精確的定義,19世紀(jì)和20世紀(jì)早期的數(shù)學(xué)家、邏輯學(xué)家在定義算法上出現(xiàn)了困難。20世紀(jì)的英國(guó)數(shù)學(xué)家圖靈提出了著名的圖靈論題,并提出一種假想的計(jì)算機(jī)的抽象模型,這個(gè)模型被稱為圖靈機(jī)。圖靈機(jī)的出現(xiàn)解決了算法定義的難題,圖靈的思想對(duì)算法的發(fā)展起到了重要的作用。
一個(gè)算法應(yīng)該具有以下五個(gè)重要的特征:
有窮性: 一個(gè)算法必須保證執(zhí)行有限步之后結(jié)束;
確切性: 算法的每一步驟必須有確切的定義;
輸入:一個(gè)算法有0個(gè)或多個(gè)輸入,以刻畫(huà)運(yùn)算對(duì)象的初始情況,所謂0個(gè)輸入是指算法本身定除了初始條件;
輸出:一個(gè)算法有一個(gè)或多個(gè)輸出,以反映對(duì)輸入數(shù)據(jù)加工后的結(jié)果。沒(méi)有輸出的算法是毫無(wú)意義的;
可行性: 算法原則上能夠精確地運(yùn)行,而且人們用筆和紙做有限次運(yùn)算后即可完成。
〖形式化算法〗
算法是計(jì)算機(jī)處理信息的本質(zhì),因?yàn)橛?jì)算機(jī)程序本質(zhì)上是一個(gè)算法來(lái)告訴計(jì)算機(jī)確切的步驟來(lái)執(zhí)行一個(gè)指定的任務(wù),如計(jì)算職工的薪水或打印學(xué)生的成績(jī)單。一般地,當(dāng)算法在處理信息時(shí),會(huì)從輸入設(shè)備或數(shù)據(jù)的存儲(chǔ)地址讀取數(shù)據(jù),把結(jié)果寫(xiě)入輸出設(shè)備或某個(gè)存儲(chǔ)地址供以后再調(diào)用?!妓惴ǖ膶?shí)現(xiàn)〗
算法不單單可以用計(jì)算機(jī)程序來(lái)實(shí)現(xiàn),也可以在神經(jīng)網(wǎng)絡(luò)、電路或者機(jī)械設(shè)備上實(shí)現(xiàn)。·例子
這是算法的一個(gè)簡(jiǎn)單的例子。
如果將數(shù)列中的每一個(gè)數(shù)字看成是一顆豆子的大小,可以將下面的算法形象地稱為“撿豆子”: 首先將第一顆豆子放入口袋中。
從第二顆豆子開(kāi)始檢查,直到最后一顆豆子。如果正在檢查的豆子比口袋中的還大,則將它撿起放入口袋中,同時(shí)丟掉原先口袋中的豆子。
最后口袋中的豆子就是所有的豆子中最大的一顆。下面是一個(gè)形式算法,用近似于編程語(yǔ)言的偽代碼表示
給定:一個(gè)數(shù)列“l(fā)ist“,以及數(shù)列的長(zhǎng)度”length(list)" largest = list[1] for counter = 2 to length(list): if list[counter] > largest: largest = list[counter] print largest 符號(hào)說(shuō)明: = 用于表示賦值。即:右邊的值被賦予給左邊的變量。List[counter]用于表示數(shù)列中的第counter項(xiàng)。例如:如果counter的值是5,那么List[counter]表示數(shù)列中的第5項(xiàng)。<= 用于表示“小于或等于”。
==例子==
設(shè)兩個(gè)變量 M 和 N 1.如果 M < N,則交換 M 和 N 2.以 N 除以 M,得到余數(shù) R 3.判斷 R=0,正確則 N 即為“最大公約數(shù)”,否則下一步 4.將 N 賦值給 M,將 R 賦值給 N,重做第一步。用“Basic 代碼”表示--
If M < N Then Swap M,N Do While R <> 0 R = M Mod N M = N N = R Loop Print R
〖算法設(shè)計(jì)和分析的基本方法〗
分治法:字面上的解釋是“分而治之”,就是把一個(gè)復(fù)雜的問(wèn)題分成兩個(gè)或更多的相同或相似的子問(wèn)題,再把子問(wèn)題分成更小的子問(wèn)題??直到最后子問(wèn)題可以簡(jiǎn)單的直接求解,原問(wèn)題的解即子問(wèn)題的解的合并。這個(gè)技巧是很多高效算法的基礎(chǔ),如排序算法(快速排序,歸并排序),傅立葉變換(快速傅立葉變換)??
動(dòng)態(tài)規(guī)劃:動(dòng)態(tài)規(guī)劃在查找有很多重疊子問(wèn)題的情況的最優(yōu)解時(shí)有效。它將問(wèn)題重新組合成子問(wèn)題。為了避免多次解決這些子問(wèn)題,它們的結(jié)果都逐漸被計(jì)算并被保存,從簡(jiǎn)單的問(wèn)題直到整個(gè)
因此,動(dòng)態(tài)規(guī)劃保存遞歸時(shí)的結(jié)果,因而不會(huì)在解決同樣的問(wèn)題時(shí)花費(fèi)時(shí)間。
貪心法(亦作饕餮法):就是一種在每一步選擇中都采取在當(dāng)前狀態(tài)下最好/優(yōu)的選擇,從而希望導(dǎo)致結(jié)果是最好/優(yōu)的算法。貪心法可以解決一些最優(yōu)性問(wèn)題,如:求圖中的最小生成樹(shù)、求哈夫曼編碼??對(duì)于其他問(wèn)題,貪心法一般不能得到我們所要求的答案。一旦一個(gè)問(wèn)題可以通過(guò)貪心法來(lái)解決,那么貪心法一般是解決這個(gè)問(wèn)題的最好辦法。由于貪心法的高效性以及其所求得的答案比較接近最優(yōu)結(jié)果,貪心法也可以用作輔助算法或者直接解決一些要求結(jié)果不特別精確的問(wèn)題?!妓惴ǖ姆诸?lèi)〗
·基本算法 〔枚舉 搜索(深度優(yōu)先搜索 廣度優(yōu)先搜索 啟發(fā)式搜索 遺傳算法)〕 ·數(shù)據(jù)結(jié)構(gòu)的算法 ·數(shù)論與代數(shù)算法
·計(jì)算幾何的算法(凸包算法)
·圖論的算法(哈夫曼編碼 樹(shù)的遍歷 最短路徑算法 最小生成樹(shù)算法 最小樹(shù)形圖 網(wǎng)絡(luò)流算法 匹配算法)· 動(dòng)態(tài)規(guī)劃
·其他(數(shù)值分析 加密算法 排序算法 檢索算法 隨機(jī)化算)
還可以分成串行算法、并行算法。
〖算法的復(fù)雜性〗
算法的復(fù)雜性是算法效率的度量,在評(píng)價(jià)算法性能時(shí),復(fù)雜性是一個(gè)重要的依據(jù)。算法的復(fù)雜性的程度與運(yùn)行該算法所需要的計(jì)算機(jī)資源的多少有關(guān),所需要的資源越多,表明該算法的復(fù)雜性越高;所需要的資源越少,表明該算法的復(fù)雜性越低。
計(jì)算機(jī)的資源,最重要的是運(yùn)算所需的時(shí)間和存儲(chǔ)程序和數(shù)據(jù)所需的空間資源,算法的復(fù)雜性有時(shí)間復(fù)雜性和空間復(fù)雜性之分。
算法在計(jì)算機(jī)上執(zhí)行運(yùn)算,需要一定的存儲(chǔ)空間存放描述算法的程序和算法所需的數(shù)據(jù),計(jì)算機(jī)完成運(yùn)算任務(wù)需要一定的時(shí)間。根據(jù)不同的算法寫(xiě)出的程序放在計(jì)算機(jī)上運(yùn)算時(shí),所需要的時(shí)間和空間是不同的,算法的復(fù)雜性是對(duì)算法運(yùn)算所需時(shí)間和空間的一種度量。不同的計(jì)算機(jī)其運(yùn)算速度相差很大,在衡量一個(gè)算法的復(fù)雜性要注意到這一點(diǎn)。
對(duì)于任意給定的問(wèn)題,設(shè)計(jì)出復(fù)雜性盡可能低的算法是在設(shè)計(jì)算法時(shí)考慮的一個(gè)重要目標(biāo)。另外,當(dāng)給定的問(wèn)題已有多種算法時(shí),選擇其中復(fù)雜性最低者,是在選用算法時(shí)應(yīng)遵循的一個(gè)重要準(zhǔn)則。因此,算法的復(fù)雜性分析對(duì)算法的設(shè)計(jì)或選用有著
在討論算法的復(fù)雜性時(shí),有兩個(gè)問(wèn)題要弄清楚:
(1)一個(gè)算法的復(fù)雜性用怎樣的一個(gè)量來(lái)表達(dá);
(2)怎樣計(jì)算一個(gè)給定算法的復(fù)雜性。
找到求解一個(gè)問(wèn)題的算法后,接著就是該算法的實(shí)現(xiàn),至于是否可以找到實(shí)現(xiàn)的方法,取決于算法的可計(jì)算性和計(jì)算的復(fù)雜性,該問(wèn)題是否存在求解算法,能否提供算法所需要的時(shí)間資源和空間資源。
篩選法求質(zhì)數(shù)
質(zhì)數(shù)亦叫作素?cái)?shù),是大于1的自然數(shù),并且除了該數(shù)本身和1以外沒(méi)有其它的數(shù)能整除它,如2,3,5,7,11,13,?,質(zhì)數(shù)有無(wú)窮多個(gè)。
(1)判斷143是否為質(zhì)數(shù)。解:
Step1:143÷2不為整數(shù); Step2:143÷3不為整數(shù); Step3:143÷4不為整數(shù); Step4:143÷5不為整數(shù); Step5:143÷6不為整數(shù); Step6:143÷7不為整數(shù); Step7:143÷8不為整數(shù); Step8:143÷9不為整數(shù);
:143÷10不為整數(shù);
Step10:143÷11=13,143能被11整除; Step11:結(jié)論:143不是質(zhì)數(shù)。(2)判斷17是否為質(zhì)數(shù)。解:
Step1:17÷2不為整數(shù); Step2:17÷3不為整數(shù); Step3:17÷4不為整數(shù); Step4:17÷5不為整數(shù); Step5:17÷6不為整數(shù); Step6:17÷7不為整數(shù); Step7:17÷8不為整數(shù); Step8:17÷9不為整數(shù); Step9:17÷10不為整數(shù); Step10:17÷11不為整數(shù); Step11:17÷12不為整數(shù); Step12:17÷13不為整數(shù); Step13:17÷14不為整數(shù); Step14:17÷15不為整數(shù); Step15:17÷16不為整數(shù); Step16:結(jié)論:17是質(zhì)數(shù)。
3)判斷216091是不是質(zhì)數(shù)
該題的計(jì)算量非常大,我們可以把算法編為程序,由計(jì)算機(jī)幫我們計(jì)算。
(4)設(shè)計(jì)一個(gè)算法,輸入大于2的整數(shù)n,由計(jì)算機(jī)判斷它是不是質(zhì)數(shù)。
解:Step1:輸入整數(shù)n;
Step2:依次檢驗(yàn)2~(n-1)是不是n的因數(shù),若有這樣的數(shù),則n不是質(zhì)數(shù),否則,n為質(zhì)數(shù)。Step3:輸出結(jié)果。
說(shuō)明:其中第3步在計(jì)算機(jī)中可以通過(guò)一個(gè)循環(huán)來(lái)實(shí)現(xiàn),今后會(huì)學(xué)到
第四篇:《1.1.1算法的概念》教案
1.1.1 算法的概念(第1課時(shí))
【課程標(biāo)準(zhǔn)】通過(guò)對(duì)解決具體問(wèn)題過(guò)程與步驟的分析(如二元一次方程
組求解等問(wèn)題),體會(huì)算法的思想,了解算法的含義.【教學(xué)目標(biāo)】1.理解算法的概念與特點(diǎn);
2.學(xué)會(huì)用自然語(yǔ)言描述算法,體會(huì)算法思想; 3.培養(yǎng)學(xué)生邏輯思維能力與表達(dá)能力.【教學(xué)重點(diǎn)】算法概念以及用自然語(yǔ)言描述算法
【教學(xué)難點(diǎn)】用自然語(yǔ)言描述算法
【教學(xué)過(guò)程】
一、游戲引入
1.漢諾塔游戲;(詳見(jiàn)課件演示)2.雞兔同籠問(wèn)題。
雞兔同籠問(wèn)題:雞和兔共有若干只,數(shù)腿共有94條,數(shù)頭共35只,請(qǐng)問(wèn)各有雞兔多少只?能不能說(shuō)出解決這個(gè)問(wèn)題的步驟(過(guò)程)!
二、新課探究
a1x?b1y?c1,1、對(duì)于一般的二元一次方程組a2x?b2y?c2,?其中a1b2?a2b1?0,能否找到一個(gè)程序化的求解步驟:
2、算法的概念
通過(guò)對(duì)以上幾個(gè)問(wèn)題的分析,我們對(duì)算法有了一個(gè)初步的了解.在解決某些問(wèn)題時(shí),需要設(shè)計(jì)出一系列可操作或可計(jì)算的步驟,通過(guò)實(shí)施這些步驟來(lái)解決問(wèn)題,通常把這些在數(shù)學(xué)中叫做算法?,F(xiàn)代意義上的“算法”通常是指可以用計(jì)算機(jī)來(lái)解決的某一類(lèi)問(wèn)題的程序或步驟,這些程序或步驟必須是明確和有效的,而且能夠在有限步之內(nèi)完成.三、知識(shí)應(yīng)用
1.說(shuō)說(shuō)你在家里燒開(kāi)水過(guò)程的一個(gè)算法.第一步:把水注入電鍋; 第二步:打開(kāi)電源把水燒開(kāi); 第三步:把燒開(kāi)的水注入熱水瓶.(以上算法是解決某一問(wèn)題的程序或步驟)2.例1(1)設(shè)計(jì)一個(gè)算法,判斷7是否為質(zhì)數(shù).(2)設(shè)計(jì)一個(gè)算法,判斷35是否是質(zhì)數(shù).3.探究:設(shè)計(jì)一個(gè)算法,判斷整數(shù)n(n>2)是否為質(zhì)數(shù).四、課堂練習(xí)
1、(課本第5頁(yè)練習(xí)1)任意給定一個(gè)正實(shí)數(shù),設(shè)計(jì)一個(gè)算法求以這個(gè)數(shù)為半徑的圓的面積.解:第一步:輸入任意正實(shí)數(shù)r 第二步:計(jì)算S??r2; 第三步:輸出圓的面積S.2、(課本第5頁(yè)練習(xí)2)任意給定一個(gè)大于1的正整數(shù)n,設(shè)計(jì)一個(gè)算法求出n的所有因數(shù).解:根據(jù)因數(shù)的定義,可設(shè)計(jì)出下面的一個(gè)算法: 第一步:輸入大于1的正整數(shù)n.第二步:判斷n是否等于2,若n?2,則n的因數(shù)為1,n;若n?2,則執(zhí)行第三步.第三步:依次從2到n?1檢驗(yàn)是不是整除n,若整除n,則是n的因數(shù);若不整除n,則不是n的因數(shù).五、課堂小結(jié) 1.算法的特性:
①有限性:一個(gè)算法的步驟序列是有限的,它應(yīng)在有限步操作之后停止,而不能是無(wú)限的.②確定性:算法中的每一步應(yīng)該是確定的并且能有效地執(zhí)行且得到確定的結(jié)果,而不應(yīng)當(dāng)是模棱兩可.③可行性:算法中的每一步操作都必須是可執(zhí)行的,也就是說(shuō)算法中的每一步都能通過(guò)手工和機(jī)器在有限時(shí)間內(nèi)完成.2.描述算法的一般步驟:
①輸入數(shù)據(jù).②數(shù)據(jù)處理.③輸出結(jié)果.六、作業(yè)
1、求1×3 × 5 × 7 × 9 × 11的值,寫(xiě)出其算法。
2、寫(xiě)出解不等式 x2?2x?3?0的一個(gè)算法。
七、課后反思:
第五篇:§1.1.1 算法的概念教案
§1.1.1 算法的概念
【教學(xué)目標(biāo)】:
(1)了解算法的含義,體會(huì)算法的思想。(2)能夠用自然語(yǔ)言敘述算法。(3)掌握正確的算法應(yīng)滿足的要求。
【過(guò)程與方法】:通過(guò)求解二元一次方程組,體會(huì)解方程的一般性步驟,從而得到一個(gè)解二元一次方程組的步驟,這些步驟就是算法,不同的問(wèn)題有不同的算法。由于思考問(wèn)題的角度不同,同一個(gè)問(wèn)題也可能有多個(gè)算法,能模仿求解二元一次方程組的步驟,寫(xiě)出一個(gè)求一個(gè)一元二次方程解的算法。
【情感態(tài)度與價(jià)值觀】:通過(guò)本節(jié)的學(xué)習(xí),使我們對(duì)計(jì)算機(jī)的算法語(yǔ)言有一個(gè)基本的了解,明確算法的要求,認(rèn)識(shí)到計(jì)算機(jī)是人類(lèi)征服自然的一各有力工具,進(jìn)一步提高探索、認(rèn)識(shí)世界的能力。
【教學(xué)重點(diǎn)】算法的含義和判斷一個(gè)數(shù)為質(zhì)數(shù)的算法設(shè)計(jì)。.【教學(xué)難點(diǎn)】把自然語(yǔ)言轉(zhuǎn)化為算法語(yǔ)言。.【教法】:采用“問(wèn)題探究與學(xué)案相結(jié)合”教學(xué)法,以多媒體為輔助手段,讓學(xué)生主動(dòng)發(fā)現(xiàn)問(wèn)題、分析問(wèn)題、解決問(wèn)題,培養(yǎng)學(xué)生的探究論證、邏輯思維能力。
【教學(xué)過(guò)程】
一、本章章頭圖說(shuō)明
章頭圖為我們展示的是古代與近代的計(jì)算工具:算籌與算盤(pán).以及20世紀(jì)最偉大的發(fā)明——計(jì)算機(jī),體現(xiàn)了中國(guó)古代數(shù)學(xué)與現(xiàn)代計(jì)算機(jī)科學(xué)的聯(lián)系,它們的基礎(chǔ)都是“算法”。計(jì)算機(jī)是強(qiáng)大的實(shí)現(xiàn)各種算法的工具。那么,計(jì)算機(jī)是怎樣工作的呢?算法的學(xué)習(xí)是一個(gè)開(kāi)始。
二、引入新課
1、怎樣理解算法?
?x?2y??1引例1:解二元一次方程組:
??2x?y?1① ②分析:解二元一次方程組的主要思想是消元的思想,有代入消元和加減消元兩種消元的方法,下面用加減消元法寫(xiě)出它的求解過(guò)程.解:第一步:②①×a2,得:?a1b2?a2b1?y?a1c2?a2c③
第二步:解③得 y?a1c2?a2c1;
a1b2?a2b1
第三步:將y?a1c2?a2c1bc?b1c2代入①,得x?21
a1b2?a2b1a1b2?a2b1評(píng)注:1.以上求解的步驟就是解二元一次方程組的算法.2本題的算法是由加減消元法求解的,同樣利用代入消元也可達(dá)到解方程組的目的,解決一個(gè)問(wèn)題不一定只有一種算法
算法概念: 算法通常是指可以用計(jì)算機(jī)來(lái)解決的某一類(lèi)問(wèn)題的程序或步驟,這些程序或步驟必須是明確的和有效的,而且能夠在有限步之內(nèi)完成。
例如:描述太極拳動(dòng)作的圖解,就是“太極拳的算法”;一首歌的樂(lè)譜,可以稱之為該歌曲的算法。從小學(xué)到高中遇到的算法絕大多數(shù)都與“計(jì)算”有關(guān)的問(wèn)題。
2.算法的特點(diǎn): ①有窮性:一個(gè)算法的步驟序列是有限的,它應(yīng)在有限步操作之后停止,而不能是無(wú)限地執(zhí)行下去。
②確定性:算法中的每一步應(yīng)該是確定的并且能有效地執(zhí)行且得到確定的結(jié)果,而不應(yīng)當(dāng)是模棱兩可的。
③邏輯性:算法從初始步驟開(kāi)始,分為若干個(gè)明確的步驟,前一步是后一步的前提,只有執(zhí)行完前一步才能進(jìn)行下一步,并且每一步都準(zhǔn)確無(wú)誤,才能完成問(wèn)題。
④不唯一性:求解某一個(gè)問(wèn)題的算法不一定只有唯一的一個(gè),可以有不同的算法。⑤普遍性:很多具體的問(wèn)題,都可以設(shè)計(jì)合理的算法去解決。
2、例題講評(píng):
例
1、設(shè)計(jì)算法判斷任意一個(gè)大于2的正整數(shù)n是否是質(zhì)數(shù)。
分析:首先考慮判斷一個(gè)具體的數(shù)是否是質(zhì)數(shù)的方法,以7為例。
根據(jù)質(zhì)數(shù)的定義,可以這樣判斷:依次用2~6去除7如果它們中有一個(gè)數(shù)能整除7,則7不是質(zhì)數(shù),否則7是質(zhì)數(shù)。
第一步 用2除7,得到余數(shù)1,所以2不能整除7
第二步 用3除7,得到余數(shù)1,所以3不能整除7
第三步 用4除7,得到余數(shù)3,所以4不能整除7
第四步 用5除7,得到余數(shù)2,所以5不能整除7
第五步 用6除7,得到余數(shù)1,所以6不能整除7,因此,7是質(zhì)數(shù)。
根據(jù)以上分析,對(duì)于任意大于2的正整數(shù)n,判斷它是否為質(zhì)數(shù)的算法如下:
第一步:給出大于2的正整數(shù)
第二步:令i=2
第三步:用i 除n,得到余數(shù)r
第四步: 判斷“r=0”是否成立。若是則n 不是質(zhì)數(shù),結(jié)束算法;否則將 i 的值增加1,仍用 i表示
第五步:判斷
“i >(n-1)” 是否成立。若是,則n是質(zhì)數(shù),結(jié)束算法;否則,返回第三步。
(設(shè)計(jì)意圖:通過(guò)這個(gè)例子從特殊到一般的過(guò)程,使學(xué)生進(jìn)一步體會(huì)到算法概括性,邏輯性,有限性,練習(xí)把自然語(yǔ)言轉(zhuǎn)化成規(guī)范的算法語(yǔ)言)
例
2、.用二分法設(shè)計(jì)一個(gè)求方程x2?2?0的近似根的算法.分析:該算法實(shí)質(zhì)是求2的近似值的一個(gè)最基本的方法.解:設(shè)精確度為d,初始區(qū)間【a,b】且f?a?f?b??0
2??fx?x?2;
第二步:令m=(a+b)/2 算法:第一步:令
第三步:若f?a??f?m??0,則b=m;否則,令a=m.第四步:判斷|a-b| 三、小結(jié) 1、算法概念和算法的基本思想 (1)算法與一般意義上具體問(wèn)題的解法的聯(lián)系與區(qū)別;(2)算法的五個(gè)特征。 2、兩類(lèi)算法問(wèn)題 (1)數(shù)值性計(jì)算問(wèn)題,如:解方程(或方程組),解不等式(或不等式組),套用公式判斷性的問(wèn)題,累加,累乘等一類(lèi)問(wèn)題的算法描述,可通過(guò)相應(yīng)的數(shù)學(xué)模型借助一般數(shù)學(xué)計(jì)算方法,分解成清晰的步驟,使之條理化即可。 (2)非數(shù)值性計(jì)算問(wèn)題,如:排序、查找、變量變換、文字處理等需先建立過(guò)程模型,通過(guò)模型進(jìn)行算法設(shè)計(jì)與描述。 四、作業(yè): 完成學(xué)案作業(yè) 六 五、板書(shū)設(shè)計(jì) 1.1.1 算法的概念 一問(wèn)題1 二 概念 例2 問(wèn)題2 三例1 小結(jié)