?

“雙一流”下的C語言程序設計教學探索

2019-06-19 02:33楊旺明
文化創新比較研究 2019年14期
關鍵詞:雙一流編程案例

楊旺明

(三峽大學,湖北宜昌 443002)

C 語言是計算機程序設計中常用的基礎的教學課程。目前高校C 語言程序設計的教學以講授知識點為主,采用老師講解知識點,對應程序演示及上機練習的模式。這樣教學模式能幫助學生掌握對應的知識,基本上能實現對應的習題練習。一個學期下來,對于編程學生存在著以下問題缺少實際問題的解決能力。所學習的知識點語法可以進行一些理論學習和實踐,能閱讀或編寫簡單代碼,針對具體問題往往束手無策。

缺少綜合問題解決基本處理能力,缺少將問題總任務進行分析分解成若干個子問題,完成子問題從而解決總任務能力,進而編寫出對應的程序?;蛘?,即使找到一種解決方案,但將代碼大部分寫在main 函數中,使得程序的調試變得困難,以至逐漸喪失編程興趣。

有鑒于此,本文提出設計應用型問題作為教學案例,將知識點融合到案例中,采用軟件工程方法解決綜合問題,進而提高學生編程能力,提高C 語言程序設計的教學效果。

1 教學需求

應用型人才的需要培養學生分析問題能力,解決問題及動手編程能力,能在將工作崗位中能適應項目驅動開發。C 語言教材中一般來講皆是給知識點為章節,每個章節也有對應示例來講解對應的知識點。在教學中,我們根據所學的知識點設計一個具體應用實例,涵蓋多個章節的知識點,綜合訓練學生編程能力,激發編程興趣,提高教學效果。下面就以校歷打印為例,逐步實現該問題的解決方案,實現對應的教學內容的學習。

1.1 教學內容

C 語言前面章節講述的是順序結構、 選擇結構及循環結構。這一部分涉及的知識點有邏輯表達式、if 語句及循環結構for 語句(或while 語句)。通過教材或講義示例,使學生掌握了閏年判斷方法、某年某月天數及for 語句實現循環(如求累加和)等,為了提高綜合編程能力,我們引入實際問題作為教學案例,以學校校歷打印來激發學生興趣,培養學生解決問題的綜合能力。

1.2 教學案例需求

打印學校一學年的校歷。校歷見圖1。

圖1 校歷示例圖

2 實施細則

2.1 問題分解

校歷打印涉及日期處理、 教學周的計算及星期處理,是一個綜合型的案例。對于初級編程者而言,該問題比較復雜。當然這里面需要用到的知識點有日期的處理,循環結構的使用,如何才能用程序實現呢? 我們可以用軟件工程方法,自上而下進行設計,自下而上的實現。那么問題就變得要簡單多了。

按照軟件工程學的方法,將總任務分解成幾個小任務來完成。如果某個子任務在實現時還有一些復雜,則可以繼續分解。從整個結果來看,可以將其分為3 個大部分,即標題部分,教學周及該年該月的周歷打印。標題部分比較簡單,共兩行。教學周的計算是一個循環結構,而該年該月的周歷又包括兩部分,其一是計算該年該月有多少天,其二是打印出該年該月的位置。計算該年該月有多少天,可以分解為閏年判斷和天數計算。而打印該年該月的1日又可以分解為計算該年該月的1日是否教學周并計算該年該月的1日是星期幾。通過這樣的方法分解成子問題后,每個子問題就可以對應相應的知識點來編程實現。

2.2 任務實現

通過上面的分析和分解,按照軟件工程學方法,自下而上逐個實現。問題明朗后,教師對所涉及的知識點進行點撥,學生就可以分別根據所學知識來完成。涉及閏年判斷和天數計算,學生在學習邏輯表達式及選擇結構時已經掌握了,實現相對容易一些。計算該年該月的一日是星期幾是根據已經知道1900年1月1日是星期一來進行推算的,推算分兩個部分,其一按年計算,其二是按月計算,星期幾可以使用C 語言中的求余運算%來實現。經過這樣分析分解后,容易編寫對應函數,如下所示:

/*某年某月第一天是星期幾

已知1900年1月1日是星期一

*/

int firstDayMonth(int y,int m){

int i, weekday;

weekday = Monday;

/* 以年為單位按天算是星期幾*/

for(i=1900; i

//每一年以365 天計

weekday = (weekday + 365) % 7;

//如果該年i 是閏年就加多1 天

if (isLeapYear(i)){

weekday = (weekday+1) % 7;

}

}

/* 以月為單位按天算是星期幾*/

for(i=1; i

weekday = (weekday + getDaysByYearMonth(y, i) )% 7;

}

//printf("%d-%d is %d ", y,m,weekday);

return weekday;

}

同樣的方法,對計算該年該月的1日是否是教學周的開始,只需要比較一下日期是否等于指定開學的日期,使用語句即可,如下所示:

if(y == beginDate[i].year && m==beginDate[i].month&& d==beginDate[i].day)

計算出該年該月的第一天是星期幾后就可以讓該年該月的1日出現對應星期列,前面用空白填補,用典型的循環結構中嵌套選擇結構即可。

2.3 案例效果

通過該案例,可以幫助學生理解邏輯表達式及選擇結構與循環結構使用等知識點,在解決實際問題的過程中,提高學生編程能力與興趣,整個案例的實現過程中,學生查閱相關資料并相互之間進行討論分析,有的學生還對結果進行了改良,進一步培養了學生的創新精神,取得很好的教學效果。

通過一學期的案例嘗試,極大地調動了學生編程興趣及實踐能力。實踐表明,通過案例特別是綜合案例的引入,極大提高了C 語言程序設計的考試成績,學生的C 語言二級通過率也有很大的提高。

3 結論

在本文中,我們提出高校校歷制作的教學案例,改善傳統教學模式下學生解決實際問題及綜合問題能力的不足,培養學生動手能力,提高教學效果。

猜你喜歡
雙一流編程案例
編程,是一種態度
案例4 奔跑吧,少年!
TWO VILLAS IN ONE CEDIA 2020案例大賽獲獎案例
Bespoke Art Deco Media Room CEDIA 2020案例大賽獲獎案例
元征X-431實測:奔馳發動機編程
編程小能手
紡織機上誕生的編程
高?!半p一流”能否打破身份制
“雙一流”需 從去行政化做起
隨機變量分布及統計案例拔稿卷
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合