
摘要:在“C語言程序設計”課程的理論教學中,傳統的教學案例偏向數學類的應用,學生對語法的學習很容易出現理解不透徹、對語句的使用方法不靈活等問題。筆者根據多年的“C語言程序設計”課程教學經驗,設計了一些易于理解、具有趣味性且與學生學習生活相關的教學案例,從而提高了教學效果。
關鍵詞:自創(chuàng)教學;案例;C語言
doi:10.3969/J.ISSN.1672-7274.2024.01.031
中圖分類號:G 42,TP 313? ? ? ? ? ? 文獻標志碼:A? ? ? ? ? ? 文章編碼:1672-7274(2024)01-00-03
Research on the Application of Self Created Teaching Cases in C Language Teaching
WANG Yuanmin
(Institute of information technology Minzu Normal University of Xingyi, Xingyi 562400, China)
Abstract: In the theoretical teaching of the course “C Language Programming”, traditional teaching cases tend to focus on mathematical applications. Students are prone to incomplete understanding and inflexible use of sentences in their grammar learning. The author summarizes experience from years of teaching C language programming courses, and designed some teaching cases that are easy to understand, interesting, and relevant to students' learning and life, so it can Improve teaching effectiveness.
Key words: self created teaching; cases; C language
1? ?研究背景
計算機程序設計類課程是大學計算機類專業(yè)學生的必修課程,如何快速培養(yǎng)學生的算法思維是程序設計類課程的重要教學目的之一。根據高等教育素質教育、思政課程建設等文件要求,在教學過程中設計一些與學生相關、與思政相關的問題,通過這些問題的解決來引導學生靈活運用C語言中的知識點,培養(yǎng)學生對自身行業(yè)的熱愛、具有匠人精神、團結互助的精神,對于提高教學效果、培養(yǎng)高素質人才可以起到很好的促進作用。
2? ?設計的案例
采用案例教學法在“C語言程序設計”理論課程教學中可以改進教學方式方法,比滿堂灌式教學更加有效。教師扮演的是設計者和激勵者,讓學生自己去思考創(chuàng)造解決問題的辦法,同時讓學生之間進行充分的交流溝通,取長補短,提高其交流能力。案例為教學目標服務,客觀生動并且有典型性[1]。本文以C語言中具有代表性的三個知識點為例,將常規(guī)案例和創(chuàng)新設計案例的教學過程和效果進行比較并得出以下結論。
2.1 案例1:順序結構
該結構是學生在學習C語言過程中遇到的第一種結構,也是最簡單的結構。對于已經學習過的人來說在理解該結構的功能和作用上肯定是非常容易的,但對于初學者來說程序的前幾行還是很陌生的,因此從整體來看就會有復雜的感覺。在設計新案例時,采用的方法是將常規(guī)程序寫法先分離出來,然后讓學生理解主要功能的部分,具體設計如下。
(1)新課引入。常規(guī)教學案例通常已經定義好讓程序輸出一句寫好的內容,例如,“C語言程序你好!”,學生只會在運行中知道這是一個輸出該內容的程序,不會知道為什么能實現,也不會過多思考語法的問題。新教學案例設計為對學生提問:你現在最想對這門課程說什么?怎么讓計算機輸出這些內容呢?通過提問引起學生的學習興趣,引入本節(jié)課的知識點,如何書寫具有輸出功能的C語言程序。
(2)知識點1講解。預編譯命令#include
(3)知識點2講解。輸出函數printf的作用和使用方法,在不涉及輸出變量數據的情況下,讓學生理解和掌握在C語言程序中如何輸出指定的內容。例如,輸出“hello world!”,輸出語句的寫法為printf(“hello world?。躰”);,那么輸出不一樣的一句話,應該怎么寫,在這條語句的基礎上保留哪里內容,修改哪些內容。對學生提出問題,引發(fā)學生思考、討論,然后給出參考答案,只需要修改雙引號里面的內容即可。例如,輸出中文的“你好!”,則語句可修改為printf(“hello ?。躰”);[3]。
(4)學生練習。通過演示之后,讓學生進行編程練習,題目是:編寫程序輸出學生當前最想說的一句話。該設計一改常規(guī)練習中輸出指定計算結果或者相同內容的局限,充分發(fā)揮學生的自主性,極大地提高了學生學習的積極性,在教學過程中教師可以看到學生輸出的各種各樣的內容,英文或者中文都有,在提高教學效果的同時也加深了對學生的了解。通過教學發(fā)現,該新案例使得學生對C語言的學習更加積極,對簡單順序結構的程序編寫也掌握得較好。
(5)啟發(fā)。通過讓學生輸出自己感興趣的內容,引起學生學習興趣;通過程序的運行成功,引發(fā)學生的成就感。告訴學生學習計算機類專業(yè)、學習C語言課程就是這么容易,希望學生將來在計算機領域取得很好的成就,為祖國的計算機行業(yè)貢獻自己的力量。
2.2 案例2:選擇結構中if語句的多分支選擇結構
在傳統的教學案例中多數是以分段函數、商品價格分類等為案例,學生在解決這類問題時缺乏學習的積極性和探究性,只是在被動地完成編程任務。針對這一情況,自創(chuàng)的教學案例針對學生自身實際情況來設計,具體教學設計如下。
(1)新課引入。收集整理了當下比較熱門的對程序員的稱呼,這些名稱具有代表性和趣味性,可以引起學生的學習興趣。設計的教學案例如下:你會編程以后,喜歡哪個稱呼?A.程序猿;B.攻城獅;C.碼農;D.挨踢人士(IT工程師);E.技術宅。
(2)知識點講解。如何編寫一個程序,實現輸入對應的稱呼選項,可以輸出對應的具體稱呼?提出問題,給出解決的辦法就是使用選擇結構。復習if-else語句的語法和使用方法,讓學生理解并掌握必備的語法知識,完成選擇結構程序設計的第一步。當遇到多種情況需要選擇一種執(zhí)行時,可以使用if-else if的結構來實現多分支的選擇。先舉一個簡單的數學案例進行講解[4]。
if(x<0) y=x-1;
else if(x>0&&x<10)? y=x*x;
else y=x+1;
通過這個比較簡單的語句段讓學生理解if-else if的用法和執(zhí)行過程,將程序補充完整并運行,向學生演示運行過程和結果。然后再增加選項,改變選擇的條件的表示形式,char ch; if(ch==A),條件類型從整型變成字符型,執(zhí)行的語句從賦值語句y=x-1;變成輸出語句printf(“程序猿”);,這樣可以培養(yǎng)學生舉一反三的能力。
(3)學生練習。要求學生完成程序的編寫和運行工作。由于該練習既符合計算機專業(yè)的學生職業(yè),也具有趣味性,學生在練習的時候非常積極,因此學生對該練習的完成度非常高,每個學生都是積極完成該程序的編寫和運行工作。
(4)對學生提交的程序進行檢查和點評,總結該知識點的使用方法。跟以前學生提到編程就害怕的情況相比,新的自創(chuàng)教學案例,使學生動手的主動性得到了極大地提高,提交程序的積極性也極大地提高。從完成情況來看,絕大多數學生可以完成該練習的程序編寫和運行工作。之后再布置課后作業(yè),讓學生對if-else if語句的使用進行鞏固和提高。
(5)啟發(fā)。向全班展示學生的運行結果,統計哪些稱呼是比較受學生歡迎的,讓學生簡單說出選擇的理由。由教師做出評價,引出匠人精神的理念,不管是計算機行業(yè)的工程師還是其他行業(yè)的工程師,我國的匠人精神是大家都應學習和具有的良好品質,只有具有匠人精神,才能在所在的領域做出成績,做出貢獻。
2.3 案例3:用戶自定義函數的定義和調用
如何區(qū)分主函數和用戶自定義函數是學生在學習這部分知識遇到的一個重要問題。針對這種現象,筆者設計了一個學生容易理解的教學案例。
(1)新課引入。常規(guī)教學案例通常是加減乘除運算單獨實現,由主函數輸入數據,調用自定義函數實現兩數的加減乘除運算,返回結果給主函數,主函數輸出結果。學生在整個案例完成過程中完成計算輸出,但并不清楚為什么在主函數輸入輸出,為什么在自定義函數中不能輸入輸出,經常會產生一些錯誤寫法。因此,新教學案例是給學生設計了一個場景:老師現在有兩件事情要完成,一是要計算兩個整數之和,二是通知全班一件事,想請兩位同學分別幫忙完成。如果把每個人看作一個函數,老師就是主函數,負責幫忙的兩位同學分別是兩個自定義函數,但這兩個函數不獨立存在,因為如果老師不需要幫忙的話,這兩個函數就不做任何事情,也就是不執(zhí)行。通過這個場景案例,學生可以先理解主函數和用戶自定義函數的區(qū)別,主函數的功能需要完整,而自定義函數只負責一個相對獨立的小功能,且不一定執(zhí)行。
第二層次的分析,這兩件事情的區(qū)別。第一件事是計算兩個整數之和,幫忙計算的同學首先需要從老師處獲得兩個需要計算的整數,完成該任務之后應該把計算的結果反饋給老師。這就對應帶有參數的函數,且有返回值。第二件事是幫忙通知事情,幫忙的同學直接把事情通知到全班,沒有具體的數據需要從老師處獲得,也沒有計算結果反饋給老師,這就對應沒有參數的函數及沒有返回值的函數。
(2)知識點講解。正式引入用戶自定義函數的相關概念和定義的寫法,具體如下:
通過對語法的講解,讓學生分析簡單案例程序段,這樣學生就容易理解和掌握用戶自定義函數的使用場合、寫法。例如,負責通知的同學對應的函數可寫為:
void? tx2( )
{? printf(“老師有通知了!\n”);
}
負責計算的同學對應的函數可寫為
int? tx1(int x,int y)
{ int s;
s=x+y;
return s;
}
接著提出問題:老師如何讓這兩位同學幫忙呢?引出函數調用語句的作用和寫法。其中包括形式參數、實際參數和函數返回值的概念。老師請第一個學生幫忙的語句為sum=tx1(a,b);,這條語句是老師的動作,因此要寫在老師對應的主函數中,對應變量sum,a,b都需要在主函數中定義,變量a,b寫在了調用的地方,因此它們是實際參數,在第一個同學對應的函數tx1中出現的參數x和y在沒有調用的時候是沒有值的,因此它們是形式參數;計算結果返回給老師對應的語句是return s;,老師接收返回值并將其放在變量sum中,這里使用賦值語句完成。老師請第二個學生幫忙的語句為tx2( );,因為沒有數據要傳輸,因此沒有參數,也沒有返回值,這個調用語句就直接寫函數名,沒有賦值語句。
(3)學生練習。根據以上自定義函數,補充主函數,寫出完整的程序并運行。通過案例,學生能充分理解自定義函數的寫法和作用,再加上在課程前期學習中累積的知識點,學生就可以寫出完整的程序。
(4)對學生提交的程序進行檢查和點評,總結該知識點的使用方法。通過這個簡單易懂、貼近學生學習生活的案例,可以使學生很快理解了用戶自定義函數的作用和寫法。通過學生提交的程序來看,比使用傳統的案例的正確率提高很多。
(5)再回顧本次課程的開頭案例,學生幫助老師完成兩項任務,使得整個事情變得簡單和高效,如果只由老師一人完成,則需要更多的時間。團結互助才是解決問題的方法,團結互助,復雜的事情才能高效完成。同樣,在工作生活中,大家只有團結互助,我們的工作生活才會越來越好,社會的發(fā)展才會越來越進步。
3? ?結束語
通過新教學案例,可以形成互動式的教學;案例中涉及學生熟悉和感興趣的領域,就會加強師生溝通,提高學生分析問題、解決問題的能力、理論聯系實際的能力。整體上來看,通過新設計一些與學生相關或與實際生活相關的教學案例,可以幫助學生理解C語言程序設計課程中的很多知識點,包括語句的作用、語句的使用方法等,從而提高教師的教學效果。
參考文獻
[1] 百度百科.https://baike.baidu.com/item/%E6%A1%88%E4%BE%8B%E6%95%99%E5%AD%A6%E6%B3%95/120729?fr=aladdin.
[2] 何欽銘,顏暉.C語言程序設計(第4版)[M].北京:高等教育出版社,2020.
[3] 顏暉,張泳.C語言程序設計實驗與習題指導(第4版)[M].北京:高等教育出版社,2020.
[4] 譚浩強.C程序設計(第5版)[M].北京:清華大學出版社,2017.
作者簡介:王遠敏(1982-),女,漢族,貴州興義人,副教授,大學本科,主要從事計算機科學與技術的研究。