摘要:轉(zhuǎn)型期的民辦高校要始終注重學(xué)生能力的培養(yǎng),貫徹授之以漁的教育理念,逐步實(shí)現(xiàn)課堂教學(xué)開放互動(dòng)的教學(xué)模式,激發(fā)學(xué)生共同討論問題的興趣,增強(qiáng)其分析和解決問題的能力。本文將結(jié)合高校計(jì)算機(jī)類通識(shí)課程中的面向過程語言編程實(shí)例,剖析排序算法分析,引領(lǐng)學(xué)生掌握解決此類題目的方式方法。
關(guān)鍵詞:教學(xué)模式;實(shí)踐;舉一反三
中圖分類號(hào):G642.4 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1674-9324(2018)24-0274-02
首先,課前教師要精心準(zhǔn)備教學(xué)實(shí)例并指導(dǎo)學(xué)生提前閱讀。已知數(shù)據(jù)文件IN.DAT中存有200個(gè)四位數(shù),并已調(diào)用讀函數(shù)readDat()把這些數(shù)存入數(shù)組a中,請(qǐng)學(xué)生編制一函數(shù)jsVal(),其功能是:如果四位數(shù)各位上的數(shù)字均是0或2或4或6或8,則統(tǒng)計(jì)出滿足此條件的個(gè)數(shù)cnt,并把這些四位數(shù)按從大到小的順序存入數(shù)組b中。最后main()函數(shù)調(diào)用寫函數(shù)writeDat()把結(jié)果cnt以及數(shù)組b中符合條件的四位數(shù)輸出到OUT.DAT文件中。
通過閱讀題目,我們首先可以得出:有200個(gè)四位數(shù)存儲(chǔ)在數(shù)組a中,那么,學(xué)生該如何引用這批數(shù)據(jù)呢?C語言規(guī)定:數(shù)組的下標(biāo)從0開始記,即a[0]、a[1]、a[2]、……、a[199]。
其次,我們要通過編輯jsVal()函數(shù)體中的語句,來實(shí)現(xiàn)該函數(shù)的功能。“如果四位數(shù)各位上的數(shù)字均是0或2或4或6或8”,請(qǐng)學(xué)生認(rèn)真思考:如何獲取一個(gè)四位數(shù)(例如:6482)的千位、百位、十位、個(gè)位上的數(shù)字呢?我們不妨進(jìn)行下面的一組演算:
6482/1000,所得商即為千位上的數(shù)字6。
6482/100%10,所得余數(shù)即為百位上的數(shù)字4。
6482/10%10,所得余數(shù)即為十位上的數(shù)字8。
6482%10,所得余數(shù)即為個(gè)位上的數(shù)字2。
通過觀察上述的演算過程,我們可以整理出關(guān)于獲取四位數(shù)各位上的數(shù)字的算法來,也就是,千位上的數(shù)字:四位數(shù)/1000,百位上的數(shù)字:四位數(shù)/100%10,十位上的數(shù)字:四位數(shù)/10%10,個(gè)位上的數(shù)字:四位數(shù)%10。同樣,我們也可以以此類推出獲取三位數(shù)各位上的數(shù)字的算法來,即百位上的數(shù)字:三位數(shù)/100,十位上的數(shù)字:三位數(shù)/10%10,個(gè)位上的數(shù)字:三位數(shù)%10。
接下來,請(qǐng)學(xué)生對(duì)已拆分出各位上的數(shù)字“均是0或2或4或6或8”進(jìn)行仔細(xì)分析。我們不難發(fā)現(xiàn),其實(shí)具有這類特征的數(shù)值都是偶數(shù),但千位上的數(shù)字卻不能為0。對(duì)此,我們通過選擇結(jié)構(gòu)來完成上述結(jié)論的邏輯分析,即if(千位上的數(shù)字%2==0&&百位上的數(shù)字%2==0&&十位上的數(shù)字%2==0&&個(gè)位上的數(shù)字%2==0&&千位上的數(shù)字!=0)??稍诖祟}目中,我們要對(duì)數(shù)組a中200個(gè)元素去重復(fù)執(zhí)行該項(xiàng)條件的判定,為此,我們需要借助循環(huán)結(jié)構(gòu)來遍歷數(shù)組a中全部元素,即for(i=0;i<200;i++)。
再接下來,“則統(tǒng)計(jì)出滿足此條件的個(gè)數(shù)cnt”,值得強(qiáng)調(diào)的是,如果不存在滿足條件的數(shù)據(jù),那么,此時(shí)cnt的值就是0。換言之,cnt的初始值應(yīng)置為0。當(dāng)條件滿足時(shí),cnt的值加1,即cnt++?!安堰@些四位數(shù)按從大到小的順序存入數(shù)組b中”,請(qǐng)學(xué)生仔細(xì)思考,究竟有多少個(gè)被篩選出來的數(shù)組a中元素會(huì)存入到數(shù)組b中,是200個(gè)嗎?不,是cnt個(gè)。我們要將滿足上述if表達(dá)式的數(shù)組a中的元素,逐一地賦值到數(shù)組b中,即b[cnt++]=a[i];實(shí)際上,我們也正是要對(duì)它們進(jìn)行從大到小的排序。下面,我們就通過對(duì)一組無序數(shù)列:78、29、86、54來加以分析,從而整理出能夠完成指定排序的算法來。分析過程如下所示:
第一趟操作是從第一個(gè)位置上的數(shù)值開始,進(jìn)行兩兩比較。
在第一趟操作中,我們依次將第一個(gè)位置上的數(shù)值與其后各個(gè)位置上的數(shù)值作比較。如果后者較大,則交換二者位置上的數(shù)值;否則,對(duì)應(yīng)位置上的數(shù)值不變。經(jīng)過4-1次比較后,我們得出四個(gè)數(shù)中最大數(shù)86。如此進(jìn)行下去,在第二趟操作中,對(duì)應(yīng)位置上的數(shù)值共進(jìn)行4-2次比較,我們得出三個(gè)數(shù)中最大數(shù)78。
第二趟操作是從第二個(gè)位置上的數(shù)值開始,進(jìn)行兩兩比較。以此類推,第三趟操作是從第三個(gè)位置上的數(shù)值開始,進(jìn)行兩兩比較。值得注意的是,在第三趟操作中,共進(jìn)行了4-3次兩兩比較,我們得出兩個(gè)數(shù)中的最大數(shù)54。以此類推,如果有cnt個(gè)數(shù),則要進(jìn)行cnt-1趟操作,也就是要用外層循環(huán)去控制趟數(shù),即for(i=0;i 綜上,授課教師要及時(shí)并認(rèn)真地帶領(lǐng)學(xué)生梳理解題思路,把握正確灌輸學(xué)生算法分析的火候,舉一反三,觸類旁通,樂此不疲。有200個(gè)正整數(shù),且每個(gè)數(shù)均在1000至9999之間。編制函數(shù),要求按每個(gè)數(shù)的后三位的大小進(jìn)行升序排列,然后取出滿足此條件的前10個(gè)數(shù)依次存入數(shù)組bb中,如果后三位的數(shù)值相等,則按原先的數(shù)值進(jìn)行降序排列。 在題目的閱讀中,請(qǐng)大家仔細(xì)推敲。第一點(diǎn),“有200個(gè)正整數(shù),且每個(gè)數(shù)均在1000至9999之間”,它實(shí)際上等同于“有200個(gè)四位數(shù)”的說法。第二點(diǎn),“要求按每個(gè)數(shù)的后三位的大小進(jìn)行升序排列”,這其中,我們?cè)撊绾潍@取“每個(gè)數(shù)的后三位”呢?例如:6482%1000,所得余數(shù)即為百位、十位、個(gè)位上的數(shù)字482。第三點(diǎn):無論是說升序排列,還是在說降序排列,那其實(shí)都是在暗示我們,要按照從小到大或者從大到小進(jìn)行排列。接下來,我們將分析重點(diǎn)落在如何完成指定要求的排序上去。一種情況是,如果原四位數(shù)的后三位數(shù)不同時(shí),則將原四位數(shù)按照它們的后三位大小進(jìn)行從小到大排列,即if(當(dāng)前元素%1000>后序元素%1000)。另一種情況是,如果原四位數(shù)的后三位數(shù)相同時(shí),則直接按照原四位數(shù)的大小進(jìn)行從大到小排列,即if(當(dāng)前元素%1000==后序元素%1000&&當(dāng)前元素<后序元素)。而兩種情況的邏輯關(guān)系應(yīng)該是:if(一種情況||另一種情況)。 通過上述對(duì)案例教學(xué)逐層遞進(jìn)式地設(shè)計(jì)與實(shí)踐,要積極倡導(dǎo)授課教師優(yōu)化案例教學(xué)理念,創(chuàng)新教改思路,正確載入先進(jìn)的教育教學(xué)方式方法,引領(lǐng)學(xué)生溫故而知新,構(gòu)建師生默契的教學(xué)模式,讓授課教師有備而來,學(xué)生滿載而歸,實(shí)現(xiàn)寓教于樂。 參考文獻(xiàn): [1]王一美.新時(shí)期創(chuàng)新創(chuàng)業(yè)教育的實(shí)踐與研究[J].西部素質(zhì)教育,2017,(13):74-76. [2]王一美.創(chuàng)新創(chuàng)業(yè)視角下人才培養(yǎng)模式研究[J].教育觀察,2017,6(9):69-70. [3]王一美.轉(zhuǎn)型期民辦高校信息類專業(yè)實(shí)踐教學(xué)改革與創(chuàng)新研究[J].寫作,2016,(12):95-96.