時間:2022-07-22 08:28:44
開篇:寫作不僅是一種記錄,更是一種創造,它讓我們能夠捕捉那些稍縱即逝的靈感,將它們永久地定格在紙上。下面是小編精心整理的12篇c語言程序設計,希望這些內容能成為您創作過程中的良師益友,陪伴您不斷探索和進步。
鐘 實
(江西科技學院)
[摘 要]C語言程序設計課程是計算機專業教育的重要組成部分。將探究教學引入C語言程序設計教學中,不僅可以提高學生學習的興趣,調動教師教學的
熱情,也豐富了探究教學的理論與實踐。具體分析并探討了C語言程序設計探究教學的實施目標、實施條件、教學情境的創設、探究形式、教學評價等問題。
[關鍵詞]C語言程序設計 探究教學 實施目標
一、 C語言程序設計探究教學實施的目標:情感目標、能力目標和認知目
標
1、體驗C語言程序設計的編程思想,激發和保持對C語言程序設計課程的
求知欲,形成積極主動地學習和參與C語言程序設計課程探究活動的態度。
2、能辯證地認識C語言程序設計對社會發展、科技進步和日常生活學習的
影響。
3、獲得親自參與研究探索的積極體驗、培養嚴謹的科學態度。
4、能從日常生活、學習中發現或歸納可以利用C語言程序設計解決的問題,
通過問題分析確定程序功能。
5、能根據任務的要求,確定所需信息的類型和來源,并鑒別信息的真實性、
準確性和相關性。
6、掌握計算機程序的基本概念,理解并掌握C語言程序設計語言的基本知
識,包括語句、數據類型、變量、常量、表達式、函數等,熟悉語言的語法規則,熟
悉計算機程序執行的基本過程。
7、了解C語言程序設計語言,掌握編寫程序、編譯程序、連接程序以及程序
開發環境等基本知識,掌握調試、運行程序的基本方法與技巧。
二、C語言程序設計探究教學實施的條件
1、掌握一定的計算機操作基礎
C語言程序設計課程由于其學科自身的特點,需要在計算機上調試程序,
所以要求學生具有一定的計算機操作知識,如:開關機、鍵盤和鼠標的使用、文
件的建立與查找、常用軟件的使用等。
2、良好的C語言程序設計認知結構
認知結構就是學生頭腦里的知識結構,是學習者觀念的全部內容和組織。
奧蘇伯爾的認知結構理論是針對新學習內容的影響(即遷移)提出的,良好的認
知結構有利于知識的提取和正向遷移。C語言程序設計探究教學強調在已有知
識經驗上的主動建構,面對新的問題和任務,需要學生及時從頭腦中提取信息,
建立新舊知識間的聯系,在已有C語言程序設計知識的基礎上思考解決新問題
的辦法,并試圖將新知識納入自己的認知結構中。
3 、良好的探究環境
良好的探究環境是學生順利進行探究的保證,至少包含兩方面的內容:(1)
要有充足的探究時間和靈活的探究條件。探究時間應該根據學習任務進行合理
安排,應該考慮到學生假設錯誤時所耽誤的時間以及討論交流所需要的時間。
探究教學中可能需要查閱大量的資料,教師還應該準備書籍、網絡等輔助資源。
(2)學生在探究學習的時候不能有太多壓力,不同的學生由于其自身的因素不可
能以相同的速度學習,所以教師在進行評價的時候也應該因人而異,應該為每
個學生提供充分的思考機會和時間,讓每個學生都能以自己的進度進行探索,
并在此過程中感受到樂趣。
三、C語言程序設計探究教學情境的創設
心理學研究表明,恰當、適宜的環境能有效激發人的熱烈情緒,提高活動的
質量和效果。教學情境是指教師人為創造的“典型場景”,創設目的在于引出教
學任務,將學生的注意力吸引到學習任務中來。教師把將要學習的C語言程序
設計知識通過一定的情境呈現給學生,使得學生認知結構與周圍環境不平衡,
引起他們對學習目標的注意和興趣,并通過探究活動把學生過去的活動和將來
的活動聯系在心理學研究表明,恰當、適宜的環境能有效激發人的熱烈情緒,提
高活動的質量和效果。教學情境是指教師人為創造的“典型場景”,創設目的在
于引出教學任務,將學生的注意力吸引到學習任務中來。教師把將要學習的C
語言程序設計知識通過一定的情境呈現給學生,使得學生認知結構與周圍環境
不平衡,引起他們對學習目標的注意和興趣,并通過探究活動把學生過去的活
動和將來的活動聯系在一體。探究教學情境的創設應做到:(1)創設的情境是為
C語言程序設計教學服務的,要以C語言程序設計探究教學目標為依據。(2)探究
情境要接近學生的真實生活經驗,能夠吸引學生的注意力,激發他們的認知沖
突和求知欲。(3)學生在情境中能夠感覺到問題的存在,自然地將新舊知識聯系
起來。(4)情境中必須包含學生未知的新內容,而且是能夠通過探究掌握的。
四、C語言程序設計課程中的探究形式
C語言程序設計課程中開展探究教學主要有4種形式:探究性提問、探究性
討論、探究性演示和探究性實驗。這4種形式是相輔相承的,而不是孤立存在的,
在C語言程序設計探究教學中,需要用到多種形式來構成一個完整的探究教學
過程。C語言程序設計探究教學通常都是由探究性提問開始,然后進行探究性
討論、探究性演示或探究性實驗;也可能從探究性演示或探究性實驗開始,在演
示或實驗的過程中發現問題,再進行探究性討論。在實際教學過程中,要根據學
習內容和課堂情況靈活地選用這些形式。
五、C語言程序設計探究教學評價
教學評價指依據一定的標準,通過各種策略和相關資料的收集,對教學活
動及其效果進行客觀衡量和科學判定的系統過程。C語言程序設計探究教學評
價是對C語言程序設計探究教學過程及其影響的測量、分析和評定,評價中我
們更關注學生學習和成長的過程,尋找適合學生發展的學習方式,滿足學生知
識和能力發展的需要。評價對探究教學的積極作用是很明顯的,但是如果評價
指標制定不合理,或者評價方法的選用、評價結果的表述不當,不僅不能達到預
期效果,還會對學生的C語言程序設計學習產生消極影響。
參考文獻
[1] 《基礎教育課程改革綱要(試行)》教育部文件,教基[2001]17號.
[2] 保羅 朗格朗.終身教育引論瞰[M].北京:中國對外翻譯出版公司,1985,
p15~31.
[3] 聯合國教科文組織.學會生存——教育世界的今天和明天[M].上海:
上海譯文出.
版社,1979,p2.
[4] 張大均。教育心理學[M].北京:人民教育出版社,2005,p68--71.
[5] 靳玉樂.探究教學論[M].重慶:西南師范大學出版社,200l.
作者簡介
鐘實(1986-02)男、民族(漢),籍貫(江西省南昌市),2010畢業于浙江大學
關鍵詞:教學內容;教學手段;教學方法;考核方式
C語言是早期最經典、最強大的面向過程的程序設計語言之一。雖然現在面向過程已經全面轉向面向對象,但是C本身的中級語言的設計理念以及對現有VC/C#等語言的深刻影響,使其至今仍是程序設計入門的首選語言,也是工科院校計算機專業學生接觸的第一門程序設計語言。對于計算機類專業學生來說,一旦掌握了C語言,就可以較為輕松地學習其他任何一種程序設計語言,為后續的面向對象程序設計以及Java程序設計等語言的學習打下基礎;對于其他非計算機專業的工科學生來說,比如電子、機電專業來說,該課程為學生用計算機編程解決實際問題提供了方法,是學習單片機技術教學的基礎和重要工具。
一、C語言教學中面臨的問題
C語言程序設計是一門基于dos操作系統下的面向過程的程序設計語言,隨著面向對象語言的開發,C語言在界面交互性上遜色不少,作品上也不如Flash、三維動畫效果吸引眼球,難學、難懂、難以應用的課程,對學生越來越缺乏吸引力。針對這種狀況筆者認為,更新教育觀念、探索新的教學模式才是根本出路。筆者根據多年的教學經驗,對C語言程序設計課程從教學內容、教學手段、教學方法、考核方法方面進行了一系列的創新改革。教學內容主要解決如何調動學生積極性,激發學生創新能力,如何提高學生的創新能力、實踐能力、研究能力、發現問題和解決問題能力等綜合素質;教學方法主要解決如何實現“以人為本”,分層次教育,如何通過引導、啟發等方法,激發學生的發散性思維。同時要利用目前課堂和實驗教學在培養學生創新能力和實踐能力方面的優點,利用大學生實訓基地,為學生的創新和實踐能力的鍛煉和培養提供一個良好的平臺。
二、教學內容的創新
課程內容的選取與組織是課程教學改革的基礎。人才培養方案對C語言程序設計教學內容進行重新整合,把課程學習劃分成培養學生的基本程序設計能力和培養學生的專業程序設計能力兩個階段。
第一階段安排在大一第一學期,主要針對沒有程序設計經驗的大一新生,重點講授C語言的基本知識,包括三種基本結構、數組、函數的概念。在第一階段教學中,筆者采用案例教學方法結合具體的程序實例,創設情境,引導學生自己總結掌握C語言的基本語法和程序設計的基本方法。第一階段的學習結束的時候,學生可以具備基本的程序設計能力,獨立編寫具有初等難度、幾十行的程序,并且能夠較順利地完成程序調試與測試。第二階段教學放在大一第二學期初,針對具備基礎程序設計能力的學生,重點培養學生的專業程序設計能力。在第二階段的教學中,以學生為主體、以教師為引導,采用國家火炬計劃河北省軟件人才工程實訓課程,使學生融會貫通所學知識,完成一個具體的項目,以達到提高學生程序開發能力的目的。迄今為止,學生完成的項目包括“銀行儲蓄管理系統”“彩票信息查詢系統”。教學實踐證明,這種理論和實踐技能并行的教學模式,更加有助于學生的創新能力的提高,使學生在不斷實踐中掌握技能,在技能學習中提高基礎理論。
三、教學手段的創新
在學習過程中除了發揮教師的引導作用,還需要充分調動學生的參與主動性。在授課期間靈活采用多種教學手段,如:自學、演示、對比、課堂提問、學生演練和討論等,通過不同方法,尋找創意思維“契機”,安排創意鋪墊內容,培育學生的創意萌芽,營造創意環境,引發學生爭鳴,為學生提供更多的思維空間,誘發學生的思維靈感。例如,在教學中講解“循環結構的循環嵌套”的時候,提出馬克思手稿中的數學題的案例:偉大的思想家馬克思的手稿中有這樣一道有趣的數學題:有30個人,其中有男人、女人和小孩。他們在一家飯館中吃飯,共花費50先令。如果每個男人吃飯要花3先令,女人要花2先令,每個小孩要花1先令,問男人、女人、小孩各多少人?先提出問題,引導學生分析、討論案例,提問學生運用數學知識完成案例提出的問題需要進行哪些操作,這樣學生就會比較有興趣,課堂氣氛就活躍起來。然后幫助學生從案例分析中理解并掌握什么是多重循環,并且如何使用雙重循環解決問題,最終完成程序的編寫。
在學習的第二階段采用開放式訓練教育方式,利用專題設計和課外指導方式,鼓勵學生課外自主進行訓練。如:完成的項目“彩票信息查詢系統”,教師提出設計方案,學生完成基本功能以后,自己可以對其他功能進行完善。
四、教學方法的創新
課程每個章節內容結構主要由三部分組成:
知識點:介紹本章需要掌握的知識或技術。
應用案例:介紹本章知識應用的案例。
創新訓練:針對具體的問題,應用本章技術來完成知識點的應用。
在整個教學過程中,教師采用框架式教學,像建筑工程師修建筑一樣,先采用精講的方式,讓學生建立整門課程的知識框架;接著通過案例教學、項目式教學等多種教學方式,讓學生逐步去進行細節知識點的填充;最后通過綜合訓練方式,完成整門課程的學習。
例如,在講解C語言程序設計中的函數時,搭建出例如綜合排序等程序的框架,給學生留出函數,讓學生自由開拓思想,獨立完成一些小型實例的編程,經過具體知識點的訓練后,還要重點進行綜合知識的應用訓練,開展一系列的創新應用,以達到知識綜合運用和培養創新能力的目的。
五、考核方式的創新
傳統的C語言程序設計考核模式一般以標準化的筆試題為主,這種考核方式側重語法知識的考核,忽視編程實踐能力的培養。為此,筆者改革傳統的考核方式,將考核分為平時實驗和期末考核兩部分。平時實驗成績考核的是學生每一章知識,實訓作業就是在每一章節結束的時候,布置相關的習題,學生利用業余時間編程,并且在實訓期間進行調試,調試成功后上傳到服務器上。期末考核成績采用的是教研室開發的上機考試系統。上機考試系統模擬C語言二級考試建立了知識面齊全、題量充足、難易度合理的試題庫,采取隨機抽題的形式重點考查學生的程序設計能力和程序調試能力。這種考核方式督促學生在平時學習中加強對編程舉一反三的實踐環節。實踐證明,這樣不僅能有效培養學生的實踐編程能力,還激發了學生動手實踐解決問題的興趣。
總之,經過不斷的摸索與實踐,通過以上的教學方法與教學手段的改革和實踐,不僅提高了學生的學習興趣,讓學生從枯燥無味的語言學習中解放出來,從被動學習走向主動學習,同時也培養了學生分析問題、解決實際問題的能力,充分發掘了學生的創造潛能,鍛煉了創新和協作精神。
參考文獻:
[1]郭芹.對高職高專計算機專業程序設計教學的思考[J].中國科技信息,2008(1).
關鍵詞:C語言程序設計;教學改革;算法
中圖分類號:TP312 文獻標識碼:A DoI: 10.3969/j.issn.1003-6970.2012.05.044
The C Programming Language Teaching Reform and Practice
waNG Zhong-ying
(Computer science department of Shangluo College, Shangluo 726000, China)
【Abstract】C language as human-computer interaction is an important tool, in the IT field is play a decisive role; at the same time, c language is normally It students high-level programming languages, their master degree directly affects the student program literacy and learning interest improve. according to the long term c language program design course teaching experience, combined with the new teaching environment, the paper points out that in the course of the reform in the teaching of some misunderstanding, in view of these problems and how to improve the effect of teaching put forward many suggestions.
【Key words】c language programming design; teaching reform; algorithm
0 引 言
C語言程序設計課程是計算機科學與技術和軟件工程等IT類專業的專業必修課程,也是《數據結構》、《算法設計與分析》等其專業核心課程的先修課程。C語言程序設計的水平在很大程度上決定了學生專業基礎知識的掌握是否扎實,直接影響到后續課程的學習效果和專業興趣的培養。為了提高學生的程序設計素質,為后續專業課程的學習打下基礎,筆者結合自己長期C語言程序設計課程教學的體會,結合新的教學環境,指出了該門課程教學改革中的一些誤區,并對如何提高教學效果提出了許多可行的建議。
1 C語言程序設計教學中的幾個誤區
1.1 對C語言程序教學的重視程度降低
許多人認為,JAVA、C#等目前行業內普遍采用的高級程序設計語言,相對來說簡單易學,源程序可讀性強,又有功能強大的集成編輯環境的支持,有利于讓學生迅速開發項目,而C語言程序語法復雜,調試困難,開發較大規模的應用程序比較麻煩,所以在人才培養的課程體系中,采用JAVA、C#等高級語言來代替傳統的C語言程序。筆者認為,這是一種急功近利的表現。首先是C語言程序的功能同樣強大,在較大規模的應用程序尤其是系統程序的開發中有出色的表現,具有易編寫程序操縱系統底層的優勢,在嵌入式編程中具有不可替代的地位。TIOBE近日公布的2012年4月份的編程語言排行榜中,C語言再次超越JAVA語言重新回到了編程語言的王者地位,這說明具有30多年歷史的C語言依然是歷久彌新[1]。
1.1 教學學時過度精減
在近幾年的高校專業教學改革中,許多院校對課程課時進行了精減。在這個過程中,我們發現有的學校缺乏科學規劃,存在許多不合理的地方,如對C語言程序設計課程的學時過分減少就是一個例子。這種現象不僅對提高學生能力的沒有起到積極作用,反而影響了學生專業基礎能力的培養。C語言程序設計是IT專業學生的第一門程序設計課程,不僅培養學生的對C語言本身的掌握,同時還需要培養學生的程序設計思維以及培養學生對IT行業的興趣。在這一階段,沒有老師充分的指導往往是不夠的。如果學個一知半解,會影響到后續課程如數據結構、操作系統等學習,進而失去IT行業的興趣。
對于C語言程序設計課程的學時數,不同的院校應該根據學生的實際情況來確定,對學習能力強的學生可以精減課內學時,采用案例驅動、任務驅動的方式指導學生在課外自主學習;對于學習能力一般的學生,則需要教師多指導。總之,無論對于哪類學生,只要是IT類相關專業,都需要讓學生較扎實地掌握這門課程。
關鍵詞:《C語言程序設計》課程;教與學;方法;探討
中圖分類號:G642文獻標識碼:A文章編號:1009-3044(2011)15-3610-02
《C語言程序設計》是目前世界上十分流行、使用最為廣泛的高級程序設計語言,也是計算機軟、硬件相關專業的基礎課程;并且學生《C語言程序設計》能力的強弱,直接影響他們后續專業基礎課和專業課的學習。該課程在計算機教學中的重要性是不言而喻的。
1 高職院校《C語言程序設計》課程教與學的現狀
在從事計算機及相關專業基礎課的教學過程中,發現語言課是學生學得最差、老師教得最辛苦的一門課程。根據專業教學計劃,計算機應用、計算機網絡、應用電子等專業開設了《C語言程序設計》課程,一般設置在二年級。從課程設置的角度來說,經過知識的積累和思維的鍛煉,學生在這個階段應該具備了學習一門基礎語言課的能力。按正常教學規律來講,在教師與學生的共同努力下是可以學好這門課程的,但實際情況確不盡人意。從多年實際教學經歷來看,制約因素主要有兩點:一是學生的數學基礎差,而教材編排和例題分析與數學知識聯系過于緊密,導致學生覺得難學;二是因為計算機編程使用英文,一些學生因英語學習的失敗心理,覺得計算機語言是門高深莫測的課程,還沒有上課就認為難學,而職業院校的部分學生學習不刻苦的現象,進一步導致教學過程中存在更多的障礙。針對這些情況,我認為要學好《C語言程序設計》課程,克服這兩個障礙勢在必然。
2 教師如何上好《C語言程序設計》課程
2.1 仔細領會教學大綱,全面深入教材改革
教師深入分析教學大綱,在全面了解學生的數學基礎知識狀況的前提下,根據大綱制定好教學計劃。將教材中涉及到學生未掌握的數學知識方面的例題進行更換,避免因數學知識問題形成教學障礙。例如在講多分支條件語句的應用中,教材普遍采用一元二次方程求解為例來說明,但一元二次方程的求解對于有些學生來說,虛數是一個知識障礙,可以想象得到,他們會學得一頭霧水,教學效果自然就差。還有“輸入三角形的三條邊長,求三角形的面積。”的例題中,先要判斷三條邊是否能夠組成三角形,再利用海輪公式計算面積,但海輪公式大部分學生都不清楚。這些例題就形成一個本末倒置的結果,為什么不選擇其它的例題來分析呢?在后續的例題中,“根據成績分數,輸出等級。”,問題適當地簡化,效果就很不錯,還可以和后續的SWITCH語句結合起來教學。選取的例題除了有代表性外,涉及到的知識點也不可忽視,要記住,我們是在學習《C語言程序設計》,不是在學習數學,主次要分明。
2.2 精心準備,加強師生互動
課前要充分備課,準備好教學的內容和學生的練習,做到有的放矢。例如在講到“自加++”與“自減--”運算符時,我們著重講自加。例題為:int a,b=5;分析:a=++b;a=b++;a=++b++;運算后a,b的值。經過分析后,讓學生掌握其規律:運算符在變量前是先做自加操作,再取其值完成后續運算;而運算符在變量后面則是先取其值進行運算,再完成自加操作。得出這個結論后,提示學生自減的運算也是相似的,要求學生分析將上述例題的自加改為自減后a,b的值,這樣學生學習起來針對性就比較強。為什么要設置上面三個例題呢,上過《C語言程序設計》課程的教師自然知道每道題的代表性。最后可以用綜合題加強這兩個運算符的運用,采用如下練習:int a=4,b=5;分析a=++a-b;b=--a++-b++;運算后a,b的值。學生完成這道綜合題后,對自加與自減的運算及使用自然清晰明了。
2.3 充分利用學生的成功心理,培養學習興趣
我們曾經訓練一些學生參加全市編程比賽(用Visual FoxPro編寫),開始學生也是基本一無所知,我們只好從基本函數、語句開始上課。經歷了一個多月時間,他們沒有獨立地完成任何一個程序的編寫。后來不再給他們任何提示,而是讓他們自己思考,有時幾天后才給他們分析。其中有3名同學,經過了一周時間的查資料、上機調試,終于完成了一個圖書管理系統的基本模塊,并找到了成功感。自從那以后,他們能非常深入的分析我們布置的練習并經過反復地調試,找到答案,訓練效果得到很大地提高。從中我們看到創造一個成功的心理,學生學習的興趣就會自然提高,學習起來就會積極主動,效果當然比填鴨式教學好得多。
在平時的教學中,我們也應重視這一點,特別是對學習積極性較高的學生更是如此,今年的《C語言程序設計》課程實習中,這一點得到了充分體現。很多練習我都不先分析,而是讓他們自己獨立分析、調試,最后才小結。大部分學生兩周實習完成后,總結說:“在這兩周的實習中,所學到的知識比前半學期學到的知識還多”。其實,我想并不是他們在這個過程中學到了很多知識,關鍵是他們經過獨立地思考分析,完成了程序的編寫,獲得了充分的成功感!有了成功感,就有了學習興趣,興趣是最好的老師。學生在學習中能獲得快樂,學習過程自然就會輕松很多。
2.4 讓學生學以致用,轉變學習動機
在我初次上《C語言程序設計》這門課程時,有一名學生問:學了這門課有什么用?當時問得我張目結舌、啞口無言,不知如何回答他才好。后來想:我們的學生是職教性質的,所以對他們說學了這門課你可以去當程序員,同時為以后學習其他語言課打下基礎等,這些對學生來說有點和實際不符。教他們這門課,應該讓學生掌握一些解決實際問題的能力,才會促進他們努力學習,毫無目的地學習自然沒動力。認識到這個問題的嚴重性后,在后面的教學中,我把平時遇到的一些問題結合起來進行教學,讓他們知道掌握某些知識就能解決相關的一些問題,讓他們在學習過程中覺得學習與實際生活很近,這樣對《C語言程序設計》課程的認識就沒那么抽象了。如在講數組時,就以統計期中成績情況為例,讓他們完成:每個學生的總分、平均分的計算、排名情況;及每門課程的總分、平均分、最高分、最低分、合格率、優秀率的計算和成績段分析,這既學好了數組的知識,還充分運用了前面章節的一些相關內容,同時,學習該課程的積極性也調動起來了。
2.5 讓學生克服畏難心理,理性認識計算機編程語言
我們的學生大多在學習前就有畏難的情緒,覺得《C語言程序設計》課程難學、學不會,造成這種情況主要是對計算機編程語言不了解。另外就是有些學生英語學得差,看到計算機編程使用英文,就未學先棄了。其實學習語言并沒有他們想象的那么難,英語差對學習計算機語言影響不大。比如學習該課程,真正要記的關鍵字只有32個,語法也不復雜,只要大家不帶著畏難的心理,一定能學好的。作為《C語言程序設計》任課教師,在上課前,做好學生的畏難心理工作,會在今后的教學工作中起到事半功倍的效果。
2.6 從例題中提取精華,讓學生掌握一些代表性的編程方法
這一點其實和學習數學一樣,不管是教材中的例題還是教師另外安排的練習,一般來說都比較具有代表性,代表了某類問題的解決辦法。因此,學生在學習中不要僅僅滿足于理解或掌握這些題目的解決方法,還要進一步將這些具有代表性的解決辦法提煉出來,為解決相似問題提供參考。比如說在講數組排序方法的應用時,常會講“冒泡法”和“選擇法”兩種排序方法,其實,作為一般的應用,不管是哪種排序方法都比較好,只要是排序的問題,使用其中的一種(或加以變換)都能解決問題的。
3 教師如何引導學生學好《C語言程序設計》課程
教學是一個相互配合的過程,涉及到教師如何教、學生如何學的問題,這兩個環節相輔相成、缺一不可。學生如何學也起著舉足輕重的作用,而學生如何學與教師的正確引導是密不可分的,下面就如何引導的問題談幾點看法。
3.1 強調該課程前四章的重要性,要打好扎實的基礎
計算機語言的學習,真正要記住的知識不多。如該課程,只要學好前四章:標識符、運算符與表達式、順序結構程序設計、程序調試方法等,并打下扎實的基礎,后面的學習就會輕松得多。我們在教學中經常遇到這種情況,學到后面,有些學生連printf()、scanf()、putchar()、getchar()等常用函數的使用都忘了,這些最基本的知識都不能熟練掌握,又如何學習后面的內容呢?
3.2 讓學生改變學習方式,為學生多動腦、多分析、多練習提供條件
據了解,有些學生在初中或高中的學習過程中,都存在著較多填鴨式的教學模式,造成學生在學習過程中不靈活、不動腦、不善于分析問題,只會生搬硬套、死記硬背的方法學習,這種情況對于學習計算機來說是一個最大的障礙。說實在的,如果想要學好、用好計算機,沒有一定的悟性,并且不能融會貫通、舉一反三是不行的。因此,在學習中不要滿足于教師教了多少,而應該多動腦筋,對遇到的問題多分析、多思考,在計算機上多練習、多操作,還可以適當的看些相關的課外書,開闊視野,這樣才會學好、運用好計算機語言。就像前面說到的那些學生,開始他們總是滿足于教師教了他們多少;后來布置的練習,如果是經過教師分析后他們才做出來的,他們總是覺得沒有成就感。因為填鴨式的教學,學生在學習中嘗試不到學習的成功與快樂,自然就學不好。為此,在講到具體程序設計后,每堂課上完后要布置兩三道課后習題沒有的題目,給學生多寫、多編、多讀、多看程序提供機會。
3.3 引導學生加強數學的學習,努力拓寬數學知識面
當然,如果要學得更深入一些,要求再高一些,扎實的數學基礎知識對于學習編程無疑是必要的。在后續的編程學習中,對算法等知識的理解與掌握要求有相當的數學知識。因此,要求同學們要努力學好數學。比如在講二維數組的應用時,如果學生提前了解線性代數中行列式和矩陣的相關知識,教學效果肯定顯著。
以上是長期擔任《C語言程序設計》課程教學的幾點體會,從該課程的抽考和全國計算機等級考試《C語言程序設計》二級考試的情況來看,達到了預期的教學效果。
【關鍵詞】 C語言程序設計 教學改革 實踐教學
一、引言
隨著計算機技術的飛速發展和不斷普及,計算機已經在人們的工作生活中得到了越來越廣泛的應用,由此也促進了高校計算機技術教育的不斷推進。目前許多高校已經將計算機語言課作為一門基礎必修課,主要目的是讓學生通過程序設計方法的學習,了解計算機解決問題的過程和方法,訓練邏輯思維能力,培養解決問題的能力。C語言程序設計以其豐富的數據類型、清晰的語言結構、較強的邏輯性以及結構化程序設計思想等優點,非常適合作為教學語言,因此許多高校將C語言程序設計作為公共基礎課。然而,由于C語言課程引入許多新概念和思想較為抽象和復雜,對于初學者來說仍具有一定的難度。針對這種情況,筆者總結了教學過程中出現的問題,提出改革方案,并取得了良好的效果。
二、存在的問題
作者通過多年從事C語言程序設計課程的教學工作,發現在教學中存在的一些問題,總結起來主要有以下幾點:
(1)內容繁雜,學習過程枯燥
在C語言程序設計課程中,開始的幾堂課主要是介紹數據類型、語法規則、基本函數等,內容往往比較單調、枯燥、信息量較大,學生學習起來,覺得乏味,無聊,缺乏學習興趣和學習信心。
(2)理論與實踐教學環節脫節
目前,許多高校中C語言程序設計課程多以課堂理論講授為主,比較注重知識體系的完整,而忽略了學生編程能力以及創新能力等綜合素質的培養。因此,理論與實踐并重,注重培養學生的邏輯思維能力以及解決問題的能力,培養學生的鉆研精神,是亟待解決的問題。
(3)學生難以建立抽象的邏輯思維能力。
利用計算機語言解決實際問題時,既有抽象的數學思維,又與以前所建立的數學思維不同,對邏輯思維能力要求較高。學生常常感到課堂上聽懂了,可是自己編程解決問題時,又覺得無從下手。因此,如何幫助學生建立計算機語言抽象思維方式是教好課程的關鍵所在。
(4)缺乏科學合理的考核方案
傳統考核往往采用期末一張試卷定成績的考核模式,缺乏對學習過程中的監督和監管,部分學生為了得到高分,往往期末臨時抱佛腳的突擊復習,只注重語法等細節知識,不利于對學生解決實際問題能力的培養。
此外,由于學時有限以及機房硬件條件等因素的限制,也影響著C語言課程的實際教學效果。
三、教學改革措施
下面作者結合多年的計算機語言課程教學經驗,針對C語言程序設計課程教學過程中常見的問題,提出了一些改革措施。
(1)課堂采用多種教學手段,充分調動學生學習積極性
首先,對于C語言繁多的語法、語句等比較枯燥的理論知識,教師要充分利用現代化多媒體教學設備,制作生動的電子教案,并配以一定的實際生活中的實例,如水仙花數、猴子分桃等,可以進行現場編程,使學生在解決實際問題的過程中,逐步掌握理論知識。對于一些有趣的實例,比如說漢諾塔等,可以制作多媒體課件,寓教于樂,增強課堂內容趣味性,從而充分調動學生的學習積極性,以及培養學生的主動學習能力與探索知識的能力。
(2)豐富多彩的授課方式,培養學生自主學習能力
根據不同課程內容的特點,教師選取合適的課堂組織方式。例如,教師可以采用問題討論教學,由教師提出問題,讓學生分組相互討論,提出解決問題的方法,教師只提供必要的輔導,從而培養學生主動學習、探索并解決問題的能力以及創新能力。教師可以在授課過程中,引入項目驅動式,先從一個最簡單的程序開始,隨著課程的不斷推進,不斷擴充原有程序,教師要根據知識的層次關系提出更深層次的問題,引導學生思考。在項目驅動教學法上,需要注意的是新知識點要在原有知識點之上的逐步導入,由淺到難地逐層推進,從而使學生更容易接受。教師還可以采用啟發式教學,結合一些直觀形象,易于引起學生聯想的具體事例來激發學生的思維,使他們學會舉一反三和獨立思考,注重學生邏輯思維能力的培養。
(3)理論與實踐齊頭并進,培養學生實踐動手能力
由于C語言程序設計是一門實踐性非常強的課程,要想學好C語言,就必須要多編程,多練習,在不斷的編程練習過程中,掌握程序的設計思想,提高編程能力。我校十分重視實踐環境建設,建有12個公共機房,并全部接入校園網,供全校C語言公共課使用。我校C語言程序設計公共課全部在機房上課,學生一人一機,機房配有投影儀,可供老師授課使用。優越的教學條件和教學設施,為學生C語言課程的學習提供了硬件保證。要求授課教師要精心準備上機的例題,并要求學生做好上機前得準備工作。在課堂組織上,先要求學生認真聽課,然后再布置習題,讓學生當場編制、調試并運行程序,盡量讓學生把當堂課的授課內容在課內就完全掌握住,并能夠熟練運用。對于學生編制的優化性能較好的程序,教師要給予積極的鼓勵和表揚,使學生體驗到成功的樂趣,從而增強學生的學習和探索問題的熱情。
(4)建立科學合理的考核方式,注重過程監督和綜合素質的培養
考試是教育評價的重要手段之一,傳統的考核方式大多以期末一張試卷定成績的考核方式,不注重學習過程中知識的積累,不能全面反應學生掌握知識的真實情況,并且不利于學生綜合能力和素質的培養。因此,科學合理的考核方式對學好C語言也是重要環節之一。我校采用平時成績+期末考核的考核方式,平時成績主要由平時測驗、平時作業、平時出勤等綜合給出。而期末考核由筆試考試+上機考核兩部分給出。筆試考核主要考察學生基礎知識和基本理論的掌握情況,而上機考試主要考核學生動手能力和運用知識的綜合能力。通過引入平時監管,就要求學生認真對待每一堂課,避免期末為了應付考試而突擊復習的現象。通過引入上機考核,充分培養了學生的編程能力、解決實際問題的能力及創新能力。
四、結束語
我校通過對C語言程序設計公共基礎課程的教學改革,有效增強了學生的學習熱情,激發了學生自主學習的積極性,提高了學生編寫、調試程序的能力以及編程解決實際問題的能力,培養了學生邏輯思維能力與團隊合作精神,教學效果得到顯著提高。
參考文獻
[1] 蔡曉麗.陳舜青.丁志云,計算機C語言實驗教學改革探討[J].電腦知識與技術,2010(5):4191-4192
[2] 周欣欣,程序設計類課程教學改革探索與實踐.科技信息[J],2012(2)
[3] 余冬梅,基于C語言的計算機語言類課程的教學方法研究與實踐.現代計算機[J]2020(8):67-69
【關鍵詞】C語言;教學改革;教學效果
《C語言程序設計》是高校各專業本科教學中的一門重要技術基礎課,在各專業的本科教學計劃中占有重要地位和作用。本課程的教學宗旨是要努力把C語言從應試課程轉變為一種實踐工具,主要目的不再局限于使學生單純地了解和掌握C語言的基本語法規范,而是要致力于培養學生運用C語言解決實際問題的編程能力,以C語言為工具,介紹程序設計的基本思想和方法,培養學生無論以后在學習、工作中使用什么語言編程,都能靈活應用這些思想和方法的能力。
1.改革的必要性
我國傳統的教學模式是完全遵循書本內容和知識結構,通過“講授法”完成一系列的教學任務,如教師向學生傳遞知識信息、控制學生掌握知識信息的過程等。“講授法”從本質上而言是一種單向性的思想交流或信息傳輸方式,是以教師為中心、學生被動接受知識的一種教學模式。在教學過程中,學生才是真正的主體。隨著應用型人才培養改革的不斷深入,學生培養目標和教育理念也不斷更新,傳統的教學方法無法滿足現代教學需求,從而提出教學內容、教學方法和教學手段的改進,提高學生學習《C語言程序設計》課程效率和效果。
2.教學內容的科學組織
教學內容的科學組織是提高教學質量的關鍵。眾多程序設計教材中存在的問題:①實例不實,為解釋語法而設計。②語法堆砌,只見樹木不見森林。③忽視錯誤程序的分析與講解。為解決以上問題,編寫了內容緊密結合實踐,實例兼趣味性和實用性的教材。
在教學內容中強調理論和實踐的結合,結合項目案例組織教學內容。教師根據教學要求與目的,精心選擇有普遍性、代表性的案例,案例難易程度還要與學生的接受能力相適應,教師對相關資料進行整理加工,去粗存精,使內容適當的典型化,以便于學生分析研究。課前將案例說明資料,以及與案例有關的背景知識、理論說明參考資料等交給學生預習。要求學生閱讀、理解、思考案例。要求學生分組在課堂上運用原始資料,通過分析與討論,找出需要解決的問題并提出解決問題的方案。教師對學生提出的各種案例解決方案進行評價并總結。通過項目案例可以幫助學生對理論知識的理解,可以培養學生分析問題和解決問題的能力,可以激發學生的學習興趣。
3.教學方法的靈活應用
以應用為背景,以程序設計方法為主線、以語法和結構為核心,以培養能力和提高興趣為目標,重視方法、思想和能力的結合。提出多種實用新式的教學方法:案例—任務驅動教學方法、設置錯誤尋求正確答案教學方法。
1)案例—任務驅動的教學方法
“程序設計語言”強調的是“設計”,應當從“設計”入手,以程序設計思想與方法為核心,注重程序的編寫過程,選擇一個恰當的案例非常重要。案例的選擇應當由淺入深,要做到精、準、易。精就是突出重點,目的明確;準就是能夠反映欲教授內容的本質;易是簡單易懂,不能把學生嚇著。
2)設置錯誤尋求正確答案的教學方法
在課堂教學中,有意給出一些帶有算法錯誤或語法錯誤的程序段,使學生產生一些疑問,去思考,為什么這樣編程不對?為什么這樣的程序得不到正確的運行結果?讓學生自己去尋找程序答案,修正這種程序中的語法錯誤及算法錯誤。
4.教學手段的改進
采用“以多媒體教學為主、板書為輔、現場編程演示”的方式,多種教學手段相互補充,使課堂教學與實驗教學相結合。
多媒體教學方式的特點是信息量大,圖文直觀,便于算法的動態演示,同時借助于編譯系統進行程序從編輯、編譯、鏈接、運行到測試與調試的整個過程的演示,可增強學生對程序設計的感性認識,缺點是每頁的幻燈片內容有限,不便于學生進行前后內容的對照,內容更新速度過快,學生有時反應不過來,跟不上教師的思路,而傳統的板書教學法恰好彌補了這一缺陷。因此,以多媒體教學為主、板書為輔,多種教學手段并用,可以實現傳統媒體與多媒體的優勢互補,最大限度發揮二者的應用價值。教師課堂現場編程演示,目的是避免紙上談兵,達到“以學生為本、師生互動”的目的,雖然加大了教師授課的隨機性和難度,但是卻可以充分調動學生的學習積極性和主動性,而且由教師一邊帶領學生找錯,一邊講解如何找錯和如何改錯,給學生留下的印象更為深刻,也真正體現了“按照學生的學來設計和組織教師的教、啟發引導、精講多練、理論與實踐相結合”的教學宗旨。
5.總結
針對應用型人才培養目標,本文對C語言程序設計課程教學的各方面提出了改革。經過幾年的教學實踐表明,該教學模式有利于調動學生的學習積極性,使學生真正地認識地到學有所需,學有所用,學有所為。培養了學生分析問題和解決問題的能力,提高了學生程序設計和程序調試的水平。
參考文獻
[1]翟秋菊.C語言程序設計教學改革初探[J].農業網絡信息,2008,3.
[2]張索君.《C語言程序設計》教學改革初探[J].河南科學學院學報,2010,2.
[3]翟文憲.案例教學初探[J].課程·教材·教法,1996,6.
由于時間的關系,我們的這次實習課程老師并沒有給我們詳細的介紹,只是給我們簡單的介紹了幾個比較重要的實際操作。包括了程序模塊處理.簡單界面程序.高級界面程序.程序的添加修改.用程序做一元線性回歸處理以及用c語言程序來畫粒度分布圖等這幾樣比較重要的時間操作。
上機實驗是學習程序設計語言必不可少的實習環節,特別是c語言靈活、簡潔,更需要通過編程的實習來真正掌握它。對于程序設計語言的學習目的,可以概括為學習語法規定、掌握程序設計方法、提高程序開發能力,這些都必須通過充分的實際上機操作才能完成。
學習c程序設計語言除了課堂講授以外,必須保證有不少于課堂講授學時的上機時間。因為學時所限,課程不能安排過多的統一上機實驗,所以希望學生有效地利用課程上機實驗的機會,盡快掌握用c語言開發程序的能力,為今后的繼續學習打下一個良好的基礎。為此,我們結合課堂講授的內容和進度,安排了12次上機實驗。課程上機實驗的目的,不僅僅是驗證教材和講課的內容、檢查自己所編的程序是否正確,課程安排的上機實驗的目的可以概括為如下幾個方面:
1.熟悉程序開發環境、學習計算機系統的操作方法
一個c語言程序從編輯、編譯、連接到運行,都要在一定的外部操作環境下才能進行。所謂 環境 就是所用的計算機系統硬件、軟件條件,只有學會使用這些環境,才能進行程序開發工作。通過上機實驗,熟練地掌握c語言開發環境,為以后真正編寫計算機程序解決實際問題打下基礎。同時,在今后遇到其它開發環境時就會觸類旁通,很快掌握新系統的使用。
2.學習上機調試程序
完成程序的編寫,決不意味著萬事大吉。你認為萬無一失的程序,實際上機運行時可能不斷出現麻煩。如編譯程序檢測出一大堆錯誤。有時程序本身不存在語法錯誤,也能夠順利運行,但是運行結果顯然是錯誤的。開發環境所提供的編譯系統無法發現這種程序邏輯錯誤,只能靠自己的上機經驗分析判斷錯誤所在。程序的調試是一個技巧性很強的工作,對于初學者來說,盡快掌握程序調試方法是非常重要的。有時候一個消耗你幾個小時時間的小小錯誤,調試高手一眼就看出錯誤所在。
通過這次為數不多的幾天計算機實習學習,我們了解了一些關于c語言的知識,理解鞏固了我們c語言的理論知識,著對我們將來到社會工作將會有莫大的幫助。同時它讓我知道,只要你努力,任何東西都不會太難。
3.加深對課堂講授內容的理解
課堂上要講授許多關于c語言的語法規則,聽起來十分枯燥無味,也不容易記住,死記硬背是不可取的。然而要使用c語言這個工具解決實際問題,又必須掌握它。通過多次上機練習,對于語法知識有了感性的認識,加深對它的理解,在理解的基礎上就會自然而然地掌握c語言的語法規定。對于一些內容自己認為在課堂上聽懂了,但上機實習中會發現原來理解的偏差,這是由于大部分學生是初次接觸程序設計,缺乏程序設計的實習所致。C語言程序設計實習心得體會(3篇)C語言程序設計實習心得體會(3篇)。
關鍵詞: 中職計算機專業 《C語言程序設計》 教學方法
《C語言程序設計》在中職計算機專業專業課程中起著舉足輕重的作用,也是對口高考技能考核和理論考試的必考科目。學生素質偏差是中職學校普遍存在的共性,由于學生素質一般不高,學習興趣不濃,學習態度不端正,學習目的不明確,再加上學生剛剛接觸計算機語言類的專業課,該課程本身難度較大,枯燥無味,又存在傳統教學的弊端,教學設施設備落后,這些因素造成學生學習困難,沒有興趣去學,甚至有些學生望而生怯,不愿意去學;教師上課也無精打采,照本宣課,課堂氛圍死氣沉沉,教學效率不高,教學質量上不去,使教學陷入困境。如何使教師的教與學生的學走出誤區,已成為當務之急。
一、培養學習興趣,提高學生的學習積極性
愛因斯坦曾經說過:“興趣是最好的老師。”一些老師往往不注重學生興趣的培養,在第一課簡單介紹完自己后就步入正題,開始按部就班地教學了,認為早點讓學生接觸本課程的相關基礎知識,可為后面緊張的學習爭取時間。其實不然,中職學生素質不高,學習興趣不濃,甚至有厭學情緒,如果一開始就講授課本知識,容易使本就厭倦學習的學生產生抵觸情緒,從而為后面的教學帶來諸多不利因素。
教師首先應想方設法調動學生的學習積極性,不要急著去講解書本知識,把學生學習積極性調動起來,讓學生感覺學習C語言程序好玩,把C語言的研發當成一種游戲,產生強烈的求知欲望,進而挖掘出巨大的學習潛能。
其次在C語言教學中應多采用通俗易懂的例子,避免抽象問題挫傷學生學習積極性。比如在講解兩個變量值互換時,很多學生采用數學中的解法:A=B,B=A,不理解為什么要引入中間變量C,使用C=A;A=B;B=C語句。[1]此時教師如果用生活中看得見摸得著的實物來比喻,學生就很容易理解了。假設A和B兩個盒子里分別放滿白色粉筆和彩色粉筆,現要求在不借助第三方載體的情況下將兩盒粉筆交換,請同學演示,能否成功?如果再拿一個空盒子來并允許使用第三個空盒,能否成功?由此得出必須借助第三個盒子,才能交換成功。這樣學生理解起來就容易多了。
二、重新整合教學內容,分類匯總
教材一般先介紹數據類型、表達式、算法、函數等抽象難懂的C語言基本概念,然后才介紹程序的編輯和運行。如何利用現有資源重新整合教學內容打破教材原有的順序章節,將各知識點按先分類后匯總的原則重新組織?這就要求教師對整本教材的內容非常熟悉,能前后照應、融會貫通,而不是為了上課而上課,照本宣課,不能盡信書,也不能無書,這樣會取得更好的教學效果。例如在講解命名規則時,老師可以把變量和數組放在一起,使學生感覺到知識間的關聯,記住了一個,另一個也記住了,提高學習效益。再如利用C語言把一系列雜亂無章的數據按照一定順序排列,此時我們可以把順序法、選擇法、冒泡法放在一起,讓學生能直觀地看出各種方法的區別,舉一反三,有利于加深對知識的理解。
如學習循環結構時,舉例:sum=1+2+3+4+5+…+n;讓學生建立兩個概念:裝和的變量sum(初值為0),表達式:sum=sum+n;例題變化:p=1*2*3*4*5*…*n;裝乘積的變量p(初值為1),表達式:p=p*n;深化例題:s=1!+2!+3!+4!+5!+…+n!;引導學生分析并發現這是前兩個循環的合并,得出循環體語句:p=p*n,s=s+p,[2][3]使學生掌握一題多變的思維模式,舉一反三、觸類旁通。
三、改變傳統單一的教學方法
C語言和其他計算機專業課不同,它要求初學者要具備較好的數學和英語基本功,而數學和英語是職業中學學生普遍感到頭疼的“老大難”課程。針對這種現狀,我們要根據學科間的聯系,以及學生的個性差異因材施教,要改變過去單一、乏味的以教師講為主的傳統教學方法,采用適應時代需求的符合學生客觀規律的“項目教學”、“自主學習”、“任務驅動”、“案例學習”、“合作學習”[4]等多種方法。
例如:輸入5個學生的3門課程成績,求每個學生的平均成績和每門課程的平均成績。學生拿到題目感覺無從下手,我把題目拆分成兩個任務:1.求每個學生的平均成績;2.求每門課程的平均成績。再將學生分成A、B兩組,分別將任務1交給A組學生完成,將任務2交給B組學生完成。這樣學生感覺輕松多了,輕而易舉地完成了各自的任務。最后我把兩個任務再組合在一起,此題就迎刃而解了。在教學過程中我改變了過去一個人講的傳統教學方式,采用項目教學和合作學習相結合的復合法使問題得以解決,學生對二維數組有了進一步的認識,加深了理解。
求學生平均成績程序段如下:
For(i=0;i
Aves[i]=0
For(j=0;j
Aves[i]+=scor[i][j];
Aves[i]/=3;
求課程平均成績程序段如下:
For(i=0;i
Aves[i]=0
For(j=0;j
Aves[i]+=scor[i][j];
Aves[i]/=5;
C語言程序設計課程本身要求培養學生的動手能力和綜合運用知識解決實際問題的能力,這就要求學生要多動手上機練習。教師要采用多媒體技術,多形式地運用教學方法激發學生的學習興趣,引導學生的發散性思維的形成。例如:打印楊輝三角形,由于學生對楊輝三角形不了解,教師可以借用Flas形象地打印出楊輝三角形,幫助學生找出其中的規律:第一列的數都是1,各行最后一個數也是1,從第3行第2個數起,為上行同列數與前一列數之和,例:a[i][j]=a[i-1][j-1]+a[i-1][j];(i>=3,j>=2)。教師借助動畫,可使得原本抽象難懂的概念變成形象直觀的動態模型,為學生在練習的過程中發現問題、探討問題、解決問題,積累豐富的經驗,使學生體會到成功的喜悅。
只要我們能從學生的實際出發,充分調動學生的學習積極性,運用科學有效的適應時代要求的教學方法,就一定能使學生學好這門課程。
參考文獻:
[1]林東,陳琳.編程語言基礎――C語言.高等教育出版社,2006.6,(2).
[2]黃煜編.程序設計語言課程教學方法探討.山西農業大學學報,2006,(1).
一、C語言程序設計課程教學現狀
C語言程序設計課程在本校已開設多年,經過多年的教學改革和實踐,取得了較好的教學效果,但在本課程的實際教學中,依然存在如下幾方面的問題:(1)學生對該課程的學習目的和意義不甚了解。在實際教學工作中筆者等人發現,由于公共課課時一再壓縮,教師在授課時急于追趕進度,按照教材的章節順序將各個知識點逐一教授給學生。學生對于一些知識點似懂非懂,一知半解,許多學生并不明白其學習的目的和意義。學生只是機械地學習,而不是自主、有目的地學習,因而難以將整個知識體系融會貫通,導致應用計算機解決專業問題的能力較弱。(2)課程理論與實踐脫節。傳統的教學模式是先進行理論教學,后進行實踐操作,讓學生按照實驗教材進行實踐操作,二者不能互相融為一體。此外,學生的層次不一,對于理論知識難以內化,這必然使學生在理論課中感到語法句法的枯燥乏味,同時感覺算法的內容難度過大,難以對這門課程的學習產生興趣。(3)教學方法單一。大部分教師在講授C語言時,往往把C語法規則等相關理論知識的講解作為教學重點,不太注重算法的分析和設計。在講解例題時多關注語言的語法解析,和實際生活偏離太遠,課程與學生專業背景結合不緊密,學生學習興趣不高,學習積極性差。針對以上問題我們試圖從增加輔導課時、舉辦競賽等途徑進行改善,但收效不明顯。而計算思維的培養恰恰是解決這一問題的有效途徑。
二、基于計算思維能力與信息應用能力培養的教學改革實踐
計算思維能力培養的教學方法大體有問題啟發式教學法、案例教學法和項目教學法。對于學生解決問題的能力和科學行動能力的培養,也常以案例教學法和項目教學法作為其教學方法。因此教師必須要認真研究和思考如何在教學中開展案例教學和項目教學。C語言程序設計課程中的許多知識點都適合培養學生的計算思維能力,特別是分析設計程序時如何科學分析問題并進行數學抽象,如何對問題進行符合邏輯的算法設計、編程與調試以及生成可執行的程序,都是對計算思維的很好的詮釋。因此,在培養學生計算思維能力方面最理想的課程之一就是C語言程序設計。
(一)理論教學
(1)以案例為線索重新安排教學內容。認真分析學生的認知規律和專業背景,遵循“理論為輔,實踐為主”的教學原則,通過教學案例重新設計教學內容和章節順序。在課堂教學中應盡量淡化語法規則,通過實例應用一些實用的語法,讓學生從實用的角度出發有選擇性地學習語法規則,而不是死記硬背。通過案例盡早引入函數和指針等概念分散教學難點,符合學生的認知規律。在講解具體程序時多采用單步調試執行程序的方式,讓學生能清晰地體會程序的執行過程,為后續復雜程序的學習奠定良好的基礎。(2)通過案例教學法培養學生解決問題的能力。在講解案例時從計算思維的角度出發,引導學生體會分析、解決問題的基本思路,求解問題的已知信息、中間結果和最終結果,學會抽象化地描述問題,然后逐步明晰解決問題的方法和步驟,即算法的設計,最后利用C語言完成代碼的編寫、調試和執行,最終實現該算法,達到解決問題的目的。在這個問題的求解過程中,將解決問題的過程提升到培養計算思維的高度,讓學生更深刻地理解計算思維的本質。(3)設計使用多種方式將程序與學生的專業領域內容相融合。比如以與專業相關的項目為出發點進行基礎內容的介紹等。在具體的教學過程中只要求學生具備基本的編程素養和解決本專業應用問題的能力,不同專業的項目要以相關專業領域的應用為基礎、以程序設計方法為主線,目的是培養學生的應用能力和提高學生的學習興趣,讓學生多從各種角度去了解和掌握C語言以及程序設計的精髓。例如,數學類、管理類專業的學生可以重點學習與數據庫交互處理的技術。
(二)實踐教學
實踐教學是鞏固理論知識、積累實踐操作經驗的重要環節。在此環節的教學中應重點訓練學生運用計算思維方法去解決實際問題。在教學內容設計方面應注意由淺入深、循序漸進,因此筆者分別設置初級、中級和高級3種類型的實驗項目。在初級和高級實驗教學環節,我們著力做好以下幾個方面的工作:(1)按步驟上機實踐。教師在每次上機實踐課前,給學生布置實驗課的中級項目內容,要求學生利用課余時間分析問題并設計擬定好算法,畫出流程圖,寫出代碼。上課時教師適時抽查學生完成這部分工作的情況。上機課第一項工作是要求學生完成初級項目的測試,測試由無紙化考試系統支持,測試通過后,剩余時間讓學生完成中級項目的程序調試工作,在調試過程中,教師及時對學生存在的疑問進行解答。規范化的上機實踐工作讓學生養成一個良好的學習和訓練習慣,全面提高學生在遇到問題時獨立分析問題和解決問題的能力。(2)教師上機指導。上機實踐中程序的調試主要是排除代碼的語法和邏輯錯誤。因此在每次上機過程中,對于程序編譯鏈接時出現的錯誤,要求學生記錄錯誤信息并分析原因,避免再犯同樣的錯誤。教師對常見的錯誤集中進行講解,教給學生規避錯誤的基本方法,逐步培養學生獨立調試程序的能力。對學生算法方面的疑問,不直接為學生指出代碼中的問題,而是逐步引導學生自己找出問題。這樣有利于培養學生獨立發現問題、分析問題的能力。(3)總結上機實踐。每次上機實踐課結束后,要求學生在課后對本次上機實踐的工作進行及時歸納和總結,對各個環節出現的問題進行總結和反思。對于普遍存在的問題,教師集中講解答疑。及時、有效的總結和反思可以有效地提升學生的計算思維能力。(4)高級實驗項目驅動。通過高級項目的實際開發過程,引導學生創造性地運用知識發現問題、研究問題和解決問題,促使學生在這個過程中積累知識、培養和鍛煉思維能力。建立學生學習互助小組,培養學生協作學習的能力。教師也可以在項目實踐中真正了解教與學的缺陷,推進教學模式轉變。[3](5)結合學生專業背景,維持學習積極性。將C語言融入專業應用中,可以有效地提升學生的學習積極性。教師在授課中應結合學生的專業應用方向,精心選擇、準備與學生專業相關的項目案例進行教學設計。選擇的項目要具備針對性、典型性和實踐性的特點。[4]例如,對于信息類專業,可以選用各種信息系統的項目引導課程的教學。
(三)課程考核
本課程結合實際應用,引入企業項目化考核方式,更加注重對學習過程的考核。建立以自動評測系統和實踐能力考核為主的多元化考核體系。期末總成績由期末機試成績(40%)、實驗項目考核成績(40%)和平時成績(20%)組成。實驗項目成績由中級項目和高級項目兩項實驗成績組成。即從項目的實施情況記錄、小組項目的成果展示、實驗報告的總結以及小組成員的合作態度等各個方面評定學生成績。平時成績依據課堂表現、考勤情況和小組協作三方面組成。這樣做的目的是讓學生的最終成績能更客觀地反映學生的學習過程和學習效果,突出能力培養目標,減輕學生的考試壓力。四、結語培養科學行動能力,提升計算思維能力是應用型本科院校非計算機專業的計算機課程的教學目標。實踐證明,在教學中應該有意識地在理論教學和實踐教學的各個環節中融入計算思維的培養。在實踐課的教學環節,通過分級項目的形式由易到難地把學生融入項目達標與設計實現的過程中,不僅僅有助于學生理解計算機分析解決實際問題的思想,更有助于提高學生利用計算思維方式來解決實際問題的能力與團隊協作能力。
作者:劉紅霞 單位:榆林學院
關鍵詞:C語言;指針;指針變量;地址
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2012)02-0389-03
Discuss Application Of The Pointer in C Language Program
HU Xiao-yan,PANG Run-fang
(Engineering & Training Center Inner Mongolia University of Seicence and Technology, Baotou 014010, China)
Abstract: In this paper,the concept of pointer,pointer arithmetic,pointer of use, flexible application should pay attention to in terms of C language pointer analysis and discussion. Guide the students how to use the pointer.
Key words: C Langwage; Pointer; Pointer Variables; Address
《C語言程序設計》課程是我校理工科非計算機專業學生進入大學所接觸的第一門計算機語言課程。實踐證明,該門課程對于初學者來說難度比較大,這也是由于C語言的特點決定的。因為C語言功能強大,它既有高級語言的特點,也有低級語言的特點。而在這門課程中指針又是C語言的精華,因此靈活地應用指針,可有效地表示復雜的數據結構、動態分配內存、方便地引用字符串和數組;在進行函數調用時還可獲得多個返回值,并可直接處理內存地址,實現其它高級語言難以實現的功能;運用指針編程是C語言最重要的風格之一。但指針比較難以掌握,使用時常犯一些錯誤,即使是熟練的程序員也很難發現和排除這些錯誤。為了設計出高效、簡潔、緊湊的用戶程序,正確理解和使用指針非常重要。因此如何引導學生學會C語言的指針在編程中應用是很重要的事情。
1指針的概念
計算機對信息的處理都由操作系統調入存儲器存放并執行,存儲器中有眾多的存儲單元,存儲單元是用來存放數據的。存放在存儲單元中的數據稱為存儲單元的內容(或值)。計算機為了對存儲單元進行有效的管理,便為存儲單元進行編號(以字節為單位),這個編號就是“地址”,這個“地址”又稱為指針[1]。每個變量都有一個地址。不同數據類型的變量,占用的字節數不同,系統把變量占據存儲單元的第一個字節的地址作為該變量的地址。有了地址我們就可以引入指針變量。指針變量是一種特殊的變量,變量中存放的不是某種數據類型的數據,而是存放另一個變量的地址。如果一個指針變量存放了另一個變量的地址,則形象地稱指針變量指向那個變量。下面提供一個指針的例題,通過分析例題來理解指針的概念。
例:利用指針,求兩個整數的和。main()
{ int i,j,sum;
int *p,*q;/*定義指針變量*/
p=&i;q=&j;/*建立關聯*/
scanf(“%d,%d”,p,q);
sum=*p+*q;/*使用指針變量*/
printf (“%d,%d\n”,*p,*q);
printf(“和= %d\n”,sum);
}
在程序當中,首先定義兩個普通變量i,j,再定義兩個指針變量p,q,為了進行區分普通變量和指針變量,所以在指針變量名前加’*’號。不能引用沒有賦值的指針變量,否則可能會造成系統癱瘓,所以將&i賦值給p,&j賦值給q,說明指針變量指向了普通變量。如圖所示:
有了指向關系,在輸出語句中就可以利用指針來訪問普通變量i,j。
2指針的運算
指針變量和其他變量一樣,也可以進行運算,由于指針的運算實際上是地址的運算,所以和其它變量的運算又有區別[1]。
1)間接訪問運算
用變量名對其所對應的存儲單元的內容進行讀寫稱為直接訪問,而通過存儲單元的地址對其內容進行讀寫的則稱為間接訪問。盡管指針變量中保存的是存儲單元的地址,而引入指針的目的主要是為了更方便快捷地訪問存儲單元的內容。
間接訪問是在引用的指針變量前面加一個“*”號,用來表示指針所指向的存儲單元的值或內容。例如:
int a=5, *p;
p=&a;
printf("%d",*p);
當指針p指向a后,若用指針p訪問所指存儲單元的內容時,可以寫成*p,也就是說在這里*p與a是等價的。由于“&”與“*”兩個運算符優先級別相同,且結合方向均為自右至左,又是一對互逆運算,所以有*&a=*p,&*p=&a。
2)指針變量加或減一個整型量,從而得到另一個地址,當然自增自減運算也是合法的。如先使p指向數組a的首地址(即p=a),則p+n表示的是下標為n的元素地址。p++表示:使p指向下一個元素a[1]。如果接著執行*p,則取出a[1]的值。*p++等價于*(p++)作用是:先得到p指向的變量的值(即*p),然后再將p+1=>p;*(p++)與*(++p)的作用不同,前者是先取*p的值,然后使p加1,而后者是先使p加1,再取*p;++ (*p)表示p所指向的元素的值加1。指針變量乘除一個整型量無意義,C語言也不允許此類語句出現。
3)由于指針變量中的地址也是一數值,所以指針變量間也可以進行關系運算。
4)兩個類型相同的指針變量可以相減,例如指向同一數組的指針變量相減可以得到兩個指針間元素的個數。相加或相乘則無意義[1]。
3指針的使用[3]
鏈表是數據結構的一種存儲形式,能夠實現動態分配存儲空間。我們知道,用數組存放數據時,必須事先對數組定義固定的長度(即元素的個數)。例如,有的班級有100人,而有的班級有50人,如果要用同一數組先后存放不同班級的學生數據,則必須定義長度為100的數組。如果事先難以確定元素的個數,則必須把數組定義得足夠大,以便夠用;但實際若使用得很少,那樣就造成了內存空間的浪費。定義小了又滿足不了需求,為了解決這一矛盾,C語言提供了“需之則有,不需則無”的動態數據結構--鏈表,它根據需要開辟存儲單元。
指針和結構體配合可以實現動態存儲分配,用來實現對鏈表的建立、插入和刪除等操作。
建立一個簡單鏈表,結點類型定義的一般形式:
struct類型名
{數據域定義;
struct類型名*指針域名}
其中,數據域和指針域都可以不止一個,當指針域不止一個時,將構成比較復雜的鏈表。以4個結構體變量為結點建立一個簡單鏈表并且輸出。
#include
struct node
{int data;
struct node *next; };
main()
{struct node a,b,c,d,*head,*p;
head=&a;/*頭指針指向a結點*/
a.data=10;a.next=&b;/*a結點指向b結點*/
b.data=20;b.next=&c;/*b結點指向c結點*/
c.data=30;c.next=&d;/*c結點指向d結點*/
d.data=40;d.next=NULL;/*d結點是尾結點*/
p=head;
while(p!=NULL)/*輸出鏈表,p作為工作指針*/
{printf(“%d-->”,p-->data);
p=p-->next;/*工作指針后移*/}
printf(“NULL\n”);}
運行結果為:
10-->20-->30-->40-->NULL
建立一個簡單鏈表很容易,只需將引用自身的結構體變量的地址賦給前驅的next即可。在后面需增加結點(即一個此類型的結構體變量)時,只要將原鏈尾結構體變量中的引用自身的指針指向新增加的結點即可。
4靈活應用指針還必須注意如下問題[2]
1)要注意指針變量的當前值。我們在做指針變量指向數組的練習時,經常會有這樣的情況發生:
main()
{ int a[6],i,*p;
p=a;
for(i=0;i
scanf(“%d”,p++);
for(i=0;i
printf(“%d”,*p);}
當我們運行程序時,輸出的6個數據和我們輸入的不一致,就是由于指針變量進行了移動,已經移出了我們的數據區域,當再利用指針進行訪問元素時必須把指針變量的當前值重新指向數組中的第一個元素a[0]才可以。所以上面的程序在第二個for循環的前面加一條p=a或p=&a[0];程序的結果才是正確的。
2)在一維數組a[10]中,有語句p=a,則p+i和a+i都表示地址相當于&a[i],p和a都是指針,但是它們有區別,p是變量,可以實現p++,a是常量,a的值不能改變。
3)當指針指向字符串時,字符指針變量和字符數組之間是有區別的。
A、字符數組由若干個元素組成,每個元素中存放一個字符,而字符指針變量中存放的是地址。
B、定義了字符數組之后,只能對各個數組元素賦值,不能用下面方法對字符數組賦值:char str[]; str=“I have a book!”;
而對指針變量,可以采用下面方法賦值:
char *a; a=“I have a book”;
賦給a的不是字符,是字符串的首地址。
C、對字符指針變量賦初值
char *a=“I have a book”等價于
char *a;
a=“I have a book”;
對數組初始化
char str[]=“I have a book”不等價
char str[20];
str[]=“I have a book”
5結束語
指針是C語言的難點,但也是精髓,只要我們掌握了其本質含義,也就不難了。上面所介紹的是C指針使用過程中的一些常用、重要的方法和規則。要達到熟練靈活應用,還需要在實踐中不斷積累、總結、提高。
參考文獻:
[1]郝長勝.C語言程序設計[M].內蒙古:內蒙古大學出版社,2007.
關鍵詞: C語言程序設計;實踐;案例教學;考核
中圖分類號:G424文獻標識碼:A文章編號:1009-3044(2012)10-2309-02
Discussion of Practice Effect in Teaching of C Language Programming
SUN Hua, YU Jiong, QIAN Yu-rong, TIAN Sheng-wei
(School of Software, Xinjiang University, Urumqi 830008, China)
Abstract:The article simply introduces the aims of teaching and methods of teaching, and analyses case method in practice teaching. Through building interest groups and reasonable examine mechanism, it can real make students master key point and difficult point in C language programming. Practice teaching plays a key role in course studying and outside class studying, and it can also promote self-confidence of students in the process of programming.
Key words:C language programming, practice, case teaching, examine
《C語言程序設計》[1]是軟件工程專業學生在大學一年級學習的第一門高級語言程序設計課程,屬于計算機專業本科基礎教學中第一層次的課程,也是一門必修的專業基礎課程[2]。本課程的學習為后序程序設計類課程以及相關專業的其他課程的學習,起到至關重要的作用。采用何種教學方法和手段,保證學生能夠把C語言程序設計課程學好,不僅為以后的學習打牢專業基礎,而且可以培養學生的自信心學習其他的程序設計類課程。
程序設計課程是一門需要動手實踐的課程,每一章節都需要學生編寫簡單的小程序以掌握所學的知識點,在全部課程結束后,要求學生能夠獨立地設計、編寫和測試具有一定難度的程序。但是由于本課程的課時相對比較少,教學中的知識和難點又相對比較多。如何掌握課時,既能夠完成教學大綱的要求,又能在較大程度上提高學生的編程水平,是一個非常有價值的研究課題。
該文將從實踐的角度,重點分析實踐教學在C語言程序設計課程學習過程中發揮的作用,并介紹實踐教學的效果。
1課程的教學目標和教學方法
1.1教學目標
在《C語言程序設計》教學大綱中,對教學目標做出了明確的規定,要求學生通過該課程的學習,一方面,學生具備利用計算機處理問題的思維方式和程序設計的基本方法,另一方面,課程的學習能夠啟發學生主動將計算機引入到其它基礎課和專業課。
1.2教學方法
1)針對C語言程序設計課程中技術點比較多的特點,教學形式以手把手實踐方式為主。提高學生的實踐動手能力。
2)為加強和落實動手能力的培養,每堂課都預留一定的時間給學生進行實踐練習,對于每一個大章節,結束后都安排一個階段性的項目實踐,以鞏固章節中所包括的技術點,同時通過實踐,使學生深入掌握知識點的應用范圍,應用方式。
3)充分利用網絡資源進行答疑、討論及分享。
為了充分調動學生的實踐動手能力,還將實踐結果與考核相掛鉤,督促學生在實踐過程中端正態度,認真學習。
2實踐教學的方法
在教學目標和教學方法中,反復強調了實踐教學,采用各處教學方法,通過實踐、實踐、再實踐的路線,使學生能夠達到教學目標的要求。我們在《C語言程序設計》課程中采用了各種實踐活動,使實踐教學作用在課程學習過程中得到充分的發揮。
2.1案例教學
案例教學是實踐教學的一個很覺的教學方法[3],它不僅可以啟發學生,使學生快速理解所學的知識,而且通過案例教學,也能幫助學生了解各知識點的用法,幫助學生快速入門。《C語言程序設計》課程的實踐課時并不是無限的,如何利用有限的課時,使學生能夠掌握重點和難點部分,需要一定的技巧和手段來完成。作為主講該課程的老師,應該巧妙地安排,根據學生的特點,設計出一些經典同時又非常符合學生實情的案例。可以利用教研室的團隊,形成一個《C語言程序設計》的研究小組,計論并安排適合本專業學生特點的案例。
2.2建立興趣開發小組
在實踐過程中,應該充分調動學生的自我管理能力。讓學生相互幫助,有時候學生的講解比老師的答疑更容易讓學生接受。開發小組既可以讓學生自己建立,小組成員由小組的組長自己指定,也可以由老師安排。最后需要老師把關,盡量保證每個小組在學期結束時,都能完成一定數量的教學案例的設計、開發和測試任務,每個小組成員在小組設計開發過程中,都有所為,有所收獲。
每個興趣開發小組完成的實踐教學任務,都是由老師精心挑選的程序。有時需要根據學生的特點,有針對性地采取不同的案例,分不同的難易程度。避免有些學生覺得過于簡單,有些學生又無法完成實踐教學要求的矛盾。同時,還需要對學生的最終完成效果安排考核,對做的非常好的學生給予鼓勵與幫助,同時考核也能激勵學生認真完成,深刻掌握程序設計思想的思維模式。
興趣開發小組之間也可以互相學習,取長補短。這種建立開發小組的模式,讓學生在大學一年級就能體會到項目經理的職責與作用。同時培養學生的合作溝通技能,為以后的職業發展奠定了基礎。
2.3合理的考核機制
實踐的最終成績,是由任課教師、學院安排相關的教師和從公司邀請的專家共同完成。在考核過程中,綜合考慮各方面的因素。
1)由任課教師決定過程的考核。[4]
學習是一個循序漸進的過程,不同的學生,在分析問題、解決問題的能力上各有不同。由任課教師在實踐過程中,發現進步比較大的學習,發現關于思考以及敢干大膽嘗試的學生。而不是采用一刀切的方法,用統一的衡量方法考核學生。
2)由學院教師進行橫向比較。
通過本屆學生與歷屆學生的對比,發現不同層面上的優秀的學,在全院范圍內給予表彰。
3)由校外專家進行縱向比較。
學生在實踐過程中所設計開發的課程設計,考核時要求提交代碼及文檔,并要求完全按照規范撰寫實習報告,并由校外專業審核。整個課程設計與軟件開發的過程一致,從編寫第一個課程開始,就讓學生了解軟件開發過程中所涉及的各個環節,使學生從大一開始就做到規范,并形成職業習慣。這必將終身受益。
最終對于設計開發優秀的、進步比較大的學生,都要給予一定的獎勵。通過這種方式引導學生主動積極地參與到實踐學習過程中。
2.4在實踐中領悟
在實踐過程中,老師的作用只是引導和指導學生完成課程學習過程中的實踐中比較難的部分,主要還是依靠學生自己在動手實踐過程中領悟。仔細體會程序設計過程,包括構思,設計,調試,運行,實現。這是一個不斷反復的過程,有時候,即使是很小的錯誤,可能也需要花費較多的時間發能發現。雖然目前看來,浪費了比較多的時間,但是今后再犯相同錯誤的可能性會降低。以后再分析他人寫的程序,也很容易發現同類的錯誤。這顯然比老師直接參與講解的效果要好許多。因此,在實踐中領悟,一方面,可以加深印象;另一方面,也可以磨煉學生的毅力以及面對挑戰的勇氣。在學校中經過反復實踐的鍛煉后,走出校門,才能滿足行業的需求,成為優秀的工程師。
3實踐教學的作用
3.1在課程學習過程中的作用
根據教學大綱的要求,《C語言程序設計》課程是實踐性非常強的課程,因此,如何完成教學大綱中規定的要求,完成實踐教學,達到強化學生的動手能力、培養學生的學習興趣和啟發學生的程序設計思維的作用,實踐教學在這一系列的活動過程中發揮的不要替代的作用。
3.2對課外實踐的指導作用
《C語言程序設計》課程的教學過程是,學習-實踐-再實踐。一次實踐難以達到效果[5],需要反復實踐。高校培養軟件專業的人才的培養目標是專業的工程師。學校學習實踐的結束,也是社會實踐的開始。經過四年實踐鍛煉培養的大學生,走出校門后,企業不需再培訓或者只需經過簡單的職業培訓,就可以上崗。因此,在校期間實踐教學就顯得格外重要,更加需要學生們珍惜和利用實踐機會,把在校期間的實踐經驗直接應用于職業生涯中。真正實現從實踐中來,到實踐中去的過程。
3.3提升自信心過程中的作用
在教學實踐過程中,通過將所學的知識運用于實踐,最終能讓學生對知識點如何應用有一個感性的認識,尤其是經過反復調試,最終程序的運行結果顯示在屏幕上,這種成功的喜悅之情是對學生的最大的肯定,能夠極大的提升了學生的自信心。這對于學生如何克服本課程后序的難點以及其它課程學習的畏難情緒也能起到很大的幫助作用。
4結束語
《C語言程序設計》課程中采用實踐教學是可行而且非常有必要的,該文簡要介紹了實踐教學的方法,重要分析了《C語言程序設計》課程中,實踐教學活動發揮的重要作用。今后需要繼續探索教學方法和手段,促使實踐教學的作用發揮極致,使學生達到教學大綱的要求,實現教學目標,為社會輸送高級專業人才。
參考文獻:
[1]譚浩強.C程序設計(第三版)[M].北京:清華大學出版社,2005.7.
[2]新疆大學軟件學院.C程序設計教學大綱[Z].2009.3.
[3]余恒芳.《C#高級程序設計》課程改革與實踐之完善[J].福建電腦,2011(8):201-202.
關鍵詞:C 語言;教學內容;教學方法與手段;教學改革
1.引言
我院開設的“C語言程序設計”課程不但是計算機專業的必修課,而且也是非計算機專業的公共計算機基礎課。但在“C語言程序設計”課程教學中,許多學生都認為C語言涉及的概念比較復雜,規則繁多,使用靈活,容易出錯,且程序設計課程邏輯性又很強,[1]學生不能很好地理解算法,編寫程序也很困難,教師教學和學生學習都感到困難,并在不同程度上產生畏難心理。特別是我院將C 語言作為理工科學生進校后首先接觸的第一門計算機基礎課,這種現象尤為明顯,而C語言基礎打不牢會直接影響后續專業課程的學習。因此如何改革“C語言程序設計”課程,進一步提高教學效果成為一個緊迫任務。本文根據多年的程序設計課程的教學實踐,對“C語言程序設計”課程從教學內容、教學手段、教學方法等方面提出幾點建議。
2.教學內容的改革
2.1課堂教學內容的改革
傳統的《C 語言程序設計》教學內容主要包括C語言語法基礎、數據類型、程序控制結構、函數、指針、文件等。教材在內容組織上,在語法上講解過細、過多。在各章節的編程例子中,多數難度較大,分析較少;不夠形象,學生較難理解,且適用性不強。筆者本著“以任務為驅動”的指導思想,在課堂教學過程中,對教學內容重新進行了歸納,將難點再次分散,以縮小臺階,達到循序漸進。
2.2 實驗教學內容的改革
“C語言程序設計”是一門實踐性很強的課程,既要掌握概念,更要動手編寫程序。其主要任務就是培養學生具有一定的閱讀程序、設計編寫程序的能力,分析問題、解決問題的能力和邏輯思維的能力。因此,上機實驗是學習程序設計課程必不可少的實踐環節,特別是C語言靈活、簡潔,更需要通過編程的實踐來真正掌握它。我院為非計算機系理工科學生開設的“C語言程序設計”課程的實驗學時是32 學時,共8個實驗。由于實驗課時較少,在實驗內容的安排上就顯得十分重要。實驗的總體要求,強調上機實驗要經歷三個步驟:
(1) 上機前的準備讓學生寫出實驗預習報告。內容包括對實驗題目的理解和分析,選擇適當算法,畫出流程圖并編寫程序。分析可能遇到的問題及解決的對策。準備幾組測試程序的數據和預期的正確結果,以便發現程序中可能存在的錯誤。
(2) 上機輸入和編輯程序,并調試運行程序。首先調用C語言集成開發環境,輸入并編輯事先準備好的源程序;然后進行調式。在調試過程中,要充分利用C語言集成開發環境提供的調試手段和工具,例如單步跟蹤、設置斷點、監視變量值的變化等。整個過程應自己獨立完成。
(3)每次上機結束時老師都逐一檢查學生編寫的程序并打分評定。
3.教學方法與手段
在教學方法上,從以教師為主體的的方式轉向以學生為主體、教師為主導的教學方法。有效地培養學生的分析問題與解決問題的能力。以“遞歸函數”為例,筆者先給出問題:王小二自夸刀工不錯,有人放一張大的煎餅在案板上,問他:“餅不許離開案板,切100刀最多能切多少塊?”。[2]通過引導學生分析問題,建立數學模型q(n)=q(n-1)+n,q(0)=1(一刀都不切當然只有1塊)。再通過與或節點圖分析數學模型的含義。最后給出遞歸算法程序。整個講解過中結合板書,逐步引導,層層深入,取得了很好的教學效果。
在教學手段上,積極采用現代化的教學手段,如多媒體教學這樣有利于激發學生的學習興趣,發展學生的主體能力;同時由于多媒體信息量大,也能夠優化教學過程。但對于案例分析或程序的編寫過程,就發揮傳統教學的優勢,進行課堂討論、板書講解、結合提問,將問題層層剖析、層層深入,達到師生互動的效果,學生的想象力也會得到充分的發揮,對問題的理解也變得更容易。
4.課程考核辦法的改革
建立一個服務于課程目標的學生學習評價方法是一項非常重要的工作,考核不是目的,“以考促學”才是考核的本質。傳統的期末“筆試”這種單一的、“一考定終身”式的考核方式,已遠遠不能滿足課程的需要。為使考核真正發揮“以考促學”的作用,要重視對學生學習過程的考核,重視實際動手能力的考核,側重考核學生對知識的融會貫通和靈活運用能力,而不僅僅是基本理論、基本知識的掌握。具體的改革措施如下:
(1) 變單一考核為復合考核,從多個方面對學生進行考核。課程總成績由平時成績、實驗成績、期中成績、期末成績四個部分構成。其中,平時成績考核包括對出勤、隨堂實訓、課堂提問、作業等部分;實驗成績考核是針對課程的8 次實驗成績。
(2) 衡量這門課學習的好壞,不是看學生“知不知道”,而是“會不會干”。期末試題考核的方法不用是非題和選擇題,把重點放在讀程序、編制程序和調試程序。實踐表明,這種考核方法不但能更客觀地反映學生的學習情況,同時也能促進學生學習,起到良好的教學效果。
5.結束語
本文教學內容、教學方法與手段的改革,是根據實際教學過程中學生存在的問題提出的,并已經在“C語言程序設計”課程教學實踐中加以運用,得到大部分學生的認可,取得了較好的教學效果。只要我們不斷探索教學改革,我校的C語言程序設計課程的教學必會取得長足的進步。
參考文獻: