一、引言
隨著資訊時代的到來及飛速發展,熟練使用計算機已成為當代大學生的必備技能。同其他高校類似,我校也將程式設計課作為學生的一門基礎必修課。通過程式設計,大學生可以了解用計算機解決問題的過程和方法,訓練邏輯思維能力,提公升資訊素質。一方面c語言以其簡單的資料型別、清晰的語言結構、較強的邏輯性以及結構化程式設計思想等優點,非常適合作為入門語言。另一方面,c語言集抽象性、邏輯性、實踐性於一身,是一門理論性和實踐性都很強的課程,如不能把握c語言的本質,理解程式設計的精髓,初學者往往學習興趣不濃,學習效果不佳,進而普遍覺得c語言難學。儘管作為工具,計算機被廣泛的使用,但「計算機究竟是什麼樣的工具以及它是如何工作的」這些關鍵問題c語言的學習者並不清楚。程式設計師通過c語言命令使用計算機解決實際問題,連計算機如何工作都不知道,又怎能理解和接受「計算機思維」進而學好程式設計呢?現行的c語言教材基本上全是「填鴨式」教育理念指導下的產物,只讓學生記結論,不啟發引導學生思考。
每年我校學習c
語言的學生有二三千人,如能在
c語言教學改革中取得突破,將對我校的學風和教風產生質的影響。近五六年來,本人一直就c
語言「教什麼和怎樣教」進行研究,雖先後也出版了兩本c
語言專著,但總覺得還有提高和改進的地方。又經過艱苦的嘗試,終於有了讓自己比較滿意的版本。試用效果顯著。
二、目前c
語言教學改革的現狀及存在的問題
目前大家對c
語言教學內容的改革多集中在實踐教學環節,以練促學,輔以「課堂上採用多種教學手段,充分調動學生學習積極性」,「課外採用開放式網路教學平台支援教學」,「建立科學合理的考核方式,注重過程監督」等等。教學模式的改革多基於cdio。cdio工程教育模式是近年來國際工程教育改革的最新成果。由麻省理工學院和瑞典皇家工學院等四所大學經過四年的探索研究,創立了 cdio 工程教育理念。cdio代表構思(conceive)、設計(design)、實現(implement)和運作(operate) ,它以產品研發到產品執行的生命週期為載體 ,讓學生以主動的、 實踐的、 課程之間有機聯絡的方式學習工程。cdio工程教育模式本質上還是基於實踐。
強調實踐教學,培養學生的實際動手能力,讓學生從實踐中獲得知識確實可以提高學生的學習興趣,教學效果也不錯。儘管不是「滿堂灌」,但片面強調以練促學本身也有「填鴨式」教學的嫌疑。理論**於實踐,但理論可指導實踐,理論指導下的實踐才是最有效的實踐。教學中,理論(講)與實踐(練)的關係需辯證地理解和把握。學生只有掌握了一定的背景知識,才會更主動地參與到實踐中,實踐的價值和意義才更大。現有的c語言教學改革中普遍忽視了理論對實踐的指導意義。下面舉個簡單的例子。
幾乎人人都知道計算機採用二進位制,但這究竟意味著什麼,現行的c語言教材基本不提。計算機中只能模擬0和1,現實世界的資料只有編碼成01串後,計算機才能處理。整數和小數在編碼時採用了不同的編碼規則,這就使得乙個整數和乙個小數可能對應同乙個01串,因此,計算機中的一串01只有知道了其型別(是整數還是小數),才能確定它的實際值,也就是說,計算機中的資料必須分型別。小數編碼時,0.1的編碼結果是長度無限的二進位制串,這就意味著無論採用什麼樣的儲存單元,計算機中也不可能儲存十進位制的0.1,即計算機中沒有精確的0.1,只有其近似值。這也造成了計算機中十個0.1相加的結果可能不是1!計算機是乙個「整數認不全,小數算不准」的機器。
有了「理論」的指導,學生在學習c語言的過程中不僅不再迷茫,而且興趣激增,學生在動手實踐時也更有目的性和效率。
三、c語言教學內容的改革
(一)選擇教什麼和不教什麼
c語言有什麼用?怎樣程式設計呢?初次接觸c語言的學生可能會有許許多多的疑問。
c語言用於控制計算機,c語言命令需由計算機執行,計算機的特性直接地體現在
c語言中,因此,在了解計算機的基礎上學習
c語言事半功倍。
c語言教學內容的改革從
c語言的第一節課開始。首先介紹計算機由五大部件組成——輸入裝置、儲存器、運算器、輸出裝置和控制器。計算機處理資料,工廠製造產品,計算機的工作流程與工廠的類似。製造產品時需為工廠設計詳細的加工流程,計算機只是一台機器,讓計算機處理資料時,程式設計師同樣也需要設計詳細的工作步驟即演算法。程式設計就是為由五大部件組成的計算機設計詳細的處理資料的步驟。
計算機的組成非常簡單,熟悉了其工作流程後,學生就應該知道如何指揮計算機工作了,即可以編寫一些簡單的程式了,當然此時的程式是以漢語的形式描述。程式設計就是給計算機設計加工步驟,這些步驟以漢語的形式還是c語言的形式存在並沒有太大的區別,因為很容易把漢語描述的步驟翻譯成
c語言語句。以讓計算機求使用者輸入的兩個整數的和為例,怎樣為計算機設計工作步驟呢?根據計算機的組成,參照工廠的生產模式,可以嘗試讓學生設計演算法。
第一步:在顯示器上提示使用者輸入兩個整數;第二步:獲得使用者的輸入,並把輸入資料儲存到記憶體中;第三步:運算器求和,並把計算結果轉存到記憶體中;第四步:在顯示器上輸出計算結果。也許可以順利地為計算機設計出工作步驟,也許會遇到這樣或那樣的困難。只要主動地參與到問題的解決過程中,即使沒能設計出演算法,也會有較大的收穫。這樣的嘗試和參與不僅能加深對知識和計算機的理解,而且還能培養分析解決問題的能力。
計算機的五大組成部件對應著c
語言的特定部分。輸入裝置對應於scanf
函式,輸出裝置對應於
printf
函式,記憶體對應於變數,運算器對應於表示式,控制器對應於語句的順序。程式設計師借助
c語言的命令可以方便地指揮計算機工作,因此,把演算法中的步驟翻譯成c
語言語句非常容易。第一步控制計算機在顯示器上輸出資訊時,只需用printf
函式。第二步獲得使用者輸入時,只需用
scanf
函式。第三步求和時,只需用
+號。第四步輸出計算結果時,再次用printf函式即可。
在c語言的教學實踐中,通過上面的引導,大部分學生在第一節課上就能理解該課程的核心問題——什麼是程式設計,並能初步掌握c語言和計算機的對應關係。由於教學內容和教學過程具有極強的直觀性和邏輯性,因此,不僅能吸引大部分學生的注意力,而且可以使他們主動地參與教學過程,積極發揮主觀能動性——討論、爭論、質疑,大學的課堂真正呈現出師生良性互動深入溝通的大好局面。
教師的主導作用主要體現在教學內容的選擇上,「教什麼和不教什麼」是關鍵,教是為了不教。背景知識需要教,但如何用這些知識解決問題就需要學生自主分析,發揮他們的主體作用討論解決了。
(二)啟發學生思考為什麼
現有的大多數c
c語言表示式求值時先考慮序列點,再考慮優先順序,最後考慮結合性。但
c語言教材中大多不提及序列點,遇到有序列點的表示式時只是讓學生記憶求值規則,如強調逗號表示式的求值順序是自左向右依次求值。逗號表示式
i=j,++j
中自增操作符的優先順序最高,為何不根據優先順序先執行自增操作呢?難免會有學生提出這樣的疑問。不完整的表示式求值規則,使得學生對
c語言知識的認知殘缺不全,也影響了學生自主學習的積極性,更不利於創新型人才的培養。
含有序列點的表示式求值時要保證有序列點的操作符左邊的由子表示式構成的運算元先於其右邊的運算元求值。在表示式2*5+3
中加法操作符右邊的運算元為
3,但其左邊的運算元不是
5而是子表示式
2*5,因為進行加法操作時不可能把3與
5相加。由於逗號操作符的優先順序最低,故逗號表示式
i=j,++j
中逗號操作符左邊的運算元為子表示式
i=j,右邊運算元為子表示式
++j。又因為逗號操作符有序列點,所以其左運算元
i=j會先於右運算元
++j求值。可見序列點可以讓低優先順序的操作符先於高優先順序的求值。
逗號操作符為何有序列點呢?
逗號操作符常用於把多條c
語言語句改寫成一條
c語言語句。
i=j;++j;
是兩條語句,而
i=j,++j;
是一條語句。為保證改寫後「語句」的執行順序與改寫前相同,逗號操作符不僅需有序列點,而且還需優先順序最低。
不僅僅是序列點,指標變數、陣列變數、遞迴函式以及檔案甚至資料型別,在教學過程中幾乎c
語言的每個知識點都進行了準確而精闢的分析,為學生自主學習、參與討論奠定了堅實的基礎。在分析的基礎上還提出了一些獨到的觀點。如計算機是一台「整數認不全,小數算不准,只會重複的」機器。如多上機程式設計是學好c語言的必由之路,只有實踐才能出真知,但理論指導下的實踐才是最有效的實踐,一定要養**工執行源程式的習慣。
(三)引導學生歸納知識點
在教學過程中還總結了許多知識點的用法,直觀明了極具操作性,非常適合初學者。如用假設使用者輸入求預期輸出的方法理解題意;用畫表法分析迴圈結構的執行過程等等。以指標變數的用法為例。指標變數的使用通常需兩步:第一步,對指標變數賦值,即讓它指向某儲存單元;第二步,以間接引用的形式使用指標變數所指向的儲存單元。有int i = 5
,*pi;
,可以這樣使用整型指標變數
pi:先對指標變數賦值
pi = &i;
,讓它指向整型變數
i;然後在程式中以
*pi的形式使用指標變數
pi指向的儲存單元,即
*pi和變數
i標識了同乙個儲存單元,
*pi和變數
i通常可在程式中互換使用。
pi是乙個整型指標變數;
*pi是乙個整型變數,但它標識了
pi指向的整型儲存單元。
四、總結
在學校人才培養模式改革的活動中,以先進的教學理念為指導,以全新的角度深刻地分析討論了c
語言的教學內容,就c
語言「教什麼和怎樣教」進行了積極的探索。及時把教學成果固化為教材,出版了兩本
czeq126.56.com
),目前已有超過
11萬人次**。
教學效果明顯,作為教練帶隊參加河南省大學生程式設計大賽中,連續幾年學生每次都至少獲得乙個銀獎,比賽成績在我省同類院校中名列前茅,主力隊員均讀研深造。
02 13單板教學內容概要
2.固定器 3.安全知識 二 基本站姿 三 單腳平地練習 四 單腳直滑降 五 推坡練習 六 階梯式轉彎練習 七 展望 板面板底 板頭板尾 前刃後刃 是否完好無損 長度是否合適 固定器間距 背板大綁帶 小綁帶梳理分開綁帶 鞋跟緊貼背板 系大綁帶 系小綁帶 持板 小臂托住上固定器,豎持雪板 放板 開啟固...
C語言 教學實踐建議
程式設計 軟體工程課程怎麼教 這是2016年秋季學期和北京工業大學耿丹學院合作教學的計畫。這也可以用於其他學校的 c 語言課程。2016級有四個班,每班大約 32 人,每班配有乙個有一定實際工作經驗的助教,配合老師把課教好。c語言是一門基礎課,是耿丹學院新生的第一門專業課,為何第一門課安排c 語言?...
C語言 教學實踐建議
這是2016年秋季學期和北京工業大學耿丹學院合作教學的計畫。2016級有四個班,每班大約 32 人,每班配有乙個有一定實際工作經驗的助教,配合老師把課教好。c語言是一門基礎課,是耿丹學院新生的第一門專業課,為何第一門課安排c 語言?這個超出了本文的討論範圍 本文的主題是 談談有工業界經驗的助教能給這...