C語言程序設計氣泡排序教學案例

2023-01-28 06:42:04 字數 3025 閱讀 9671

永川職業教育中心楊進

【案例背景】

排序是計算機學科中一項複雜而重要的技術,在各種軟體中使用頻率都很高,因此專家們研究了各種排序演算法。在中職類設計課程教學中,常以氣泡排序來講解排序的原理,它簡單,但過程繁瑣,傳統教學很難激發學生興趣,學生不易理解,也很難編寫掌握氣泡排序。因此,如何合理設計教學過程,讓學生掌握氣泡排序的思想和程式設計方法,又能發散思維,擴充知識,進而激發學生對程式設計課程的興趣,是乙個關鍵問題。

1、學情分析

學生已學習了程式設計的三種結構,學習使用了陣列。但在學習排序演算法的過程中學生可能會對陣列變數的變化在理解上存在一定困難,在排序演算法中,對雙重迴圈內外層的作用及有關迴圈引數的設定可能會產生一些不合理或是錯誤,需要通過實踐的體驗進行強化使用規範。

2、教學目標

知識目標:掌握氣泡排序的原理;能結合氣泡排序的原理看懂氣泡排序的主要**;理解氣泡排序的流程圖;

能力目標:學會使用氣泡排序思想設計解決簡單排序問題的演算法;進一步理解程式設計的基本方法,進一步體會演算法與程式實現的關係;

情感目標:培養學生分析問題、發現規律的能力,激發學生學習熱情;培養良好的讀程習慣;

3、教學重點、難點

重點:氣泡排序演算法的基本思想,雙重迴圈應用

難點:雙重迴圈程式的解讀,氣泡排序演算法實現後對程式的理解

4、教學策略與手段

以循序漸進、層層深入為教學的指導方針,採用講解法、演示法、討論合作、分析歸納法引導學生參與思考,由特殊到一般,有效地突出重點突破難點,逐步深化對冒泡演算法、迴圈思想和執行過程的理解。

5、課前準備

ppt課件、氣泡排序的**檔案。

【案例描述】

師:在前面的學習中,我們學過了用excel進行一些簡單的資料處理方法,請同學們說說看你是怎麼對同學的成績排次序的?

生:先選好數後,點排序就行了。

師:是的。只要用excel的排序功能就可以了,點點滑鼠就能完成。在前面的學習中,我們已經解開了很多單擊滑鼠就可以完成某乙個任務的秘密,今天我們就來探訪一下排序的秘密。

師:先讓我們來做個舞蹈**,同時要求同學們談談看後的自己的想法。並要請幾位同學模擬示範。

這段真人編排的排序演算法的舞蹈**,非常生動有趣,能充分吸引學生的眼球,極大激發了學生的興趣。

**完畢,老師提問:請同學們說說你們看到了什麼?

生:議論並說自己的想法。(氣泡排序的過程)

由於****相對較快,為了讓學生更好理解與參與,老師還根據具體情況請了四位湧躍分子來作下乙個遊戲。

請四位同學從前到後坐好並拿好老師給你們的數字,然後從後面開始兩個兩個比較你們手中的數,如果後面的同學數小的話就和前面的同學換一下座位,直到拿到最小數的同學坐在第乙個位子為止。

現在開始,請其他同學注意觀察。

請同學們說說你們看到了什麼?

生:議論並說自己的想法

師:我聽到了同學們的發言了,你們都看到了最小數已經在最前面了,並且是經過了3次的比較。想一想,如果要讓拿第二小的數的同學坐上第二個座位,還要進行幾次的比較呢?

(注意只能從後開始兩兩比較)請拿數的同學演示一下。幾次?

生:兩次

師:對了,是兩次,比第一次少了一次。請四位同學回到座位。剛才我們通過四位同學的演示其實給我們展示了一種資料排序的方法---冒泡法。那麼什麼是氣泡排序法呢?

氣泡排序法:是指把n個要排序的數看成一垂直列,從最下面的數開始兩兩比較相鄰的兩個數,把小的數向上換,經過n-1次處理以達到排序目的的一種排序方法。(課件展示)

