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

        ?

        C語言教學探討

        2016-11-14 01:11:34郭亮郭海智
        電腦知識與技術 2016年24期
        關鍵詞:類型指針函數

        郭亮 郭海智

        摘要:針對C語言教學過程中存在的問題并結合自身教學實踐,提出幾點具體建議。包括從類型和變量出發(fā),自教學初期就加強對語言中的一些核心問題講解,并在課程教學前期的語言基礎部分對此進行反復強調及緊密聯系,后期再專注于程序設計能力及計算思維的培養(yǎng)。

        關鍵詞:C語言;類型;指針;函數

        中圖分類號:G642 文獻標識碼:A 文章編號:1009-3044(2016)24-0116-02

        Abstract: Aiming at the existing problems in the process of C language teaching, combined with personal teaching practice, giving some suggestions. Starting from the types and variables, the suggestions include strengthen the interpretation of some core elements in C language at the primary stage of teaching, emphasize the interrelation of these elements, later stage focus on training the ability of programming and computational thinking.

        Key words: C language; type; porinter; function

        C語言高效、靈活且兼具高級和低級語言的特點,使其應用及影響極其廣泛,并早已成為各大高校的第一門程序設計課程。該課程信息量大且地位顯著但授課時間有限,作為重點和難點的指針等概念也提高了學習門檻,導致教學效果普遍不理想,影響了后期多門專業(yè)課程的開展。

        1 教學中的問題

        C語言教學過程中除了需要平衡語言特性和程序設計能力培養(yǎng)外,還應針對教學對象的特點進行內容的合理編排,加強各個知識點的聯系,降低學習曲線的陡峭程度。當前眾多教材及教學過程在內容編排上采用類似自頂向下的教學方法,簡述變量、常量等基礎概念后,在控制結構中開始程序設計能力的初步培養(yǎng),到數組、指針及函數參數部分轉而強化底層概念,最后通過結構體、綜合示例及簡單數據結構等回歸到設計[1]。這樣的教學過程可能會使部分學員在對前期語言基本要素掌握不到位的基礎上產生一些錯誤理解,后期再來修正就比較困難。

        結合個人教學經驗及我校的教學情況,在課程編排上應盡早讓學員理解并熟悉底層概念,盡早引入函數概念并持續(xù)培養(yǎng)模塊化程序設計方法[2]。前期教學重點講述核心概念及常規(guī)用法,加深學員對語言整體的理解,后期重點培養(yǎng)程序設計和計算思維能力①。

        2 具體改進

        2.1 堅持清晰第一

        任何課程,每次課堂的教學都應遵從清晰第一原則,C語言教學也不例外。清晰第一的一個功能是重點突出。對C教學而言,講解所用的代碼表述要保證清晰明了,不要過多討論i+++j等問題,避免由于寫法的技巧性和語法的復雜性加重學員學習負擔。有文章列出的一些“有趣C問題”并不能提高大部分初級學員的興趣,反而可能會使其產生挫敗感并導致厭學心態(tài),這樣的東西在教學初期應該適度引入。清晰第一的另一個功能是避免了部分的不可移植性問題及潛在的錯誤。在C語言中存在表達式計算的副作用和順序點問題,對int i=1;f(i++)+g(i--)沒有約定是進行f(1)+g(1)還是f(1)+g(2),利用本原則可以消除由于此類語義表述所埋下的隱患,突出避免編寫依賴特定計算順序表達式的重要性。另外,清晰第一還體現在可讀性上,排版、注釋、標識符命名及編程風格等方面,需持續(xù)培養(yǎng)學員良好的編程習慣,盡力使教學與實際開發(fā)保持一致。清晰第一要避免對晦澀用法的講解和考核但不是簡單反對和拋棄慣用的簡潔描述,課堂上應該給出習慣用法以體現C語言的靈活性。

        2.2 強化類型概念

        類型體現了抽象,抽象是人認識客觀世界的主要能力。類型作為計算機科學的核心概念在眾多C語言教材中闡述并不多,教學過程中理應讓學員對此留下深刻印象。講解中通過整數的補碼表示,字符型的ASCII編碼等讓學員明確計算機對不同信息的分類表示。由此引出,類型約定了表示的形式,進而限制了存儲空間的大小和取值范圍。初期講解常量時用printf( )的不同格式描述符驗證int和double的編碼不同,結合sizeof運算符驗證不同類型的存儲大小,并在介紹位運算后深入了解整型的補碼編碼方式。利用求余運算符的兩個操作數為整數而非浮點數,驗證類型對操作的限定,引出類型在另一方面又約束了其上的相關操作。類型概念應該在課程教學的各個章節(jié)進行強化,比如后續(xù)講解指針運算只有加減和比較操作時可再次強調。同類型之間可直接操作,異類間操作需先統一為同種類型,重視了類型問題也就便于掌握類型轉換,減少了轉換出錯的概率。面向對象的程序語言強化了C語言本就具有的這個核心概念,并發(fā)展到了一個新高度,C中類型的這兩個能力與面向對象的理解基本一致,掌握好該核心概念也有利于后續(xù)面向對象程序設計語言的學習。

        2.3 深入理解變量與賦值適度引入指針

        C語言兼具高級語言和低級語言的特點,其實現與內存關系緊密。變量的功用是保存信息以便后續(xù)使用,信息的類型不同變量類型的選擇也就不同。講解時無需簡單羅列所有變量類型,建議把整型變量單拿出來細講,這樣學員理解好了一個,也就方便了后續(xù)其他類型的學習。讓學員理解變量名屏蔽了底層地址信息所帶來的使用方便性,以及掌握利用底層地址信息進行間接訪問操作的一致性。對整型變量int i;通過printf(“%d,%p”,i,&i)引出%p格式描述符和&取地址運算符以驗證變量的存儲內容和存儲起始地址,并指出變量初始化的重要性。進一步用printf(“%d,%p,%d”,i,&i,*&i)引出用地址求值的間接訪問運算符*,為指針的引入建立基礎。C語言的賦值并非數學中的相等比較,示例中用i=1與j=i,強調i在等號的左邊表示存儲位置,在等號的右邊表示存儲內容,由此引出左值和右值概念,明確左值是能指代存儲空間的對象,從而避免i++++此類錯誤操作。通過賦值操作符設問如何保存地址信息從而完整地引出指針類型,用示例強化指針相關的兩個重點操作&,*。再次結合sizeof查看多個同類型變量的內存分布,以引出指針的加減及比較操作,并由不同指針類型間轉換引出void *這個類型轉換橋梁,以方便后期數組、結構體等教學。至此,完成對指針涉及的所有基礎知識講解,后續(xù)課程重點講其應用即可。有了這些概念后引出scanf以盡快開啟交互式程序的設計,提高學習興趣。

        2.4 盡早引入函數

        個人認為很多教材將函數放在課程后半部分講是不合理的。為了便于學員理解到函數及模塊化的重要性,盡早接觸到結構化程序設計思想,建議在賦值語句和表達式之后就以“命名的語句塊”方式初步引出函數概論以熟悉基本框架和使用,并在后續(xù)章節(jié)逐步深入。在控制結構中結合函數進行基本編程能力的培養(yǎng),重視函數設計的通用性[3]。講解函數時,不必按參數、返回值等對函數進行分類,重點應該從主調和被調,從使用和實現的角度出發(fā),對比兩者對函數的關注點和關注內容的不同,體現出接口的重要性,并讓學員在設計與調用時做到清晰明了。需強調函數參數的值傳遞方式而無需引入地址傳遞等其他表述以減輕學習負擔。對函數調用棧狀態(tài)變化的講解要簡明扼要,以清晰值傳遞的實現基礎,并體會語句塊內局部變量的概念,為后續(xù)變量作用域和存在期講解打下鋪墊。在具有指針的基礎概念上對比void func1(int a){a++;}和void func2(int *a){(*a)++;},前者用復印件的類比說明修改不涉及原件,后者用鑰匙的類比說明直接修改原件,以及利用2值交換函數理解函數內修改函數外數據時利用指針間接訪問所帶來的便利性。由于程序運行時存儲在內存,其中的所有對象都有地址信息也包括函數,由此引出函數指針及其基本用法。關于遞歸的講解涉及的是程序設計方法與機器細節(jié)相關不大,重點通過簡單示例強調思維方式。對漢諾塔、二叉樹遍歷等經典例子以及數據結構與算法基礎內容等可在課程的后半部分單設常用編程技術章節(jié)專門提高程序設計能力。

        2.5 清晰數組概念

        由于前述教學安排,數組可放到指針及函數之后講解。對該概念的引入可以提兩點,一是便于大量同類型變量的定義及使用,int a[1000]比a1,a2...a1000方便定義,下標操作方便使用;二是內存采用連續(xù)地址空間實現數組,存儲的空間順序性保證了元素間關系的順序性,使得數組成為多種數據結構實現的基礎。強調數組名代表整個數組對象從而不具有左值特性,也就無法進行整體賦值和a++等操作。對數組名用sizeof(a)計算整體占用空間,引出sizeof(a)/sizeof(a[0])的習慣用法。強調數組名a的類型類似int *const指針,值為頭元素地址,即a等值于&a[0],可對其加減以獲得特定指向。結合int (*p)[1000]=&a;指出a,&a二者值相等但類型不,并在示例中利用a+1,&a[0]+1,&a+1結合內存模型進行驗證。既然數組名類似指針,也就引出數組表示和指針表示的統一性,即a[2]等價于*(a+2),由加法交換律*(a+2)等價于*(2+a),也就解釋了2[a]這種奇怪寫法的存在,同理也解釋了1[“abc”]是什么。對數組用a[-1],a[-2]示例編譯器不進行訪問越界的檢測,體會不可控越界的危險性。聯系到函數參數傳遞時,用swap(int a[],int b[])與swap(int *a,int *b)完成2值交換的一致性驗證數組名退化為指針類型,引出參數傳遞中一維數組長度信息的丟失問題,總結出函數參數中應該帶入數組長度信息func(int a[],int length),并結合二維及多維數組再次強調參數傳遞忽略最高維的原因。后期涉及結構體講解時,以struct B{ int i[3];}b1,b2;b2=b1;做對比,突顯出結構體整體賦值的特殊性,并以此討論數組與結構體在進行函數參數傳遞的成本問題,以體現指針的優(yōu)勢。

        3 結語

        關于程序設計能力和計算思維的培養(yǎng)是個長期過程,需要在整個培養(yǎng)體系中利用多門課程和實踐進行貫穿和深入。實踐證明,當前這種教學編排強化了學員對上述重要概念的理解,知識點間聯系更緊密,對事物的前因后果更清晰,在一定程度上減少了學習彎路,提高了教學效果。

        參考文獻:

        [1] 譚浩強.C程序設計[M].4版.北京:清華大學出版社,2012.

        [2] 裘宗燕.從問題到程序——程序設計與C語言引論[M].2版.北京:機械工業(yè)出版社,2011.

        [3] 朱安平.一種C語言函數教學的設計與實踐[J].計算機工程與科學,2014,36(S1):139-142.

        猜你喜歡
        類型指針函數
        二次函數
        第3講 “函數”復習精講
        二次函數
        函數備考精講
        偷指針的人
        娃娃畫報(2019年5期)2019-06-17 16:58:10
        為什么表的指針都按照順時針方向轉動
        我國高職院校實訓基地主要類型及其存在價值初論
        職教論壇(2016年24期)2016-11-14 09:02:16
        人名中不應該使用生僻字
        人間(2016年27期)2016-11-11 17:29:11
        “逗”孩子行為的危害及破解對策
        南北橋(2016年10期)2016-11-10 17:33:00
        利用野花組合營造花海景觀的技術研究
        現代園藝(2016年17期)2016-10-17 08:18:46
        日韩激情无码免费毛片| 国产精品一二三区亚洲 | 国产成人精品cao在线| 亚洲熟女av一区少妇| 国产一区二区黄色录像| 国产精品无码午夜福利| 2021国产最新在线视频一区| 亚洲av中文字字幕乱码| 精品国产日韩一区2区3区| 看一区二区日本视频免费| 80s国产成年女人毛片| 品色永久免费| 国产av综合一区二区三区最新 | 中文字幕隔壁人妻欲求不满| 亚洲乱亚洲乱妇50p| 欧美伊人久久大香线蕉在观 | 国产zzjjzzjj视频全免费| 亚洲一区二区高清精品| 国产亚洲精品在线播放| 看久久久久久a级毛片| 久久欧美与黑人双交男男| 国产AV高清精品久久| 国产一区二区三区最新地址| 国产女主播白浆在线观看| 久热香蕉视频| 精品人妻久久av中文字幕| 国产精品会所一区二区三区| 亚洲色www成人永久网址| 无码人妻精品一区二区三区下载| 久久国产精品免费一区二区三区 | 99久久亚洲精品日本无码| 欧美老妇人与禽交| 亚洲精品一区二区在线播放| 久久久精品国产性黑人| 国产精品亚洲一区二区三区在线| 国产欧美日韩a片免费软件| 日韩中文字幕网站| 经典三级免费看片天堂| 特级毛片爽www免费版| 亚洲中文欧美日韩在线人| 日韩在线精品免费观看|