第一篇:冒泡排序說課稿
冒泡排序說課稿
各位評(píng)委大家好,很高興能給我十分鐘的時(shí)間和大家交流。我叫周芮,來自09教技。今天我要說課的課題是《冒泡排序》。該課選自浙教版《算法與程序設(shè)計(jì)》。排序算法是本書中比較精彩但也是相對(duì)較難的部分之一,它的內(nèi)容豐富,形式多樣。而冒泡排序又是相對(duì)簡單的一種排序方法。它是本章的第一課時(shí),在本章中起著示范作用,所以講好這節(jié)課是教好以后的課的關(guān)鍵。
綜合以上幾點(diǎn),我將本課的教學(xué)目標(biāo)制定如下: 知識(shí)與技能:
掌握冒泡排序的原理;
理解冒泡排序的流程圖
過程與方法:
通過游戲中對(duì)人物財(cái)富的排序,理解冒泡排序的基
本原理和方法;
通過歸納冒泡排序算法來編寫流程圖
情感態(tài)度價(jià)值觀:培養(yǎng)學(xué)生分析問題以及解決日常生活中實(shí)際問題的人能力,發(fā)現(xiàn)規(guī)律的能力。并激發(fā)學(xué)生主動(dòng)學(xué)習(xí)的興趣
基于對(duì)教材的理解,我將本堂課的重點(diǎn)定為掌握冒泡排序的算法,難點(diǎn)為歸納算法,用流程圖表示。
我們現(xiàn)在面對(duì)的學(xué)生是所謂的90后,他們普遍具有創(chuàng)造性,容易接受新事物,善于發(fā)現(xiàn)的特點(diǎn)。他們對(duì)認(rèn)知規(guī)律從感性逐步提升到了理性。而且學(xué)生有個(gè)普遍的特性就是愛玩,這是他們的天性?;谶@一特點(diǎn),我將會(huì)用游戲來引發(fā)他們的學(xué)習(xí)興趣。在知識(shí)準(zhǔn)備方面,學(xué)生
先前已經(jīng)學(xué)過了算法的表示方法,三種基本結(jié)構(gòu),熟悉了變量的運(yùn)用,能用算法描述一般問題的解決步驟。
在教法方面,我將選用演示法、任務(wù)驅(qū)動(dòng)法、練習(xí)法。
在學(xué)法方面,主要是聽講法和自主探究學(xué)習(xí)法,通過老師講解以及自己的親身體驗(yàn)來探究算法的原理。
《師說》中提到,“師者,傳到授業(yè)解惑也”,教學(xué)也就是為學(xué)生解決疑惑的。我的教學(xué)過程也就圍繞“惑”這個(gè)字展開,我稱之為“惑之四部曲”。
第一部曲是“遇惑”。我先創(chuàng)設(shè)一個(gè)游戲情境——大富翁,這是一款比較普遍的游戲,容易引起學(xué)生的共鳴,從而引發(fā)學(xué)生的學(xué)習(xí)興趣。利用游戲中的一個(gè)情景——財(cái)富排行榜,來引出教學(xué)內(nèi)容。首先我展示的排行榜上可能只有幾個(gè)人,同學(xué)們能夠很輕易地給出結(jié)果,可是當(dāng)人數(shù)增多的時(shí)候,同學(xué)們就會(huì)覺得比較困難,當(dāng)人數(shù)到達(dá)一定的數(shù)量后同學(xué)們會(huì)覺得這簡直是不可能完成的任務(wù)。這樣,老師就可以引出學(xué)習(xí)的內(nèi)容——冒泡排序。
這一設(shè)計(jì),我主要考慮到學(xué)生對(duì)數(shù)量少的數(shù)據(jù)能夠比較容易地完成而不是通過考慮“按什么方法完成的”。這樣增加難度后可以讓學(xué)生體會(huì)到算法的好處,從而引起主動(dòng)學(xué)習(xí)的興趣,可以自然引出冒泡排序算法的思想。第二部曲是“析惑”。
為了讓同學(xué)們腦海中模糊的思想變清晰,我準(zhǔn)備了一個(gè)FLASH課件小游戲,內(nèi)容就是大富翁的財(cái)富排行榜。我制定這么一個(gè)規(guī)則:將財(cái)富從少到多排列。可以通過從右往左的順序兩兩進(jìn)行對(duì)比,將較低的人往左排。
通過這樣一個(gè)環(huán)節(jié),可以讓同學(xué)們比較直觀的感受到冒泡算法的思想,是如何進(jìn)行的。第三部曲是“解惑”
首先我會(huì)請(qǐng)同學(xué)用自然語言來描述算法的思想,我進(jìn)行小結(jié)。接著我將繼續(xù)提問如何用流程圖表示。在這里我先會(huì)引入一個(gè)數(shù)組的概念,用板書演示。為了讓同學(xué)更加透徹了解算法,我會(huì)用數(shù)組來演示詳細(xì)的過程。用變量i表示趟值,用j表示帶比較數(shù)組的位置。若d(j) 在課堂快結(jié)束時(shí)我將會(huì)進(jìn)行課堂小結(jié),回顧本堂課的知識(shí)點(diǎn)提問讓同 學(xué)回答算法思想,達(dá)到鞏固的目的。 最后一部曲是“掃惑”。我會(huì)給同學(xué)們布置一個(gè)任務(wù),給出一張成績單,上面印有一個(gè)同學(xué)的各科的考試成績。讓同學(xué)們用冒泡排序算法寫出各趟排序結(jié)果并上交。這樣可以及時(shí)檢測同學(xué)們是否學(xué)會(huì)了。得到及時(shí)的反饋。 總結(jié):因?yàn)檫@堂課相對(duì)而言是比較難的,如何長時(shí)間吸引學(xué)生的注意力是我要考慮的一個(gè)問題。為此,我進(jìn)行了如下設(shè)計(jì): 1、用游戲引入課堂,逐步加深問題的難度 2、用FLASH課件演示 3、用表格列舉 4、請(qǐng)同學(xué)們補(bǔ)充流程圖 冒泡排序 信息技術(shù) 呂紅波 教學(xué)內(nèi)容分析 教材是教育科學(xué)出版社《算法與程序設(shè)計(jì)》,內(nèi)容為第三章第四節(jié)第一部分《冒泡法排序算法》。排序算法是使用頻率最高的算法之一,而冒泡排序是其中一種很典型而且相對(duì)簡單的方法,這部分內(nèi)容重點(diǎn)在于介紹冒泡排序的原理以及如何用程序?qū)崿F(xiàn)冒泡排序算法,要求學(xué)生理解冒泡排序的過程的同時(shí),能夠運(yùn)用冒泡排序算法解決實(shí)際問題。 教學(xué)對(duì)象分析 通過前面的學(xué)習(xí),學(xué)生已經(jīng)了解vb算法設(shè)計(jì)的基本知識(shí),學(xué)會(huì)利用自然語言和流程圖描述解決問題的算法,對(duì)排序中循環(huán)語句以及數(shù)組變量的使用方法都有了一定的基礎(chǔ)。但由于程序設(shè)計(jì)思想比較弱,在實(shí)際生活中往往忽視運(yùn)用排序算法來處理實(shí)際問題,這就要求學(xué)生通過本節(jié)課的學(xué)習(xí),學(xué)會(huì)運(yùn)用冒泡排序算法來處理實(shí)際問題,并為以后學(xué)習(xí)其它排序算法打下基礎(chǔ)。 教學(xué)目標(biāo) 1.知識(shí)與技能: 掌握冒泡排序的原理 理解冒泡排序的主要代碼 2.過程與方法: 能夠有效使用冒泡排序思想設(shè)計(jì)解決簡單的排序問題 3.情感、態(tài)度與價(jià)值觀: 提升分析問題、發(fā)現(xiàn)規(guī)律的能力 形成對(duì)排序算法探索的強(qiáng)烈愿望 教學(xué)重點(diǎn)、難點(diǎn) 教學(xué)重點(diǎn):冒泡排序的過程和原理 教學(xué)難點(diǎn):冒泡排序主程序代碼的實(shí)現(xiàn) 教學(xué)方法 講授法、活動(dòng)型教學(xué)法、任務(wù)驅(qū)動(dòng)教學(xué)法 教學(xué)過程 1.創(chuàng)設(shè)情景、激發(fā)興趣 教師活動(dòng):出示2011-2012賽季NBA部分球員數(shù)據(jù)統(tǒng)計(jì)表。 提問:想知道誰的得分最高,誰的罰球最好,用什么方法? 學(xué)生活動(dòng):學(xué)生思考問題,給出可能性答案:excel排序和用程序設(shè)計(jì)實(shí)現(xiàn)。 2.圖文并茂、理解過程 教師活動(dòng):運(yùn)用程序設(shè)計(jì)中的冒泡排序算法可以實(shí)現(xiàn)。展示圖片,講解冒泡排序“冒泡”由來。 ppt展示任務(wù):運(yùn)用冒泡排序法將10,2,6,7,4從小到大進(jìn)行排列。 結(jié)合ppt對(duì)冒泡排序?qū)崿F(xiàn)過程進(jìn)行講解。 學(xué)生活動(dòng):結(jié)合教師講解和ppt內(nèi)容,理解冒泡排序原理。教師活動(dòng):播放一段關(guān)于冒泡排序的視頻。 3.結(jié)合過程、書寫代碼 教師活動(dòng):講解冒泡排序主程序部分,書寫偽代碼。學(xué)生活動(dòng):理解主程序。 4.總結(jié)歸納、學(xué)以致用 教師活動(dòng):組織學(xué)生開展活動(dòng):隨機(jī)抽選五位男生、五位女生,按性別分組,用布遮住自己的眼睛,每組隨機(jī)排成一隊(duì),要求隊(duì)伍從左到右由高到矮排列,看哪組所用時(shí)間短。 提示:摸對(duì)方的頭頂和自己比較的方式,結(jié)合冒泡排序來 完成。 歸納總結(jié):什么是冒泡法排序? 在排序過程中,使小的數(shù)就像氣泡一樣逐層上浮,而使大的數(shù)逐個(gè)下沉。 拓展延伸:冒泡排序有不足之處。排序算法包括很多:插入排序、選擇排序、快速排序、希爾排序等。 板書設(shè)計(jì) 冒泡法排序Visual Basic偽代碼: For i=1 to 4 For j= 1 TO 5-i If a(j)>a(j+1)THEN 交換a(j)和a(j+1)的值 End if Next j Next i 學(xué)習(xí)效果評(píng)價(jià) 1.在教學(xué)實(shí)踐過程中對(duì)學(xué)生操作效果和結(jié)論的及時(shí)反饋評(píng)價(jià)。2.完成本節(jié)課學(xué)習(xí)任務(wù)后,學(xué)生根據(jù)教學(xué)目標(biāo)完成自我評(píng)價(jià)。 教學(xué)反思 本節(jié)課內(nèi)容理論性比較強(qiáng),通過多種方式來向?qū)W生呈現(xiàn)冒泡排序的過程,通過類比的方式讓學(xué)生了解冒泡排序,通過一段有創(chuàng)意的舞蹈來進(jìn)一步讓學(xué)生了解冒泡排序的過程,避免了理論知識(shí)的枯燥,防止學(xué)生課內(nèi)思維疲勞,讓學(xué)生樂于去接受。最后通過一個(gè)簡單的游戲讓學(xué)生學(xué)以致用,來解決實(shí)際問題。通過教師的歸納總結(jié)讓學(xué)生正確的看待冒泡排序算法。 數(shù)據(jù)結(jié)構(gòu)——冒泡排序(第19講,第9章) 一、復(fù)習(xí)回顧 什么是排序:排序是把一個(gè)無序的數(shù)據(jù)元素序列整理成有規(guī)律的按排序關(guān)鍵字遞增(或遞減)排列的有序序列的過程。 /************************************************(已經(jīng)學(xué)過的排序方法有:直接插入排序、希爾排序、直接插入排序:順序的把待排序序列中的各個(gè)記錄按其關(guān)鍵字的大小,插入到已排序的序列的適當(dāng)位置。 希爾排序:(縮小增量排序),不斷把待排序的記錄分成若干個(gè)小組,對(duì)同一組內(nèi)的記錄進(jìn)行排序,在分組時(shí),始終保持當(dāng)前組內(nèi)的記錄個(gè)數(shù)超過前面分組排序時(shí)組內(nèi)的記錄個(gè)數(shù)。) ************************************************/ 二、第一小節(jié)(目標(biāo):理解掌握冒泡思想) 1、給出冒泡排序的定義(25分鐘) 將待排序序列中第一個(gè)記錄的關(guān)鍵字R1.key與第二個(gè)記錄的關(guān)鍵字R2.key作比較,如果R1.key>R2.key,則交換記錄R1和R2在序列中的位置,否則不交換;然后繼續(xù)對(duì)當(dāng)前序列中的第二個(gè)記錄和第三個(gè)記錄作同樣的處理,依此類推,知道序列中倒數(shù)第二個(gè)記錄和最后一個(gè)記錄處理完為止,我們稱這樣的過程為一次冒泡排序。 2、請(qǐng)學(xué)生上臺(tái)做排序練習(xí)(15分鐘做題+10分鐘講解)(鞏固排序思想的掌握) 第一題: 38 5 19 26 49 97 1 66 第一次排序結(jié)果:5 19 26 38 49 1 66 [97] 第二次排序結(jié)果:5 19 26 38 1 49 [66 97] 第三次排序結(jié)果:5 19 26 1 38 [49 66 97] 第四次排序結(jié)果:5 19 1 26 [38 49 66 97] 第五次排序結(jié)果:5 1 19 [26 38 49 66 97] 第六次排序結(jié)果:1 5 [19 26 38 49 66 97] 第七次排序結(jié)果:1 [5 19 26 38 49 66 97] 最后結(jié)果序列: 1 5 19 26 38 49 66 97 第二題: 8 7 6 5 4 3 2 1 數(shù)據(jù)結(jié)構(gòu)——冒泡排序(第19講,第9章) 答 第一次排序: 7 6 5 4 3 2 1 [8] 第二次排序: 6 5 4 3 2 1 [7 8] 第三次排序: 5 4 3 2 1 [6 7 8] 第四次排序: 4 3 2 1 [5 6 7 8] 第五次排序: 3 2 1 [4 5 6 7 8] 第六次排序: 2 1 [3 4 5 6 7 8] 第七次排序: 1 [2 3 4 5 6 7 8] 最后結(jié)果序列: 1 2 3 4 5 6 7 8 第二題: 1 2 3 4 5 6 7 8 第一次排序: 1 2 3 4 5 6 7 [8] 第二次排序: 1 2 3 4 5 6 [7 8] 第三次排序: 1 2 3 4 5 [6 7 8] 第四次排序: 1 2 3 4 [5 6 7 8] 第五次排序: 1 2 3 [4 5 6 7 8] 第六次排序: 1 2 [3 4 5 6 7 8] 第七次排序: 1 [2 3 4 5 6 7 8] 最后結(jié)果序列: 1 2 3 4 5 6 7 8] 從練習(xí)題中引出:一次冒泡排序的結(jié)果:使關(guān)鍵字最大的記錄排在了序列的最后一個(gè)位置上。(這很重要,要強(qiáng)調(diào)) 比較后兩題的題目區(qū)別和排序過程區(qū)別,作為課間思考題。(第二題是一組逆序數(shù)據(jù),每一個(gè)排序都進(jìn)行了數(shù)據(jù)交換,共進(jìn)行了8-1=7次冒泡;第三題是一組正序數(shù)據(jù),進(jìn)行完一次排序后就發(fā)現(xiàn),沒有任何數(shù)據(jù)交換發(fā)生,后面進(jìn)行的第二次到第七次冒泡的過程完全一樣。) 三、第二小節(jié) 3、冒泡排序終止的條件(20分鐘) 課堂思考題:考慮任何一組序列最多進(jìn)行多少次冒泡排序就可保證順序一定已經(jīng)排好了。 思考:如果序列初始順序是逆序,需要進(jìn)行多少次排序(要記住,數(shù)據(jù)結(jié)構(gòu)——冒泡排序(第19講,第9章) 每次冒泡排序的結(jié)果:可以保證最大的記錄在最后一個(gè)位置上)。如果序列初始順序是正序,需要進(jìn)行多少次排序就可以保證數(shù)據(jù)序列順序。如何使排序過程適可而止?既排好序又不多余進(jìn)行? 當(dāng)計(jì)算機(jī)對(duì)一組數(shù)據(jù)進(jìn)行排序之前,并不知道該組數(shù)據(jù)是什么順序,因此,必須要進(jìn)行至少一次的比較和排序,當(dāng)某一比較和排序進(jìn)行完之后發(fā)現(xiàn)沒有任何數(shù)據(jù)交換發(fā)生,證明任何相鄰的兩數(shù)都符合目標(biāo)順序要求,因此,也不必再進(jìn)行下一下比較排序了。 結(jié)論:當(dāng)進(jìn)行某次冒泡排序時(shí),若沒有任何兩個(gè)記錄交換位置,則表明序列已排好,此時(shí)排序可結(jié)束。 4、用文字(偽碼)描述冒泡排序算法(15分鐘)思考方法: 首先是對(duì)數(shù)組的相鄰的兩數(shù)比較,根據(jù)比較結(jié)果確定是否交換位置;這種比較進(jìn)行的次數(shù)比數(shù)據(jù)列中數(shù)據(jù)個(gè)數(shù)少1; (此兩步完成了一次冒泡排序) 對(duì)一個(gè)序列來說,共進(jìn)行多少次冒泡排序呢?最多和上面第二步的比較次數(shù)一樣,但也可提前結(jié)束,只要在某一遍冒泡中沒有發(fā)生數(shù)據(jù)交換即可。如何確實(shí)是否發(fā)生數(shù)據(jù)交換,在程序中,可以考慮設(shè)置一個(gè)標(biāo)志位,當(dāng)發(fā)生數(shù)據(jù)交換時(shí),更改標(biāo)志位,每次重新進(jìn)行冒泡排序之前可以檢查標(biāo)志位,如果沒有發(fā)生改變,則可證明上一次冒泡已經(jīng)沒有數(shù)據(jù)交換發(fā)生,也就是說數(shù)據(jù)序列已經(jīng)排好,可以停止進(jìn)行冒泡排序。 冒泡算法函數(shù) { 設(shè)置標(biāo)志位; //以下循環(huán)用來控制冒泡排序進(jìn)行的次數(shù) 數(shù)據(jù)結(jié)構(gòu)——冒泡排序(第19講,第9章) for循環(huán)(對(duì)n個(gè)數(shù)據(jù)的序列進(jìn)行n-1次冒泡,但是如果沒有交換發(fā)生則跳出該循環(huán)){ //以下循環(huán)用來對(duì)該數(shù)據(jù)序列進(jìn)行一次冒泡排序 for(單次冒泡排序需要進(jìn)行n-1次){ 比較相鄰兩數(shù)的大小; if(前大后小){ 交換 } else //前小后大 { 位置不變 } } } } 5、回顧總結(jié)冒泡排序的思想(10分鐘)本節(jié)課: 1.首先回顧了什么是排序; 2.然后介紹了冒泡排序的思想;(每次冒一個(gè)泡泡,把最大的冒到最后)3.我們通過三道練習(xí)題對(duì)一組無序數(shù)據(jù)進(jìn)行了排序; 4.通過練習(xí)題我們看出來,數(shù)據(jù)初始序列越接近目標(biāo)序列,冒泡的次數(shù)越少;因此我們總結(jié)出了冒泡排序最多進(jìn)行的次數(shù)和終止的條件; 5.最后,我們根據(jù)冒泡排序的思想用文字描述了冒泡函數(shù)的構(gòu)成方法; 四、課后作業(yè) 1、用冒泡排序法對(duì)數(shù)字序列進(jìn)行排序(要寫出6次排序步驟) 55 48 37 10 90 84 答 55 48 37 10 60 84 90 48 37 10 55 60 84 90 37 10 48 55 60 84 90 10 37 48 55 60 84 90 數(shù)據(jù)結(jié)構(gòu)——冒泡排序(第19講,第9章) 10 37 48 55 60 84 90 2、用C語言描述冒泡排序算法。 Void BubbleSort(elemtype x[],int n)//傳入序列和序列數(shù)字個(gè)數(shù) { int i,j,flag=1;elemtype temp;for(i=1;i /*選擇排序*/ public class SelectSort2 { public static void sort(int[] tempArr){ for(int i =0;i { /* 當(dāng)初錯(cuò)誤認(rèn)為此處與冒泡排序極為相像,甚至覺得選擇排序與冒泡排序毫無差別,其實(shí)相反,冒泡循環(huán)意味著每一次 循環(huán)都會(huì)將相鄰的兩個(gè)數(shù)比較這樣每次都會(huì)排出數(shù)組中最大或最小的數(shù)。然后再次執(zhí)行外層循環(huán),再繼續(xù)進(jìn)入內(nèi)層循環(huán) 再依次進(jìn)行比較。 選擇排序則是,第一次循環(huán):咬定第一個(gè)數(shù)角標(biāo)i=0的元素,依次與后面的元素比較,將最小或最大的數(shù)排出來,再進(jìn)入 外層的第二次循環(huán),并且此時(shí)咬定的數(shù)為角標(biāo)為1的元素,但因?yàn)橹耙褜⑷珨?shù)組中最小或最大的數(shù)排出所以沒有必要再 與數(shù)組中角標(biāo)為零得數(shù)比較 而是通過 j=i+1 將待比較的角標(biāo)變成[ 2、3、...、tempArr.length)。 */ for(int j =i+1;j { if(tempArr[i]>tempArr[j]) { int temp = tempArr[i]; tempArr[i] = tempArr[j]; tempArr[j] = temp; } } } } public static void arrPrint(int[] tempArr){ System.out.print(“[”); for(int i = 0;i { if(i!= tempArr.length-1) { System.out.print(tempArr[i]+“,”); } else { System.out.println(tempArr[i]+“]”); } } } public static void main(String args[]){ int[] arr = new int[]{10,2,-7,8,1,12,6,7,9,3};arrPrint(arr);sort(arr);arrPrint(arr);} } /*冒泡排序*/ public class MpSort2 { public static void sort(int[] tempArr){ for(int i = 0;i { for(int j = 0;j { if(tempArr[j]>tempArr[j+1]) { int temp = tempArr[j]; tempArr[j] = tempArr[j+1]; tempArr[j+1] = temp; } } } } public static void arrPrint(int[] tempArr){ System.out.print(“[”); for(int i = 0;i { if(i!= tempArr.length-1) { System.out.print(tempArr[i]+“,”); } else { System.out.println(tempArr[i]+“]”); } } } public static void main(String[] args){ int[] arr = new int[]{10,2,-7,8,1,12,6,7,9,3}; arrPrint(arr); sort(arr); arrPrint(arr);} } C語言程序設(shè)計(jì)冒泡排序教學(xué)案例 永川職業(yè)教育中心 楊進(jìn) 【案例背景】 排序是計(jì)算機(jī)學(xué)科中一項(xiàng)復(fù)雜而重要的技術(shù),在各種軟件中使用頻率都很高,因此專家們研究了各種排序算法。在中職類設(shè)計(jì)課程教學(xué)中,常以冒泡排序來講解排序的原理,它簡單,但過程繁瑣,傳統(tǒng)教學(xué)很難激發(fā)學(xué)生興趣,學(xué)生不易理解,也很難編寫掌握冒泡排序。因此,如何合理設(shè)計(jì)教學(xué)過程,讓學(xué)生掌握冒泡排序的思想和編程方法,又能發(fā)散思維,擴(kuò)充知識(shí),進(jìn)而激發(fā)學(xué)生對(duì)編程課程的興趣,是一個(gè)關(guān)鍵問題。 1、學(xué)情分析 學(xué)生已學(xué)習(xí)了程序設(shè)計(jì)的三種結(jié)構(gòu),學(xué)習(xí)使用了數(shù)組。但在學(xué)習(xí)排序算法的過程中學(xué)生可能會(huì)對(duì)數(shù)組變量的變化在理解上存在一定困難,在排序算法中,對(duì)雙重循環(huán)內(nèi)外層的作用及有關(guān)循環(huán)參數(shù)的設(shè)置可能會(huì)產(chǎn)生一些不合理或是錯(cuò)誤,需要通過實(shí)踐的體驗(yàn)進(jìn)行強(qiáng)化使用規(guī)范。 2、教學(xué)目標(biāo) 知識(shí)目標(biāo):掌握冒泡排序的原理;能結(jié)合冒泡排序的原理看懂冒泡排序的主要代碼;理解冒泡排序的流程圖; 能力目標(biāo):學(xué)會(huì)使用冒泡排序思想設(shè)計(jì)解決簡單排序問題的算法;進(jìn)一步理解程序設(shè)計(jì)的基本方法,進(jìn)一步體會(huì)算法與程序?qū)崿F(xiàn)的關(guān)系; 情感目標(biāo):培養(yǎng)學(xué)生分析問題、發(fā)現(xiàn)規(guī)律的能力,激發(fā)學(xué)生學(xué)習(xí)熱情;培養(yǎng)良好的讀程習(xí)慣; 3、教學(xué)重點(diǎn)、難點(diǎn) 重點(diǎn):冒泡排序算法的基本思想,雙重循環(huán)應(yīng)用 難點(diǎn):雙重循環(huán)程序的解讀,冒泡排序算法實(shí)現(xiàn)后對(duì)程序的理解 4、教學(xué)策略與手段 以循序漸進(jìn)、層層深入為教學(xué)的指導(dǎo)方針,采用講解法、演示法、討論合作、分析歸納法引導(dǎo)學(xué)生參與思考,由特殊到一般,有效地突出重點(diǎn)突破難點(diǎn),逐步深化對(duì)冒泡算法、循環(huán)思想和執(zhí)行過程的理解。 1 5、課前準(zhǔn)備 PPT課件、冒泡排序的視頻文件?!景咐枋觥?/p> 師:在前面的學(xué)習(xí)中,我們學(xué)過了用EXCEL進(jìn)行一些簡單的數(shù)據(jù)處理方法,請(qǐng)同學(xué)們說說看你是怎么對(duì)同學(xué)的成績排次序的? 生:先選好數(shù)后,點(diǎn)排序就行了。 師:是的。只要用EXCEL的排序功能就可以了,點(diǎn)點(diǎn)鼠標(biāo)就能完成。在前面的學(xué)習(xí)中,我們已經(jīng)解開了很多單擊鼠標(biāo)就可以完成某一個(gè)任務(wù)的秘密,今天我們就來探訪一下排序的秘密。 師:先讓我們來做個(gè)舞蹈視頻,同時(shí)要求同學(xué)們談?wù)効春蟮淖约旱南敕?。并要?qǐng)幾位同學(xué)模擬示范。 這段真人編排的排序算法的舞蹈視頻,非常生動(dòng)有趣,能充分吸引學(xué)生的眼球,極大激發(fā)了學(xué)生的興趣。 播放完畢,老師提問:請(qǐng)同學(xué)們說說你們看到了什么? 生:議論并說自己的想法。(冒泡排序的過程) 由于視頻播放相對(duì)較快,為了讓學(xué)生更好理解與參與,老師還根據(jù)具體情況請(qǐng)了四位涌躍分子來作下一個(gè)游戲。 請(qǐng)四位同學(xué)從前到后坐好并拿好老師給你們的數(shù)字,然后從后面開始兩個(gè)兩個(gè)比較你們手中的數(shù),如果后面的同學(xué)數(shù)小的話就和前面的同學(xué)換一下座位,直到拿到最小數(shù)的同學(xué)坐在第一個(gè)位子為止。 現(xiàn)在開始,請(qǐng)其他同學(xué)注意觀察。請(qǐng)同學(xué)們說說你們看到了什么? 生:議論并說自己的想法 師:我聽到了同學(xué)們的發(fā)言了,你們都看到了最小數(shù)已經(jīng)在最前面了,并且是經(jīng)過了3次的比較。想一想,如果要讓拿第二小的數(shù)的同學(xué)坐上第二個(gè)座位,還要進(jìn)行幾次的比較呢?(注意只能從后開始兩兩比較)請(qǐng)拿數(shù)的同學(xué)演示一下。幾次? 生:兩次 師:對(duì)了,是兩次,比第一次少了一次。請(qǐng)四位同學(xué)回到座位。剛才我們通過四位 2 同學(xué)的演示其實(shí)給我們展示了一種數(shù)據(jù)排序的方法---冒泡法。那么什么是冒泡排序法呢? 冒泡排序法:是指把n個(gè)要排序的數(shù)看成一垂直列,從最下面的數(shù)開始兩兩比較相鄰的兩個(gè)數(shù),把小的數(shù)向上換,經(jīng)過n-1次處理以達(dá)到排序目的的一種排序方法。(課件展示) 分析總結(jié)學(xué)生的演示:(課件展示)第1次冒泡排序時(shí) j 從 4 開始到2: 第2次冒泡排序時(shí) j 從 4 開始到3: 第3次冒泡排序時(shí) j 從 4 開始到4 如果用偽代碼可表示為: 第1次冒泡排序時(shí) j 從 4 開始到2: for(j=4;j>=2 ,j--)if(d[j] 3 for(j=4;j>=3 ,j--)if(d[j] 問:如果我們用一個(gè)變i(值分別為1,2,3)來記錄冒泡的次數(shù),請(qǐng)問能否將上述的三次代碼合并成一段通用的代碼呢? 生:能(學(xué)生講偽代碼)for(j= 4,j>=i+1,j--)if(d[j] 歸納分析引入核心代碼: 當(dāng)i=1到3時(shí):(課件展示)for(j= 4;j>=i+1;j--)if(d[j] 那么,我們用我們學(xué)過的循環(huán)語句就可以把某一次的比較表示為:(課件展示)for(j= 4;j>=i+1;j--)if(d[j] 生:思考 師:其實(shí),我們可以在剛才的循環(huán)外再加一層循環(huán),使i也參與變化,以達(dá)到對(duì)次數(shù)的控制(課件展示) for(i=1;i<4;i++)for(j=4;j>= i+1;j--)if(d[j] 剛才我們已經(jīng)講解了4個(gè)數(shù)冒泡排序的代碼,那么有n個(gè)數(shù)呢?(課件展示)for(i=1;i 4 for(j=n;j>= i+1;j--)if(d[j] 分析冒泡排序的源程序(用tc編輯器演示分析)為了進(jìn)一步檢驗(yàn)學(xué)生的情況,老師作了問題延伸: 編寫一個(gè)評(píng)分系統(tǒng)的代碼段:有10個(gè)評(píng)委,最后得分為去掉一個(gè)最高分與一個(gè)最低分后的平均分。(提示:排序后要將最小和最大的數(shù)去除,再累加其余各數(shù)并除以8)。 【案例反思】 1、本課時(shí)采用通過對(duì)冒泡排序的基本方法進(jìn)行分析,利用視頻、游戲等多種教學(xué)手段,采用正向講解算法思想,總結(jié)規(guī)律,歸納算法等方法,一方面使學(xué)生順利從排序的思想過渡到偽代碼并到代碼的書寫,逐步引出雙循環(huán)和冒泡排序的程序?qū)崿F(xiàn),另一方面培養(yǎng)學(xué)生觀察算法,分析算法和使用算法的雙向思維意識(shí)和發(fā)散思維能力,提高學(xué)生自覺能力和獨(dú)立思考能力,體現(xiàn)了在課程教學(xué)中培養(yǎng)學(xué)生綜合素質(zhì)的教育思想。 2、老師要注意講授時(shí)間,要能及時(shí)調(diào)節(jié)課堂氣氛,防止學(xué)生課內(nèi)思維疲勞。 5第二篇:冒泡排序教案
第三篇:冒泡排序法教案
第四篇:冒泡排序及選擇排序Java實(shí)現(xiàn)心得
第五篇:C語言程序設(shè)計(jì)冒泡排序教學(xué)案例 楊進(jìn)