分析總結學生的演示:(課件展示)

第1次氣泡排序時 j 從 4 開始到2:

第2次氣泡排序時 j 從 4 開始到3:

第3次氣泡排序時 j 從 4 開始到4

如果用偽**可表示為:

第1次氣泡排序時 j 從 4 開始到2:

for (j=4;j>=2 ,j--)

if (d[j]第2次氣泡排序時 j 從 4 開始到3:

for (j=4;j>=3 ,j--)

if ( d[j]第3次氣泡排序時 j 從 4 開始到4:

for (j=4;j>=4 ,j--)

if ( d[j]問:如果我們用乙個變i(值分別為1,2,3)來記錄冒泡的次數,請問能否將上述的三次**合併成一段通用的**呢?

生:能(學生講偽**)

for ( j= 4,j>=i+1,j--)

if ( d[j]師:對

歸納分析引入核心**:

當i=1到3時:(課件展示)

for (j= 4;j>=i+1;j--)

if ( d[j]那麼,我們用我們學過的迴圈語句就可以把某一次的比較表示為:(課件展示)

for (j= 4;j>=i+1;j--)

if ( d[j]問:這只是某一次比較的**,那麼我們怎麼把是第幾次體現出來呢?(提示:i是用來記錄次數的)

生:思考

師:其實,我們可以在剛才的迴圈外再加一層迴圈,使i也參與變化,以達到對次數的控制(課件展示)

for (i=1;i<4;i++)

for (j=4 ;j>= i+1;j--)

if ( d[j]這種在迴圈體內又有乙個迴圈的格式我們稱為雙重迴圈。對於雙重迴圈,在執行時只要明白:「外變一,內一輪」的思路,我們就是對它進行剖析。

剛才我們已經講解了4個數氣泡排序的**,那麼有n個數呢?(課件展示)

for (i=1;ifor (j=n ;j>= i+1;j--)

if ( d[j]分析氣泡排序的源程式(用tc編輯器演示分析)

為了進一步檢驗學生的情況,老師作了問題延伸:

編寫乙個評分系統的**段:有10個評委,最後得分為去掉乙個最高分與乙個最低分後的平均分。(提示:排序後要將最小和最大的數去除,再累加其餘各數並除以8)。

【案例反思】

1、本課時採用通過對氣泡排序的基本方法進行分析,利用**、遊戲等多種教學手段,採用正向講解演算法思想,總結規律,歸納演算法等方法,一方面使學生順利從排序的思想過渡到偽**並到**的書寫,逐步引出雙迴圈和氣泡排序的程式實現,另一方面培養學生觀察演算法,分析演算法和使用演算法的雙向思維意識和發散思維能力,提高學生自覺能力和獨立思考能力,體現了在課程教學中培養學生綜合素質的教育思想。

2、老師要注意講授時間,要能及時調節課堂氣氛,防止學生課內思維疲勞。

C語言程序設計

1.有以下程式 main 執行後輸出結果是 5,6 解析函式strlen 用於計算字串的長度,所給的字串s中,n 是轉義字元,代表乙個 換行 符,表示乙個反斜槓字元 所以字串s的長度為5 sizeof 函式是用來計算字串所佔記憶體的位元組數,5個字元在記憶體中佔5個位元組,由於c規定,在每乙個字串末...

C語言程序設計

題目 本學期作業以附件形式完成 1.完成乙個大小寫字母自動轉換的程式,輸入大寫字母,程式可以輸出小寫字母,輸入小寫字母,可以輸出大寫字母 include int main puts str return 0 2.用三種迴圈方式實現1 100的和計算 提示 do.while,while,for for...

3C語言程序設計

課程中文名稱 c語言程式設計 課程英文名稱 c language programming課程編碼 04t1032080 總學時 60 學分 3.0 先修課程 無 課程簡介 c 語言程式設計 是全校各專業本科教學中的一門重要公共技術基礎課,在全校各專業的本科教學計畫中占有重要地位和作用。在計算機教育方...