時間:2023-06-01 09:46:01
開篇:寫作不僅是一種記錄,更是一種創造,它讓我們能夠捕捉那些稍縱即逝的靈感,將它們永久地定格在紙上。下面是小編精心整理的12篇c程序設計,希望這些內容能成為您創作過程中的良師益友,陪伴您不斷探索和進步。
關鍵詞:實驗教學; 教學方法; 程序設計
1 引言
C程序設計是計算機專業學習中的一門非常重要的基礎課程, 是學生學習C++、VC、數據結構、操作系統等專業課的先導課程。C 程序設計主要培養學生正確的算法設計以及編程能力,培養學生結合所學知識解決實際問題的能力和正確的編程思維方式。因此, 提高C 程序設計的教學質量對計算機專業學生的學習至關重要。本文提出以下幾個建議, 以供大家參考與探討。
2 加強實驗教學, 激發學生學習的興趣
興趣是激發學生主動學習C 語言的關鍵, 而加強實驗教學是激發學生學習的興趣一種重要方式。計算機專業是一個實踐性非常強的專業, 上機實驗是學好C 語言程序設計的一條捷徑。在實驗教學中, 通過上機運行具體的實例程序,學生便會立刻感覺到C 語言的神奇, 有了好奇心, 學生才能使領略C語言的魅力,從而激發了學生的學習興趣。如果再結合一些趣味性的實例,讓學生從中體會到編程的快樂, 從而達到學生主動學習的目的。
3 先整體后局部的教學模式
C 語言程序設計的初學者在學習的過程中, 經常會因為學習繁多的知識要點而陷入一種誤區“鉆牛角尖”。C 語言本身具有非常靈活、知識點非常繁多的特點, 一開始很多學生什么都看、都學, 什么都研究的過細, 這導致這些學生不知道學的什么, 不知道如何閱讀程序和組織程序, 學生很難抓住C 語言程序設計學習的重點和構建程序設計的思想。為了減少學生的誤區, 本人在教學中, 先給學生搭建整體的程序結構與程序思想, 然后在學生領會程序的設計思想后再局部細化每一個知識點, 使學生逐步積累,在應用去理解和體會。這樣會避免學生因C 語言靈活性大, 難度大, 難理解, 難記憶的特點, 而失去學習C 程序設計的信心和興趣。在教學過程中, 把細節的、難于記憶的、枯燥的知識融入到日常的學習中, 避免學生出現死記硬背的現象, 使學生學會“學習”和查閱資料, 使學生明白學習知識要活學活用, 從而培養學生的學習能力。
4 培養學生正確的思維方式
C 語言是一門計算機語言。因此, 它有語言的特點, 如C語言有其自身的詞匯( 標識符、關鍵字、運算符、分隔符、常量、注釋符等) 、語法規則、語句等。計算機語言又不同于人的自然語言,它有比自然語言更嚴格的要求, 否則計算機無法編譯、識別、執行。針對其特點, 我認為可將C 程序設計的知識點分為記憶型和靈活應用型兩類: 記憶型的如關鍵字、運算符、優先級等; 靈活應用型的如數學模型、數據結構、算法、程序設計方法等。這里關鍵注意兩點, 一點是以算法的表達形式描述出解決問題的方法、步驟; 另一點是使學生明確計算機如何執行一個C 程序。這需要培養學生正確的編程思想和思維方式, 以“計算機意識”去思考問題。首先將你要用自然語言描述的解決問題的方法步驟( 即算法) 轉換成算法表形式( 如N- S 流程圖) , 然后再將其轉換成C 程序, 這種轉換的思想、規則十分重要, 使學生逐漸縮小這種自然語言與計算機語言的鴻溝。
算法設計是程序設計課程的教學重點, 而將實際問題抽象為數學模型是解決問題的重點, 解決了這兩方面的問題就達到了培養和提高學生分析和解決問題的能力的目標, 但對于C 語言的初學者來說, 如求一元二次方程的解, 排序、查找等典型算法, 漢諾塔、百錢百雞、鏈表等典型問題, 這些算法對于計算機專業的學生來說,其分析與設計的過程基本能夠理解。如果將這些算法編寫為程序似乎更難一些, 抽象一些, 甚至感覺無從下手。這就是自然語言與計算機語言之間的鴻溝。如何才能將實際問題的解決辦法轉換為計算機能夠識別、運行的程序呢? 因此, 本人在教學中, 采用對算法精講多練, 采用流程圖等形式, 使學生逐步加深對算法與程序之間的抽象轉換的理解, 從而培養學生正確的編程思維模式, 達到了良好的效果。
5 采用多媒體教學和傳統教學相結合的啟發式教學
教師應當轉變教學理念, 改變填鴨式的課堂教學方式。應該采取啟發式、互動式的教學方法來活躍課堂氣氛, 以引導學生積極思考, 主動學習。啟發式教學是在教師全面掌握講授內容的前提下,在講解新的講授內容前,通過對以前學習的相關內容的復習,引出新的講授內容。例如在講解分支程序設計章節時,應首先啟發學生使回憶一下順序結構的執行過程,進而引出分支結構在C 程序設計中的實現原理和編程思路。而互動式教學是教師駕馭講臺能力的具體體現。一個教師站在講臺上, 要不斷地掃視學生,觀察學生的表情,了解學生的接受程度,并能及時地調整教學的進度和步驟,允許學生在不懂的時候隨時提問,真正實現課堂上的互動, 構造自然、和諧、歡快的課堂氣氛, 使學生主動思考, 自然接受, 其教學的效果必然會顯著地提高。對于難度大、有顯著的特點的教學內容, 可采用對比的教學方法, 以加深學生的理解。
6 結束語
通過這樣教學方式, 本人在實踐教學中取得了良好的教學果。C 程序設計的學習對學生后續專業課程的學習非常重要, 因此C 程序設計的教學至關重要。只要我們不斷加強理論與實踐的探索, 在實際的教學過程中根據不同對象摸索適應不同群體的教學方法, 就能不斷提高教序質量, 為學生的專業學習夯實基礎。
參考文獻:
[1]譚浩強.C 程序設計(第3 版)[M].北京: 清華大學出版社,2003.
鐘 實
(江西科技學院)
[摘 要]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語言程序設計課程足以C語言為平臺,使學生全面了解程序設計的總體思路、程序沒計的基本算法、C語言的語法規則以及使用C語言進行構化程序沒計的方法,并具有一定的程序設計和程序調試的能力,為今后使用C語言解決實際問題打下良好的基礎 由于C語言涉及的概念比較復雜,規則繁多,使用靈活,容易出錯,同時該課程又是學生首先接觸的第一門程序沒計課程,所以很多學生學習起來都感到困難和吃力.并不同程度產生畏懼心理。
在C語言程序設計的教學工作中,我們發現,學生的學習熱情不高,更談不上綜合應用能力的培養與提高。我們C語言課程教學組通過對我校C語言程序設計課程教學現狀的調查分析,總結出了教學效果較差的主要原因,并從教材內容、教學方法、教學手段和、上機實踐和考核評價體系五個方面進行了大膽的改革與實踐,并取得了較好的教學效果。
一、C語言程序設計課程教學現狀分析
為了實時掌握學生的真實學習情況,任課教師對學生進行了問卷調查。根據問卷結果及各位教師的教學經驗,總結出我校C語言程序設計課程教學效果較差的主要原因有以下幾點。
(1)內容抽象、枯燥,學生學習興趣度低。相比第一學期已經或多或少有所接觸并有一定基礎的大學計算機課程而言,第二學期開設的程序設計課程是一種截然不同的全新的課程,出現了大量的新概念、新名詞和新方法。上機時好不容易敲上了一個程序,一運行就會出現一堆錯誤。62.4%的學生看不懂錯誤提示,84.76%的同學不會使用單步跟蹤、Watch窗口等基本調試工具,22.3%的同學竟然根本不知道這些調試工具。于是學生對該課程的學習舉步維艱,學習的熱情急速降溫。
(2)實用性不強。近80%的同學認為C語言的語法知識學了一大堆,但不知道學這些語法有什么用,和自己的專業知識有什么聯系。因此,多年積累下來,對C語言程序設計課程的普遍看法是:這是一門無用的公共課,混混過去就算了。于是,很多同學上課不聽講、下課不預習、不復習,周而復始,形成惡性循環。
(3)進度過于緩慢。C語言程序設計每周4學時,其中,2學時多媒體教室的課堂教學,2學時計算中心機房的上機實踐。計算中心機房為多個班級公用,且無屏幕轉播設施,因此教師的教學僅限于2學時的課堂教學。課時太少,加上學生興趣度低,往往一學期下來指針剛講了基本概念就結束了。有些為參加全國計算機等級二級c語言考試而努力學習的同學也因為指針內容學習太少而難以過關。
針對上述C語言程序設計教學效果差的原因,我中心C語言課程組的各位教師認真研讀了“研究式學習”、“CDIO教學模式”、“計算思維”等理論及各種教學方法和實踐方式,借鑒了哈工大全國精品課程“C語言程序設計”課程的先進教學經驗,并結合各位教師多年的教學經驗,制定了C語言程序設汁課程教學體系的改革方案。該教學體系改革方案從教材內容、教學方法、教學手段、上機實踐和考核評價體系五個方面展開。
二、編寫優質配套教材,實施教材改革
我們按照研究性學習的內涵編寫了《研究式學習——C語言程序設計》教材,目前正在進行面向“計算思維”的新版教材的編寫。該系列教材具備以下特點:
(1) 編寫理念科學性強
整套教材的編寫以“研究式學習”理念為指導,研究性學習是一種建構性的、追求協商的、尊重個性的、以人為本的“體驗式學習”。在2006年的《國家精品課程評估指標》中新增了一條指標:“重視研究性學習、探究性學習、協作學習等現代教育理念在教學中的應用;能夠根據課程內容和學生特征,對教學方法和教學評價進行設計。”所以研究性學習是以人為本的高等教育價值觀的體現,是社會變革和教育發展的要求,也是精品課程的要求。研究性學習的關鍵是要在學習的各個階段提出適當的研究問題,以便在學習過程中為學生創造能親臨體驗地進行研究學習的平臺,問題的提出貫穿在課堂教學、實驗教學、課后作業、綜合性作業以及評價的整個教學過程中。我們自2004年開始就致力于打造C語言程序設計精品課程,所有的教學和改革都圍繞該指導思想進行。2007年以C語言程序設計為主體的“程序設計與計算機語言”被評為省級精品課程,2010年由教材主編主持申報到了省級質量工程教改項目“Inquiry Learning體系在程序設計課程中的運用”研究。這一系列的改革和研究都是以學生為主體,以培養和提高學生的計算機素養為最終目的而制定的。在教學過程中我們經常與學生座談和交流,了解學生的需求,完善我們的教學,使我們的教材和教學模式能與時俱進,保持很好的前瞻性和科學性。
(2) 內容組織創新性強
本教材用“提出問題—分析問題—給出相關知識—舉一反三”的研究式學習方式來組織“C語言程序設計”這門課程,在注重語言知識培養的同時,更注重邏輯思維能力、程序設計能力及創新能力的培養。內容組織方式新穎,符合認識規律,富有啟發性,便于學習,有利于激發學生學習興趣及各種能力的培養。本教材每章都通過4個步驟來完成學習:
第1步,通過提出問題、分析問題來激發學生的興趣,引起學生的思考。
第2步,通過問題的解決、相關知識點的跟進,使學生能逐步提升程序設計的能力,掌握C語言的知識,引導學生深入思考。
第3步,用一定數量的編程實例使學生深入理解和掌握所學知識,用具有趣味性的綜合應用編程實例培養學生的邏輯思維能力和編程能力,挖掘學生的創新能力。
第4步,對每部分的知識進行小結,以便學生進一步鞏固應掌握的知識。
每章后面都有“綜合應用”部分,讓學生對所學知識的具體運用有明確的認識,并能在此基礎上進一步鞏固和提升。
三、采取多樣性方法,實施教學方法的改革
(1)任務驅動教學方法
大多數學生反映C語言概念眾多,許多知識點抽象且難以理解,學生不能將理論和實際應用結合起米, 任務驅動教學法是一種建立在建構主義學習理論基礎上的教學法,它將以往以傳授知識為主的傳統教學理念,轉變為以解決問題、完成任務為主的多維巨動式的教學理念;將再現式教學轉變為探究式學習,使學生處于積極的學習狀態,每一位學生都能根據自己對當前問題的理解,運用共有的知識和自己特有的經驗提出方案、解決問題。在c語言程寧沒計課中.體現“任務驅動”就是讓學生在一個個典型的程序“任務”驅動下,教師引導幫助學生完成一系列程序“任務”,把知識的學習和知識的應用有機地融合在一起,讓學生達到融會貫通、一點帶面的效果。例如,在講授C語言循環語句的教學時,按任務驅動教學模式不是孤立地介紹格式、作用和使用方法,而是將這一知識點設計為“計算1+2+3+……+1 00=?”這一具體的任務。首先,教師通過提出“任務”讓學生把握教學內容,同學們會想象怎么完成這個任務,頭腦里對前而的所學內容進行回顧,但前面學過的知識沒法完成這種任務。接下來教師再講解如何使用循環語句等具體操作方法,這樣教學,學生學得快、學得牢。通過實踐發現“任務驅動”法有利于激發學生的學習興趣,培養學生的分析問題、解決問題的能力,提高學生自主學習及與他人協作的能力,縮短了學習周期。
(2) 項目教學法
很多學生在學完C語言程序沒汁課程后,其結果是聽得懂、卻編不出程序來。針對這一情況,我們在教學過程中采用項目教學法。項目教學法是通過實施一個完整的項目而進行的教學活動,其目的是在課堂教學中把理論與實踐有機地結合起來,充分發掘學生的創造潛能,提高學生解決實際問題的綜合能力。在課程初期.主要是進行單項的編程練習,重在掌握C語言的基本數據類型、語句與程序結構等。在進入函數、數組、指針、結構體和文件內容教學時,開始綜合實訓項日的編程設計,每一個實訓項日都呵以用前一個實訓項目為基礎。通過一個項目的層層遞進,引入課程內容,使得學生的學習循序漸進,螺旋式地上升,效果很好,開闊學生的思維,使得學生在課堂上真正地成為“主體”,教師則扮演“主導”角色。該教學方法使學生積極參與到教學過程中,變被動為主動,有效地調動了學生學習的積極性,深受學生好評。
(3)比較教學法
C語言中的概念比較復雜,規則繁多.而且內容前后聯系緊密,教學過程中教師通過對比的方式對相關的概念或類似的程序代碼進行比較,進而明確差異,然后進行歸納總結,方便學生理解,將會收到事半功倍的效果 例如,C語言中的指針是教學中的一個難點.這一部分涉及的概念較多,如指向變量的指針、指向數組的指針、指向字符串的指針、指向函數的指針等。這些概念很容易混淆,但是將這些概念對比起來講解,學生就很容易理解了。這些概念的共性都是指針,那么它們不同的地方在哪呢?關鍵在于指針變量的指向不同,指針所指向變量的數據類型決定了指針變量的用法。通過這樣的講解,概念的定義就很容易理解,概念的用法也就可以統一了。再如,數據的排序問題有多種算法,典型的有冒泡排序、選擇排序、插入排序等,求解方程的根的算法也有多種,有迭代法、牛頓迭代法、二分法和弦截法等。這些算法之間既有聯系又有區別,講清楚了算法的聯系和區別,也就解決了整個問題。
(4)啟發式教學法
啟發式教學法就是通過教師的啟發教學充分調動學生的積極性、主動性和創造性,引導學生主動學習。例如,在學習printf()和scanf()函數時,通過比較式啟發方法講解兩函數的功能、格式、使用特性等方面的異同,通過比較使學生更好地把握兩函數的特征。在學習選擇排序算法時,使用模擬式啟發方法,讓l0個學生隨機坐在相鄰的l0個位子上,然后現場模擬排序過程;在學習數據交換算法時,使用比喻式和問題式啟發方法,將兩個變量比喻成兩個瓶子,將里面存放的數據比喻成醋和醬油,然后提問:如果將兩個瓶子中的醋和醬油交換一下,應如何操作。
(5)“魚漁兼授式”教學方法。C語言只是一種表述工具,如果只有扎實的語法知識,沒有程序設計思想,根本就不可能寫出程序;而如果有程序設計思想,但語法知識不扎實,勢必在程序的編寫、運行過程中遇到一系列的問題,從而影響學生的學習熱情。而“魚漁兼授式”教學方法可以在基礎語法知識和程序設計方法之問找到一個平衡點,使之相輔相成。例如,在講解數據類型時著重講解為什么數據要分不同的數據類型,需要從哪幾個角度學習不同數據類型的特性;講解具體算法時著重講解遇到類似問題時應從哪些角度分析問題,用什么方法進行程序設計從而解決問題;在課前精心設計一些錯誤,尤其是邏輯錯誤,然后講解遇到錯誤可以采用什么手段去剖析、定位錯誤。
四、建立立體化教學體系,實施教學手段的改革
我們從2006年就開始了立體化教學體系的建設,我們建立了精品課程網站,實現了“在線教育”,現在我們課程的課件、課堂教學錄像、軟件、二級等考及相關閱讀等教學資源都放在了網絡上,作業也通過網絡來實現布置、提交和批閱。師生之間可以通過教學郵箱和課程論壇進行交流,任課教師可以自己定制調查問卷,隨時了解學生的動態和需求,還可以隨時進行在線測試,課程考試已經完全實現了網絡無紙化模式。學生可根據自身的情況進行課后自主學習、自測學習、互相學習或下載資料、上交作業,有助于學生的個性化發展和創新能力的培養。設計出包含驗證型、引導型、擴充型和設計型等多種類型的實驗,在實踐中充分體現學生的自主性,有目的、分層次地培養學生的實踐能力,使學生學會從實驗過程中獲取知識,積累經驗。通過綜合設計,為學生自己構建、發展并完善自己的知識體系創造機會,使學生具備獲取知識和應用知識的能力,激發學生的創新精神,培養學生的團隊精神和協作能力,全面提高學生的實踐能力。
教學實踐證明:學生在課程網站上作業及報告的提交率達到98%以上,問卷調查的訪問量達到了85%以上,優秀設計作業的訪問率達到90%以上,其他資料的訪問率也高于60%。由此可見,立體化教學體系很好的實現了不受時間、地點限制的開放式教學。
五、上機環節的改革與實踐
上機環節是教學活動的重要環節,是對學生進行基本技能訓練、增強學生實踐能力的關鍵環節,是培養學生創新精神的重要手段。本科實踐教學的目的是優化學生的素質結構、能力結構和知識結構,讓其具備獲取知識、應用知識的能力和創新能力。對于《程序設計與計算機語言》課程,以往的實踐教學內容和題目以驗證型和設計型為主。驗證型的題目只要求學生按照書本上的指示,輸入程序,填寫結果即可,學生處于被動接受的地位,學生覺得無趣,毫無創意;設計型的題目對于非計算機專業學生來說,難度太大,學生無從下手。為了全面提高學生的實踐能力和應用能力,使實踐教學能滿足不同層次學生自主學習的需求,我們制定并實施了以下改革措施:
(1)改革上機實踐的教學模式:將以理論教學為主的教學模式改為由理論教學和實踐教學相互聯系、相互交叉、彼此滲透、有機結合、同步發展的教學模式,確立了實踐教學在《程序設計基礎》課程中的重要地位。
(2)設計多種類型的實驗題目:針對學生存在基礎不同、接受能力不同、個性有差異等問題,設計出包含驗證型、引導型、擴充型和設計型共四種類型的實驗,題目盡可能做到覆蓋知識點,切合實際、生動有趣。通過完成不同類型的實驗,有目的、分層次地培養學生的實踐能力,使學生學會從實驗過程中獲取知識,積累經驗。
(3)在實踐中充分體現學生的自主性:實驗課的實驗任務由規定實驗內容和自主實驗內容兩部分組成。學生在完成規定的實驗任務后,可根據自己的興趣和愛好,自主設計一些實驗任務,在教師的指導和幫助下加以完成和實現。通過自主學習和自主設計,能有效地培養學生應用知識的能力和探索精神,極大地激發學生的學習主動性。
(4) 啟發引導學生的創造性,培養學生的團隊協作精神:本課程要求學生以小組(3~5人)為單位進行綜合性程序設計,設計題目主要由學生自己按綜合設計要求來確定,每個小組推選出一名小組長,負責協調程序的開發、與教師和組員的聯系、提交總的設計報告和完整的源程序等工作。在綜合設計過程中,學生處于主導地位,是核心。學習小組的組建,綜合設計題目的選擇或確定,各組員任務的分配與協調,任務完成后的總結與成績的自評等,主要是按學生的意愿來進行。教師只負責宏觀指導和一些條件支持。當學生的選題不符合要求或系統功能設計不合理時,教師會立即指出,并幫助他們修改和完善;當學生調不通程序或程序中有錯誤時,教師會向他們介紹調試方法和查錯方法,教會他們調試程序。對學習好、能力強的優秀學生,教師會注重開擴他們的思路,啟發他們的思維,引導他們去獲取新知識、去探索新問題,激發他們的創新欲望,使他們能完成高水平的綜合設計。通過綜合設計,可充分體現以學生為中心的教學方法,為學生自己構建、發展并完善自己的知識體系創造機會,使學生具備獲取知識和應用知識的能力,激發學生的創新精神,培養學生的團隊精神和協作能力,全面提高學生的實踐能力,從而有效地提高《程序設計與計算機語言》課程的教學質量。
六、考核評價體系的改革
我校C語言程序設計課程的成績分為理論和實踐兩個分數,各2個學分,兩項成績都合格即可獲得該課程的4個學分。其中:
理論課綜合成績(百分制)=平時(百分制)*(50%)+末考(百分制)*50%;
上機實踐綜合成績(百分制)=平時(百分制)*(60%)+綜合設計(百分制)*40%;
理論成績由平時成績和末考成績組成。其中:平時成績由上課考勤、作業提交、階段性實驗報告組成,占總成績的50%;末考指的是期末閉卷無紙化考試,末考側重于基礎知識測試,考核學生對基本概念的掌握。題型包括:判斷題、選擇題、填空題和編程題,判斷題題型重點考察學生對基本知識點的掌握程度,選擇題和填空題重點考察學生對程序的閱讀、理解和分析能力,編程題則重點考察學生編寫程序的能力。
無紙化考試采用的是我們中心自己研發的考試系統,但該系統存在一點缺陷,就是編程題需要人工閱卷。因此,我們于2012年開設了一個試點班,本著提高學生編程能力的目的出發,從平時的教學和最后的考試都試用了哈工大研發的《C語言編程題自動評分系統》。該系統允許學生借助于 C編譯系統調試程序,學生將自己編寫并調試過的程序由客戶端提交給服務器端后,服務器端立即根據學生程序的結構和語義進行評分,并將評分返回給客戶端,使學生在提交程序之后立即看到自己的分數。
上機實踐成績則由平時成績和綜合設計成績構成。其中:平時成績由上機考勤、在線單元測試組成,占總成績的60%;課程最后提交的綜合設計則占到了40%。
該考核評價體系涉及到教學實施過程中的每一個環節,有利于對學生進行科學、客觀的評價,從而避免了一張考卷定乾坤帶來的弊病。
該體系在實施過程中顯現出了其科學性,但是目前存在的問題就是教師的負擔太重。一個學生一學期一般要提交12份報告,每位教師一般帶兩個班,每個班約88位同學,這樣每位教師一個學期只報告一項就要批閱約2000份,工作量太大。現在正在努力尋求更加合理的解決方法。
七、結束語
教學實踐證明,以上改革措施能夠有效解決我校C語言程序設計教學過程中存在的問題。此教學模式下,教學內容符合學生專業特點,能夠滿足理工科專業學生對計算機技術的需求;教學方法行之有效,教學效果有明顯提高;教學實踐方法與措施切實可行,能夠有效促進學生分析問題解決問題能力、實踐能力及團隊合作能力等能力的培養與提高。當然,該模式仍然存在一些不盡如人意的地方,這就需要我們堅持不懈,繼續努力去改進和完善。
項目來源:云南省高校質量工程教改項目“Inquiry learning體系在程序設計中的運用”(云教高[2010]96號)。
[參考文獻]
[1]王剛.CDIO工程教育模式的解讀與思考[J].中國高教研究,2009(5).
[2]謝延紅.C語言程序設計公共課教學模式改革與實踐[J].計算機時代,2010(12).
[3]馬新.《C語言程序設計》課程教學方法與手段的改革與實踐[J].科技信息,2010(33).
【關鍵詞】課程設計;C#程序
一、課程性質和任務
《C#程序設計》是計算機軟件技術專業(.net開發方向)一門專業技能課 ,是C# winForm 應用程序和 Web應用程序設計的前導課程,是.net開發方向的核心基礎課程。通過本課程的學習,學生應掌握 C# 語言的基本語法,程序設計的基本思想、基本概念和基本方法,進一步熟悉面向過程程序設計,掌握面向對象程序設計的思想,能對一般問題進行分析和面向對象抽象,根據UML圖編寫面向對象的C# 程序。
二、課程教學目標
知識教學目標:
掌握C#語言的基本語法、語句;掌握C#中的數據類型、運算符和表達式;熟練掌握順序、分支和循環三種基本的程序控制結構;掌握結構、枚舉的定義,并靈活使用;熟練掌握數組的定義、初始化和數組的基本操作;熟練掌握函數的定義和調用;掌握面向對象相關概念:類、對象、類的封裝、繼承、多態等特性和使用;掌握接口和抽象類的定義,并靈活使用;掌握集合、多態狀態下的類型和值的比較、類型的轉換、泛型;掌握事件與委托的概念與使用。
能力培養目標:
掌握結構化程序設計的基本思想和方法;掌握面向對象程序設計的基本思想和方法。能夠對客觀世界進行抽象,并編寫出面向對象程序;熟練運用C#語言的編輯調試環境,能編寫常用的C#應用程序。
思想教育目標:
培養學生吃苦耐勞與敬業精神、團隊精神;培養學生具有實事求是的學風和嚴謹的工作態度;
培養學生分析問題和解決問題的能力。
三、教學內容和要求
(一)理論教學模塊
第一章 C# 簡介
1.教學要求
了解什么是.NET Framework,什么是C#,理解.NET Framework的運作流程,了解C#的主要特性,以及C#的現代編程語言特性。
2.教學內容
C#和.NET Framework的含義,.NET Framework的工作原理和特別之處,C# 的功能。
第二章 編寫C#程序
1.教學要求
掌握使用Visual Studio 2005創建C#程序的方法,掌握使用Visual Studio 2005創建基本控制臺界面的C#程序的方法,掌握C#程序的基本結構,熟悉控制臺輸入、輸出方法,了解C#基本語句、注釋等要求,理解命名空間。
2.教學內容
Visual Studio 2005的基礎知識,編寫簡單的控制臺應用程序,編寫Windows Form應用程序。
第三章 變量和表達式
1.教學要求
掌握C#的基本語法,理解C#程序的基本結構,掌握簡單數據類型的定義和使用,包括整型、浮點型、小數型、布爾型,掌握變量的定義,熟悉camelCase和PascalCase變量命名法,了解數據類型轉換,掌握常量,熟悉表達式及運算符實現數據的計算。
2.教學內容
C#的基本語法,簡單數據類型,變量及其用法,表達式及其用法。
第四章 流程控制
1.教學要求
了解C#中的布爾類型的定義與使用方法,理解位運算,掌握分支語句,包括if和switch,掌握循環語句(包括for、while、do while),學會分析問題,并使用分支和循環解決。
2.教學內容
布爾邏輯的含義及其用法,位運算的含義及其用法,分支語句,循環語句。
第五章 復雜的變量類型處理
1.教學要求
掌握枚舉類型的定義和使用,掌握結構類型的定義和使用,掌握一維、二維數組的使用,理解隱式和顯式類型轉換,掌握.NET對字符串的處理常見功能,包括字符串的查找、替換、格式化、調整等。
2.教學內容
枚舉的定義與使用,結構體的定義與使用,數組的定義與使用,類型轉換,字符串處理。
第六章 函數
1.教學要求
掌握函數的定義和使用,理解可變參數函數,函數的參數,包括值參數、引用參數和輸出參數,理解變量作用域概念,變量在不需要它們的代碼塊中可以隱藏起來,掌握結構化程序設計的方法和步驟。
2.教學內容
定義和使用簡單函數,通過參數在函數之間傳送數據,變量的作用域,結構化程序設計。
第七章 程序調試和異常處理
1.教學要求
掌握VS2008中程序調試方法,包括中斷模式和非中斷模式,使用try...catch... finally處理程序異常。
2.教學內容
VS中的調試方法,程序異常處理語句。
第八章 面向對象程序設計入門
1.教學要求
掌握類的定義,包括類成員的訪問級別、函數定義及重載,掌握對象的使用,理解面向對象的基本思想,特別是封裝性。
2.教學內容
什么是面向對象編程,類的定義,對象的使用,面向對象的基本思想。
第九章 類的定義和使用
1.教學要求
掌握構造函數的定義和使用,理解面向對象的繼承性,掌握類中虛成員的定義和重寫,理解類型的上傳,了解類的層次結構和基類object,掌握類中屬性的定義和使用,并理解其實現的封裝性好處,了解靜態類和類的靜態成員,掌握運算符的重載。
2.教學內容
構造函數,面向對象的繼承性,類的其他成員,包括屬性、靜態成員、運算符的重載等。
第十章 類的高級使用
1.教學要求
掌握抽象類和接口,理解兩者的區別和適用情況,理解面向對象的多態性及其原理,掌握面向接口的編程。
2.教學內容
抽象類和接口的使用,創建類庫,理解面向對象的多態性,使用面向接口的編程。
第十一章 集合、比較和轉換及泛型
1.教學要求
掌握ArrayList集合,掌握自定義集合的方法,掌握多態狀態下類型和值的比較及類型的轉換,
掌握泛型的使用。
2.教學內容
ArrayList的使用,自定義集合,比較和轉換,泛型。
第十二章 事件的定義和使用
1.教學要求
掌握委托及事件的定義和使用,理解事件和委托的區別,了解線程的使用。
[關鍵詞]C程序語言 分層教學 任務驅動
[中圖分類號] G423.07 [文獻標識碼] A [文章編號] 2095-3437(2013)22-0081-02
一、課程教學現狀分析
C語言程序設計是高校計算機專業的核心基礎課程,很多學校都開了C語言公選課,將其作為學生學習程序設計的一個入門。學習C語言需要掌握的抽象概念和語法規則較多,同時又需要通過實踐培養編程實用技巧。由于計算機專業必修課程(例如C++,數據結構等)都需要具備一定的C語言基礎,所以對C語言的掌握程度直接影響著后續課程的教學效果。[1,2]長期以來C語言程序設計課程的教學改革一直都在許多高校中探索和實踐,提出了項目教學法、[3]案例教學法、[4]自主學習模式[5]的教學理念。但在實際的C語言課程教學中,諸多因素導致教學效果不理想,具體有以下幾方面:
首先,學生程序設計基礎參差不齊。一部分學生以前沒有接觸過程序,有些學生對學習程序不感興趣,有些學生沿用看書加背誦學習方法,他們感到枯燥厭煩,跟不上教學進度;還有一部分學生上課時積極主動,對編程產生較大興趣,不但能夠完全掌握老師講的課程內容,而且能夠積極查閱課外程序資料,教師講授的課堂內容不能夠滿足這部分學生。傳統的教學方式造成教師在教學無法兼顧這兩類學生。學期結束后,第一類學生普遍感到程序設計課程晦澀難懂,不會應用,無從下手,因此失去了學習熱情。
其次,傳統教學模式影響教學效果。在傳統的教學中,教師往往以課程的理論知識點為主線組織教學,依照從講解概念起,接著講解語法語句,最后舉例加以細化。部分教師缺乏對該門課程的整體性把握,在教學上過多注重語法結構的知識,沒有把學生放在主體的位置上,師生間的互動很少。甚至有些教材內容的結構安排缺乏合理性,語法部分編寫過于繁瑣,學生接受的是枯燥無味的理論規則,導致學習沒有積極性,難以調動學生學習的主動性。教學觀念、教學手段和方法以及考核形式等都比較陳舊,不能適應新形勢下的教學需求,學生學習效率非常低,無法將所學知識運用到實際中。
最后,實踐環節薄弱。上機實踐是學習編程語言的重要組成部分。實際授課中,重視課堂教學而輕視上機實踐,理論課上既要講基本的語法知識又要講編程方法,占用了過多的課堂時間。實驗課上進行基本的驗證性實驗,學生機械式的運行程序,無法真正學會如何編寫和調試程序,使得理論教學和實踐教學脫節。通常情況下,C語言程序設計目前的考核方式主要以筆試為主,主要考查語法和基本的邏輯推導能力,無法進行學生動手實踐能力的考查,從而造成了大部分學生即使理論知識掌握較好,卻不會上機編程。
二、C課程教學方法改革探索
(一)采用分層教學模式
首先,對象分層。新生入學后,系部首先通過問卷的形式對新生的計算機基礎技能、學習計算機的興趣以及課內外學習方式等情況進行了調查,并進行了計算機水平摸底測試。根據學生的實際測試水平,打破以班為集體的傳統教學模式,將他們分為不同的層次分別授課。將程序設計興趣較強、數學邏輯基礎較好、有一定編程基礎并且測試成績較好的學生編入A層;將測試成績較差并且沒有編程基礎的學生編入C層;其余多數學生編入B層。教師依據各層學生進行因材施教,即針對學習者不同的學習能力、態度等個體差異施行不同的教學模式,實際上是使三層學生各有側重、共同提高的一種教學方法。
其次,教學分層。分層授課是分層教學成功實施的關鍵,學生是教學活動中學習的主體,教師需要對所教層次學生的編程水平有準確的認識,才能真正激發其學習激情,培養其學習能力,促進課堂教學質量的提高。A層學生一般理解力較強,學習具有主動性,教師可以引導他們除了掌握教材知識點外,推薦課外參考書,盡快參與軟件開發項目或興趣小組。B層的學生通常情況下能夠掌握基本的語法規則及編程方法,但是對編程缺乏總體思路,就需要教師及時將學生學過的知識加以復結,在掌握教學大綱要求的知識點外可通過綜合實訓練習進行編程水平提升。對C層就要通過精心設計教學內容、耐心的作業輔導、適時的課后交流激發他們的學習興趣和信心。分層教學從各層學生的實際出發,“因人制宜”,關注各層次學生在學習方法上的差異,給予學生不同級別的指導,刺激學生向高層次目標努力,從而大面積地提高教學質量。此外,在實施過程中也要注意保護學生的自尊心,以淡化各層間的人為界線,避免分層帶來的負效應。
最后,分層評價。分層評價是針對各類學生的學習水平,建立一套完善科學的評價體系激發學生學習興趣、優化學習方法、樹立學生的自信心,促使各成其才。對A、B、C 三層的學生不同的目標要求體現在評價體系中。對平時成績的考核對應不同層次,A層同學分組考核,分工協作完成預設項目,根據小組中的表現進行組員互評和老師評價相結合的方式。B層和C層的同學則通過上機實操進行編程水平的測試。期終試卷可在同一份試卷上進行分層,分別對應于不同層次。試卷分成基礎和提高兩部分。基礎部分主要考核學生是否達到基本教學大綱要求,這部分是三個層次學生共同的必答卷,對于三個層次的學生同分但不同值,成績作為課程的考核分。例如編程題標注10分,則如果A層學生做對考核分加10,B層和C層學生做對加15。第二部分為提高卷,也是A層學生的必答卷,B、C層學生的選答卷,成績作為課程的考核分。分層考核的目的是使各層次的學生經過努力都能獲得較高的分數,獲得成功的體驗,激發學生的求知欲。
(二)基于實踐導向的任務驅動教學
以實踐為導向在教學活動中要求,以專業能力要求為依據,將“教、學、練”一體化的教學模式融入教學課程設計中。根據行業需要的知識、技能確定課程內容的選取與安排,課程設計是采用真實項目貫穿教學全程,項目按照內容分成若干模塊,實現將化整為零進行學習。
任務驅動下分組學習討論是一種非常有效的方式。讓學生發揮主動性自由分組,依據編程能力水平給每組指派一名組長,上課時以組為單位,分析、討論項目任務,具體包括需要收集資料、項目進度以及具體的工作任務。小組長主要負責小組內任務分配、協調組內成員等工作,老師輪流在每個小組旁聽學生的討論并接受學生的咨詢。
教師所指定的任務主要包括兩類內容:一類是課本課后習題,并對完成任務所必需的知識點進行必要的說明;另一類是具有實用性的項目任務實例,讓學生更直觀地理解所學知識應該如何與實踐相聯系。第二類任務需要教師進行設計,盡可能具有綜合性、可分割性,適合小組討論解決及協作完成。
制定合理的考核標準來綜合衡量學生的學習狀況是激發學生進行協作學習的動力。當學生完成任務后,先在小組成員之間進行任務完成情況評論。最后由老師對每組學生的任務完成情況進行總結講評,對其中的不足進行點評,對比較好的做法給予鼓勵,并據此對每個學生計算平時成績,將小組整體得分與組內個人得分進行綜合。課程采用綜合測試考評方式,突破單一的閉卷考試方式,將平時作業、課堂討論成績、與期末考試相結合。
三、結束語
C語言是一門實踐性很強、熱門的高級編程語言。根據目前的教學現狀,分析和總結教與學的不足,通過分層模式教學改革和以實踐為導向的任務驅動教學探索,不斷地提高課程的教學效率,使課程更具科學性,把學生的主動性充分地調動起來,讓學生在學習中嘗到樂趣。
[ 參 考 文 獻 ]
[1] 楊理云.“C 語言程序設計”教學方法探索[J].中國成人教育,2007,(5).
[2] 丁群,文明瑤.項目教學法在C語言教學中的應用[J].電腦知識與技術: 學術交流,2012,8(3).
[3] 陳洪超.項目教學法在“C語言程序設計”課程中的應用[J].重慶電力高等專科學校學報,2012,17(3).
《C語言程序設計》是計算機相關專業的一門基礎課程,是培養學生計算思維能力、程序設計與實現能力的入門課程,同時也是《數據結構與算法分析》等課程的先導課程;C語言也是IT企業中常用的編程語言。因此,該課程的教學對學生后續課程的學習和今后的工作都會產生重要的影響。對于初學者而言,因為邏輯思維能力較弱,所以在學習過程中積極性不高,學習效率低下,難以提高其編程語言解決實際問題的能力。經過多年的授課,筆者對《C語言程序設計》的課程教學進行了一些探討和實踐
二、教學中存在的問題
1.教學主體以教師為主
在傳統的教學中,教學主體往往以教師為主,高等院校對教師的考核注重“科研”,因此很多教師容易忽視“教學”的重要性。在《C語言程序設計》的教學中教師方面的問題主要包括:①課程的知識點較多,存在教學內容與教學時數之間的矛盾;②教師的教學方法、方式陳舊,難以激發學生主動學習的興趣;③教師在教學中大多重課堂教學,輕實驗教學;④任課教師往往沒有工程實踐經歷,其綜合業務水平有待提高。
2.教學中沒有充分調動學生學習的積極性
《C語言程序設計》的課程學習是在新生入學的第一學期,這對課程的教學也帶來一定的消極影響,主要體現在:①學生學習目的不明,動力不足,很多學生以為進入了大學主要是鍛煉社會交往能力;②學生的邏輯思維能力較弱,想象空間較窄,遇到挫折容易產生厭學情緒;③由于受傳統應試教育的影響,學生大多重教輕學,重理論輕實踐,考試能力強,編程能力弱,不能用計算思維解決實際問題。
三、教學改進的舉措
針對上述問題,筆者摒棄以單向性知識傳授為主的教學模式,主張講課教師應以課程的內容和學生的知識積累為基礎,積極引導學生創造性地運用知識和能力,自主地發現、分析和解決問題,學生在研討中學習知識、培養能力和提高素質。具體的教學實施方案包括:
1.編制詳細的教學設計方案
為幫助學生提高自主學習和創新的能力,需要制定詳細的教學設計方案,該方案是課程教學具體實施的主線,它相當于一場晚會的節目演出單,講課教師是導演和主持人,而學生是主角和演員。教學設計方案主要包括:教學日期和時數、教學內容和主題、實驗內容、教學方法、教學手段和作業安排等。
2.優化教學內容
該課程存在教學內容較多而教學時數受限,全面而細致的講解所有的內容已不合時宜。教學內容的優化應滿足教學目標的要求,滿足學生的學習需要,激發學生的學習興趣[1]。因此,我們按照“少而精、寬而新,突出核心的知識點”的原則優化教學內容,體現教學內容的先進性、實用性。按照學習進度,給學生安排相應階段的學習任務,有些內容要求學生自主完成。
3.改變傳統的教學方式
傳統的“填鴨式”教學方式效果并不好[2],因此,我們在教學引入并主要采用了“討論式”教學,以充分調動學生學習的積極性,具體的做法包括:①每次授課結束前,布置預習思考題,要求學生在課下充分預習,課上圍繞思考題展開討論,每次課分組討論1-3次,每次2-5分鐘;學生課堂討論、發言或回答問題的時間約占總學時的20%;②隨機抽查回答問題與各組指派同學回答問題相結合,回答問題不以正確性為唯一依據,也注重表達過程的清晰度和邏輯性,尤其鼓勵問題回答者闡述自己的觀點或提出問題。統計表明,學生回答問題次數平均水平有6-8次;③將學生在課堂教學過程中的表現按評分標準將其分值記入到平時成績檔案中。
4.加強教學方法的改革
在教學中應以學生為中心,引導學生走向知識,通過合理施壓,注重師生的互動交流,培養學生善于總結、發現問題和主動學習的能力[3-4]。在《C語言程序設計》的課程教學中,我們對教學方法做了如下改革:①“案例教學法”貫穿教學全過程,“學生信息管理系統”貫穿了該課程的全部章節,是學生在學習過程中的“長期任務”;②“任務驅動法”引導學生學習,“長期任務”可以分解為多個對應于知識點的“短期任務”,有助于學生逐步提高編程能力;③用“負反饋教學法”解決學生學習中問題,有效的提高學生的學習效率;④弱化語法,以“算法為先”實現實際問題的求解;⑤并用“多媒體”教案擴大課堂信息量,精心制作與教材配套的CAI課件和習題。
5.建立新型的實驗教學模式
為了激發學生學習的積極性,我們通過建立新型的實驗教學模式[5],包括:①為增強學生學習的體驗感,減少了基礎驗證型實驗比例,增加綜合型實驗和設計性實驗的比例;②建立以小組為單位的實驗完成機制,培養學生的團隊合作能力;③加強實驗報告的規范,增強學生的職業崗位意識;④建立定期的課外討論機制,教師定期討論主題,學生以小組為單位進行準備,然后通過專題討論和點評,并將學生的表現記入平時成績檔案;⑤鼓勵實驗動手能力的較強的同學自己設計實驗項目,并依據結果給予其一定的平時成績獎勵。
6.健全嚴格的學生考核機制
傳統的考核以筆試為主,學生為了應對考試采取死記硬背的方式,為此我們建立嚴格全面的考核機制,包括:①建立學生學習小組,分組原則是小組內部異質化,小組之間同質化;②建立每個學生平時學習成績檔案,學生的平時表現與分值相對應;③制定公平合理的成績評定方案:學期總評成績=平時成績×60%+期末考試成績×40%,平時成績=小組成績*小組人數*組員在項目組的貢獻百分比(組員的貢獻百分比是在教師給出小組成績之前,經過該小組的全體成員一致同意后提交給任課教師),這種考核方式可以促進學生的團隊協作精神和競爭意識;而期末考試側重于通過編程以解決實際問題,從而促使學生平時多思考、多上機實踐,有助于提高他們的邏輯思維和編程能力。
7.積極開展第二課堂教學
積極引導學生參加課外實踐活動,主要采取了如下措施:①開設了網絡教學平臺資源,為學生提供大量的經典實例程序、教學課件和習題,并通過電子郵箱、QQ群和微信群等手段,隨時為學生答疑,了解學生的學習狀況以調整教學內容和手段;②鼓勵學生自主創立或參加各種創新社團和講座,目前,本學院已成立“海盜社”等實踐社團,面向全校學生舉辦多種創新活動,2014年共組織了11場關于程序設計相關的講座和活動;③將各類程序設計競賽和實踐教學相結合,鼓勵學生參加各類程序設計大賽,為此學院提供了穩定的經費和場地支持,并依據參賽結果給學生一定的表彰和物質獎勵;④在大一第二學期末段,組織學生到印孚瑟斯技術中國有限公司等IT企業實地參觀學習,了解這些企業的文化、發展和對職業崗位能力的需求,進一步讓學生明確個人今后的發展目標和計劃,激發其學習熱情和自身的發展潛能[6]。
四、結束語
關鍵詞:C語言程序;調試技術;探究與分析
近些年來,筆者在研究C語言程序設計過程中,發現許多人對于自身編輯的C語言程序運行中出現的錯誤的處理方法存在許多問題,無法有效判斷程序錯誤的原因以及其對應的調試方法,文章主要從兩方面分析C語言程序設計調試技術。
一、運行錯誤的判斷與調試
一般情況下,C語言程序運行錯誤被分為兩種:邏輯錯誤與程序設計錯誤,前者是指編譯時沒有錯誤提示,可以運行,但實際的運行結果與程序預期結果之間有偏差;后者是指程序設計中存在的問題,在編譯與連接程序時也沒有被發現,程序設計錯誤的主要表現為:計算機突然死機、自行熱啟動或輸出信息混亂等[1]。
文章主要介紹兩種常見的運行錯誤調試方法:
①程序算法設計不合理
有一種邏輯錯誤主要是由于C語言程序設計時的算法不合理而引起的,例如對邊界及特殊情況未作預先處理,例如下述循環:
While(count)
x
…
count=count-1;
y
該循環的設計構思是進行count次循環,但是在該循環中,while旁邊的判斷條件恒為真,程序就會進入“死循環”,這顯然是由于算法設計錯誤而導致的,但是編譯器對于該類錯誤的敏感度較低,只有程序運行出現異常的時候才可能被發現[3]。再舉一個例子:根據海倫公式計算三角面積的時候,首先需要對給出的三條邊長是否符合“三角形任何兩邊的和大于第三邊”的定理,若不符合這一定理則運算結果毫無意義;而程序員在設計一般實系數一元二次方程的程序時,必須設定處理復數情況的程序,避免出現運行錯誤[4]。若采用手算的方法是不需要先考慮到這方面,可以在出現問題后再根據實際情況提出解決措施。但是C語言程序是為計算機設計的,計算機不具備人腦自行應變的能力,因此,在程序設計的過程中必須事先將可能發生的一切問題都考慮到,特別是客戶委托程序員設計的或是作為商品出售的軟件更要注意這一問題。
②程序輸入時的打字錯誤
還有一種常見的邏輯錯誤是在C語言程序輸入過程中,由于程序員不小心打錯字導致的,例如將判斷條件中的“>=”輸為“>”,將相等判斷“==”輸為“=”等。存在此類錯誤的程序在運行過程中出現的錯誤表現具有多樣化,且很難將該錯誤出現的原因與打字錯誤聯系起來[5]。
數據輸入中存在的字符錯誤或字符的格式錯誤等都會影響程序的運行結果,尤其是在數據量大,且數據輸入采用人工輸入的工作中,極其容易發生這種錯誤。筆者以多年工作經驗建議當數據輸入量較大時,采用文件記錄的方式,再通過讀寫文件來進行數據輸入,這樣就能夠通過編輯數據文件來檢測數據中存在的錯誤,并且在重新計算或調試過程中就不需要反復輸入[6]。這種方法非常適用于科學或工程計算應用程序中的數據計算。
還有一種方式就是采用自行編寫的、比較完善的數據校驗輸入模塊來取代C語言中的scanf()函數來輸入數據。這種方法多用于數據處理、事務管理等復雜的應用程序開發,常常需要將數據輸入與用戶界面等模塊相結合,對編程技能有較高的要求。
二、C語言程序設計基本調試方法
文章主要針對C語言程序設計基本調試方法的四種方法進行介紹。
1.標準數據校驗
在程序編譯、連接完畢之后,下一階段就是運行調試。運行調試階段首先需要使用若干組已知結果的標準數據對程序進行檢驗。在此過程中標準數據的選取對檢驗結果具有重要影響,因此,標準數據的選擇需要選取具有代表性且比較簡潔的數據,主要是為了簡化對檢驗結果正確性分析的不足[7]。此外,對重要的臨界數據也需要進行檢驗。
2.程序跟蹤
對于復雜的大型程序而言,上述檢驗一次性通過是不可能完成的。一般情況下,程序存在各種各樣的問題(程序存在問題是一個普遍現象,一個錯誤也沒有的程序在實際中較少),因此,需要對程序進行嚴謹的跟蹤調試。
程序跟蹤是調試工作中的一種方法。程序跟蹤的方法是通過讓程序一句一句的執行,通過觀察程序執行過程中的數據以及程序的流程變化來分析其中存在的錯誤。例如在Turbo C中,可以采用兩種程序跟蹤的方法,一種是通過利用集成環境中分步執行、斷點設置以及變量內容顯示等功能觀察程序的合理性;還有一種方法是傳統方法,其主要通過在程序中直接設置斷點、打印重要變量來觀察程序有無錯誤存在。
3.邊界檢查
在數據檢查過程中,要重視邊界可能存在的特殊情況,例如以下循環:
While(count
x
…
y
需要檢查設計數據count等于0、負數、999及1000等情況。若程序中存在if-else或switch等語言組成的分支時,也需要設計相應的判斷數據,且對分支中的路徑進行檢測。
4.簡化循環次數
在調試程序的過程中,可以通過簡化程序來實現提升調試速度的目的,例如減少循環次數、減小數組規模、屏蔽部分次要程序段等方法。但是在簡化程序的過程中,要注意不能太過簡化,否則無法代表程序真實的運行狀況。舉個例子來說,對于一個求解N元一次方程組的程序來說,僅通過將N設置為2的檢測是遠遠不夠的,不能確定該程序是否在數值較大的方程組中也能得出正確的數據。若在N=5或6的情況下程序計算正確,則可以確保程序出錯的可能性較小。
結束語
計算機技術的不斷發展促使現代人們工作、學習以及生活方式發生巨大改變,且隨著計算機軟件功能的不斷強大,使得計算機軟件廣泛應用于各個領域中。但是在C語言程序應用過程中,程序錯誤的出現威脅著程序軟件的正常運行。因此,提高程序安全性成為程序員有待解決的問題。文章主要針對C語言程序設計調試技術展開分析,首先介紹了C語言運行錯誤的判斷與調試,分析了2種常見邏輯錯誤判斷與調試方法,然后針對4種C語言程序設計基本調試方法進行闡述,旨在提高C語言程序設計調試技術水平。
參考文獻
[1]張秀美,趙旭霞.程序調試技術在C語言函數教學中的應用[J].教育教學論壇,2014,22(11):85-86.
[2]崔光佐,程旭,佟冬等.面向處理器的系統級模擬、仿真及調試技術 ――基于軟硬件協同設計的新方法[J].計算機研究與發展,2011,38(3):361-367.
[3]李從宇,王寶光.嵌入式DSP系統C語言硬件編程技術[J].測控技術,2013,26(4):68-70.
[4]姚放吾,金鑫.基于Monitor的C語言源代碼調試器的設計與實現[J].計算機技術與發展,2014,21(6):55-58.
[5]吳興華.基于C語言軟件開發的效率、移植及調試[J].數字技術與應用,2013,14(12):172-172.
[論文摘要]C程序設計語言作為大、中專學生入學后的首門計算機語言課程,也是重要的程序設計課程。對于學生來說,程序設計的思維方式和概念都是全新的,學生接受起來很困難,通過對C程序設計語言教學方法探討,能收到較好的教學效果。
一、引言
《C程序設計語言》是計算機及相關專業中一門重要的計算機基礎課程,由于其在當今系統軟件和部分應用軟件的開發中具有實用性強的特點,又與硬件和程序設計環境底層的聯系緊密,是當今計算機軟硬件工程師應該掌握的一種基本的、比較實用的程序設計語言。它作為學生入學后第一次系統地學習與高級程序設計語言和程序設計有關的內容的一門新課程,本身就比較難;再加上其內容的龐雜、語言描述的靈活,更讓學生感覺難上加難。因此對于擔任該課程的老師來說,如何教好這門課程,培養學生運用C程序設計語言分析問題、解決問題的能力,是這一門課程的目的和宗旨。
二、采用案例教學,培養學生的興趣和積極性
C程序設計是應用性很強的一門課程它既有理論又有實踐,既講方法又講動手能力。一般來說,教材中前幾章都是先介紹C程序設計語言的一些概念和基礎知識,然后才介紹程序的建立和運行。這些概念和基礎知識,既枯燥又比較抽象難懂。在教學中,我們打破課本原有的順序組織課堂教學的方式的邏輯結構體系,改用從案例入手,通過給學生演示、讓學生模仿,在實際應用中去探究和領悟這些概念,并適時地加以歸納總結和概念的延伸,讓學生在輕松愉快的氣氛中學習新知識。
案例教學法打破了以教材為中心的傳統教學模式,不按教材的順序授課,而是以精選出的程序設計的案例為中心,把學習的重點放在具體案例的講述上,把要學習的語法和概念融入到具體案例中來講解。整個教學過程中強調在應用中學習,從而避免了枯燥的理論說教,不僅能增進學生的學習興趣,而且對提高學生綜合分析和解決實際問題的能力也大有幫助。那么該如何培養學生對C語言課程的興趣呢?案例教學法是培養學生學習興趣的有效途徑一。
三、運用多媒體CAI課件教學,提供交互式學習環境
C語言的內容比較繁雜,我們把概念、定義等一些知識性的東西用幻燈的形式投影出來就會使課堂內容更加豐富,提高學生的注意力,節省老師板書的時間,讓整堂課的效果改觀。但是課堂上課件的演示也要適當,避免喧賓奪主,使學生更多地關注了形式的變化,而忽略了內容本身。相應的,課件在其他內容的處理上就要慎重了。比如算法、程序的設計,我們不是只注重給學生一個結果、一個程序,而更應該展示給學生的是一個過程,一個思想,也就是怎么樣去解決這個問題。我們的重點在于教會學生掌握方法,即幫助學生學會自己解決問題,而不是幫助學生解決問題。即授人以漁,而非授人以魚。因此在講解這些內容的時候就不能是一張幻燈一個算法、一個程序,而應該重點介紹方法、思想,根據題目求解的過程,一步一步把結果“ 寫” 出來。
多媒體CAI課件主要包括課程內容、算法演示、在線測試、在線討論以及資源中心五部分功能。多媒體CAI課件可以提供交互式環境供學生學習,并自動根據操作過程進行實時評價。將多媒體CAI課件和教師課堂講授有機地結合起來,能形成最佳教學任務的綜合性手段與教學方案。
四、把握課堂教學方法,提高課堂教學質量
(一)注意“互動式教學”,切記不要“自演自說”。互動式教學就是要改變老師是課堂上唯一主體形式的狀況,讓學生也作為主體形式參與到課堂上來。互動式教學既可以提高學生的參與積極性,還可以避免學生上課疲勞,產生注意力不集中的現象。互動式教學在形式上有老師提問,讓學生上黑板演算、上教師機操作,讓學生討論等,讓學生進行正誤判析,解決普遍性問題,或者請有獨特思路的同學演示自己的方法或程序,對比各種方法的優缺點,鼓勵大家再提出新方法。實踐證明,這種教學方法效果顯著,課堂活躍,學生的參與程度很高。但是我們在進行師生互動方面也要注意把握一個度的概念,讓課堂既要有互動的活躍氛圍,也要有好的課堂秩序,使得課堂互動有序有效進行。
(二)培養學生讀程序的能力。程序是C語言的本質,讀程序是學習C語言入門最快,也是最好的方法。要培養學生獨立編程的能力,首先應該培養學生讀程序的能力。學生讀的程序越多,見識的編程的思想、方法、技巧也就越多,就能更加擴展自己的編程思路,還能在某些時候把別人的東西拿來歸為己用。
在培養學生讀程序方面要注意循序漸進,先給學生讀一些簡單的、只有幾行的程序,然后逐漸增大程序的復雜度。
(三)采用問題驅動法。在C程序設計語言課程中,有一些概念之間的差別和程序的設計步驟如果只通過教師講述,學生在字面上可以接受,但在理解深度上往往難以達到令人滿意的效果,如果能設計出一系列問題,讓學生在實踐和解決問題的過程中自己去探究和體驗,情況將完全是另一個樣子。另外,采用一些有趣的問題來引入對某些語句結構的學習同樣有相同的作用。
采用問題驅動法,一切都要求學生自己動手動腦設計,他們在操作過程中探究和解決問題的積極性和主動性得到
了調動,從而達到了我們的教學目標。
五、加強實驗環節的教學設計,輔助理論教學
C程序設計語言是實踐性很強的一門課,培養學生的實踐能力是教學的首要目的。因此,在授課的同時,如何引導學生利用上機實驗來加強實踐也是教學中的一個重要環節。C程序設計語言實驗教學的目的應是:1. 緊密配合理論教學,通過相關實驗,幫助和加深對語句功能的理解;2. 通過實驗可以將各門課程學到的知識融會貫通,思考利用C程序設計語言解決實際應用問題的有效方法,從而使學生分析和解決問題的能力得到鍛煉和提高。依據實驗教學的目的,考慮學生的個體差異,將實驗設置成不同的類型:必做和選做實驗:這兩類實驗都是結合相關課程的教學需要由授課教師設計的;前者目的在于幫助學生掌握基礎知識和實驗研究方法,后者則在于培養和鼓勵學生的學習興趣、擴大知識面以及培養學生的應用能力和創新意識。從而大大激發了學生的學習熱情,為其今后的學習和工作打下良好的基礎。
六、結束語
要教學好C 程序設計語言,關鍵在于教師要有效地組織教學,才能激發學生的學習興趣,讓學生主動、愉快地學習,滿足他們的求知欲,這樣才能取得良好的教學效果。
參考文獻
摘 要: 教師要提高《C語言程序設計》教學質量,必須依據教學目標,對教學內容進行重新組織梳理;用案例教學、項目驅動教學等手段豐富教學方法;構建多元考核評價體系。從而在實踐中取得良好效果。
關鍵詞: 教學改革 《C語言程序設計》 組織結構 教學方法
1.引言
《C語言程序設計》是高校計算機專業的重要基礎課程,在計算機專業的課程體系中占有極其重要的地位。一方面C語言是學生接觸的第一門專業類課程,是培養學生專業興趣的起點。另一方面,C語言是其他很多核心專業課的先修課程,如數據結構、計算機圖形學等。所以C語言的掌握水平在很大程度上決定了學生專業基礎知識的掌握,直接影響后續課程的學習效果和專業素質的培養。所以如何提升教學質量,讓學生確確實實地學好這門課程,是教學改革的目的和指導方向。
2.改革教學內容組織結構
《C語言程序設計》的主要內容包括語法基礎、控制結構、數據類型、數組、函數、指針、結構體與共用體、文件等。近年來因為學校培養方案的改革,很多專業課程課時都被壓縮。C語言現有學時滿足不了把所有知識點都教授給學生的教學要求。改革內容組織結構就很有必要,首先要明確課程教學目標。《C語言程序設計》的課程教學目標要求學生掌握C語言的基本概念、語法和程序設計的常用方法;領會結構化、模塊化程序設計的基本思想;通過編程訓練,熟練使用編程工具編寫和調試程序;在課程學習的過程中,形成良好的編程風格和程序設計思維方式,提高分析問題及通過設計程序解決實際問題的能力,為專業課程體系中后續課程的學習打下基礎。依據教學目標,把教學內容分為三個層次。
3.改革教學方法
3.1教學手段的改革
C語言的課堂內容多是抽象的理論,對大多數學生來說枯燥無味。首先,教師可以通過研討和網絡資源,向優秀教師學習,不斷提高自身能力。其次,整合資源制作優秀的教學課件,既要體現新的教學方法,又要現實教學內容的層次性。再次,充分利用現代教育技術,把教學資源放在網絡上,供學生自行調用,也可在網上給學生答疑。最后,以案例教學、分組討論等方式豐富課堂教學方法,不單純依賴多媒體教學。
3.2實驗教學的改革
在實驗教學中,可采用“項目驅動,分層教學”的方法。
項目驅動教學是整個實驗教學圍繞一個工程項目進行,逐步拓展實訓項目和設計,將每一個階段的學習作為項目的一部分完成,最后課程結束時,完成一個小型系統程序的建立。
通過實驗能夠實時了解學生的內容掌握及編程能力。在教學過程中,由于個體差異的存在,學生在內容掌握和編程應用方面會有較大差異。針對這種現狀,就需要應用“分層教學”。對基礎好的學生,可以多給一些深入的實驗題目,而對基礎不好的學生,就要幫助其弄懂、掌握學習內容。
3.3多元的考核評價體系
課程考核評價分為兩部分:過程考核和期終考核。過程考核就是平時成績,依據學生的出勤、日常表現、課后作業、實驗報告、測驗和項目完成情況和完成質量對學生進行考核,占總成績的60%,期終考核是以卷面考試方式檢測學生對于所有知識點的綜合掌握情況,占總成績的40%。
4.結語
通過本學期的教學實踐,課堂教學和實驗教學效果都得到很好的改善,調動學生的學習積極性。學生的編程能力和課程內容掌握水平都有明顯提高,取得長足發展。
參考文獻:
[1]何克抗,鄭永柏,謝幼如.教學系統設計[M].北京師范大學出版社,2002.
[2]戴大蒙.“程序設計類”課程層次型教學模式的研究與實踐[J].中國成人教育,2010.9.
[3]張秋生.C語言程序設計課程教學改革與實踐[J].軟件導刊,2012.11.
[4]何欽銘,顏暉,蘇小紅等.“程序設計基礎”課程教學實施方案[J].中國大學教育,2010.5.
1.1理論教學
對于大多數課程而言,從宏觀上將課程知識點及其關聯講授給學生非常必要,這便于學生更加系統深刻地理解所學內容。作為教材講解C語言程序設計的知識點結構。知識點之間的關聯可以層層細化,教師首先從宏觀上給學生介紹C語言程序的整體組成結構。教師對涉及的知識點進行歸類,共包含預處理命令、數據類型、運算符、語句和函數等5部分,從宏觀上梳理C語言與程序設計課程的知識點是非常必要和重要的,這樣可以避免學生“只見樹木,不見森林”,最后只學到一堆零散的知識點,只有從宏觀上把握各個知識點在知識體系中的位置和作用,才能學得深、記得牢。對于程序語言課程,如果僅僅介紹語法的運用,學生往往對知識點理解不深刻。我們在教學實踐中的體會是:在講解C語言語法的基礎上,適當地剖析編程語言在計算機中的運行機制,會讓學生的理解更加透徹。因此,我們的課堂教學方法分為如下兩部分。
1)課件講解。課件講解包括兩部分,即知識點要點總結和知識點運行機制剖析。知識點要點總結就是告訴學生該知識點如何使用;而知識點運行機制剖析則告訴學生該程序在計算機內存中的執行過程。由于絕大部分高校在開設C語言程序設計之前都會開設計算機文化基礎等課程,因此學生有足夠的計算機基礎知識來理解C語言程序的運行機制。
2)實例演示。作為一門編程語言,C語言需要在實踐中理解和掌握,因此,課堂教學中,在具體的編程環境(如VC++6.0)下演示十分必要。通過在具體的軟件環境下編程,告訴學生應該做什么和不應該做什么,并總結該知識點的注意事項。相比傳統的脫離編程環境,只在PPT或黑板上進行板書的教學模式,該方法的教學效果要好得多。在課堂教學中,具體的教學步驟如下:①使用PPT或者板書列出該知識點的注意要點;②在編程環境(如VC++6.0)下演示該知識點的用法,給出正確的和錯誤的使用方法,并進行對比;③通過幻燈片動畫或Flas等形式演示程序在計算機內存中的執行過程,讓學生更加深刻地理解程序的運行機制。
3)教學難點與重點——“復合知識點”。從C語言的教學內容來講,數組、函數和指針是教學的重點章節,這些章節之間相互關聯的部分又是重點中的難點,如數組和函數結合,數組名做函數參數,數組和指針結合,指向數組的指針變量,函數和指針結合,指向函數的指針變量等。在教學過程中要反復強調各個知識點的注意事項,如果基本知識點能夠理解透徹,上述難點內容也就迎刃而解了。
1.2上機實踐教學
在實踐教學中,教師可以通過實際教學案例循序漸進地強化學生對C語言知識點的理解。上機實踐的教學內容通常分為兩部分:基本知識點練習和綜合訓練。首先通過基本知識點的練習,讓學生掌握該知識點的使用,即鞏固課堂所學內容;然后通過一個綜合性的大作業,訓練學生綜合應用C語言知識點的能力,例如,通過編寫“學生課程成績統計系統”考查學生對數組、結構體、指針、函數、文件等知識的綜合掌握情況。對于初學編程語言的學生,往往沒有養成良好的編程習慣,出錯的可能性較大,而出錯之后進行調試又將耗費較長的時間,這勢必對學生的學習熱情產生負面影響。因此,一開始就給學生制定科學的編程步驟和規范,使學生養成良好的編程習慣,將大大減少程序出錯的可能。下面是按照上述五步編寫的一個完整的C語言程序,用來比較兩個整數的大小。按照上述五步進行編程,經過一段時間的訓練之后,學生出現語法錯誤的可能性大大降低,此時學生更多的精力將集中在程序算法的設計和實現上。
1.3考試形式
對于C語言程序設計的考核方式,我們采用知識點考核和編程實踐相結合的方式。知識點考核偏重于C語言基本語法,用于檢驗學生對知識點的掌握是否全面,此項考核約占總成績的40%;編程實踐考核用于檢驗學生的實際動手能力,學生將在規定的時間內根據題目在機器上編程,此項考核約占總成績的60%。為了實現知識點的考核,我們將考試與計算機二級C語言上機考試緊密結合,采用題庫平臺進行上機考試,學生直接在機器上答題并提交,知識點考核多采取客觀題,如填空題、程序修改題以及讀程序題等,編程題在實戰編程中考核。C語言程序設計課程的重要特點就是實踐性強,學習該課程的目的就是為了編寫程序。因此從考試的角度講,進行編程實踐是最合適的方式,通過上機編程來考核學生的學習情況也是最公正和客觀的方式。
2C語言程序設計教學實踐結果分析
中國礦業大學(北京)每年都有40多個班級同時開設C語言程序設計課程,因此該課程教學質量的高低將直接影響全校理工科學生對C語言的理解和掌握。中國礦業大學(北京)C語言程序設計教學團隊經過長期的探索總結出一套行之有效的C語言教學方法,我們將上述方法在學校越崎實驗班中進行了試點。如圖2所示,采用上述教學法的越崎實驗班的C語言程序設計課程考試成績要明顯好于其他班級,其中90分以上的學生占10.7%,80分以上的學生占總人數的53.6%。另外,學生的學習積極性比采用上述方法前得到明顯提高,很多學生都對計算機編程產生了濃厚興趣,實踐證明我們提出的上述方法是行之有效的。
3結語
關鍵詞:教學方法;教學模式;思維訓練;自學能力
中圖分類號:G642文獻標識碼:A文章編號:1009-3044(2008)21-30486-03
The Research of Teaching Methods in "C Programming Language"
LIU Jian-you
(Zhaoqing Science and Technology Polytechnic,Zhaoqing 526020,China)
Abstract: C is a typical structural programming language, many colleges and universities use it as basic programming language. Students often complain about C language difficult to learn, to use, to build the application software, lack of programming and debugging capabilities. How to better carry out the C language courses teaching?Author on the problems that exist in teaching, with his personal experience in teaching and experience, talk about their own views, to promote the C language teaching.
Key words: teaching methods; teaching mode; thinking training; self-learning ability
1 引言
程序設計語言的種類多得難以計算,為什么要以C語言作為編程入門語言呢?還有人說為什么一定要學習C語言,干嘛不直接從C++學起?而且學C++不一定要有C語言基礎,有了反而會有些內容混淆。還有人說C語言都已經過時了,怎么還要浪費時間去學?C語言在教學過程中,抱怨C語言難學,難懂,難用,在解決實際問題編制應用軟件時往往無以下手,缺乏編程和調試的能力。。久而久之,學生對學習此門課程就會產生厭倦的心理,不但影響本課程的學習,還會影響以后相關課程的學習。本文針對以上問題,指出了如下措施:
2 學習《C語言程序設計》的意義
我認為在學習C語言之前有必要弄清學習的意義所在,這樣才能讓學生對其產生興趣。興趣是人類最好的老師,只有對其產生了興趣,我們才能學好這門語言。
將C語言作為入門語言具有重要的意義。C語言是一門典型的結構化程序設計語言,它具有語言簡潔、嚴謹,用途廣泛等特點,能夠體現結構化程序設計的優良控制結構,非常適合初學者。通過這門課程的學習,能夠使學生掌握一門結構化程序設計語言,更為最重要的是能讓學生樹立用程序解決現實問題的思路和方法。為今后的學習打良好的基礎。再學其他程序設計語言,就能夠在短時間內迅速的掌握。
3 改革課程教學內容,重視算法的編程思想,培養創造性思維
精選課程內容是一項非常重要的工作,它是教學內容的核心部分,《C語言程序設計》的核心內容包括C語言基本語法、程序設計思想和程序調試方法。語法是任何一門語言的基礎,同時,各種程序設計語言在基本知識點上是相同的,學生對基礎知識的正確理解和準確運用,其意義是深遠的。
C語言程序是由函數組成的,無論問題多么復雜,我們都可以將其看成是一個大任務,這個大任務又可化分成若干個小任務,將這些小任務解決了,那么大任務也就完成了。也就是說其任務只有一個,就是編寫函數(一個main()主函數和其他函數)。執行程序時,從mian()的第一個“{”,開始直到最后一個“}”結束,其他函數只有在執行的過程中被調用才執行。
學習C語言程序設計不僅是為了掌握一種開發工具,更重要的是用計算機解決問題。而算法是解題的方法和步驟,算法就是對操作的具體描述,是計算機的解題過程。編制程序,就是根據算法,用具體的語言依據某種規則編寫計算機執行的命令序列。因此學習語言的重點是鍛煉分析、分解,最終歸納整理出算法的能力。在教學過程中,學生能否理解算法,并掌握算法,成為教學的關鍵。
在C語言的教學過程中,改革傳統的語法學習內容,將算法教學融入到語言教學中。由于C語言語法的邏輯性較強、結構性要求較高,初學者剛接觸的時候容易考慮不全。因此算法教學可以通過實例進行, 從最簡單的例子入手,使學生在解決具體問題的過程中學習C語言的基本邏輯結構和語句。生活中到處都存在著算法。而對于同一個問題可以有不同的解題方法和步驟,可以讓學生根據同一個問題提出不同的算法,并比較這些算法之間的優劣,并讓學生根據分析對算法進行優化。通過對算法的優化練習,可以在無形中提高學生寫算法的水平。
4 改革課堂教學模式,培養學生自學能力
在教學中可以使用下面的一些方法,提高教學效果,培養學生的邏輯思維能力和動手能力。
4.1 改變傳統的教學方式
雖然這個話題是老生常談了,但是現在部分老師還沒有認識到這個問題的重要性,仍然是“教師單向灌輸”的教學模式。教師首先要在教學過程中樹立以學生為主體,老師為主導的教學思想,正確處理傳授知識與培養能力、提高素質之間的關系;其次改變教學模式,償試采用以下教學方式。
4.1.1 任務驅動教學方式
在教學過程中避免照本宣科、枯燥乏味,“任務驅動”是建構主義理論中的一種教學模式,是將所要學習的新知識隱含在一個或幾個任務之中,學生通過對所提的任務進行分析、討論,明確它大體涉及哪些知識,在老師的指導、幫助下找出解決問題的方法,最后通過任務的完成對學生知識的傳授。事實上它并不是簡單的給出任務就了事,重要的是要讓學生學會學習,使他們學會從多方位、多層次、多角度去考慮問題。使學生認識到學有所用、學以致用,自然地產生學習的愿望和動力。
可以先給出一個比較典型的C語言編寫的例子。給學生具體的演示,通過這個效果激發學生的積極性。要求學生在期末的時候編寫出相應的程序。有了這個任務,在講課的時候逐步的告訴學生每一章可以具體的實現例子的那個部分,讓學生逐步的去實現相應的功能。他們實現了相應的效果,就會極大地增強學習的興趣和熱情。這樣可以讓學生在愉悅的過程中學好這門課程。
4.1.2 啟發式教學
為培養學生邏輯思維和創新能力,在教學過程中,教師遵循啟發式教學原則,通過各種教學方式和手段激發學生的學習欲望,積極投入到學習活動中,積極思維,發現問題,提出問題,并逐步解決問題。例如,在講解程序設計舉例時,不是簡單地給出程序清單,而是從分析問題入手,繼而找出解決問題的方法,再給出算法,最后編寫出完整的程序,而在這一全過程,最關鍵的是每一步都采用與學生一起探討的方式,讓學生在啟發下思考,在思考中解決問題,從而掌握獨立分析問題、解決問題的方法。
4.1.3 互動式教學
互動式教學是教師駕馭講臺能力的具體體現。一個教師站在講臺上,要不斷地掃視下面的學生,觀察學生的表情,了解學生的接受程度,并能及時地調整教學的進度和步驟,必要時到達到學生與教師在課堂上互相之間的交流。允許學生在不明白的時候隨時提出問題,教師根據實際情況決定是當場解答,還是課后解答。真正實現課堂上的互動,其教學的效果就會顯著地提高。教師在教學過程中,還應當注意設置疑難問題,引導學生思考和探索,讓他們的思想活躍起來。
4.1.4 項目分析式教學
為培養學生綜合應用知識的能力,通過對完整的項目的系統分析,培養學生良好的編程習慣,善于獲取他人經驗的能力以及掌握綜合運用所學知識的能力,從而真正提高編程水平。
4.2 激勵個性化學習
在微觀課堂上采用項目遞進驅動教學法,改變滿堂灌的做法,將學生的眼手腦全部調動起來。精心設計實例,給學生一個比較實際的切入點,通過老師的演示使學生感覺能夠入手,然后再通過將此實例不斷修改、擴充,引導學生參與到程序的編制過程中,在這個過程中,再將學生所作的程序展示,讓學生來評判優劣,吸收優點,修改錯誤,引導學生進行優化。在這樣的實例教學中,因為有提出問題、解決問題、擴展問題、再解決問題、對解決問題的方法評價、優化設計等幾個環節,實際上是一個螺旋式滾動向前的過程,在這個螺旋式不斷向前的過程中,能夠非常自然地調動學生的參與,而且通過問題的不斷擴展,通過一個問題的多種解決方法,有效開闊學生的思維,使得學生在課堂上真正地成為 “ 主體 ” ,教師扮演 “ 主導 ” 角色。 這種通過一個程序的層層推進,引入課程內容,使得學生的每一步學習都有基礎,是循序漸進,螺旋式上升的過程,使學生的學習是在“走臺階”,而不是“三級跳”,效果很好。
4.3 加強對學生程序設計思維訓練
《C語言程序設計》課程不僅僅是一般意義上的知識傳授,要讓學生掌握程序設計的基本方法,對學生進行邏輯思維能力的培養。在實際的教學過程中,我們發現有些學生平時學得很認真,對語法、語句等細節也很熟悉,但碰到稍微復雜一點的編程則無從下手,教師在教學過程中要樹立正確的教學思想,即注重算法設計,加強學生的程序設計思維訓練,幫助學生順利地實現思維方式的轉變,而不能只單純地講授語言的語法、語義、語用,應該將復雜枯燥的語法知識分解到一個個生動實用的程序實例中,也就是在教學過程中以程序設計為主線,有意識淡化計算機語言本身語句的介紹,而重點介紹程序設計,在分析程序和程序設計中熟悉語法、應用語句,掌握程序設計和解決問題的思路(算法),并把軟件工程學的思想貫穿于算法分析和程序設計的過程中。一定要避免陷入這樣的誤區:教師一味地給學生講解語句的功能和語法規則,使學生陷入冗繁的語法規則之中,形成以語言為中心的思維模式。這樣教出來的學生語法背得滾瓜爛熟,只會生搬硬套,缺乏實際編程能力,所以教師應注重培養學生形成以算法為中心的思維模式。對于從未受過算法設計訓練的初學者來說,可能會感到無從下手,對此,教師應該有意識地加強這種思維方式的訓練,通過講授一些常用算法、典型算法,如記數、累加、連乘、兩數交換、求最大(小)值、迭代、排序、分類等為以后編寫程序、軟件設計奠定基礎,同時典型算法熟練的掌握,也可增加學生學習的信心并提高學習的興趣,同時培養學生的思維能力。
5 強化實踐教學,培養學生動手能力
實行實踐教學形式多樣化,上機操作,老師通常讓照著書本的例子進行驗證,這樣無法增加學生的成就感,使學生覺得很無聊,在《C語言程序設計》上機實驗教學中,除傳統的課堂實驗外,還開展課程設計、典型程序分析與設計等實踐環節,還可以教師組織C程序設計興趣小組,組織C程序設計大賽,組織學生參與科研開發等,將每一階段的學習進行小結性的貫穿與能力提高。將 C 的知識點都溶化到一個個實訓項目的程序編寫中。整個過程以學生獨立完成為主,教師只提供必要的輔導。經過實踐訓練,尤其經過綜合訓練中模擬實際軟件開發的演練,使學生得到了鍛煉,進一步激發了學習興趣,培養了問題求解和編程能力,還有利于培養探索和創新能力。
6 改革考核方式,全面實行考教分離
C語言課程所有考試均實行考教分離,這不僅促進了任課教師對教學的精益求精,而且也給了教師充分發揮、施展個人教學才能的空間。在考核方法上,考慮到高職院校是培養應用性的實用人才的這一特點,該課程除采用傳統的筆試外,大膽采用更能反映學生知識應用能力的上機考試,這一考試形式非常受學生的歡迎。可以采用多種形式考核學生,重點考核學生的實踐動手能力。
7 結束語
以上是作者近幾年關于C語言教學經驗的總結,在實際的教學過程中取得了良好的教學效果。筆者認為在教學過程中除了要使學生掌握C語言程序設計這門語言外,最重要的是要讓學生樹立用程序解決現實問題的思路和方法(算法)。學生能否理解算法,并掌握算法,成為教學的關鍵,這是也學習C語言程序設計的重中之重。
參考文獻:
[1] 譚浩強.C程序設計[M].2版.北京:清華出版社,2001.
(一《)C語言程序設計》的教學目標
社會對于人才的需要,并不是要求他們只要學會理論知識就可以,各個單位對人才的要求更看重于他們的實踐能力,要求他們能夠把所學習過的知識轉化為動手能力與實際解決問題的能力。因此,對于學生的《C語言程序設計》課程的教學只是進行理論知識的教育是遠遠不夠的,還有提升學生的綜合能力。學生要達到的認知類目標包括:掌握C語言程序設計課程相關的基本概念;理解解決問題的基本技巧;理解標記控制循環與計數控制循環;把握程序性的知識,并學會如何應用。學生要達到的能力類的目標包括:掌握C語言程序設計的基本技能,進行程序計算;熟練運用與、或、否命題,以此來解決實際中的程序問題;熟練運用一些基本的邏輯運算符;能夠使用break和continue程序控制語句;學會編寫基本字符模式下的簡單程序;另外還有培養學生動手實踐能力和與他人合作的能力。除此之外,還有培養學生學習C語言程序設計的興趣,養成學習工作中嚴謹、務真求實的良好態度,培養解決程序問題的開放性思維。
(二《)C語言程序設計》教學策略設計
對學生進行C語言程序設計的教育,其最終目的就是要讓學生掌握這門課程,并且運用到實際工作中,而教學策略的設計,就是為了在最短的時間內,讓學生掌握更多的知識,并且將其轉化為自身的實踐能力。(1《)C語言程序設計》的教學方法教學方法多種多樣,其中講授法、談話法、演示法、實踐法等最為常見。教師在選擇教學方法的時候,要充分考慮教學大綱的要求和教材中的內容,還要考慮學生的學習情況與學習能力,以及現有的教學條件,從而選擇最適合教學工作的一種方法。同樣的教學方法,對于某一個班級的學生合適,對于另外一個班級也許就不適用,因為每個班的學習氛圍不同,同理,對于某一位學生教學方法很恰當,而對另外一個學生來說,可能就是阻礙學習的因素。因此,教師在教學過程中要對各個方面影響教學效果的因素進行充分的考慮。對學生的教學工作,可以采取分組教學的形式,這種方法不但可以讓教師能夠更大程度上關注到每一位學生的學習情況,還能夠通過小組間學生相互幫助,分享交流學習經驗,從而獲得更多提高成績的機會。另外,學生之間的交流要比學生與教師之間的交流更為順利,學生之間相互學習更容易發現自身的優勢與不足之處,從而把自己的學習經驗分享給其他人,同時向其他同學學習自己沒有掌握的知識。小組教學還能夠增強學生的交流能力,加強學生之間的人際關系,培養學生的團隊合作能力,從而提升學生的綜合素質。(2《)C語言程序設計》的學習組織形式學習組織能力是指學生在學習的過程中,師生的共同活動在程序、人員、時空關系上的組合形式。運用適合學生的學習組織形式,有助于學生提高C語言程序設計學習的效率,同時,還可以將一些高效率的學習方法、學習敬仰在學習組織形式中進行運用,由于《C語言程序設計》教學分為基礎知識與課程設計兩種基本形式,我們把以問題為導向的《C語言程序設計》教學模式下的學習組織形式也分為兩種類型。一種是課堂小組合作學習。在《C語言程序設計》所有課時中,基礎知識的課程占據了絕大多數,教學地點可以選為網絡機房,以問題為導向的《C語言程序設計》有利于學生培養團隊合作精神,提高彼此之間的交流能力,鼓勵學生在學習的過程中勇敢地提出問題回答問題,為學生營造一種良好的學習氛圍。教師充分發揮自身的引導與輔助的作用,幫助學生發現問題,解決問題。另一種類型是課程設計探究學習。課程設計的時間一般比較短,在此期間,教師要通過合理的課程設計來為學生創造一個和諧的學習氛圍,師生之間、學生之間進行交流,分享學習經驗與解決問題的方法,一方面可以增加學生彼此學習的機會,另一方面也可以監督學生完成自己的學習任務。(3)網絡環境下的問題導向教學模式網絡環境下的以問題為導向的《C語言程序設計》課程教學模式,則是利用網絡科技來輔助教師的教學活動,在這個教學過程中,教師是教學活動中的引導者與輔助者,而學生才是學習的主體。教師為學生設計好學習任務,明確每一位學生所要解決的問題,再對學生進行合理的分組,讓學生充分利用網絡資源,收集對自己有利的信息,并且對信息進行有效的篩選與整合。學生在尋求解決問題的過程中,能夠充分利用網絡環境的優勢,推動以問題為導向的教學模式的實施,實現學生的自主學習、互動合作、自覺約束自己的學習活動。這樣,學生在整個學習過程中,不僅解決了教師提出的問題,還掌握了搜集、處理信息的能力,收獲成功之后的成就感,增強與他人之間的交流,提高自身的創造能力,真正做到增強自身的綜合素質。
2以問題為導向的《C語言程序設計》的實踐
在《C語言程序設計》課程教學過程中,教師的教學工作與學生的學習活動總是會暴露一些問題,如教師講解不到位,學生不能理解理論知識,教師講課難以吸引學生的學習興趣,學生學習效率低下等問題。而以問題為導向的《C語言程序設計》教學模式,要如何進行具體的實施,才能夠幫助學生掌握解決問題的技巧,加深對理論知識的理解呢?
(一)以問題為導向的教學模式中的課程設計
在《C語言程序設計》教學過程中,使用以問題為導向的教學模式,要明確本次課程的教學目標是什么,所有的課程設計的大方向要以教學目標為準則,教學中要以人為本,以學生為中心,站在學生的立場上,充分考慮到學生的接受知識的能力與完成任務的可能性。另外還有考慮哪些教學設備可以供學生使用,做到最大程度利用現有的資源,幫助學生掌握更多的知識。同時,對于學生的要求要合理,要求過高,學生難以完成目標,將會打擊學生的參與教學的積極性與信心,要求過低,將會浪費時間,學生的實際能力達不到質的飛躍。因此,課程的設計要實事求是,一切從實際出發。
(二)以問題為導向的教學模式實施的原則
1.遵循現代社會教育事業的發展規律,尊重學生的認知規律,鼓勵學生運用自己的優勢進行創新性的學習。2.堅持以學生為主體、以學生為中心的原則,讓學生出于教學中的主體地位。營造輕松的學習氛圍,讓每一位學生都積極大膽地參與到其中,敢于提出自己的疑問,敢于回答教師與其他學生提出的問題,積極參與具有挑戰性的任務。3.教師發揮自身的引導與輔助的作用,引導學生進行有利于提高自身能力的學習活動,幫助學生解決難度較大的問題,并且監督學生對問題作出總結,從完成任務的過程中學到更多的知識。
(三)以問題為導向的教學模式應當注意的問題