第一篇:基于案例教學法的C語言教學設計
基于案例教學法的C語言教學設計
摘 要: 針對公安院校學生主體的特殊性,結合高級語言程序設計課程,提出案例教學法。分析了案例教學法的特點,以選擇結構為例,運用案例教學法分析教學設計過程。教學設計注重培養學生的學習興趣,提高學生理論聯系實際的能力。
關鍵詞: 案例教學法; C語言; 教學設計; 選擇結構
中圖分類號:G642 文獻標志碼:A 文章編號:1006-8228(2016)06-104-03
Abstract: In view of the particularity of police colleges students' learning,combined with high-level language programming courses,the case teaching method is put forward.Analyzed the characteristics of the case teaching method,taking “selection structure” as an example,the teaching design process is analyzed by using the case teaching method.The teaching design focuses on the cultivation of students' learning interest and the improvement of students' ability of integrating theory with practice.Key words: case teaching; C language; teaching design; selection structure
0 引言
高級語言程序設計是我院網絡安全與執法專業的核心基礎必修課程,是網絡安全執法課程體系的基石,也是培養學生的計算思維和程序設計能力的起點[1]。該課程不僅直接影響后續數據結構、電子取證、信息安全等專業課程的學習,而且對構建專業認同感和融合度有著重要意義。由于我院是公安院校,教學工作不同于普通高等院校,學院日常采用警務化管理,文武兼修,所以在高級語言程序設計教學中有一定的特殊性,主要表現在以下方面。
⑴ 課程總學時少。相較于普通高等院校計算機專業,我院高級語言程序設計總學時偏少,且實驗學時占比不大,學生普遍缺乏動手實踐能力。
⑵ 課余時間碎片化。公安院校學生課下警務活動較多,學生課余時間有限,學習缺乏連續性。專業知識學習依賴課堂和教師,學習形式比較單一,遇見問題往往“霧里看花”,無法將實際問題轉化成程序語言,編程思維能力不足。
⑶ 教學模式傳統。傳統的教學模式是以語法為主線,以例題講解為輔助手段,概念性知識較多,會加重學生學習疲勞感,學生學習興趣不高,教學效果不理想。
針對以上情況,本文提出案例教學法作為新的教學方法,通過案例進行課堂教學,希望能夠調動學生學習的主動性和積極性,培養學生的創新能力和理論聯系實際的能力。案例教學法
20世紀初,哈佛大學創造了案例教學法。即圍繞一定的訓練目的把實際中真實的情景加以典型化處理,形成供學員思考、分析和決斷的案例,通過獨立研究和相互討論的方式,來提高學員分析問題和解決問題的能力的一種方法。這種教學方法在當今世界的教育和培訓中得到了廣泛的應用[2]。在高級語言程序設計教學中,教師根據教學任務和教學目標,運用案例材料,組織引導學生參與其中對案例進行分析和思考,激發學生學習興趣,從而提高學生實際動手能力和探究、創新能力[3]。引入案例教學法,可以讓學生投入案例,積極思考,將一個個孤立的知識點串聯起來,以小見大,構建完整的知識體系,提高程序設計思維能力。本文選擇譚浩強的《C程序設計》(第四版)中的第4章“選擇結構程序設計”為教學內容來探討基于案例教學法的教學設計過程。教學目標
2.1 知識目標
了解6種關系運算符以及其優先次序、3種邏輯運算符以及其優先次序、條件運算符;掌握關系表達式、邏輯表達式的概念及其運算規則;了解if語句的3種形式、if語句的嵌套形式和switch語句形式。
2.2 技能目標
會靈活應用if語句進行條件語句的判斷并通過編譯工具編寫程序,在VC環境中進行編譯,查找錯誤然后解決。
2.3 情感目標
激發學生對編程的興趣,形成編程設計思維;善于與其他學習者、老師溝通交流形成共識;培養獨立思考、分析程序的能力。教學設計及教學過程
本次課程以案例法引入,通過猜數字游戲聚焦學生的注意力,調動課堂氣氛,然后激發學生的求知欲[4],引導學生解析猜數字游戲背后的代碼,通過分析代碼,提出問題,在解決問題中講授新知識新概念,最后總結知識、對照案例,鞏固加深。教學過程主要以集體教學為主,分為案例引入、案例分析與討論、案例總結三個部分。
3.1 案例引入
案例法教學難點之一就是如何選擇案例。教師需深入研讀教材,根據教學對象和教學內容知識點分布,合理選擇代表性案例,并對案例進行評估,預估學生在分析案例中遇到的問題和反應,從而擬定相應的教學方案。針對公安院校學生主體和選擇結構的知識要點,選擇猜數字作為本次教學的案例。
本次課中,以猜數字游戲開場,首先介紹游戲規則,號召學生積極參與,選取2-3名同學猜數字,其他同學可出謀劃策,以此調動全體學生積極性。
3.2 案例分析與討論
什么是選擇結構:游戲結束之后,控制課堂氣氛,引導學生探索游戲背后的知識,結合順序結構的知識拋出問題。如:這段游戲代碼主要是什么結構?否定順序結構后,從頭到尾分析游戲的步驟,根據流程圖的知識,讓學生畫出猜數字程序的簡單流程圖。通過對流程圖的講解自然引出選擇結構的概念,形成對選擇結構的初步認識。讓學生列舉出日常生活中選擇的例子,一一點評,每一個選擇的例子都涉及到條件的判斷,所以說選擇結構的關鍵點就是條件判斷。
if 語句:根據選擇結構的學習,判斷猜數字游戲輸入數字提示信息是否屬于選擇結構?我們把猜數字游戲的輸入數字提示信息轉化為具體的問題:如果輸入的數字比謎底大,那么輸出提示信息,請輸入一個小一些的數字,如果輸入的數字比謎底小,那么輸出提示信息,請輸入一個大一些的數字。展開小組討論,得出輸入數字提示信息是選擇結構后,寫出輸入數字提示信息的偽代碼。然后分析猜數字程序代碼,根據程序中的注釋語句和偽代碼,可找到對應的輸入數字提示信息的代碼,代碼如下:
演示PPT,對照輸入數字提示信息的執行流程,呈現3種if語句的形式及其執行流程圖。在黑板上,板書并講解if語句使用的注意事項。如else子句是可選的,使用時須與if語句配對使用。要求學生在VC環境中編寫輸入數字提示信息的小程序,并進行編譯和調試,出現錯誤時可討論修改,老師予以點評。將學生分成小組,3人一組,探討猜數字程序中選擇結構的語句,可參考PPT和書本,每組選出一個代表,講解找到的程序結構語句。老師再次講解點評,并通過VC執行結果,讓同學參與其中,深刻領會if語句的用法以及選擇結構的內涵。
關系運算符和關系表達式:if語句中的表達式可以是關系表達式也可以是邏輯表達式。其中最直觀、最容易理解的就是關系表達式。關系表達式又是由關系運算符構成的。要求學生查找猜數字程序里的關系運算符和關系表達式,小組內部討論。演示PPT,呈現關系運算的概念、6種關系運算符(、>=、==、!=)、圖示法歸納6種關系算符的優先次序規律,幫助學生理解記憶。
邏輯運算符和邏輯表達式:分析猜數字程序里的語句“c=='n'||c=='N'”,通過注釋語句和程序運行流程分析這一語句的含義;引出邏輯運算符和邏輯表達式的含義。演示PPT,呈現3種邏輯運算符(&&、||、!)、邏輯運算的真值表、以圖示法歸納3種邏輯運算符的優先次序規律。結合猜數字程序中的對再來一局的判斷方法來講解邏輯表達式的規則。由于關系運算符和關系表達式已經講過,所以邏輯運算符和邏輯表達式可采用小組討論總結,提高學生自學能力。
擴展:進一步思考if語句中的表達式除了關系表達式和邏輯表達式,還可以有什么?數值或者數值表達式可不可以?小組可以討論,帶著問題在VC環境驗證自己的猜想。隨機抽取學生進行總結發言,最后教師補充。通過對if語句的表達式深入學習,加深對if語句的理解,對兩種表達式的知識起到復習鞏固的作用。
switch語句:switch語句是多分支選擇語句。學生在掌握if語句的基礎上可自學。演示PPT,呈現switch語句的一般形式。老師布置任務:用switch語句改寫猜數字程序中的結果等級評價語句。小組討論并上機操作執行,得到結果,最后每組選出一個代表,先講解編程的思路,接著使用VC工具演示程序的執行過程和結果,最后教師給予評價,教師對表現最佳的小組給予鼓勵和表揚。
3.3 案例總結
回顧本次課的內容,總結重點和難點。重新復盤猜數字程序流程,展示猜數字程序流程圖,講解程序。這樣培養學生閱讀程序的能力,同時加深學生對程序結構的認識。對有疑問的學生答疑,增加互動交流。布置課后作業,以小組為單位(3人一組),提交猜數字程序實驗報告。結束語
程序設計類課程傳統教學方式是以教師和教材為中心,從書本到書本,從概念到概念,忽視了對學生學習潛能的開發,導致學生理論與實踐的脫節。本文針對學習對象的特點,改革傳統的教學觀念,提出了案例教學法,并以選擇結構程序設計為例,闡述了該方法在教學過程中的應用。案例教學法是以案例為主線,以知識點為支線,注重引導學生通過案例分析與討論解決實際問題,理清課程知識體系。案例教學法的運用有利于學生程序思維的建立,有利于學生程序設計能力的提高,同時對促進教學改革和加強素質教育有著積極的意義。
案例教學法的實施過程中仍有一些問題值得注意,比如案例的選擇、理論知識點教授與案例分析的有機融合及協調[5]、課時安排等,這就要求教師能夠很好地處理這些問題,以保證在采用案例教學時取得最佳的教學效果。
參考文獻(References):
[1] 牟琴,譚良,周雄峻.基于計算思維的任務驅動式教學模式的
研究[J].現代教育技術,2011.21(6):44-49
[2] 苗冬霞.淺析“C語言程序設計”課程的案例教學[J].武漢工程
職業技術學院學報,2006.18(2):90-92
[3] 肖明.案例教學法在“C++語言程序設計”教學中的應用[J].計算機教育,2010.6:83-86
[4] 于啟紅.案例教學法在編程語言課程中的作用探討[J].計算
機時代,2014.11:62-64
[5] 張潤蓮,張向利,葉進.案例教學法及其運用[J].桂林電子工業
學院學報,2004.24(4):102-105
第二篇:《C語言》教學設計
《C語言》教學設計
一、教學設計
本課程的教學設計是根據軟件人才的培養目標,突出創新型、應用型人才的培養方案而設計的,實行“基礎知識+基本技能+項目實踐+技術延伸”的教學理念。
基礎知識是指涵蓋該課程的主要知識點;基本技能是指通過實驗案例來訓練學生的基本項目開發技能,鞏固提高學生對基本知識點的理解;項目實踐是指通過項目形式,訓練學生的綜合能力;技術延伸則是指涵蓋相關領域的最新技術發展,屬于不斷更新的動態模塊。
根據本課程的教學設計我們精選C程序設計課程的教學內容,精心設計教學案例和課堂討論題目,實驗類型和實驗內容,通過特定的教學方法來予以實現。
二、教學方法
C程序設計課程主要采取案例教學法和實踐教學法。本課程主講教師利用業余時間深入大連高新園區、軟件園區和軟件行業的大中小型企業,搜集、整理了大量的教學案例,有效地運用于課堂教學。通過案例教學,增強了C程序設計教學的實務性和應用性,提高了學生運用C程序設計解決實際問題的能力。在多年的教學實踐中,總結了多種C程序設計的教學方法和軟件人才培養模式,并在計算機教育和電腦知識與技術上發表。具體方法如下:
方法之一:實行“1+3案例教學”的教學方法
“1+3案例教學”的教學方法是指針對每一個難懂的問題或概念,都會找三個案例程序。一個是非常易于理解概念的例子;一個是引起學生興趣的例子;一個是現實當中非常實用的例子。采用這種方法可以使學生容易理解難懂的計算機程序,又能引起學生的學習興趣,還能讓學生了解企業的實際應用。
方法之二:突出講授C語言程序設計的普遍性和特殊性
程序設計課程可以分不同層次,C語言只是其中的一種,在這門課的講授中,要突出程序設計方法的講解,讓學生分清哪些是C語言所特有的,哪些是通用程序設計語言所共有的,這樣就可避免講了一種程序設計語言,再講一種,既不深入也不透徹。當日后學生根據專業的使用情況及學生的具體狀況來選擇某種高級語言作為實際操作語言時,學生就具有了學習程序設計語言的能力、擴展的能力,而不是就學C語言而學C語言。但不同的專業對該課程的要求可以有所差異,但不論哪種情況,都不能停留在某種高級語言的介紹,而是要突出講述程序設計方法,正確地選擇算法與數據結構,進行正規的程序設計訓練,這樣才可深入、透徹的了解程序設計語言的真諦。
方法之三:強調“做中學”的教學模式
“做中學”的教學模式是指在實際的教學過程當中,不是按照從基礎理論到專業理論,再到實習的路徑來展開教學的,而是把教學順序完全顛倒過來,先從“做”開始,在做的過程中,以任務驅動方式,通過實例講授程序設計的基本概念和基本方法,重點放在思路上。學生如遇到問題,再以此問題為基點去學習專業理論。這樣做不僅有利于學生實踐能力的培養,同時也有助于學生自主學習能力和興趣的提高。
方法之四:采取粗講和細講的方法,緩解課程內容多和學時相對少的矛盾
高校計算機教學的特點是:知識更新快,內容范圍廣,應用要求高。由此帶來的問題之一就是課時的相對減少。在實際教學工作中,我體會到,要緩解課程內容多和學時相對少的矛盾,就是要將“粗講”和“細講”結合起來,例如,在《C語言程序設計》課的教學中,前面的幾章主要是常量、變量、數據類型、運算符和表達式等一系列規則性、語言的語法要求很強且很瑣碎的內容,如果一開始就按部就班地一條條給學生講解這些規則,常常使學生產生“只見樹木,不見森林”、茫然不知所措的感覺。所以應該先通過一個簡單的C程序實例“細講”為什么要制定這些規則,使學生清楚這些規則在程序中的用途,然后對于這些規則“是什么”就可有代表性的“粗講”,甚至有些部分可以不講,讓學生邊用邊學。
方法之五:突出重點,鼓勵和引導探索式學習
《C語言程序設計》這門課授課的原則是要讓學生先抓重點而后才是細節,重點放在思路、算法、編程構思和程序實現上。語句只是表達工具,講一些最主要的,細枝末節的東西根本不講,讓學生自學,動手上機練,計算機是實踐性極強的學科,所學的內容和要實踐的東西是一個整體,所以學生可以自己動手來學,書上看不懂的在機器上動手試試,往往就弄懂了,因此很多東西完全是可以自學的。教師應引導學生在解題編程的實踐中探索其中帶規律性的認識,將感性認識升華到理性高度,只有這樣,學生才能舉一反三。在這一過程中教師起著很大的引導作用,要求學生在課堂上積極思考,盡量當堂學懂,突出上機訓練,在編寫程序的過程中,使學生提高利用計算機這個智力工具來分析問題和解決問題的能力。
方法之六:選擇合適的數據結構,設計滿足限定條件的最優算法在C語言程序設計中,用設計程序解決問題時除了認真分析問題之外,最重要的是選擇合適的數據結構,并設計滿足限制條件的算法或選擇最優的算法。因此,要求學生要熟練掌握各種常見的數據結構,深刻理解某些經典算法的原理和時間、空間復雜度,掌握算法設計的一般步驟。
方法之七:養成良好的編程習慣
讓學生養成良好的編程習慣是十分重要的。我們在與國內一些軟件公司的技術人員座談時了解到,中國軟件之所以上不去的原因之一就有“習慣問題”。印度十個人編程,會編出一樣的東西,而我們十個人編程會有十種風格。因為我們忽略了一個重要問題是“顧客”的感受,因為程序的編寫是給別人看的,而不是只給我們自己看的,這樣才更符合軟件規范的要求。鑒于此,在課堂上我們非常注意讓學生養成良好的編程習慣,如:強調程序的可讀性、規范性;變量必須加注釋;程序構思要有說明;學會如何調試程序;盡量使程序優化;還要求對程序的運行結果做正確與否的判斷與分析等。
方法之八:強化實踐教學模式
對程序設計教學模式進行改革,以強調動手實踐、上機編程為切入點;以任務驅動方式,通過實例講授程序設計的基本概念和基本方法。重點放在思路上,即:在C/C++語言的環境下,針對問題進行分析,構建數學模型,提出算法并編程實現,同時要求養成良好的編程習慣,在此過程中培養學生的思維能力和動手能力,鼓勵學生探索、研究和創新。只有讓學生動手,才會有成就感,進而對本課程產生興趣,學起來效果才比較好。因此,我們的基本思想應該是在理論指導下,讓學生動手、動腦更多地上機實踐。因為學生只有在編寫大量程序之后,才能獲得真知灼見,感到運用自如。注重學生動手能力的培養是這門課和以往課程最大的不同之處。
三、教學手段
為了實現本課程確立的教學目標,落實教學內容,改革教學方法,提高教學效率,我們利用課程組教師的優勢,應用現代教育技術,長期地進行了教學手段的改革和信息化建設,并取得了很好的成果。
(一)多媒體教學
《C程序設計》課程在我校是最先采用了現代信息技術、應用多媒體技術進行課堂教學的課程之一。本課程組的全體教師早已全部掌握了應用多媒體信息技術進行課堂教學,制作了多媒體課件和多媒體教學案例。通過多媒體教學,突破了傳統教學手段的時空限制,節省了大量寶貴時間,增加了課堂教學的信息量,使課堂教學形象化、生動化。隨著現代信息技術的不斷發展,這些多媒體課件在實際應用中也在不斷的修改和完善,其質量不斷提高,教學效果也非常好,受到了學生的普遍好評。
(二)網絡教學
本課程組較早就開始著手進行網絡教學系統的開發建設,目前網上教學資源已經十分豐富,極大地方便了教師與學生之間的交流。在網絡平臺上,學生可以看到與C程序設計課程相關的所有資料。教師給學生布置作業,學生可以在網上直接作答,教師在網上直接批閱。學生在學習中遇到問題,可以在網上直接向教師請教和討論。通過課內教學與課外研討相結合的方式,使教與學有機地融合在一起,有利于學生充分消化和理解教學內容。
(三)實驗教學
我們在開展案例教學的同時,積極開展實驗教學。通過實驗教學,指導學生自己動手完成各項業務操作,使學生驗證、理解、鞏固了所學的計算機知識;指導學生運用所學的知識,分析和解決實際問題,使知識轉化為能力。在驗證實驗和應用實驗的基礎上,指導學生進行開拓型訓練,使學生拓展了思維,增強了創新能力。
在學時安排上,理論教學與上機實踐的學時比例基本為1:1。本課程設置“驗證型實驗教學+設計型實驗+綜合型實驗教學”的實驗教學體系,構建遞階型實踐教學模式,驗證型實驗教學是與理論課同時進行的上機實習;設計型實驗是與理論課同時進行的學生自行設計的運用理論學習內容進行實際開發的實驗;綜合型實驗教學是理論課講授完畢后的集中實訓,是綜合能力的訓練。對程序設計教學模式進行改革,強化實踐教學,以強調動手實踐、上機編程為切入點,是本門課程的特色。
四、教改舉措
(一)精選教學內容,改革課程設計,實行“基礎知識+基本技能+項目實踐+技術延伸”的教學理念
根據軟件人才的培養目標,我們精選C程序設計課程的教學內容,精心設計教學案例和課堂討論題目,突出創新型、應用型人才的培養。
基礎知識涵蓋該課程的主要知識點;基本技能則通過實驗案例來訓練學生的基本項目開發技能,鞏固提高學生對基本知識點的理解;項目實踐通過項目形式,訓練學生的綜合能力;技術延伸則涵蓋相關領域的最新技術發展,屬于不斷更新的動態模塊。
(二)改革教學方法,實行“1+3案例教學”的教學方法
摒棄了過去傳統的灌輸式教學方式,采用靈活案例式教學方法和實踐教學方法。尤其是采用實用、有效的“1+3案例教學”的教學方法。即針對每一個難懂的問題或概念,都會找三個案例程序。一個是非常易于理解概念的例子;一個是引起學生興趣的例子;一個是現實當中非常實用的例子。采用這種方法可以使學生容易理解難懂的計算機程序,又能引起學生的學習興趣,還能讓學生了解企業的實際應用,提高了學生的實踐能力。
(三)改革作業形式
布置的作業題側重于應用性,訓練學生應用能力。在作業的布置和批改上,均通過網上進行。
(四)改革實驗形式
為強調“以學生為中心”的實驗教學模式,自主開發了“C 程序設計網絡化實驗教學平臺”。
(五)改革考試形式
為輔助教師加強對學生實踐環節的考核,自主開發了“C 程序設計網絡化考試軟件”,以保證實驗教學的質量。
(六)改革教學模式,強調“做中學”
“做中學”的教學模式是指在實際的教學過程當中,不是按照從基礎理論到專業理論,再到實習的路徑來展開教學的,而是把教學順序完全顛倒過來,先從“做”開始,在做的過程中,以任務驅動方式,通過實例講授程序設計的基本概念和基本方法,重點放在思路上。學生如遇到問題,再以此問題為基點去學習專業理論。這樣做不僅有利于學生實踐能力的培養,同時也有助于學生自主學習能力和興趣的提高。
第三篇:錯誤案例教學法在C語言教學的應用論文[范文]
摘要:C語言程序設計是一門為許多高校包括獨立學院的非計算機專業理工系學生開設的一門公共選修課程,其課程設置目標是培養理工類非計算機專業學生的編程思維和編程能力。筆者基于多年來對“C語言程序設計”課程的實際教學經驗,發現把編程錯誤案例進行搜集和分析以及討論的教學法融入C語言教學中,能讓學生有更好的分析問題、解決問題的能力,并且可以大大提高編程效率。
關鍵詞:C語言程序;編程思維;錯誤案例教學法
1C語言中錯誤類型和產生的原因
1.1C語言程序中的錯誤分類
在C語言學習編程過程中,一般是三種錯誤,語法錯誤、邏輯錯誤以及運行錯誤。
(1)語法錯誤:沒有按照語言的規范進行編程而產生的錯誤。如缺少標點符號,變量沒有申明,變量類型出錯,函數名稱寫錯等等,這些語法錯誤機器一般會給出提示,比如Error和Warning,在運行的時窗口下會顯示錯誤的個數以及出錯的原因等信息,很容易被發覺,如果沒有修改則會影響整個程序的運行。
(2)邏輯錯誤:程序可以正常運行,但是得不到預期的結果。常見錯誤有復合語言的花括號后加分號,輸入輸出的數據類型與所用格式說明符不一致等等。而這樣的邏輯錯運行時候并沒有提示,比較難發現,對于初學者而言比較困難,只有在編程中進行系統和全面的考慮才能避免邏輯錯誤。
(3)運行錯誤:在既沒有語法編譯錯誤,也無語法邏輯錯誤的情況下程序運行時發生的錯誤或者程序會忽然停止運行,比如類型溢出,數字表達式格式有誤,除零錯誤等等。
1.2程序錯誤解析
(1)為申明變量或使用一些沒有賦值的自動變量:C語言是一門十分嚴謹的程序語言,必須嚴格遵守變量必須先申明后使用的原則,但是很多初學者沒有養成良好的編程習慣就會忘記,直接使用,這樣就會不斷有提示變量未定義的錯誤。
(2)不區分字母的大小寫:在C語言中,大小寫字母是不同的字符,比如A和a表示的是兩個不同的變量。
(3)分號的亂用:由于分號是C語言的重要組成部分,比如簡單語句以分號為結束標志,復合語句是用一對花括號括起來的一組語句,空語句只有一個分號。學生很容易忘記加分號,或者多加分號。
(4)賦值符號當成“=”使用:在很多人的思維里面“=”符號是“等于”的關系,如A=36,就認為是左邊的A等于右邊的36,實際上是把右邊的36賦值給左邊的A,如果學生的思維停留在前者“等于”的關系,就會明顯出現編譯的錯誤。
(5)數據類型定義錯誤,造成數據的溢出:C語言中的整數數據類型在-32768到32767之間,由于很多時候編寫程序都是用的是inta,b,一些初學者都會默認用int來定義所有的變量,忽略了數據類型的范圍,一旦結果超出了這個范圍,甚至是小數,就會得到不一樣的結果,而這個結果可能在程序的運行并不報錯,也比較難發現。綜上所述,這些錯誤很多都是學習程序的學生沒有養成良好的編程習慣而造成,這樣的錯誤防不勝防。只有在錯誤中學習,不斷對錯誤進行分析,才能提高自身的編程能力。
2基于錯誤案例培養的C語言程序設計改革的具體措施
2.1對錯誤案例進行搜集和分類
搜集錯誤案例是一項艱苦的勞動,需要花費一定的時間和精力。首先教師需要明確C語言課程的所有教學內容,對錯誤案例的搜集也要有針對性,對于教師的要求就是需要研讀教材,根據教學的對象和教學內容知識點分布,搜集實踐教學中記錄的錯誤日志文件,進行錯誤案例設計,并對錯誤案例進行評估,記錄學生在分析錯誤案例中遇到的問題和反應,從而擬定相應的教學方案。其次可以讓學生組織興趣小組,大約5-6人一組,這樣可以減輕教師的工作,可以由組長協助教師和組員對于提交的錯誤進行分類和整理,甚至可以按章節按知識點進行分類,因為學生編程過程中肯定有很多重復的錯誤,如果一一進行上報和記錄會非常繁瑣,組長只需對錯誤的類別和錯誤的頻率進行記錄,就會很有利的協助教師進行錯誤案例的設計。最后即學生自己的工作,因為真正需要學習實踐的是學生本人,雖然每個組有組長,但是組長同樣也是學生,他(她)的工作是既要保證自己的學習,也要匯總其他組員的學習情況,工作比較繁重,所以最好要求每一個學生自己也準備錯誤日志筆記本,對自己在實踐練習中出現的問題,涉及到的知識點,疑問,錯誤的原因進行整理和記錄,當然如果學生覺得時間有限,也可以用手機進行拍照,如果能通過翻閱圖書,搜索網絡的方式改正錯誤更好,實在沒有能力改正可以去請教其他組員和教師,這樣更能加深對錯誤的記錄,尤其需要關注編程過程中經常出現的典型問題,這類問題可能經過多次調試也沒有結果,需要加強對待,如果經過大家的幫忙或老師的指導后有了解決方案也需要記錄下來,以備下次練習出現相關性問題可以自行解決。
2.2對錯誤案例進行分析和討論
通過上面的途徑,教師匯總了課堂教學中的錯誤案例后,就可以進行典型錯誤案例設計,可以在課堂正常教學中穿插講解,比如可以先對學生提出錯誤案例問題,引導學生探索錯誤案例涉及的知識點,疑問,最終的解決方案等等。比如講解選擇結構的錯誤案例代碼,可以先詢問學生這段錯誤的案例代碼主要是什么結構?如果是選擇結構,再從頭到尾分析代碼的步驟,根據所學流程圖的知識,讓學生根據此段代碼畫出該程序的簡單流程圖。再通過對流程圖的講解很自然引出選擇結構的語法知識點,并找出該代碼真正錯誤的原因,最后讓學生列舉出日常生活中涉及到選擇結構即條件判斷的例子。教師還可以根據錯誤的類型在實踐環節中給出相應的錯誤代碼,讓學生檢驗課堂學習的效果,避免編程過程中犯同類錯誤,在更正錯誤的過程中發現積極性,培養良好的編程習慣。
2.3教學效果及評價
通過在C語言程序課教學中引入錯誤案例學習,既能提高學生自主學習的效率、在實踐中取得了更好的教學效果,也能大大提高學生的編程能力,例如,學生在定義數組的時候容易忽視數組的個數,可能會錯誤地使用下標的數字,只要教師在錯誤案例中重復申明該類錯誤,學生才會加深記憶,經過強調學生則會避免此類錯誤。通過對上課學生進行匿名問卷調查發現,100%的學生認為采用錯誤案例分析和討論的學習模式比傳統教師課堂填鴨式講授語法知識點的模式更能提高自己的學習能力和學習效率。
3結論
想要提高C語言的編程能力,以及提高教學效果,可以從錯誤案例的搜集與分類開始,再引導學生通過錯誤案例分析與討論解決實際問題,理清課程知識體系。錯誤案例教學法的運用有利于學生程序思維的建立,有利于學生程序設計能力的提高,同時對促進教學改革和加強素質教育有著積極的意義。在實際編程過程中還有其他的可能性,這需要教師在以后的教學過程中更要留心,更要注意錯誤經驗的積累,所以研究此問題不僅僅可以提高學生的編程能力,而且對于教師自身教學技能理論加強也有著重要的實際意義。
參考文獻:
[1]余麗紅,龍諾春,林春景.C語言實踐中易出現的編程錯誤及解答[J].數字技術與應用,2014(8):220-221.[2]楊冬云.C語言學習中幾個常見典型錯誤分析[J].電腦知識與技術,2017,13(13):65-66.[3]薛非.品悟C:拋棄C程序設計中的謬誤與惡習[M].北京:清華大學出版社,2012.[4]于啟紅.案例教學法在編程語言課程中的作用探討[J].計算機時代,2014(11):62-64.
第四篇:C語言課堂教學案例
C語言課堂教學案例
2、輸入三角形三邊長,求三角形面積。#include “math.h” main(){
float a,b,c,s,area;
scanf(“%f ,%f,%f”,&a,&b,&c);s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“area=%fn”,area);}
例2 從鍵盤輸入一個大寫字母,要求改用小寫字母輸出。#include
char c1,c2;
c1=getchar();
printf(“%c,%dn”,c1,c1);
c2=c1+32;
printf(“%c,%dn”,c2,c2);}
【例2】輸入并運行程序,寫出運行結果。main(){
int a,b,sum;
a=123;b=456;
sum=a+b;
printf(“sum is %dn”,sum);}
1、已知三個數a,b,c,找出最大值放于max中。#include “stdio.h” main(){
int a,b,c,max;
/*定義四個整型變量*/ scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);if(a>=b)
max=a;
/*a>=b*/ else
max=b;
/*amax)
max=c;
/*c是最大值*/ printf(“max=%d”,max);}
2、輸入某學生的成績,經處理后給出學生的等級,等級分類如下:
90分以上(包括90): A
80至90分(包括80):B
70至80分(包括70):C
60至70分(包括60):D
60分以下:E
#include“stdio.h” main(){
int score;
char grade;
printf(“nplease input a student score:”);
scanf(“%d”,&score);
if(score>100||score<0)
printf(“ninput error!”);
else
{ if(score>=90)
grade='A';
else
{ if(score>=80)
grade='B';
else
{if(score>=70)grade='C';
else
{ if(score>=60)grade='D';else grade='E';
}
}
}
printf(“nthe student grade:%cn”,grade);
} }
方法二:用switch語句
#include“stdio.h” main(){ int g,s;char ch;printf(“ninput a student grade:”);scanf(“%d”,&g);s=g/10;if(s<0||s>10)printf(“ninput error!”);else { switch(s){ case 10: case 9: ch='A';break;case 8: ch='B';break;case 7: ch='C';break;case 6: ch='D';break;default: ch='E';} printf(“nthe student scort:%cn”,ch);} }
【程序6】
題目:用*號輸出字母C的圖案。
1.程序分析:可先用’*’號在紙上寫出字母C,再分行輸出。2.程序源代碼: #include“stdio.h” main(){
printf(“hello c-worldn”);
printf(“ ***n”);
printf(“ *n”);
printf(“*n”);
printf(“*n”);
printf(“*n”);
printf(“ ****n”);}
=============== 【程序7】
題目:輸出特殊圖案,請在c環境中運行,看一看,Very Beautiful!1.程序分析:字符共有256個。不同字符,圖形不一樣。
2.程序源代碼:
#include “stdio.h“ main(){ char a=176,b=219;printf(“%c%c%c%c%cn“,b,a,a,a,b);printf(“%c%c%c%c%cn“,a,b,a,b,a);printf(“%c%c%c%c%cn“,a,a,b,a,a);printf(“%c%c%c%c%cn“,a,b,a,b,a);printf(“%c%c%c%c%cn“,b,a,a,a,b);}
=============== 【程序8】
題目:輸出9*9口訣。
1.程序分析:分行與列考慮,共9行9列,i控制行,j控制列。2.程序源代碼: #include “stdio.h” main(){ int i,j,result;printf(“n”);for(i=1;i<10;i++){
for(j=1;j<10;j++)
{
result=i*j;
printf(“%d*%d=%-3d”,i,j,result);/*-3d表示左對齊,占3位*/
} } } printf(“n”);/*每一行后換行*/
===============
【程序9】
題目:要求輸出國際象棋棋盤。
1.程序分析:用i控制行,j來控制列,根據i+j的和的變化來控制輸出黑方格,還是白方格。2.程序源代碼: #include“stdio.h” main(){int i,j;for(i=0;i<8;i++){for(j=0;j<8;j++)if((i+j)%2==0)printf(“%c%c”,219,219);else
printf(“ n”);} } =============== 【程序10】
題目:打印樓梯,同時在樓梯上方打印兩個笑臉。
1.程序分析:用i控制行,j來控制列,j根據i的變化來控制輸出黑方格的個數。2.程序源代碼:
#include“stdio.h” main(){ int i,j;printf(“11n”);/*輸出兩個笑臉*/
} for(i=1;i<11;i++){ for(j=1;j<=i;j++)
printf(“%c%c”,219,219);} printf(“n”);
【程序5】
題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。1.程序分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x〉y則將x與y的值進行交換,然后再用x與z進行比較,如果x〉z則將x與z的值進行交換,這樣能使x最小。2.程序源代碼:
main(){ int x,y,z,t;scanf(“%d%d%d”,&x,&y,&z);if(x>y){t=x;x=y;y=t;} /*交換x,y的值*/ if(x>z){t=z;z=x;x=t;}/*交換x,z的值*/ if(y>z){t=y;y=z;z=t;}/*交換z,y的值*/ printf(“small to big: %d %d %dn”,x,y,z);}
===============
【程序23】
題目:打印出如下圖案(菱形)* *** ****** ******** ****** *** * 1.程序分析:先把圖形分成兩部分來看待,前四行一個規律,后三行一個規律,利用雙重for循環,第一層控制行,第二層控制列。2.程序源代碼:
main(){
int i,j,k;for(i=0;i<=3;i++){ for(j=0;j<=2-i;j++)
printf(“ ”);for(k=0;k<=2*i;k++)
printf(“*”);printf(“n”);} for(i=0;i<=2;i++){ for(j=0;j<=i;j++)
printf(“ ”);for(k=0;k<=4-2*i;k++)
printf(“*”);printf(“n”);} }
【程序34】
題目:練習函數調用 1.程序分析: 2.程序源代碼: #i nclude } void three_hellos(void){ int counter;for(counter = 1;counter <= 3;counter++)hello_world();/*調用此函數*/ } void main(void){ three_hellos();/*調用此函數*/ } =============== 【程序37】 題目:對10個數進行排序 1.程序分析:可以利用選擇法,即從后9個比較過程中,選擇一個最小的與第一個元素交換,下次類推,即用第二個元素與后8個進行比較,并進行交換。 2.程序源代碼: #define N 10 main(){ int i,j,min,tem,a[N];/*input data*/ printf(“please input ten num:n”);for(i=0;i scanf(“%d”,&a[i]);} printf(“n”);for(i=0;i printf(“%5d”,a[i]);printf(“n”); /*sort ten num*/ for(i=0;i for(j=i+1;j if(a[min]>a[j]) min=j; tem=a[i]; a[i]=a[min]; a[min]=tem;} /*output data*/ printf(“After sorted n”);for(i=0;i =============== 【程序40】 題目:將一個數組逆序輸出。 1.程序分析:用第一個與最后一個交換。2.程序源代碼: #define N 5 main(){ int a[N]={9,6,5,4,1},i,temp;printf(“n original array:n“); for(i=0;i for(i=0;i a[i]=a[N-i-1]; a[N-i-1]=temp;} printf(“n sorted array:n“);for(i=0;i } 【程序66】 題目:輸入3個數a,b,c,按大小順序輸出。 1.程序分析:利用指針方法。2.程序源代碼: /*pointer*/ main(){ int n1,n2,n3;int *pointer1,*pointer2,*pointer3;printf(“please input 3 number:n1,n2,n3:”);scanf(“%d,%d,%d”,&n1,&n2,&n3);pointer1=&n1;pointer2=&n2;pointer3=&n3;if(n1>n2)swap(pointer1,pointer2);if(n1>n3)swap(pointer1,pointer3);if(n2>n3)swap(pointer2,pointer3);printf(“the sorted numbers are:%d,%d,%dn”,n1,n2,n3);} swap(p1,p2)int *p1,*p2;{int p;p=*p1;*p1=*p2;*p2=p;} =============== 【程序70】 題目:寫一個函數,求一個字符串的長度,在main函數中輸入字符串,并輸出其長度。 1.程序分析: 2.程序源代碼: main(){ int len;char *str[20];printf(“please input a string:n”);scanf(“%s”,str);len=length(str);printf(“the string has %d characters.”,len);} length(p)char *p;{ int n;n=0;while(*p!='
主站蜘蛛池模板:
一本大道久久久久精品嫩草|
国产成人av在线影院无毒|
国产精品香港三级国产av|
国产无吗一区二区三区在线欢|
99r在线精品视频在线播放|
天堂va欧美ⅴa亚洲va在线|
久久日本三级韩国三级|
业余 自由 性别 成熟视频 视频|
久久人爽人人爽人人片av|
中文无码av一区二区三区|
国产精品夜夜春夜夜爽久久小|
日韩精品无码人成视频|
精品无码av一区二区三区不卡|
国产成人综合95精品视频|
国产一精品一av一免费爽爽|
日韩精品一区二区三区视频|
国产午睡沙发被弄醒完整版|
亚洲制服丝袜自拍中文字幕|
亚洲高清码在线精品av|
免费观看国产小粉嫩喷水精品午.|
精品国产香蕉伊思人在线|
国产精品久久国产精品99 gif|
国产成人8x视频网站入口|
伊人精品无码一区二区三区电影|
99国产欧美另类久久片|
影音先锋男人av鲁色资源网|
成年无码av片在线免缓冲|
青娱乐极品视觉盛宴av|
亚洲国产精品无码中文字app|
中国孕妇变态孕交xxxx|
亚洲精品乱码久久久久久金桔影视|
四虎国产成人永久精品免费|
久久成人麻豆午夜电影|
亚洲成在人线天堂网站|
50岁退休熟女露脸高潮|
久久精品无码观看tv|
无码av无码一区二区桃花岛|
色狠狠色婷婷丁香五月|
中文字幕日韩一区二区不卡|
色偷偷久久一区二区三区|
久久国产av影片|