亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        面向編程能力培養(yǎng)的C 語言教學模式研究

        2020-12-19 11:47:29裔傳俊
        計算機教育 2020年1期
        關鍵詞:上機指針代碼

        陳 濤,朱 俊,裔傳俊,張 麗,李 菊

        (南京理工大學紫金學院 計算機學院,江蘇 南京 210023)

        0 引 言

        C 語言是高校計算機類學生必修的一門專業(yè)基礎課,其教學目標是通過這門課程的學習,使學生建立基本的編程思想,獲得程序設計的基本訓練,進而為后續(xù)學習其他計算機專業(yè)的課程打下良好的基礎[1],但在實際教學過程中發(fā)現(xiàn),上述目標達成度很低。許多學生經(jīng)過一個學期的C語言學習,僅停留在做題、考試等淺層次的知識掌握上,一部分學生甚至視編程為畏途,喪失了進一步學習的興趣。

        C 語言是一門操作性和應用性很強的課程,應試能力固然重要,但其核心在于培養(yǎng)學生的編程能力。編程能力就是一種利用計算機解決問題的能力,要求學生能夠靈活運用所掌握的理論知識,把一個待求解的實際問題轉(zhuǎn)化為代碼邏輯。高等教育是以能力培養(yǎng)為中心的教育,需要圍繞能力培養(yǎng)來實施教育教學[2]。

        1 C語言課程教學存在的問題

        C 語言課程一般安排在大一上學期講授,對于初次接觸計算機專業(yè)學習的新生而言,通常會覺得難以理解,這給C 語言教學工作帶來一定的困難。從教學現(xiàn)狀來看,主要存在以下問題。

        (1)課程內(nèi)容偏重語法知識,缺少算法能力的培養(yǎng)。C 語言知識點多,擁有豐富的數(shù)據(jù)類型和函數(shù)庫。對于教師而言,如果沒有實際項目開發(fā)經(jīng)驗,很容易把教學重點放在復雜的語法規(guī)則上面。著名計算機科學家沃斯提出“程序=算法+數(shù)據(jù)結構”[3],如果培養(yǎng)學生編程能力,不能忽視基本算法能力的培養(yǎng)。

        (2)“教本位”授課,忽視解決問題能力的培養(yǎng)。在C 語言教學中,當前主流方式是以課堂講授為主。面對C 語言紛繁的概念和語法,教師唯恐學生不能理解,在課堂上反復講解這些所謂的重點和難點,卻忽視培養(yǎng)學生分析問題和解決問題的能力。這樣做的結果是培養(yǎng)出來的學生僅限于編寫類似“Hello World”的簡單控制臺程序,只要碰到稍微復雜的問題,往往束手無策??梢姡@種“教本位”的授課方式亟待改變。

        (3)編碼以完成功能為主,缺失工程能力的培養(yǎng)。對于程序員而言,通過編碼不僅要實現(xiàn)完整的功能,而且還要保證代碼具有良好的可讀性。換言之,我們培養(yǎng)出來的學生需要具備一定的編程規(guī)范意識,這也是一種基本的編程能力。筆者曾經(jīng)以編程規(guī)范的視角去審視當前主流的國內(nèi)C 語言教材,沒有發(fā)現(xiàn)一本是能做到合格的。這些教材在編碼的縮進、空格、換行、內(nèi)存申請等的處理隨心所欲,缺少基本的工程思維。再者,許多教師授課中也不注重培養(yǎng)學生的規(guī)范意識,從而導致這門課程在培養(yǎng)學生的工程能力方面乏善可陳。

        (4)上機以驗證為主,不注重代碼調(diào)試能力的培養(yǎng)。C 語言的學習離不開上機實驗,在機房中,大多數(shù)同學都能完成實驗題目的編碼工作(當然代碼規(guī)模很小,在數(shù)十行之內(nèi)),實現(xiàn)軟件功能。對于這種簡短的代碼,如果在編譯、鏈接、運行中沒有錯誤,學生就自認為完成了實驗要求,萬事大吉;如果出現(xiàn)錯誤,卻束手無策,往往對著屏幕發(fā)呆,無法有效地進行排除。對于上述問題,如果通過老師的幫助獲得了解決,許多學生不再做進一步的思考,后續(xù)碰到類似問題做不到舉一反三;如果不能及時解決,代碼得不到運行結果,長久下來就會挫傷學習該門課程的積極性。

        (5)以知識為主的考核方式,無法引導學生提升自主編程能力。大多數(shù)情況下,期末考試是通過一張試卷來決定最終成績,無法真實地反映學生的編程能力。許多學生為了應付考試,只注重理論知識的學習,不注重上機實踐,在考試前突擊學習,對于一些編程題目甚至通過死記硬背的方式應付考試,根本不理解代碼的邏輯和結構。有時候,有些實踐能力較強的學生所取得的成績可能反而沒有這類應試型的學生好。可以說,這種重理論、輕實踐的考核機制存在很大弊端,不利于引導學生提升自主編程能力[4]。

        2 面向編程能力培養(yǎng)的教學內(nèi)容設計

        教學內(nèi)容是指教學過程中需要傳遞的信息,是教師給學生傳授的知識和技能。毫無疑問,作為編程能力組成基礎的語法知識、算法能力、工程能力等需要體現(xiàn)在教學設計中。

        2.1 面向工程應用,組織教學內(nèi)容

        在C 語言教學大綱中,一般按照重點、難點去標識教學內(nèi)容。例如,把“循環(huán)的嵌套”“指針數(shù)組”“函數(shù)指針”等識別為重要內(nèi)容,分配較多的授課時間。這種以知識的難易程度來區(qū)分教學內(nèi)容,有時無助于編程能力的培養(yǎng)。C 語言是一門實踐性很強的課程,應面向工程實際需要來組織教學內(nèi)容。

        (1)識別工程應用知識,納入教學大綱。借助來自企業(yè)的雙師型人才,通過會議、訪談等方式,審視當前教學大綱不足。例如,內(nèi)存分配、文件操作這些原先不被重視的內(nèi)容,識別出是軟件開發(fā)中必備的知識技能。在教學中,把內(nèi)存分配重新列入教學大綱,在課堂重點講授;對于文件操作,由于學時等因素,放在課程設計中讓學生自學,要求每個課程設計題目不應當僅限于控制臺的命令行操作,必須增加文件操作的內(nèi)容。

        (2)增加編程規(guī)范內(nèi)容。參考華為等IT 企業(yè)的C 語言編程規(guī)范,重點在代碼排版、變量或函數(shù)命名、內(nèi)存使用、注釋等方面指導學生學習[5]。對于教師,要求課件、范例程序必須符合編程規(guī)范,并有義務向?qū)W生指出教材中哪些代碼沒有按照規(guī)范要求去寫;對于學生,要求作業(yè)、上機等的代碼嚴格遵循編程規(guī)范,提升代碼的可讀性。

        2.2 以排序和遞歸為主,適度引入算法內(nèi)容

        語言是工具,算法是程序設計的核心。算法是求解問題的計算步驟,一些計算機領域的經(jīng)典算法可以說是培養(yǎng)編程能力的最佳工具。C 語言課程不是算法課程,不適合也不可能對算法做系統(tǒng)的介紹,故在安排算法教學內(nèi)容上,以入門級的排序和遞歸算法為主,培養(yǎng)學生的計算思維能力。

        (1)排序算法是計算機算法中最簡單的部分,非常適合在學習數(shù)組時引入。排序算法方式很多,一般要求學生掌握選擇排序、插入排序、快速排序等三種算法,能力高者可繼續(xù)學習希爾排序、歸并排序等算法。

        (2)遞歸的本質(zhì)就是高中階段的數(shù)學歸納法,對于大一學生而言,通過遞歸算法的學習,可以感受到從數(shù)學邏輯到計算機編程的一個轉(zhuǎn)換過程,培養(yǎng)計算思維能力。此外,遞歸算法也是分治法、動態(tài)規(guī)劃等算法的基礎,適度引入有助于提升計算機課程學習的興趣。

        2.3 弱化語法知識,以指針為主線安排教學順序

        C 語言使用靈活,語法規(guī)則很多。在教學設計上,以“夠用”為邊界取舍語法內(nèi)容,以指針為主線安排教學順序。

        (1)以實用為原則,精簡語法規(guī)則。學習C語言的目的是為了編寫程序,而非復雜的語法規(guī)則本身。由此,基于程序設計需要,對于多重指針、多維數(shù)組、靜態(tài)函數(shù)等內(nèi)容不做要求;對于數(shù)據(jù)類型、運算符優(yōu)先級等內(nèi)容進行弱化。例如,數(shù)據(jù)類型重點學習int、char、double 等常用類型,對于其他類型及無符號類型,點到為止;對于運算符的優(yōu)先級,則要求遵循編程規(guī)范,通過加括號顯示指定優(yōu)先級,不要求學生去記憶復雜的優(yōu)先級順序。

        (2)在教學順序上,提前引入指針內(nèi)容。C語言的精髓在于指針,指針也是實際開發(fā)中的重點。大部分教材都是按照基本語法、數(shù)組、函數(shù)、指針、結構體的順序編寫,作者本意是按照先易后難的認知規(guī)律組織教學。實則不然,如果按照這種順序授課,把指針部分放在課程快要結束的時候來講,無法強化指針內(nèi)容的學習。故在教學設計中,把指針的基本概念放在數(shù)組之前,以指針為主線串起后面的數(shù)組、函數(shù)、結構體部分章節(jié)的教學,通過反復演練,讓學生深刻掌握指針的應用。

        3 面向編程能力培養(yǎng)的教學環(huán)節(jié)實踐

        教學實踐是師生互動、傳授知識和解答困惑的過程,主要有課堂授課、上機實驗、期末考試等環(huán)節(jié)。在C 語言教學中,需要在上述各環(huán)節(jié)著重培養(yǎng)學生的編程能力。

        3.1 提倡學以致用,以綜合性案例深化課堂教學

        案例教學是一種開放式、互動式的教學方式,在大學授課中有著廣泛的應用。在C 語言課程中,通過綜合性案例把散亂的多知識點貫穿起來,借助案例輔助教學,可有效培養(yǎng)學生分析問題和解決問題的能力。

        (1)學用結合,培養(yǎng)學生的求知欲望。在理論授課中,需要有意識地把C 語言語法學習和使用相結合,引導學生如何將解題步驟轉(zhuǎn)換為程序?qū)崿F(xiàn)。例如,在講解例題時,教師可采取現(xiàn)場編程的教學方法,直接在開發(fā)環(huán)境上演示編程過程,從而教會學生如何編寫程序;另外,對于編好的代碼進行現(xiàn)場運行,演示代碼調(diào)試過程,從而教會學生如何調(diào)試程序。從教學效果來看,現(xiàn)場編程比PPT 講解程序更能引起學生的興趣,更能激發(fā)學生學習的積極性。

        (2)以案例輔助教學,培養(yǎng)學生綜合運用知識的能力。鑒于C 語言內(nèi)容多而凌亂的特點,在教學中,當一組相關的知識點學習結束后,可構建融合多知識點的綜合性案例,培養(yǎng)學生解決問題的能力[6]。例如,在學習了指針和數(shù)組后,我們設計了“字符串操作”案例,通過編碼實現(xiàn)字符串長度、字符串比較、字符串拷貝和字符串拼接等4 個子問題,來深化課堂教學。在本案例授課時,教師可通過現(xiàn)場編程,帶領學生實現(xiàn)某個子問題;然后,在其他問題教學中,教師可僅講解要點,讓學生自行完成其他子問題的編碼;最后,教師基于學生完成的情況,進行總結點評。實踐證明,案例教學改變了以教師為中心的“教本位”模式,增加了師生互動,讓學生成為課堂的另一主角。學生不再是光聽不練,而是需要不斷思考,去解決問題并完成編碼。

        3.2 注重代碼調(diào)試,以結對編程促進實驗教學

        結對編程(pair programming)是一種敏捷軟件開發(fā)方法,是指兩個程序員在同一臺計算機上共同工作并完成任務。把產(chǎn)業(yè)界的結對編程引入實驗教學,有助于培養(yǎng)學生相互學習、相互支持的團隊協(xié)作能力,從而實現(xiàn)編程能力的共同提升[7]。

        (1)活用結對編程,引導學生共同進步。在軟件開發(fā)中,結對編程是對程序員而言的,組隊成員需要具有豐富的經(jīng)驗,在工作中一人編碼一人審視。對于學生特別是大一新生而言,幾乎沒有編碼經(jīng)歷,顯然不能直接套用業(yè)界的最佳實踐。在教學中,我們活用結對編程,不拘泥于其形式,將其定位為一種學習互助小組。首先,在上機前一周,要求學生兩兩完成自由組隊,成立結對小組;然后,在實驗課上,結對成員要求并排坐在一起,但在編碼形式上,不要求一人編碼一人觀察,可在討論問題后分別進行;最后,采用共同評價方式,按照小組評定實驗成績。上述措施實行以后,大部分的組隊方式都是同一宿舍或者好朋友在一個結對小組內(nèi),兩人在實驗課上共同完成任務,能力高者自覺幫助另一成員,達到了共同進步的教學目標。

        (2)加強上機過程指導,注重培養(yǎng)調(diào)試能力。在實驗課上,不能僅僅要求學生獲取程序的運行結果,還要培養(yǎng)基本的代碼調(diào)試能力。一般來說,編碼完成后,不可能編譯、鏈接、執(zhí)行一帆風順,往往存在語法錯誤或邏輯錯誤。其中語法錯誤調(diào)試起來比較簡單,在編譯階段就可發(fā)現(xiàn),教師可要求學生認真閱讀編譯器給出報錯原因,并對于出現(xiàn)較高的英語單詞或句子,摘抄下來強化記憶。邏輯錯誤則較難解決,需要教會學生設置斷點、單步跟蹤等調(diào)試手段,將動態(tài)執(zhí)行過程分解為靜態(tài)片段,推測錯誤來源。

        由于每個實驗班人數(shù)較多(多于60 人),為了提升教學效果,在實踐中要求每實驗室配備1~2 名高年級學生作為助教,協(xié)助老師處理上機中出現(xiàn)的問題。在實驗課上,對于程序出現(xiàn)的錯誤,先以結對小組為單位,在小組內(nèi)討論,不能解決的方可求助老師或助教。在老師或助教指導過程中,結對小組成員都要認真學習,掌握求助問題的解決方法。

        3.3 優(yōu)化考核方式,提升學生自主編程能力

        教學改革中實行新的考核方式,降低期末筆試成績的比重,增加實驗上機測試,將C 語言綜合成績確定為:平時成績(20%)+筆試成績(40%)+實驗成績(40%)。平時成績主要考查學生的出勤記錄、作業(yè)情況和學習態(tài)度等;筆試成績就是傳統(tǒng)的期末考試,主要考查基本知識、閱讀程序和程序分析能力;實驗成績則是在課程結束后,安排一次集中的上機考試,考查學生綜合運用C 語言知識解決問題的能力。上機測試時間限定在2 小時,教師提供多個綜合性的問題供學生選擇,要求學生當場完成,并從運行結果、編程規(guī)范、程序邏輯等方面評定實驗成績。這種綜合性的考核機制,較為真實地反映了學生對本門課程的掌握情況,避免了在學習過程中不重視編程實踐的現(xiàn)象。

        4 結 語

        近年來,面向編程能力培養(yǎng)的C 語言教學模式在我校計算機相關專業(yè)進行了試點,并獲得了良好效果。通過教學班級學生調(diào)查來看,這種方法激發(fā)了學生的編程興趣,大家在學習過程中更加重視上機實踐,編程能力普遍得到了很大提高。從考核結果來看,筆試成績和實驗成績的分數(shù)段比例均衡,筆試成績高者實驗成績也都落在高分段,達到了教學改革的初衷。此外,本教學模式也可推廣到計算機專業(yè)的其他程序設計類課程的教學中,如C++、Java、Python 等。

        當然,沒有哪一種教學模式是一勞永逸的,我們的教學改革仍然任重道遠。例如,在結對編程上如何協(xié)調(diào)組隊成員的能力差異,做到兩人即可共同進步又能夠能力高者先行;在案例教學中如何解決大班授課和案例互動的矛盾,以實現(xiàn)最佳的案例教學效果等。上述這些訴求都是在后續(xù)C 語言教學實踐中需要進一步探索的問題。

        猜你喜歡
        上機指針代碼
        周金應
        標準化護理程序?qū)w外膜肺氧合術患者上機各階段用時的影響
        偷指針的人
        娃娃畫報(2019年5期)2019-06-17 16:58:10
        創(chuàng)世代碼
        動漫星空(2018年11期)2018-10-26 02:24:02
        創(chuàng)世代碼
        動漫星空(2018年2期)2018-10-26 02:11:00
        創(chuàng)世代碼
        動漫星空(2018年9期)2018-10-26 01:16:48
        創(chuàng)世代碼
        動漫星空(2018年5期)2018-10-26 01:15:02
        為什么表的指針都按照順時針方向轉(zhuǎn)動
        基于改進Hough變換和BP網(wǎng)絡的指針儀表識別
        電測與儀表(2015年5期)2015-04-09 11:30:42
        ARM Cortex—MO/MO+單片機的指針變量替換方法
        国产成人精品日本亚洲18| 亚洲最大中文字幕熟女| 亚洲综合av永久无码精品一区二区 | 久久青草伊人精品| 午夜成人精品福利网站在线观看| 国产精品久久久久国产a级| 欧美丰满熟妇bbbbbb百度| 日本老年人精品久久中文字幕| 免费看男女啪啪的视频网站 | 亚洲精品中文字幕一区二区| 欧美俄罗斯40老熟妇| 日韩中文网| 在线观看人成网站深夜免费| 自拍偷拍韩国三级视频| 色狠狠色狠狠综合天天| 久久久久亚洲av无码专区导航| 青草福利在线| 在线观看精品国产福利片87| 大屁股流白浆一区二区| av一区二区在线网站| 无码免费无线观看在线视| 色哟哟网站在线观看| 精品久久综合一区二区| 精品久久日产国产一区| 日韩三级一区二区三区| 欧美裸体xxxx极品少妇| 免费看一级a女人自慰免费| 激情五月天俺也去综合网| 国产精品髙潮呻吟久久av| 国产v片在线播放免费无码 | 日本熟妇hdsex视频| 伊人久久大香线蕉免费视频| 欧美亚洲h在线一区二区| 亚洲精品中文字幕乱码三区99| 亚洲国产精品日本无码网站| 日日躁夜夜躁狠狠躁超碰97| 欧美亚洲另类国产18p| 亚洲av成人av三上悠亚| 欧美极品jizzhd欧美| 免费精品美女久久久久久久久久| 蜜桃视频在线在线观看|