• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    非計算機專業(yè)C語言程序設計的課堂教學實踐與改進

    2009-02-24 07:02:48陳洪濤顧沈明
    計算機教育 2009年2期
    關鍵詞:計算機教育程序設計

    陳洪濤 顧沈明 劉 軍

    文章編號:1672-5913(2009)02-0125-02

    摘要:本文針對高校非計算機專業(yè)C語言程序設計在課堂教學方法方面的一些問題,提出在教學活動中,通過讓學生建立一個最簡單的計算模型等方法,培養(yǎng)學生用計算機程序解決實際問題的能力,強調在課堂教學中要特別重視分析程序運行和內存變量的關系,并闡述了面向技能形成的習題訓練的觀點。

    關鍵詞:計算機教育;程序設計;C語言

    中圖分類號:G642

    文獻標識碼:B

    1引言

    高校計算機基礎教學“主要講授程序設計語言的基本知識和程序設計的方法與技術,其內容以程序設計語言的語法知識和程序設計技術的基本方法為主,同時包括程序設計方法學、數據結構與算法基礎等方面的初步內容,應使學生掌握計算機程序設計的思想和方法,初步具有在各領域應用計算機的能力,并為后續(xù)課程的學習創(chuàng)造條件。”[1]

    在許多高校,C語言程序設計是理工類必修的計算機基礎教學課程,但是在實際教學過程中,學生對這門課的掌握程度不能令人滿意。這一方面是由于高等教育大眾化,學生的學習能力和學習愿望不如從前;另一方面,C語言教學實踐中,在諸如課堂教學方法、平時訓練等方面也存在著不能適應大眾化教育形勢的一些問題。

    C語言的教學一直以來比較偏重語法,但學生普遍反映聽的時候好像都聽懂了,但是當一個問題放在自己的面前,就不知道如何用所學的知識去解決。教師在教學活動中如果沒有主動意識到這一點,就可能會把C語言的教學活動看做是語法的講解,不注重在教學活動中引導學生用程序的思維方式分析問題解決問題。而后者才是程序設計這門課程的真正目的。

    2培養(yǎng)學生用計算機程序解決問題的能力

    培養(yǎng)學生用計算機程序解決問題的能力,需要通過課堂教學注重幾個方面的問題:

    (1) 理解計算機處理問題的“過程”方式

    人們對現(xiàn)實問題的分析,有些并不需要像計算機一樣用“過程”的方式來給出解決方案,例如數組元素的排序,人類解決這個問題的思考過程沒有明顯的循環(huán)過程,或者我們并不會很在意循環(huán)過程,但是計算機則不同,它要求程序員必須明確地設定循環(huán)的“過程”。程序設計課程正是要培養(yǎng)學生用和我們平常的思考方法不同的“過程”方式來描述算法,但這是思維方法上的一個跳躍,這種跳躍過去一直是通過大量的練習,由學生自己自然而然感悟到的,當然,有些感悟能力強的同學對這一問題的理解很快,但是在教學實踐中發(fā)現(xiàn),對很多非計算機專業(yè)的學生而言,由于練習的機會比較少,感悟到這一點常常比較費時間。例如求一個圓的表面積,常見到初學者寫出如下的代碼,以為只要告訴計算機“s=3.14*r*r”這樣一個計算公式,再給出r的數值,計算機就可以給出結果,而不知道還需要告訴計算機執(zhí)行的“過程”。

    01 #include

    02 int main(){

    03 int r,s;

    04 s=3.14*r*r;/*順序出錯*/

    05 scanf("%d",&r);

    06 printf("The area is %d",r);

    07 return 0;

    08 }

    如果教學過程中能夠有意識地引導學生,無疑可以降低學生學習的難度。

    (2) 在頭腦中建立一個最簡單的計算模型

    用和我們平常的思考方法不同“過程”的方式來描述算法,需要明白計算機和人類的思維方法不同的“過程”特點,這就需要在學生的頭腦中建立一個最簡單的計算模型。事實上馮·諾依曼計算機體系結構是以存儲器為中心的,對編程的初學者就需要解決如何在這一體系結構的基礎上來設計解決問題的步驟。

    程序的執(zhí)行過程是圍繞著存儲單元進行,存儲單元既可能存放輸入數據,也可能存放程序執(zhí)行的結果,很多學生就是因為不能建立這樣一個計算模型,按照平常地思維習慣,在設計算法時把一些中間計算結果記在心里,導致無法用程序語言描述解決問題的思路。

    當學生在頭腦中建立一個最簡單的面向存儲器的計算模型后,就能較好地理解計算機解決問題的方法,可以把求解問題的算法轉為利用存儲單元進行的“取”→“計算”→“存”的過程,然后將這種自然語言描述的算法翻譯成為C語言。例如交換兩個變量的值,可以用自然語言描述成下面的步驟,對初學者而言這樣就很容易理解。

    1. 先指定兩個盒子,命名為a,b;

    2. 命名一個存放臨時數據的盒子c;

    3. 在兩個盒子a,b中分別存入兩個數值;

    4. 取a的數值存入c;

    5. 取b的數值存入a;

    6. 取c的數值存入b;

    同時基于存儲器的計算模型,對一些讓初學的同學比較容易出錯的東西也可以解釋得比較清楚,比如“變量使用前須定義,引用前須賦值”,學生就會想到:變量的定義只是給某存儲單元取了一個名字,在沒有向里面放入有效值之前去引用它,自然得不到想要的東西。

    在循環(huán)程序設計中,利用上面的簡單的基于存儲器的計算模型也能幫助初學者找到形式上一致而內容變化的循環(huán)體語句,從而比較順利地設計出循環(huán)結構。

    例如:求1+2+3+4+…+100的值,如果明白計算機求解問題的都需要基于存儲器,累加實際上是在現(xiàn)在存儲單元中已有數據的基礎上再加入新的數,就會自然想到如圖1的方法:

    給存儲單元命名為sum,逐次加入的數先放在x中,就比較容易想到“形式上一樣的循環(huán)語句”應該是sum=sum+x,并且x的變化范圍是1~100。

    當學生建立起基于存儲器的計算模型后,對其他的C語言程序設計的難點問題,例如函數參數傳遞,數組、指針、結構、鏈表的理解也會變得比較容易。

    (3) 在課堂教學中要特別重視分析程序運行和內存變量的關系

    在學生頭腦中建立了基于存儲器的計算模型后,還需要不斷練習才能加深這種印象,除了學生自己練習以外,在課堂講解例題時可以有意識分析每一步程序運行所導致的內存變量的變化,通過不斷練習提高學生閱讀程序的能力。

    (4) 在C語言的教學活動中,以面向問題分析、算法設計、程序編碼的方式組織知識

    現(xiàn)有的C語言教材一般是按語法的難易程度次序編寫的,這當然是符合人的認知規(guī)律的,但是同時也需要教師在講授的過程中,突出以面向問題分析、設計、編碼的方式組織知識的講解,只有這樣才能使學生在形成用程序的思維方式分析問題、解決問題的能力的過程中少走彎路。

    教材的知識組織方法是語法→例題→程序→解釋,這種沿用已久的方法,在培養(yǎng)學生用計算機的方式思考問題方面,作用不夠充分。

    事實上,算法在人們的頭腦中首先是一種用自然語言描述的“過程”,再通過逐步細化,然后再把它從自然語言轉換成為C語言。在教學的實踐過程中,可以以這樣的方法組織知識:問題→自然語言的過程描述→程序。教師在課堂上,可以在集成開發(fā)環(huán)境中,以注釋的方式用自然語言進行過程描述,然后逐步求精,最后轉換成程序代碼的方法。

    例如:取得一個整數的個位、十位、百位,從問題的描述到問題的解決??梢韵扔米匀徽Z言來解決問題,然后逐步過渡到C語言。

    /*例如有個數5693放到存儲單元x */

    /*目標:取得個位數,方法:x模10的結果是個位數 */

    /*目標:取得十位數,方法:1. x除以10的結果放入存儲單元x, 2. x模10的結果是十位數*/

    /*目標:取得百位數,方法:1. x除以10的結果放入存儲單元x, 2. x模10的結果是百位數*/

    /*目標:取得千位數,方法:1. x除以10的結果放入存儲單元x, 2. x模10的結果是千位數*/

    /* 當x除以10的結果是0時,程序不必繼續(xù)下去*/

    通過自然語言分析,既找到了循環(huán)體語句“1. x除以10的結果放入存儲單元x, 2. x模10”,又找到了循環(huán)控制條件,再翻譯成C語言應該也不再是一件難事。

    3面向學生技能形成的訓練

    程序設計這門課程需要大量的訓練才能真正形成技能,但是現(xiàn)在一些教材習題所存在的一些問題可能傳遞不正確的信息,妨礙技能形成。這些問題包括:

    1) 很多習題結果的正確性是和特定的編譯器相關的,例如:函數中的多個參數的計算順序,printf(”%d,%d,%d”,a+b,a++,++a);在一個表達式中多次出現(xiàn)++、--運算符。這類習題只是訓練了某一個編譯器的使用技巧,而這種技巧在實際的編程實踐中要盡可能地避免使用。

    2) 習題包含較多的數學知識可能妨礙初學者,例如用碾轉相除法求最大公約數,以及對不同三角形的判斷等習題,對培養(yǎng)嚴密的邏輯思維很有好處,但是在教學實踐中的情況看,這些習題反而使得初學者無從下手,所以需要在實踐中平衡利弊。

    3) 過分注重技巧,不利于技能的形成?,F(xiàn)代軟件工程的實踐比較排斥在編程時過于注重技巧,這會導致程序難以維護,所以應該避免過于注重技巧習題。

    面向技能形成的訓練另一個問題是需要保證習題的量,這一點對作為非計算機專業(yè)的學生要求起來比較難。

    4總結

    在現(xiàn)有的教學大綱和教材基本定型的情況下,針對現(xiàn)在學生的認知特點,圍繞高等學校計算機基礎教學的基本要求,本文試圖從課堂教學的角度,找到如何讓學生在頭腦中建立一個最簡單的基于存儲器的計算模型,并在此基礎上結合具體的例子,闡述了培養(yǎng)學生形成用計算機分析、解決問題能力的具體做法。本文的方法已在課堂教學實踐中采用,收到了一定的效果,當然在課堂教學過程中還需不斷改進。

    參考文獻

    [1] 教育部高教司. 關于進一步加強高等學校計算機基礎教學的意見[R]. 2006.

    猜你喜歡
    計算機教育程序設計
    基于Visual Studio Code的C語言程序設計實踐教學探索
    計算機教育(2020年5期)2020-07-24 08:52:56
    從細節(jié)入手,談PLC程序設計技巧
    電子制作(2019年9期)2019-05-30 09:42:04
    基于成果導向教育理念引導高職計算機教育
    亞太教育(2016年31期)2016-12-12 22:02:38
    藝術生計算思維的培養(yǎng)
    科教導刊(2016年29期)2016-12-12 07:34:01
    以就業(yè)為導向的中職計算機教育教學實踐研究
    高職高專院校C語言程序設計教學改革探索
    公安院校計算機課堂教學改革研究初探
    中國市場(2016年41期)2016-11-28 06:37:50
    構建具有專業(yè)美術院校特色的計算機課程教育
    藝術科技(2016年9期)2016-11-18 16:01:34
    關于我國計算機教育MOOC發(fā)展的思考
    OBE理念下基于Greenfoot的Java程序設計課程教學改革
    磴口县| 丰台区| 邵阳市| 永福县| 舟曲县| 永昌县| 福海县| 营口市| 南宁市| 美姑县| 沾益县| 阿坝| 岫岩| 永胜县| 革吉县| 富阳市| 彰化市| 门源| 蒲城县| 德保县| 利津县| 滨海县| 河北省| 鄯善县| 海口市| 梁山县| 长子县| 仁布县| 普兰店市| 巍山| 汕头市| 鹿邑县| 交城县| 萨嘎县| 阳谷县| 稷山县| 巴青县| 白城市| 小金县| 冀州市| 绥宁县|