汪培芬
摘 要: 二重循環(huán)是C語言教學課程中的一個難點,本文以冒泡排序為例,借助表格展現(xiàn)程序設(shè)計思路,引導(dǎo)學生把握循環(huán)變化規(guī)律,最終編寫出程序。
關(guān)鍵詞: 冒泡排序 程序設(shè)計思想 表格 《C語言程序設(shè)計》
《C語言程序設(shè)計》是中、高職計算機專業(yè)的一門必修專業(yè)課,在機電、電子等工科專業(yè)中很多學校教學計劃中將它作為選修課。本課程的目標是培養(yǎng)學生邏輯思維能力,掌握程序設(shè)計的方法,能用C語言編寫一些簡單的應(yīng)用程序。中職學生文化基礎(chǔ)差,邏輯思維能力不強。如何將程序設(shè)計的思想傳達給學生,學生能用計算機的思維思考程序一直貫穿在整個教學過程中。
循環(huán)結(jié)構(gòu)是本門課程中的一個教學重點,又稱重復(fù)結(jié)構(gòu),正是利用了計算機速度快的特點,編程實現(xiàn)讓計算機完成重復(fù)性、規(guī)律性的操作。在實際教學中發(fā)現(xiàn),循環(huán)只有一層的時候,學生勉強能接受,但當再嵌套一層時,學生就很難理解,自己看程序根本讀不懂,所以二重循環(huán)是本課程的一個難點。如何讓學生把握循環(huán)的規(guī)律并控制好內(nèi)外循環(huán)的循環(huán)變量是寫二重循環(huán)程序的關(guān)鍵。筆者結(jié)合多年教學實踐總結(jié)出表格法能較好地體現(xiàn)二重循環(huán)的特點并清晰直觀地將思路展示給學生,學生便于理解,下面以經(jīng)典算法冒泡排序為例。
1.冒泡排序思想
對于升序排序來說,冒泡排序的基本思想是:從最后一個元素開始,將兩兩相鄰元素進行比較,將較小的元素交換到前面,直到將最小的元素交換到未排序元素的最前面為止,就像是冒泡一樣,然后認為該元素已排好序,再對剩下的元素重復(fù)上面的過程,直至將所有元素排好序為止。
2.冒泡排序過程
以10個元素升序排序為例,每一趟判斷相鄰的兩個數(shù)中前一個數(shù)是否大于后一個數(shù),將較小的元素交換到前面。第一趟比較過程,依次判斷表達式:a[8]>a[9]、a[7]>a[8]、a[6]>a[7]、a[5]>a[6]、a[4]>a[5]、a[3]>a[4]、a[2]>a[3]、a[1]>a[2]、a[0]>a[1],經(jīng)過9次比較,a[0]元素位置排定。第二趟排序:剩下的9個元素,經(jīng)過8次比較,a[1]元素位置排定,依次類推。列出前面四趟過程如表1:
表1 冒泡排序前四趟比較過程
10個元素需要比較9趟(表中省略了后面5趟比較),觀察表格,每一趟的比較用C語言中for語句描述時,循環(huán)體都一樣,即將兩個相鄰元素進行比較,將較小的元素交換到前面,不同的只是for語句中表達式值的變化,為此,將for語句表達式的變化列出表格2:
表2 for語句表達式變化
觀察表格,for語句中有3個表達式,在9趟比較中第一、三個表達式比較均未變,即j=9和j--,變化的只有中間的表達式。進一步分析,每一趟的比較過程都一樣,這本身就是一個重復(fù),就可以寫成循環(huán)語句。如果用i控制循環(huán)外循環(huán),i初值從1變到9,for語句表達式為:for(i=1;i<10;i++)(1),在每一趟的i變化時,j控制內(nèi)循環(huán),j有什么變化規(guī)律,列出外循環(huán)i控制趟數(shù)時,內(nèi)循環(huán)判斷j的表達式變化表格3:
表3 表達式變化
很容易得出內(nèi)循環(huán)的for語句表達式為:for(j=9;j>i-1;j--)(2),綜合(1)(2)兩個for語句我們得出冒泡排序?qū)?yīng)的C語言程序主要語句:
for(i=1;i<10;i++)
for(j=9;j>0,j--)
if(a[j-1]>a[j])
{t=a[j-1];
a[j-1]=a[j];
a[j]=t;}
通過表格1展現(xiàn)給學生冒泡排序的過程及每一趟比較后結(jié)果,通過表格2展現(xiàn)內(nèi)循環(huán)j的變化規(guī)律,通過表格3可以讓學生自己得出外循環(huán)i變化時內(nèi)循環(huán)j的變化規(guī)律。冒泡排序過程是復(fù)雜的,借助表格教師可以清晰地展示算法思路,并引導(dǎo)學生主動思考,讓學生觀察表格得出的循環(huán)規(guī)律。
3.結(jié)語
數(shù)據(jù)處理的插入、刪除、排序、查找運算都要用到循環(huán),借助表格可以清晰地表達思路,目標明確,使學生更容易把握循環(huán)變化規(guī)律,培養(yǎng)學生分析問題和解決問題的能力。
參考文獻:
[1]廖雷.C語言程序設(shè)計[M].北京:高等教育出版社,2009.
[2]馬杰,楊磊.C語言程序設(shè)計改革初探[J].軟件工程師,2013.
[3]胡慧局.基于計算思維的C語言程序設(shè)計教學方法研究[J].科教導(dǎo)刊,2013.