程序設計語言范文
時間:2023-03-25 08:53:24
導語:如何才能寫好一篇程序設計語言,這就需要搜集整理更多的資料和文獻,歡迎閱讀由公務員之家整理的十篇范文,供你借鑒。
篇1
論文摘要 針對現階段程序設計語言教學中存在的普遍問題,在對程序設計教學思想、程序設計能力認識分析的基礎上,提出程序設計語言教學中的若干要點。
1 引言
在計算機專業(yè)和非計算機專業(yè)的計算機教學中,學校幾乎都設置了高級語言程序設計課程。與一些應用軟件或工具軟件相比,編程課程的教學具有較大的靈活性。很多學生的學習能力較差,課后不肯花時間,久而久之,導致聽不懂,給計算機編程語言課的教學帶來一定的難度。采用何種教學模式進行教學就成為編程語言教學的一個關鍵。
2 現階段程序設計語言教學中存在的普遍問題
根據以往的教學經驗和通過與學生、同事之間的交流,得知部分學生反映上課時都能聽懂講解,可在涉及到具體的編程及上機操作時,往往會出現沒有思路、無從下手或錯誤百出,不會調試程序等各種情況,究其原因,在教學方面可能存在以下2個問題。
2.1 過于注重對語句語法的講解,缺乏以算法為核心的編程題教學教師鐘情于舉一反三地對使用語句、語法的深入教學,而不是有機地結合算法思想進行教學,貼近生活并引起學生興趣的編程題講得很少。由于教學不是站在如何應用計算機工具編程解決實際問題或實際項目的角度,就沒有把邏輯與編程解題思路放在主體地位,也就沒有很好講解如何分析問題和解決問題。結果導致學生程序設計能力、上機解題能力訓練不夠,更談不上引導學生進行課題研究和科研探索。
2.2 學生厭倦傳統(tǒng)的課堂教學,缺乏師生之間的溝通交流學生對于先講后編、先聽后編這一傳統(tǒng)的課堂教學方式有厭倦心理。課堂成了教師的“一言堂”,教與學不能銜接起來。有時教師為了趕進度,講授法成了唯一的教學方法,師生之間缺乏足夠的交流和溝通,學生沒有有效、實用的學習輔助途徑,也間接影響著學生的學習興趣和學習效果。
3 程序設計教學思想解析
學生與教師的角色改變,就是教與學相互滲透的結果。教學中突出學生的主體能動性,是現代教學方法的核心。教學過程是教師根據教學的目的和任務以及學生身心發(fā)展的特點有計劃地引導學生掌握知識、認識客觀世界的過程,是通過知識的傳授和掌握來促進學生身心全面發(fā)展的過程。而在教學過程中一定要按照教學規(guī)律,只有按照教學規(guī)律辦事,才能提高教學質量,增強教學效果,并促進學生思維的拓展和能力的提高。
教學應該在理論與實際的結合過程中傳授和學習基本知識,從而引導學生運用所掌握的知識去分析問題和解決問題,在動手實踐中達到培養(yǎng)學生手腦并用能力的目的。除了進行一些必要的概念講解之外,教師主要應該讓學生通過上機實踐的辦法來掌握所學內容。一方面,通過上機實踐可以加深對課堂理論內容的理解和掌握;另一方面,通過上機實踐可以提高學生上機調試程序的能力,提高學生的編程能力,提高學生分析問題和解決問題的能力。
4 程序設計能力認識
程序是軟件的本體,程序設計(Programming)是指設計、編制、調試程序的方法和過程。它應排除軟件開發(fā)中的工程與管理因素,主要指軟件開發(fā)過程中的技術因素,尤其是計算機技術因素。
根據調查分析,合格程序員必須具有:1)扎實的專業(yè)基礎知識;2)很強的綜合分析和解決問題的能力;3)熟練的編程調試能力;4)創(chuàng)新能力;5)團隊合作能力;6)持續(xù)的自學能力;7)強烈的好奇心;8)較高的英語水平和軟件工程的實踐能力等。
應看到,程序設計能力,并非完全等價于程序員所應具備的專業(yè)素質,它還包括其他一些內容,如:1)理解問題,根據已知條件,找出求解該問題的數學方法或建立相應的數學模型;2)歸納程序的基本功能;3)設計數據結構和算法;4)用程序設計語言實現算法描述;5)編譯與調試;6)測試程序,保證程序正常運行。
綜上所述,可以將程序設計能力定義為:依據程序設計思想與觀念,應用程序設計語言,采用相應程序開發(fā)技術和環(huán)境,進行程序設計并達到預計結果的程度。
5 程序設計語言教學要點分析
基于對程序設計教學思想、程序設計能力的認識,為使學生充分掌握程序設計的思想和方法,有效實現程序設計課程教學目標,我認為程序設計教學還應注意并強調以下幾個基本的教學任務和要求。
5.1 程序設計基本概念的灌輸在整個課程教學過程中,結合具體實例的演示,應向學生反復強調程序,注意學生程序設計中基本概念的理解。學生只有對程序設計基本概念有了正確的掌握,才會為以后課程學習打下基礎,為學習興趣培養(yǎng)埋下伏筆;同時程序設計作為一門特殊意義上的課程,包含了許多計算機用于數據處理的基本原理、基本過程和特點,這些知識蘊藏于程序的基本概念之中,同時這些概念也是程序設計思想與觀念的載體。
5.2 結構化程序設計基本概念的培養(yǎng)結合控制語句結構和函數的學習,應著重培養(yǎng)學生的結構化程序設計的基本觀念。結構化程序設計的基本思想是采用“自頂向下,逐步求精”的程序設計方法和“單入口單出口”的控制結構,它是程序設計的基本原理之一。貫徹課程始終、通過具體實例潛移默化地培養(yǎng)這一思想,比在軟件工程中空洞的說教,更容易被學生理解和接收。
5.3 計算機算法觀念的培養(yǎng)通過控制結構、函數等學習,初步培養(yǎng)學生在程序設計中的算法觀念。如同數據結構觀念培養(yǎng)一樣,一則增強學生的程序設計觀念,二則也為學生留下廣闊的思考空間,以增強學習興趣。再次,通過這種觀念的培養(yǎng),能夠直接提高學生初步的程序設計能力。
5.4 通過優(yōu)秀的有趣的實例,激發(fā)學生學習興趣恩格斯說“興趣與愛好是最好的老師”。為了使初學者能盡快地掌握計算機知識,進入計算機的應用領域,在課程講授過程中,要特別注意培養(yǎng)學生的學習興趣。學習興趣就是學生在心理上對學習活動產生愛好、追求和向往的傾向,是推動學生積極主動學習的直接動力。學習興趣直接關系到教學效果的好壞。為提高學生的學習興趣,筆者歸納出6個辦法:1)通過演示程序突出程序語言的實用性;2)通過簡單的編程練習突出語言的易學性;3)運用恰當的類比使復雜問題形象化、簡單化;4)做到一題多解;5)要善于舉一反三;6)通過解決實際問題使學生樂學。
5.5 有選擇地運用多媒體教學直觀、形象、便捷的多媒體教學可以使學生在有限時間內迅速理解、掌握、獲取更多知識和信息,在教學過程中,我們有選擇地使用多媒體教學,將編程語言語法中的深奧理論和邏輯推理的內容,運用多媒體教學直觀、形象地講授給學生,加深其對問題的理解。這樣的多媒體教學,收到了將抽象問題形象化、枯燥問題生動化的效果。對于多媒體教學不易實施的程序設計方法的講解,我們可以采用傳統(tǒng)的教學方法,教會學生如何思考、推理,如何用語句實現算法,培養(yǎng)了學生的抽象思維、邏輯推理能力。這樣,將傳統(tǒng)的教學方法與多媒體教學相結合,大大提高了學生的綜合思維能力。
5.6 教師在教學過程中,應當注意設置疑難問題,引導學生思考和探索教學時發(fā)現,學生問不出問題的原因往往在于沒有真正學好。實際上,問題是最好的老師,是學生學習的引導者,沒有問題便沒有深入。在教學過程中,引導學生在問題解決中學習,即提出問題,留給學生時間思考、討論、解決問題,從而更深入地展開學習。實踐證明,這種教學方法充分調動了學生學習的積極性和主動性。
5.7 充分利用上機實踐程序設計語言,學生與教師在理論課與實踐課的角色是不同的。教師從課堂上的教學組織者轉變?yōu)樯蠙C操作的指導者。作為教學組織者,負責知識點的傳授,此時教師有較充分的主動性,易于控制所傳遞的知識內容,可使學生在較短時間內獲得較多的知識。但學生只是被動地接受知識,學生的積極參與少。上機操作是實現檢驗計算機編程語言課堂教學效果的重要方面。此時的教師是上機的輔導者,學生親自動手、動腦參與教學活動。但是上機操作課對學生來說是輕松的,若教師管理不當,會造成學生無所事事的局面。上機課是對理論課的應用和檢驗,對教師有更高的要求,因此,上機操作前教師要根據知識點布置相應的練習任務,編程序或調試程序。同時學生要完成有針對性的上機報告,進一步鞏固上機成果。
5.8 布置代表性的作業(yè)做作業(yè)是復習、練習的過程,也是繼續(xù)和深入學習的過程。我們每次課后給學生布置一些有代表性、恰當的習題,以鞏固課堂上所學的內容。也通過學生所做作業(yè)的好壞來了解學生對課程內容的掌握程度以及教師的教學效果。對作業(yè)中比較普遍出現的錯誤,我們都要在下節(jié)課上當堂講解,因為那是在上節(jié)課沒講清楚所致。作業(yè)中表現出與眾不同的、新穎的程序設計方法和思路,也要當堂宣講或作業(yè)批注,以鼓勵這種另辟新徑的有創(chuàng)意的學風。
在程序設計語言教學中,尤其語言基本要素的講解過程中,或隱或顯地,把如上幾點教學內容納入到課堂中,程序設計語言教學必定會從一種就語言而教語言的呆板模式中走出來,充分發(fā)揮出其在程序設計能力培養(yǎng)中的作用。
篇2
關鍵詞:值類性;引用類型;值傳遞;引用傳遞
中圖分類號:TP312文獻標識碼:A文章編號:1009-3044(2007)15-30749-02
Analyzing the Parameter Pass in C# Language
BAI Xue-bing
(Zhejiang Institute of Traffic, Hangzhou 311112, China)
Abstract: the article narrates the parameter pass in c# language, which includes number, array and object parameter pass, and it also tells the difference between the call by value and call by reference.
Key words: value type; reference type; call by value; call by reference
1 引言
目前,隨著程序設計語言的不斷發(fā)展,.NET平臺在windows平臺上已站穩(wěn)腳跟,成為主流的開發(fā)平臺,C#語言作為.Net平臺的主流語言,重要性不言而喻。目前,C#語言已成為唯一能與Java抗衡的語言,而日益受到程序員的喜愛。
在C#程序設計中,常常會運用參數來傳遞對象,然而,在程序設計語言中,參數的傳遞常常使人含混不清,因此,有必要好好的分析一下參數的傳遞,才能使你在運用C#語言時更加的心應手。
首先,我們需要了解C#語言的數據類型,C#語言的數據類型可分為兩大類:一種是值類性(value type),它的數據存放入棧內的一個變量之中。例如整型、浮點與結構體(int、double、struct)。另一種是引用類型(reference type),它的數據不駐留在棧中,而是存儲在堆中。當訪問一個具有引用類型的數據時,需要到棧中檢查變量的內容,該變量引用堆中的一個實際數據。例如類,數組,字符串class,array,string)。由于這兩種類型的數據在參數傳遞時是如此的不同,我們需要分別討論。
2 值類型傳遞
在C#語言中參數的傳遞可分為值傳遞(call by value)與引用傳遞(call by reference),值傳遞中函數將參數復制到子程序的參數中。因此,改變子程序的參數不會影響用于調用的參數。而引用傳遞視將參數的引用傳遞給子程序。在子程序內部,該引用用來訪問調用中的實際參數。
下面我們用例子來說明區(qū)別。引用傳遞在C#中使用關鍵字ref或out。
2.1 值傳遞
在給方法傳遞數值類型時,如int類型或double類型,它們是通過值傳遞。因此,在給這種類型進行值傳遞時,函數的調用并不會影響在主函數的原先的值。
示例如下。
using System;
class Test {
public void noChange(int i, int j) {
i = i + j;
j = -j;}}
class CallByValue {
public static void Main() {
Test ob = new Test();
int a = 15, b = 20;
Console.WriteLine("a and b before call: " + a + " " + b);
ob.noChange(a, b);
Console.WriteLine("a and b after call: " + a + " " + b);
}}
程序產生的結果如下:
A and b before call:15 20
A and b after call:15 20
由此可見,noChange()內部發(fā)生的操作不影響調用中的a和b的值。
2.2 引用傳遞
但是如果你在函數調用參數前使用ref參數,表示使用引用傳遞。
示例如下:
using System;
class Swap {
public void swap(ref int a, ref int b)//參數前加ref表示引用傳遞
{int t;
t = a;
a = b;
b = t; }}
class SwapDemo {
public static void Main() {
Swap ob = new Swap();
int x = 10, y = 20;
Console.WriteLine("x and y before call: " + x + " " + y);
ob.swap(ref x, ref y);
Console.WriteLine("x and y after call: " + x + " " + y); }}
程序產生的結果如下:
A and b before call:1020
A and b after call:2010
由此可見,swap函數()內部發(fā)生的操作影響調用中的a和b的值。如果不使用ref參數,a和b仍然不會變化。
3 引用類型參數傳遞
由于在C#程序設計中,類作為引用類型常常被使用。在參數的傳遞中,類的實例對象常常被用來作為函數參數,因此我們就以對象作為研究對象。另外我們也討論一下數組。
3.1 對象值傳遞
由于對象本身即是引用。因此,當對象被用來當作參數傳遞時,對象本身是通過值傳遞,但是由于對象本身是引用傳遞,改變參數所引用的對象依然改變將影響參數所影響的對象。
示例如下
using System;
class Test {
public int a, b;
public Test(int i, int j) {
a = i;
b = j; }
public void change(Test ob) //調用test類對象ob 值調用
{ ob.a = ob.a + ob.b;
ob.b = -ob.b; }}
class CallByRef {
public static void Main() {
Test ob = new Test(15, 20);
Console.WriteLine("ob.a and ob.b before call: " + ob.a + " " + ob.b);
ob.change(ob);
Console.WriteLine("ob.a and ob.b after call: " + ob.a + " " + ob.b); }}
程序產生的結果如下:
A and b before call:15 20
篇3
隨著社會不斷的發(fā)展與進步,計算機作為現代先進產物的代表,已經很快的進入到社會中的各行各業(yè)。而程序設計作為計算機的核心內容,也同樣引起了大家的重視,同時計算機程序設計也是高校開設的一門重要學科,為了能更好的為社會提供計算機方面的技術型和和設計型人才,就必須重視程序設計的教學。本文針對高校程序設計課程中存在的不足,展開了全面的討論,對高校的程序設計的教學方法和教學內容進行改進。
【關鍵詞】
計算機程序;程序設計語言;教學方法
我國幾乎所有的高校都開設了計算機程序設計這一學科,而程序設計語言教學時計算機程序設計教學中最重要的教學內容之一,對其掌握的程度會直接影響著之后對計算機的學習,也為將來從事本行業(yè)奠定了堅實的基礎。從程序設計語言入手,展開對計算機硬件和軟件的學習,掌握計算機程序設計的基本理念,從而不斷的打造新型計算機技術人才,推動我國計算機行業(yè)的前進。
1 計算機程序設計語言教學現狀
1.1 教學課時短
雖然現在計算機已經很普及,但是多數學生對于其中真正的內涵了解甚微?,F如今的大學主張的是學生自主發(fā)展,因此給學生自由發(fā)展的時間很多,在此同時又主張學生多方面發(fā)展,這就導致學生接觸計算機程序設計的時間較少。教學課時短就成了一個突出的問題,老師只能教給學生一些基礎的理論知識,對于新鮮事物出現在腦海中的時候,學生往往有疑問也不會發(fā)問,再加上在這方面的基礎比較薄弱,就導致了學生們接受比較緩慢。
1.2 學習動力不足
在很多學生眼里,計算機程序設計是一個即枯燥又無味的學科,程序設計語言中涉及了一些數學、英語等其他方面的基礎知識。有很多學生就覺得有些力不從心,覺得程序設計語言就想天書一樣,不能形成用計算機語言去解題的思維方式,對程序設計產生了畏懼心理,就會出現很多知難而退的學生。
1.3 實踐達不到真正的要求
計算機專業(yè)本身就是應用型專業(yè),而恰恰在大學中程序語言教材書中缺少了實踐這一部分,沒能體現出教材的實用性與實踐性,不能起到對學生的實踐能力培養(yǎng)的作用。不能達到對技術型人才的培養(yǎng)。
1.4 教學方法單一,考核方式欠缺
計算機程序設計語言的的教學方式現在還是比較傳統(tǒng)的,往往是老師講同學聽的形式,課后再增加一些實驗,同學只是單純的接受老師傳授的東西,卻缺少了自己的思考,更不能發(fā)表的自己的見解。在上實驗課的時候,大部分同學也只是單單的將書本上程序打入電腦,進行調試成功后就認為完成了任務。學生不知道如何從實際問題出發(fā),老師的檢測方式也就是筆試,而忽略了對實踐的檢驗。
2 解決計算機程序設計語言存在問題的對策
2.1 采用不同的教學方式,提高學生的學習興趣
要讓學生仍是到計算機程序語言的重要性,老師在講解的過程中可以插放一些小動畫或軟件的保護,從而引起學生的興趣。在講課之前老師要帶領著同學看目錄,劃重點,讓學生對程序語言的學習有一定的規(guī)劃,盡量消除學生心里的畏懼感。老師要多和學生溝通,了解學生對所學的東西的了解程度,從而確定教學的進度??傊?,老師在教授程序語言的同時,要以學生為主,多鼓勵學生進步。
學校應該本著培養(yǎng)技能應用型人才,針對少數人或特別的學生,要采用不同的教學方式。適當的增加課時,給老師足夠的時間去引導學生利用程序語言去解決實際問題。
2.2 解決學生實踐不足的現象
學校在選擇教材時,要盡量選擇帶有大量實踐課題的教材,意在提高學生的實踐和創(chuàng)新能力。老師也可以根據不同的學生的學習程度,設定一些課題實踐,增加實踐在整個教學中的比重。單單的課內實驗室不夠的,老師還要多增加一些課程設計,快速的增加學生的綜合實踐能力。
3 改進計算機程序設計語言教學的方法
3.1 程序設計語言教學的重點
教師應該在教學中突出三個重點。一是程序設計中的語法知識,語法是程序設計語言中的基礎,在編程的過程中一定不能出現語法上的錯誤,因為這會給后面的調試帶來很大的麻煩。二是程序中的控制結構,因為在編程的過程中,編程者無論是面向什么進行設計,都會涉及到流程控制結構,所以教師應該突出講解這部分。三是控件的使用,所有的編程幾乎都離不開控件的使用,因此要詳細的講解空間的作用與使用方法,并在實踐中讓學生加深對控件的理解,
3.2 任務驅動教學
計算機程序設計語言是有很多活動范圍的學科,老師可以采取一種探究教學方式,任務驅動教學就是一種從學生角度出發(fā)的的一種教學方式。老師設定一個課程設計,大家首先經過談論分析出課程設計的目的,然后老師和學生圍繞這個課題開始實踐。這種教學方式主要在于培養(yǎng)學生的自主探究的能力和獨自分析問題的能力。學生最初獨自進行編寫程序的時候,老師要引導學生進行思考,將一個大的程序一點一點的分成很多個小的任務,這樣會減少對學生積極性的打擊,之后在協(xié)助學生對自己的程序語言進行修改,讓學生感受自己設計出程序的喜悅,從而提高學生的信心。
3.3 增加教學實例
枯燥無味的課堂,學生往往會對新元素的引入產生興趣,這時老師可以在課堂上引入一些程序案例,實例可以加深學生對課堂內知識的認識,讓學生從整體上了解自己所學的程序語言,讓學生從實例中找到所學知識的應用,同時也會激發(fā)學生的創(chuàng)新意識,培養(yǎng)學生提出問題,解決問題的能力。
4 總結語
在學習程序語言的過程中,教師要用不同的教學方式進行教學,發(fā)現不足并及時的改進,放棄原有的教學方式,以學生為主開展課題設計。不能認為哪種教學方式好就一直使用一種教學方式,這樣會造成學生對課堂的厭煩,無論哪種教學方式,都要以激發(fā)學生學習程序設計語言的興趣。
【參考文獻】
[1],肖海容.《C 語言程序設計》課程教學問題分析及對策研究[J].東莞理工學院學報 ,2013,(5):111-115.
[2]龐爾麗,王欣.大學計算機程序設計語言教學的幾點思考[J].軟件導刊,2013,12(1):183-184.
[3]郝桂英.關于計算機程序設計語言課程教學的探索[J].教育與職業(yè),2007,(17):156-157.
[4]賀忠.游戲思想在程序設計語言課程教學中的應用[J].計算機教育,2009,(13):157-159.
篇4
關鍵詞:大作業(yè);程序設計課程;語言學習;調研
1.初學者學習程序設計語言產生困難的原因
1.1單一化的課程設置
受到教學資源和教學能力的影響,目前國內大學的程序設計課程除了某些特殊專業(yè)的課程需要一些特殊語言(如浙江大學生物醫(yī)學工程系要求采用Mcs51單片機匯編語言)之外,大多數采用C/C++、Java、VB、C#等語言。對于初學者而言,較多院系選擇讓學生學習C/C++,但是學生常常會在后續(xù)其他課程的學習中發(fā)現所學語言并不是需要使用的語言。例如,學生在清華大學水利系課程的學習中,有時會使用到Matlab、VB、Fortran乃至Lisp等語言。
這就對學生如何理解編程思想和設計程序提出挑戰(zhàn),但現狀往往是學生學完了C/C++語言課程,認為掌握得也不錯,卻對別的語言望而生畏。究其原因有以下幾點:①學生只學過c語言,于是只會用C語言編程;②害怕學習其他語言會像C語言一樣枯燥且花費時間;③盡量繞開需要使用語言的地方。最終的結果是學生越來越不敢應用自己曾經學習的編程技能,導致程序設計能力下降。
1.2眾多基礎技能和知識需要學習
對于初學者而言,程序設計這門課的學習任務往往比較重,有各種作業(yè)和實驗課。但不可忽視的是,要想學好程序設計并能夠自主編寫程序,就必須具備一些其他學科的基礎知識,如線性代數、離散數學、算法設計、數據結構等,而主要矛盾就在于上述課程或者沒有開設,或者比較難。因此,這門本來就比較難學的課程容易給初學者造成一個暗示,即“應該先把上述課程學好再來學編程”,這種現象從信心上打擊了初學者。
1.3緊湊的課程設計和短時間內轉化思維
程序設計語言的內容相對較多,受學期學時的限制必然被安排得比較緊湊。對于初學者而言,比較難的正是前面幾節(jié)課,因為就算是一個最簡單的“Hello World!”程序,教師都需要對其中所包含的很多內容進行解釋,有時還會涉及后面章節(jié)的內容(如#include指令和cout命令就涉及頭文件、編譯、運算符等內容)。因此,學生在前面幾節(jié)課中對于很多內容需要先記下來如何使用,然后在后續(xù)的課程學習中再掌握原理,而這會不停地增加初學者的疑惑,直至最終使初學者認為程序設計是一門不適合自己的課程。
編程重在思維的轉化,而這對于初學者來說往往是最難的。無論是面向過程還是面向對象的程序設計語言,對初學者而言都是一種新鮮的思維方式,而不僅僅是一套知識體系。以前受固定思維模式影響比較嚴重的初學者往往難以在短時間內轉換思維,跟上緊湊的課程設計,這導致的最終結果是初學者既沒有學好程序設計,又被打擊了學習信心和積極性。
2.大作業(yè)及其益處分析
2.1大作業(yè)概述
大作業(yè)不同于一般的編程練習題,從量和復雜度上來說都有相當大的區(qū)別。大作業(yè)是一個較為完整的程序開發(fā)過程,具體來說就是要求學生編程解決一個有一定難度的問題,綜合利用所學課程的基本內容、基本理論和知識結構對難點問題進行分析的作業(yè)形式。
2.2原始調研數據羅列
筆者通過對北京地區(qū)17所高校的60名程序設計課程初學者進行訪談(調查問卷及結果如表1所示),了解他們學習程序設計語言產生困難的原因以及他們的學習方式和看法
2.3數據處理和益處分析
綜合被調研者的口述內容和調研數據,大作業(yè)有以下幾個優(yōu)點:訓練方面廣、靈活性較強、連貫性強。
1)訓練方面廣。是否進行大作業(yè)設計的初學者平均代碼編寫行數如圖1所示。從數據上來看,進行大作業(yè)的初學者為44人,占總調研人數的73.3%;進行大作業(yè)設計的初學者平均代碼編寫行數是不進行大作業(yè)設計的初學者平均代碼編寫行數的5倍,其中有11名初學者編寫的程序多于1000行。可以看出,編寫大程序可以保證初學者盡量多地使用語言。
2)靈活性較強。主要表現在不同大學不同課程的大作業(yè)具體內容的實行上,包括2個方面。首先,從設計命題(有的學校不要求)到開題,再到算法討論和實現以及最后的程序提交和總結過程,導師都可以針對不同的要求和課程難度設置,靈活地安排大作業(yè)難度。在調研中,也有初學者表示他們可以按照自己的水平,靈活地選擇目標和方向以及需要自己完成的項目。其次,導師的考查形式具有靈活性,對于開放性問題,導師可以設置面試答辯方式,也可以使用提交報告和運行展示的方式??疾闀r間可以設置在項目進程的關鍵時期,此期間可以由初學者進行一些匯報展示等。
3)連貫性強。主要表現在初學者的表述上。有的學校會為大作業(yè)設置一些必須使用的關鍵技術(如文件讀取、多態(tài)、繼承等)。比較優(yōu)秀的大作業(yè)程序設計重點應該放在核心思路的討論和核心算法的優(yōu)選上。程序設計往往貫穿整個學期,有的學校還專門設計一套時間表,精確到每個具體日期,要求初學者在某個日期提交程序設計的具體內容。從程序設計安排上看,大多數學校主要以培養(yǎng)編程習慣和熟練度作為編程核心,有條件的會更加重視思維的培養(yǎng)和小組團隊合作共同開發(fā)的能力訓練。大作業(yè)可以比較容易地將教學、自學、互學聯系在一起,將整個學期的課程串起來。
對于初學者而言,面對程序設計有兩道坎。第一是掌握語言本身,即能夠順利地使用本門課程的語言達到自己想要的目標。第二是掌握程序設計思想,即掌握結構化程序設計的精髓,以便在后續(xù)的應用中舉一反三。初學者通過一般的小作業(yè)能夠鞏固基本的程序設計語言知識,相對而言,通過大作業(yè)則能夠將程序語言的學習內容貫穿起來,訓練整體思維的同時還能夠加強程序使用的熟練度,提高小組合作能力和自主解決問題的能力,在量和質上達到飛躍。最關鍵的是,由于大作業(yè)課堂上的知識很難滿足需求,使得初學者在實踐過程中自主學習新的技術和算法,提高了自學程序設計語言和舉一反三的能力,為后續(xù)程序設計思想的培養(yǎng)奠定基礎。
3.面臨的挑戰(zhàn)
總的來看,90%以上的學生認為大作業(yè)對編程訓練有效果,其中有半數以上認為這個作業(yè)很值得做。然而,筆者綜合60名受訪者陳述的觀點發(fā)現,相當多的學生仍然無法達到培養(yǎng)編程思想并在后續(xù)學習中運用該編程思想的目標,仍然為后續(xù)語言需求不對等的問題感到迷茫。究其原因主要包括以下幾個方面:①題目由老師布置;②幾乎沒有小組合作;③繁重的課業(yè)導致學生無法專心投入;④沒有改進程序的意識,認為能夠編出程序即可;⑤考查形式對于學生沒有壓力。
中國的“傳授一接受”教學模式會使學生減少自主學習活動,逐漸產生依賴教師的習慣,降低自主學習能力。對于教師的依賴使得學生不愿意自主設計命題,即使設計出命題,該命題也存在各種缺陷。少見的小組合作模式是難點,學生沒有小組合作的習慣,其實小組合作的模式不僅能培養(yǎng)學生合作討論并解決問題的能力,而且可以起到讓學生相互監(jiān)督和督促的作用。學生對于課業(yè)壓力與學習精力的平衡較難把握,除了面對繁重的學習壓力還要完成大作業(yè),算法的設計和優(yōu)化也是需要面對的難題,需要學生投入較大精力。學生動手能力的提高過程中需要解決2大問題:①程序設計能力;②程序調試能力。這2個問題相輔相成,都是一個逐步實踐和提高的過程,怎么從中找到一個平衡也是教師亟待思考的問題。
4.結語
學生對于程序設計語言的學習有語言設計不對口、牽連知識多、思維轉化難等困難。綜合整個調研,筆者發(fā)現被廣泛采用的大作業(yè)教學模式有相當突出的優(yōu)點,應用形式也多種多樣,是很有意義也很值得推廣的一種作業(yè)形式。很多學生無法達到培養(yǎng)程序設計思維能力的目標,而這正是教師通過一門程序課程教學所要達到的目標,因此在大作業(yè)的完成過程中,教師應該更加關注這方面內容和技能的培養(yǎng)。
該調研有幾個明顯缺陷:①樣本容量不夠大,調查區(qū)域不夠廣,主要涉及北京地區(qū)大學本科教學的一小個方面;②調研采訪的方式較為固定,應結合多種方法進行綜合調研;③調研對象僅涉及學生,應該擴展到廣泛的教學工作者。
篇5
關鍵詞:程序設計;教學策略;教學方法
中圖分類號:G424 文獻標識碼:A 文章編號:1009-3044(2013)31-7034-03
一直以來,《VB程序設計語言》內容都是計算機教學難點,對于教師教學、學生學習都有很大難度。所謂“擒賊先擒王”,教師和學生到底遇到怎樣的困難呢?本人采取問卷調查方式,并結合自身教學實踐,總結出師生各自難點。教師的難點包括:首先,學生缺乏學習興趣,很難調動他們參與程序設計學習。其次,教材基本上都是理論知識,比較枯燥,大部分學生不愿意聽,如果不講學生就不清楚。最后,相比于教學內容,課時明顯不足,課時安排間隔時間長,學生容易遺忘。學生的難點包括:首先,存在學習心理障礙。教材案例基本都是數學問題,有的一看就知道答案,學生會有疑問:“這么簡單的問題為什么還要用計算機解決,太麻煩了”;還有的問題在數學課上就很難搞懂,然后計算機課上老師又反復解釋,使學生感到厭煩。其次,理論知識枯燥無味,脫離實踐需要。在課堂上,教師都是在講解計算方法、表達式、語句,學生不清楚為何要學這些,到底是什么情況,不知道程序設計用于解決哪種問題。最后,教師不留給學生做作業(yè)的時間或者干脆不布置作業(yè),造成學生只掌握一些知識片段,不能形成完整知識體系。
為此,本人希望探索程序設計語言教學策略,運用科學教學方法,增強學生學習信心,培養(yǎng)學生自主探究學習能力,讓學生更好掌握程序設計知識。
1 尋找課堂教學的切入點,培養(yǎng)學生探究能力
在課堂教學中要把握好切入點,創(chuàng)設具體問題情境,培養(yǎng)學生思維能力。立足于信息傳播、接收、保存教學思想,把課堂導入作為點燃學生思維火花的“導火索”。好的課堂導入能夠讓學生自主探究學習,循序漸進地啟發(fā)學生思維,學生更容易理解接受新知識。反之,如果課堂切入點選擇不合理,缺乏邏輯性,課堂教學環(huán)節(jié)就不能有效銜接,導致教學混亂。
1.1 以貼近生活的例子,激發(fā)學生的學習興趣
比如,我在上“計時器控件”一課時,恰逢南京準備舉辦2014年世界青年奧運會,所以就這樣設計課堂切入點:“南京將在2014年舉辦世界青年奧運會,這是南京前所未有的機遇,我們?yōu)槟暇┥陫W成功做了很多,而承辦奧運會需要我們付出更多,我們應該為青年奧運會做些什么呢?那么,我們計算機專業(yè)學生就做一個倒計時程序吧?!比缓髮⒄n前準備好的程序打開,自然過渡到本節(jié)課“計時器控件”學習。2014年南京世界青年奧運會承載著南京人民的夢想,也是所有世界青年追尋的理想,通過這樣導入把學生注意力集中到課堂上來。
1.2 以巧妙設計的數學問題,加深概念的理解化
《VB 程序設計》課程內容十分豐富,對于一些概念不同點,假如教師僅僅是解釋字面意思,盡管學生容易接受,但很難把握其深刻含義,掌握的知識也是膚淺的。因此,教師要讓學生親身參與實踐活動,體驗問題解決過程,從而加深知識理解。
比如,本人在講解“整型變量”、“單精度變量”和“雙精度變量”時,采用以下導入方式:首先讓學生通過編程來計算5!,在編程過程中學生都用整型來定義變量,獲得準確計算結果,接著讓學生修改程序計算10!,僅僅是對計算數字進行修改,但電腦并沒有顯示正確答案,出現“數據溢出”的提示,學生感到很困惑。這時,教師應指導學生修改程序變量,用單精度進行定義,從而獲得正確答案。然后再讓學生修改程序計算100!,如果學生還是采用單精度程序變量,那么,“數據溢出”的提示會再次出現,學生自然會想到用雙精度來定義程序變量,電腦顯示正確計算結果,這樣就掌握了知識。學生通過實踐體驗,學會區(qū)分整型變量、單精度變量和雙精度變量,加深對知識的理解。另外,因為所有活動都是學生自主參與,不僅要動手,還要動腦,有利于激發(fā)學生探究學習的積極性。
2 重排課堂教學順序,遵循學生認知規(guī)律
課堂教學應擺脫教材固有知識邏輯順序束縛,根據學生實際知識能力水平,遵循學生認知發(fā)展規(guī)律,從易到難、從個別到一般,合理調整安排課堂教學環(huán)節(jié),通過觀察、模仿、理解、總結、升華五個步驟,發(fā)揮學生課堂教學主體作用。
VB教學一般來說都是先介紹一些抽象難懂的程序設計概念,包括計算方法、對象屬性、流程圖畫、事件、對象等,接著講解程序編寫、程序運行,最后介紹VB語言基礎、數組、分支結構以及循環(huán)結構。從教材知識邏輯關系角度上看,這種安排也是正常的,但考慮到學生認知規(guī)律特點,本人認為,如果學生一開始就接觸抽象難懂的專業(yè)術語概念會出現一些問題。首先,學生在相關知識完全空白的情況下,很難理解這些概念。其次,學習難度太大會挫傷學生學習積極性。所以建議,開始上課時先不要給學生講這些抽象籠統(tǒng)概念,而是運用一系列具體案例,讓學生直觀感受體驗,對概念有初步了解,接著教師引導學生一起總結歸納。因此,本人在課堂教學開始階段采用類比、自然過渡等方法,讓學生自己打開VB軟件,自己建立、保存程序,觀察、認識軟件界面,鼓勵學生自主探究學習,尋找VB軟件和過去所學軟件的共同點和不同點。因為之前學生已經學過office軟件操作,對于這些類似操作十分熟悉,所以上手很快。接著,教師給出一個實例計算任意兩個整數之和,和學生共同完成。學生動手操作時,教師不用把每個概念都詳細講解,在實踐過程中,學生自己會碰到很多問題,并逐漸理解體會對象及其屬性,掌握事件設置方法,學會將對象添加到軟件界面等。另外,教師應適當引導學生總結歸納所學知識,這樣就可以有效解決問題。
3 巧用編程“錯誤”,培養(yǎng)學生反思能力
對于課堂教學中的隱藏錯誤,通常學生都難以察覺,教師如果發(fā)現錯誤,盡量不要直接說明,而是引導學生觀察、思考,通過比較分析逐漸發(fā)現錯誤。同時,學生對于自身隱藏錯誤往往很感興趣,學習過程中找到自己的錯誤會讓學生更有動力,教師可以利用這一特點,鼓勵學生自己多總結反思。
比如,本人在上“分支結構”這一課時,采用以下教學設計:
①運行程序時,電腦屏幕上會出現“你幸福嗎?”幾個字。
②如果用鍵盤輸入“y”,電腦就會顯示“幸福”,輸入其他內容,電腦就會顯示“不幸福”。
學生在進行程序調試運行時,會碰到很多問題。比如,輸入小寫字母“y”,就顯示微笑表情,為什么輸入大寫字母“Y”,電腦就無法顯示微笑表情?這時,教師要幫助學生一同分析程序哪里出現問題?出現問題原因是什么?這種錯誤會帶來怎樣影響?應該采取何種解決辦法?引導學生思考分析,鼓勵學生大膽嘗試,自己解決問題。學生往往會有不同解決辦法,像有的學生采用SELECT CASE語句,還有的學生采用兩個IF語句等。通過長期培養(yǎng),這有利于大幅提高學生編程的科學性、嚴謹性。
另外,本人還制定了如下的學習表格,主要是為了讓學生學會自我反思,培養(yǎng)學生獨立思考能力,讓他們更深刻理解把握新知識。
再像上《設計一個猜數小游戲》一課時,本人在課堂教學中設計了“大家來找茬”環(huán)節(jié),向學生展示一個“半成品”程序。程序代碼中故意設置6個錯誤,這些錯誤都是學生編寫代碼時很容易出現的錯誤,把程序發(fā)送到學生端計算機,學生在設計好的軟件界面上調試運行這些程序,檢查錯誤。同時,課堂上進行找錯比賽,看誰找的錯誤多,找錯速度快,而且可以很好修改錯誤。這有利于充分調動學生課堂參與積極性,讓學生獲得成功體驗,培養(yǎng)學生學習興趣。
4 精選游戲實例,激發(fā)學生興趣
根據教育心理學理論,我們知道,學生永遠對那些“小玩意”很感興趣,只有“玩”永遠不會讓他們感到厭倦。興趣是學生學習的根本動力,因此,本人在設計教學方案時,決定讓學生通過“玩”來學習知識。通過上網搜索大量資料,并整合其他教學資源,設計了一系列教學游戲環(huán)節(jié),像《剪刀、石頭、布》、《數字排序》、《彈性小球》、《蝴蝶飛舞》、《抽大獎》等,有效豐富了程序設計課堂教學。這些游戲包含著不同知識點,為學生創(chuàng)造輕松、快樂的學習環(huán)境,讓學生在游戲中有收獲,真正體驗學習的樂趣。
比如,《剪刀、石頭、布》就是學生十分熟悉的游戲,規(guī)則簡單易懂,可以讓學生快速進入教學情境?!罢l獲勝?如何判斷?”能有效解決條件語句難以理解問題。還有像《蝴蝶飛舞》游戲,既要運用隨機函數知識,還要利用photoshop軟件處理圖像素材。這些教學游戲十分貼近學生實際,生動形象地傳授知識。
5 設計有效練習,挖掘學生思維潛能
人類最高層次思維心態(tài)就是創(chuàng)造性,這也是一種高級智力表現。創(chuàng)新能力是建立在創(chuàng)新思維基礎上的,所以,教師在教學過程中應有意識培養(yǎng)學生創(chuàng)新思維,鼓勵學生大膽嘗試,運用新思想、新方法學習知識。
比如,在學習“MOVE方法”這部分內容時,本人上課一開始就向學生介紹:窗口界面上有一輛汽車,還有“行駛”、“停止”兩個按鈕,點擊“行駛”按鈕,汽車就會移動;點擊“停止”按鈕,汽車就會停止。在汽車運動過程中,學生思維得到啟發(fā)。本人以此為導入,給學生講解“MOVE方法”,引導學生認真聽講,接著自己動手編寫程序,讓學生充分參與課堂教學。
而在上“雙循環(huán)結構”一課時,本人設置了以下問題:怎樣讓電腦屏幕顯示“*”拼成的平行四邊形?這個題目并不難,教師只需簡單講解,學生就可以模仿完成,在此基礎上然后要求學生修改程序,完成以下任務:
①怎樣讓電腦屏幕顯示“*”拼成的三角形?
②怎樣讓電腦屏幕顯示“*”拼成的菱形?
③用“*”設計一個創(chuàng)意圖案。
學生在課堂教學過程中思維一直處于緊張、興奮狀態(tài),形成濃厚的學習興趣,不僅可以培養(yǎng)學生比較、分析、概括的抽象思維能力,還可以培養(yǎng)學生發(fā)散思維能力和創(chuàng)新意識。這種教學活動可以很好吸引學生注意力,提高學生思維活躍度。
6 建立完善評價體系,提高學生綜合素養(yǎng)
對于學生來說,學習積極性起到重要推動作用,那這種積極性來自哪里呢?這里我們就要談到科學評價機制。為充分發(fā)揮教學評價作用,改進教學工作,本人制定了以下兩種評價量表,把自我評價和他人評價有機結合起來。
第一份評價量表是“我問,我答,我行”。在開學時,教師就要把該量表發(fā)給學生,讓他們自己保存、進行自我評價,記錄平時課堂表現情況,這是一種有效的學生自評方法。其特點是給予學生充分信任,有利于培養(yǎng)學生自覺性和誠實品質。表格之所以用這樣的標題,主要是為了提供學生心理暗示,鼓勵學生展示個性風采,盡情發(fā)揮自己的才華,其評價結果占總評的20%。
第二份評價量表是“我做,我思,我真行”,主要針對學生日常作業(yè)情況,屬于一種他人評價方法。其評價主體不僅僅是老師,還包括同學、組長等,具體根據任務要求來確定。該評價主要特點是有明確的量規(guī),通過三維教學目標來細化任務內容,形成具體規(guī)范。這種評價優(yōu)點是可以讓教師更好把握學生實際學習情況,可以及時調整教學計劃,改進教學設計。該評價結果占總評的40%,最后剩下的40%為學期考核成績。
總而言之,教學講究方法,但不是一成不變的。程序設計教學目標是讓學生掌握編程基礎知識,培養(yǎng)其分析解決實際問題的能力。根據該目標要求,《VB程序設計教學》應改變傳統(tǒng)教學方法,從學生實際出發(fā),合理設計課堂教學活動。在教學過程中,教師必須遵循學生認知規(guī)律,綜合運用多種教學方法,提高學生綜合素質能力,實現程序設計教學目標。
參考文獻:
[1] 吳友斌.面向職高學生的程序設計教學策略[J].時代教育(教育教學版),2010(02).
[2] 曹雪麗.高中算法與程序設計教學四部曲[J].中小學信息技術教育,2012(Z1).
篇6
中圖分類號:G642
1 程序設計語言類課程的教學現狀及問題
計算機學科知識結構更新快,其中,程序設計語言在短短的幾十年間經歷了較大變化。語言類課程是計算機學科的專業(yè)基礎課程,其學習效果直接影響其他后續(xù)課程。當前語言類課程教學主要面臨以下問題。
1.1 課程體系設置單一
國內高校計算機專業(yè)的程序設計語言類課程大多是過程式或者面向對象的命令式編程語言,課程體系設置單一。不可否認,這類語言無論是從學科性還是有用性上講,都是合適的。然而,程序設計語言不僅僅是這類命令式語言,它還包括如ML、Haskell這樣經典的函數式編程語言,或者如兼顧面向對象和函數式的Scala語言等。從某種意義上講,函數式編程能夠更大程度地鍛煉計算思維[1]。在多核并行程序設計已經被推到前沿的今天,命令式編程語言天生的缺陷使得構造并行編程模型變得非常復雜,而函數式編程在經歷數十年的發(fā)展之后,終于不再局限于實驗室的理論研究。事實上,如果不懂得函數式編程,Google不可能創(chuàng)造出MapReduce。
1.2 教學過程僵化
程序設計語言類課程的傳統(tǒng)講授是按照編程語言類教材的典型撰寫次序,先講常量、變量、數據類型等,再講表達式、語句等,再比較復雜的語言特點,這些花費了較多時間,最后可能不再有多余的時間剖析該語言的內建庫函數或者類,更少涉及該門課程與后續(xù)課程的銜接關系。這種傳統(tǒng)的講授方式針對第一門程序設計語言課程的教學,特別對那些沒有接觸過編程語言的學生來講,可能是一種較好的方式[2]。然而,對于第二門程序設計語言的授課,按照這種按部就班的教學過程推進教學進度時,由于在較長一段教學活動中所講授的都是孤立的語法點,學生看不到一個較為完整的應用實例,也不了解這門課程與其他課程之間的貫通,容易產生厭學的心理,也很難體會程序語言的設計藝術。
1.3 重編程技能,輕計算思維
針對程序設計語言類課程實踐性特別強的特點,許多教改措施都是針對如何提高學生的工程應用實踐技能的[2-3],如采用案例化、任務驅動、項目驅動等方式。編程技術固然重要,然而計算思維比單純技術更加重要。培養(yǎng)學生以計算機的方式進行思考和解決問題,讓他們認識到程序是思想的表現形式,最終能夠通過語言來表達思考與設計,并能理解這門語言設計和實現的長處、不足、限制等。為了達到這個目標,需要引導學生深入理解編程語言本身。
2 教學改革措施
2.1 增設函數式編程語言課程
函數式編程模型早在面向對象概念出現之前就已經存在了,它的核心是lambda演算。由于其語法不如命令式語言的語法直觀易懂,許多初次接觸函數式編程的人常常不知所措,會覺得難以理解。然而,這種難以理解性與熟悉程度相關。近20年的課程改革中,因為種種原因,程序設計語言類課程體系幾乎完全拋棄了函數式程序設計語言。如今,多核時代的興起,函數式程序代碼的簡潔性使得它在并發(fā)應用領域綻放光彩。雖然實用性是我們應當考慮的一個方面,但是從培養(yǎng)學生計算思維以及從編程語言本身的研究方面,增設函數式編程語言課程是很有必要的。
常用的函數式編程語言或者具備函數式編程語言特點的編程語言包括Haskell、ML、OCaml 、Scala等。依據需要可以選擇不同的函數式編程語言:如果傾向于編程語言本身的理解,可以選擇純函數式的ML、Haskell,或者OCaml;如果傾向于并行分布式程序的開發(fā),可以選擇結合了面向對象和函數式特點的Scala語言,它兼容Java。此外,Java 8的lambda表達式也是一個不錯的學習函數式編程的選擇。
2.2 適當調整講授內容的次序
以Java程序設計語言的教學為例,按照常規(guī)教材的編寫次序,Java的教學內容通常是先講變量、類型、表達式和語句,然后是數組,接著是類和對象、繼承等。在實踐中我們對講授內容的次序進行了調整:在對Java語言作了初步介紹之后,緊接著講解對象的創(chuàng)建和使用,見表1。表1第2行的內容不再放在講解了類的定義之后。這個調整出于兩方面的考慮:一方面,讓學生盡快建立對象的概念,知道怎么使用對象;另一方面,數組在Java程序設計語言中視為對象,因此,講解了如何使用對象之后有利于數組的講解。而類的定義涉及較多語法知識,在講解了如何使用對象、變量、類型、表達式和語句之后,引導學生考慮這個問題――我們能不能按照自己的設計來創(chuàng)建對象呢,于是開始講解類的定義,見表1第5行。
為了講解如何使用對象,首先選擇兩個常用的Java內建類――字符串String和System,針對已經學習了C語言程序設計的學生,從教學效果上看,盡管學生還沒有接觸到Java的各種語法規(guī)則,但是他們仍然接受了“對象”這個知識點的講授。更重要的是,他們建立了對象的初步印象,了解了Java與C的不同,并在一定程度上激發(fā)了學生的學習興趣。
由于Java程序需要使用標準輸出流的方法System.out.print()用于輸出程序的運行結果,學生就問:Java程序怎么輸入呢?此時,對輸入輸出流進行較為完整的講解顯然不合適,在講解使用對象時,我們進一步講解如何使用Java的字符緩沖輸入流類BufferedReader,直接給出如下板書:
BufferedReader br = new BufferedReader(
//BufferedReader需要一個Reader類型的參數
//InputStreamReader就是一個Reader
new InputStreamReader(
//InputStreamReader需要一個InputStream類型的參//數,System.in就是一個InputStream
System.in));// System.in用于接受鍵盤的輸入
br.readLine(); //BufferedReader的readLine
//方法讀入一行
以上這段代碼稍顯復雜,學生在課余可以仔細研究并進行試驗。實踐表明,這些Java常用內建類的使用在教學初期給出時,不但沒有造成學生的困惑和畏懼,反而提升了學生的學習熱情。
2.3 引導學生深入理解程序設計語言
程序?O計語言類課程對于培養(yǎng)學生的計算思維非常重要,需要學生深入理解程序設計語言本身的設計與實現,而不僅僅是學習單純的語法。
通常學生因其視野的局限性和課時的限制,無法深入學習一門程序設計語言。教師在授課時應該找機會引導學生去深入理解。通常,語言設計和實現者提供了API文檔和源碼,這些是深入理解一門編程語言最直接也是非常好的參考資料。如果學生能夠養(yǎng)成查看API的習慣,無疑能夠促進對語言的認識和理解。以引用類型變量的講解為例,假設變量p引用的是一個Person類型的對象,變量s引用的是一個String字符串對象。System.out.print(p)輸出結果是代表對象地址的哈希碼,而System.out.print(s)輸出了一個字符串。這是為什么呢?同時,有學生就會提出疑問:System.out.print(p)是否可以直接輸出p所引用的Person對象的成員值,如姓名和年齡等,而System.out.print(s)是否可以輸出這個字符串對象的地址哈希值?在這個過程中,可以引導學生逐步查找對應的API,如圖1所示。最后可以進一步查看Object類和String類對應方法的實現源碼。知道了這個思路后,學生豁然開朗,開始著手解決問題。
在教學實踐中,我們常常鼓勵學生按照這種方法去找解決思路,而不是直接給出答案。得益于Java的開源,在Java程序設計語言的教學活動中,我們也鼓勵學生查看javac編譯器或者JVM的即時編譯器的實現源碼。學生通過這種學習方式,在長期使用一門程序設計語言后,最終能夠駕馭語言,表達類似計算機方式的思考與設計。
篇7
關鍵詞:問題誘導;啟發(fā)式教學;程序設計語言;教學方法
目前大多數程序設計語言按照知識點結構進行教學,教師在教學過程中習慣性地進行注入式教學。這種教學方法造成學生只能照搬照套模仿示例代碼,不能靈活運用所學知識,難于自己動手編寫代碼以解決實際問題[1]。著名科學家牛頓發(fā)現“成熟的蘋果從樹上掉下來”這一自然現象,才逐步分析問題、研究問題,提出了萬有引力定律;而不是先研究出萬有引力定律,才推導出實際結果或發(fā)現現象。所以科學家們都是從實際問題、具體現象出發(fā),分析問題,研究問題,從實踐升華到理論,再從理論應用到實踐。當教師在向學生傳授科學家們研究出的科研成果時,應該讓學生先了解存在的問題、知識的來源、過程,以深入理解知識、能夠靈活應用知識,而不是簡單地告訴其成果,然后應用到實踐中。
我們要培養(yǎng)出具有創(chuàng)新能力的人才,不僅要采用啟發(fā)式方法促進學生對知識的理解與應用,更迫切需要按照知識被發(fā)現、研究和應用的“再現”過程,傳遞知識給學生,讓學生理解知識的本質。所以,本文研究問題誘導啟發(fā)式程序設計語言教學方法,在教學中從具體的問題入手,啟發(fā)式地引導學生理解程序設計語言中的基本概念、基本結構和基本方法,然后應用到具體實例中。本文以面向對象程序設計語言Java為例,從基礎知識、程序算法、過程和函數、圖形用戶界面設計等方面分析問題誘導啟發(fā)式教學方法在程序設計語言的應用。
1啟發(fā)式教學方法
啟發(fā)式教學是歷代東西方教育思想的精華。早在兩千多年前,孔子就提出了“不憤不啟,不悱不發(fā);舉一隅而不以三隅反,則不復也”的啟發(fā)式思想。他強調學思結合,認為只有當學生處于積極狀態(tài)時,在心求通而未得其意時,在知其意而不能言時,教師進行啟發(fā)、誘導最為合適,教學效果最佳。同樣,古希臘蘇格拉底提出了“助產術”,以交流方式講學,在交談時提出問題,引導學生進行思索,自己得出結論。孔子和蘇格拉底的啟發(fā)式思想和方法,為古今中外歷代教育家繼承和發(fā)展,形成了今天的啟發(fā)式教學思想、原則和方法[2]。啟發(fā)式教學方法具有很多形式,包括經常使用的正問啟發(fā)、從問題對立角度提出的反問啟發(fā)、增強學生直觀印象的觀察啟發(fā)、依據知識點內在聯系進行邏輯推理的推理啟發(fā)、使學生加深對知識內涵和外延認識理解的對比啟發(fā)、類比啟發(fā)、發(fā)散啟發(fā)、圖示啟發(fā)等[3]。
問題啟發(fā)是啟發(fā)式教學方法的重要途徑,問題本身的質量是影響啟發(fā)式教學效果的重要因素。根據美國密歇根大學教育學院的研究報告,一個好的啟發(fā)式問題應該是有價值的、可行的、可持續(xù)的、合倫理的。有價值的啟發(fā)式問題可以使學生真正理解知識點,學習到有價值的知識。可行的啟發(fā)式問題應該是學生在已經掌握的知識基礎上,利用教材和參考資料、互聯網等資源,通過研究、討論等形式可以解決的??沙掷m(xù)的啟發(fā)式問題應該能夠擴展已有知識,發(fā)現新知識。合倫理的啟發(fā)式問題應該是積極健康的、合乎倫理的。
2程序設計語言教學
在計算機課程體系中,程序設計語言包括匯編語言和高級程序設計語言。程序設計語言是計算機領域專業(yè)的核心基礎課程,在課程體系中處于先導性和基礎性地位,是學習后續(xù)課程的重要技術和工具基礎。程序設計語言課程的學習不僅可以使學生獲得基本的程序設計能力、培養(yǎng)學生基于計算機計算的思考能力,還極大影響學生對后續(xù)課程的學習和興趣。程序設計語言教學主要講授基本語法、常用的函數、典型算法和編程技巧,培養(yǎng)學生具備程序設計思想解決實際問題的能力。
3問題誘導啟發(fā)式教學
問題誘導就是按照知識被發(fā)現、研究和應用的“再現”過程,傳遞知識給學生,讓學生理解知識的本質。問題誘導啟發(fā)式程序設計語言教學方法是在教學中從具體的問題入手,啟發(fā)式地引導學生理解程序設計語言中的基本概念、基本結構和基本方法,然后應用到具體實例中。本文將問題誘導啟發(fā)式方法應用到具體的Java程序設計語言教學中[4-6]。
3.1基礎知識
程序設計語言的基礎知識點有標識符、注釋、分隔符、變量和常量、數據類型、運算符、表達式、數組、語句。
對于標識符,通常的做法是先介紹標識符的命名規(guī)則、作用,然后給出示例。在Java語言中,標識符是以字母、下劃線或美元符$開頭,字母、下劃線、美元符$、數字組成的任意長度的字符序列,用于表示程序中的變量、常量、類、函數等名字。合法標識符:A, a1, $Systembol, square, ex_sa;不合法標識符:1a(不能以數字1開頭),break(禁止使用保留字),TWO WORDS(不能含有空格),.NO(不能有圓點)。本文采用問題誘導策略的啟發(fā)式方法是先提出問題:程序需要由CPU執(zhí)行,讀取并處理內存的數據。CPU如何找到數據?根據內存地址?高級語言不會知道數據的內存地址的,所以給數據所在的內存地址起名,這就是標識符命名程序要訪問的數據。對標識符的命名就像我們對日常的起名一樣,必須要有一定的規(guī)則,這就是標識符命名規(guī)則。
對于注釋,通常是依次講授注釋的表示方法、作用。在Java語言中有3種注釋形式:“//”單行注釋:表示從此向后,直到行尾都是注釋;“/*……*/”塊注釋:表示在“/*”和“*/”之間都是注釋;“/**……*/”文檔注釋:所有在“/**”和“*/”之間的內容可以用來自動形成文檔。注釋的作用:對程序的執(zhí)行不產生任何影響,注釋可增加程序的可讀性,也有利于程序的修改、調試和交流。采用問題誘導的啟發(fā)式方法是先提出問題:如何使形式化的程序易讀、便于交流?如何讓程序員很快能回憶起以前編寫的程序代碼的含義?在Java中提供了便于理解程序的可以采用自然語言編寫的注釋。當然,這種自然語言編寫的注釋不會影響程序的運行,僅僅是對程序的一種補充說明。
對于分隔符,通常會列舉出空格、逗號、分號及行結束符等分隔符,并給出示例。采用問題誘導策略的啟發(fā)式方法是先提出問題:如何區(qū)分語言元素如關鍵字、標識符、運算符等?與漢語不同,在英文中需要采用分隔符將單詞分割開來。例如,我是一名教師,對應的英文:I am a teacher,這里必須采用空格作為分隔符;否則我們是無法理解沒有空格的英文Iamateacher。程序設計語言和英語一樣是西文字符表示的,所以需要采用分隔符區(qū)分語言中的語言元素。此外,和英文中的段落劃分便于閱讀相同,分隔符也可以提高程序的可讀性。
對于變量和常量,通常依次給出變量的含義、類型、定義形式、引用形式、作用域等。在Java語言中,變量是程序運行期間其值可以變化的量。變量的類型決定了該變量的存儲范圍、可以進行的運算形式。布爾型的變量只能取值: true和false,只能進行取反、并、或、異或邏輯運算,不能進行加減乘除運算。變量的定義和引用形式示例代碼段如下:
bool sex;//定義變量
sex=true;//引用變量
采用問題誘導的啟發(fā)式方法先提出問題:在程序運行過程中CPU讀取并處理內存數據,CPU如何獲取數據所在的內存地址?這就要求程序標識命名CPU所訪問數據的內存地址。在程序運行中如果該存儲單元的值可以變化,就是變量,否則就是常量。例如一個根據半徑計算圓面積的程序中,半徑是變量,圓周率是常量。
具體代碼段如下:
final float PI=3.1415926F;//圓周率
float radius=2.0F;//半徑
float area;//面積
area=PI*radius*radius;//計算圓面積
對于數據類型,通常講授數據類型的分類、每個數據類型的取值范圍和運算。采用問題誘導的啟發(fā)式方法提出問題:定義一個表示年齡的變量age,age=30該變量對應內存存儲單元的值變?yōu)?0,表示年齡為30歲,然而,age=30.1是錯誤的、無意義的,那么如何讓程序運行前通知這個錯誤,而不是運行后經過分析才發(fā)現這個錯誤?數據類型可以實現對變量的取值范圍限制以及所進行的運算。當變量age定義為整型變量,該變量只能被賦值以整數。然而如果要限制變量age只能存放0到200之間的整數值,就需要結合條件語句來實現。
對于運算符和表達式,通常依次講解運算符的種類、優(yōu)先級和表達式的定義。采用問題誘導的啟發(fā)式方法提出問題:創(chuàng)造計算機執(zhí)行程序的目的是為了科學計算,如何表示計算中的運算符、操作數和表達式?程序設計語言中的運算符、變量以及常量、表達式與之相對應。進一步,如何表示形如 的表達式?因為計算機是按行從上到下,從左至右依次讀取代碼執(zhí)行程序的,所以,必須將這種占兩行的表達式轉換為一行的形式,即為分子/分母。
對于數組,依次講解數組的定義、初始化、引用、多維數組。采用問題誘導的啟發(fā)式方法提出問題:如何計算100個學生的平均成績?沒有采用數組如下代碼段表示:
float grade00;
float grade01;
…
float grade99;
float avgGrade=0;
avgGrade=(grade00+grade01+grade02+…+grade98+gtrade99)/100; //計算平均成績
如果采用數組表示,如下代碼段所示:
float grade[]=new float[100];
float sumGrade=0;
float avgGrade=0;
for (int i=0;i
avgGrade=sumGrade/100;
顯然,可以看出沒有采用數組表示,需要定義100個整型變量,需要102條語句,而采用數組表示僅定義數組變量,需要5條語句。所以,采用數組表示可以減少代碼數量、也可以提高程序的可讀性和可維護性。數組是相同類型元素的集合,如何表示不同類型元素的集合?可以進一步引出其他知識點。
對于語句,通常講授語句的定義、種類以及示例。語句是程序的基本組成單位,語句包括簡單語句和復合語句。簡單語句包括變量定義語句、賦值語句等,復合語句就是使用一對花括號{}將若干語句括起來的語句塊。采用問題誘導的啟發(fā)式方法提出問題:如何編寫程序控制計算機執(zhí)行命令?程序是由什么構成的?語句就是構成程序的要素,是控制計算機的命令。簡單的命令就是簡單語句,負責的命令就是復合語句。進一步,如何表示語句?語句后面跟著分號。計算機按照順序依次執(zhí)行語句,如何表示當某種條件滿足才執(zhí)行語句?如何表示重復若干次執(zhí)行某條語句?程序設計語言中的順序結構表示依次順序執(zhí)行語句,條件語句表示滿足一定條件才執(zhí)行某條語句,循環(huán)語句表示滿足一定條件執(zhí)行某條語句。
3.2程序算法
對于程序算法,老師通常依次講解算法的概述、分析算法流程、閱讀算法代碼、展示運行結果。算法本身比較抽象,再加上這樣的教學方法,導致學生難以理解和運用。采用問題誘導的啟發(fā)式方法并結合實例啟發(fā),提出如何解決一個具體問題,如排序、查找,從而引出算法。例如,在講解程序設計的排序算法時,應先進行問題啟發(fā),給出要排序的一組數,然后啟發(fā)學生如何能夠排序該組數,以調動學生,讓學生根據算法的要求結合已有的知識,積極主動地參與到算法的設計過程中來。圖示是一種直觀的、簡明的、清晰的教學方法,可以把抽象的知識形象化、具體化。程序算法設計是比較復雜的知識點,需要采用多媒體教學手段以圖示方法啟發(fā)教學。教師應根據學生思考的進度將課件中的程序逐步展現在學生面前,接著再采用多媒體動畫方式播放排序過程,把抽象的、復雜的排序過程形象化、具體化。切忌將事先編好的程序直接顯示給學生,然后再從頭至尾地將程序介紹完畢。否則學生即使理解程序代碼的意義,自己也不能靈活運用已經學習的程序算法,解決類似問題,設計出正確的程序算法。
3.3過程和函數
過程和函數是比較容易理解的概念,過程和函數都是程序的構成單位,是完成某個功能的程序段。函數和過程的區(qū)別是:函數有返回值,可以構成表達式,而過程沒有返回值。采用問題誘導的啟發(fā)式方法啟發(fā),提出問題:如何組織編寫一個上千行的復雜程序?肯定是不能放在一起的,需要劃分。如何劃分?過程就可以將一個復雜程序劃分為若干個程序段,并命名以方便調用,這樣可以提高程序的可讀性和可維護性。表達式由操作數和運算符構成完成一定的運算,如何將一個程序段的計算結果作為操作數嵌入到表達式中?函數是具有返回值的程序段,可以作為表達式的組成部分。
3.4圖形用戶界面設計
對于熟悉控制臺方式編程的學生來說,初次接觸
到圖形用戶界面設計,不宜理解,一時不能轉換編程方式。這就需要我們教師采用合適的方法講解該內容。采用問題誘導的啟發(fā)式方法并結合實例啟發(fā),提出如何設計實現一個具體應用程序,如騰訊QQ聊天程序、PPLive網絡電視等,從而引出圖形用戶界面設計,讓學生對該知識點的應用產生具體形象的認識。圖形用戶界面設計就是采用基本組件:窗體、按鈕、工具欄、文本框等,“組裝”程序界面,類比我們把主機、顯示器、鍵盤、鼠標、音箱等組裝成一臺個人計算機,我們只需要知道它們之間的接口和功能就可以有選擇地組裝計算機,而不需要了解其工作原理和內部結構。例如光電鼠標的作用是通過USB接口和主機相連,作用是采集人移動的方向、坐標以及動作。學生只要知道鼠標的作用和接口就可以完成這個任務。
4結語
問題誘導啟發(fā)式程序設計語言教學方法是本專業(yè)高級程序設計語言教學團隊多年教學實踐的總結,在日常教學應用中取得了很好的教學效果。啟發(fā)式教學方法的應用有助于增強學生理解并應用程序設計語言知識解決問題的能力,提高學生從問題發(fā)現知識的“自我學習”能力。然而,該方法在其他課程的研究和應用,需要進一步的實踐分析。
參考文獻:
[1] 朱昌流. 論啟發(fā)式教學的有效實施[J]. 教育與職業(yè),2007(18):157-158.
[2] 陶沼靈. 啟發(fā)式教學方法研究綜述[J]. 中國成人教育,2007(4):39-40.
[3] 邵潔.課堂學習共同體的有效建構:以高級語言程序設計(VB)課程為例[J]. 現代教育技術,2009,19(8):120-124.
[4] 樊新華,孟鉑. “C程序設計”啟發(fā)式實例教學探討[J]. 計算機教育,2008(18):98-99.
[5] Harvey M. Deitel, Paul J.Deitel. Java大學教程[M]. 北京:電子工業(yè)出版社,2003:34-112.
[6] Bruce Eckel. Java編程思想[M]. 4版. 北京:機械工業(yè)出版社,2007:30-90.
Research of Heuristic Programming Language Teaching Methods Based on Problem Induction
LI Xue-jun, LI Long-shu, XU Yi
(School of Computer Science and Technology, Anhui University, Hefei 230039, China)
篇8
關鍵詞:VB程序設計語言;實驗教學;實踐能力
在《中國高等院校計算機基礎教育課程體系》[1]和《非計算機專業(yè)計算機基礎課程基礎教學基本要求》[2]兩本指導高校計算機基礎教育的指導書中,明確提出程序設計基礎課程要求,因此程序設計語言一直以來作為非計算機專業(yè)計算機基礎課程在高校廣泛開展。作為大學生的第一門程序設計課程,多數同學都取得較好的成績,但其實際編程能力卻仍然薄弱。造成學生高分低能的原因有很多,傳統(tǒng)的教學模式難辭其咎;加強實驗環(huán)節(jié),全面提升大學生計算機綜合能力成為計算機基礎教學改革當務之急的任務。
我校非計算機專業(yè)在第一學期完成計算機基礎公共課的基礎上,第二學期設置程序設計必修課――Visual Basic程序設計語言,共54學時,授課36學時,上機18學時。覆蓋學校海洋、生命、食品、經貿、工程學院的諸多專業(yè)。學生通過本課程的學習,加深對計算機技術的認識,利于其更好的使用計算機解決實際問題。
1 針對傳統(tǒng)實驗教學模式存在的問題,自編案例教材
傳統(tǒng)VB教材注重知識點的整合和循序漸進的講解,割裂程序設計基礎和VB各個控件關聯;很難將程序思維方法和技巧傳授給學生。教學方法采用“課堂教學為主,實驗教學為輔”的教學方法,實驗僅僅驗證課堂知識,加重學生對課程抽象理解,缺乏知識連貫性和整體性的認識。學生在學習過程中感覺枯燥,不感興趣,沒有主動性。從而影響學生對這門重要的編程課程的知識點的掌握。根據多年VB的教學經驗,遵循認知規(guī)律,把程序設計的知識點和控件知識點融合在一起,編寫案例驅動的特色教材[3-4]。通過3年的實踐,這樣安排教學內容,使學生既能從認知角度學習知識,又能從系統(tǒng)開發(fā)角度掌握VB的知識點,取得較好的效果。
2 多元化實驗設置
在教材中安排了三種實驗類型:驗證性實驗、拓展性實驗和設計性實驗。
驗證性實驗是基礎性實驗如數據類型、分支結構、循環(huán)結構、數組等,學生根據實驗指導按部就班地完成實驗,將基本知識理順,理解原理掌握規(guī)律。培養(yǎng)學生對基本理論知識的理解和基礎試驗技能提高(如掌握調試程序的基本方法)。養(yǎng)成嚴謹的態(tài)度,夯實動手能力基本功。
拓展性實驗是在驗證性實驗的基礎之上,增加一兩個功能。涉及的知識點傾向學過的知識,如自編教材中每章后附的案例實訓,都是本章知識和前幾章知識的綜合應用。通過問題的提出,明確的實驗目的,激發(fā)學生解決問題的意識,為設計性實驗安排和實施奠定基礎。
設計性實驗靈活度最大、綜合性強,教師只給出實驗的目的和實驗條件,不限定學生的界面形式、設計方案和數據結構。能夠充分激發(fā)學生的學習熱情,體現現代教學方法核心――突出學生的主體能動性。設計性實驗內容涉及編程基礎知識面廣,如輸入輸出、流程控制、數組、過程等,學生通過設計性實驗加深模塊化程序設計技巧的理解,有效地進行任務分解,完成實驗方案設計、算法分析、數據組織、界面設計、代碼編寫、運行調試、結果分析及形成文檔一系列工作,實現程序設計全過程的訓練。
3 實驗教學教師遵循原則
在實驗教學中,學生與教師在理論課角色是不同的。教師從課堂上的教學組織者轉變?yōu)樯蠙C操作的指導者。作為教學組織者,教師有較充分的主動性傳授知識,易于控制所傳遞的知識內容,可使學生在較短時間內獲得較多的知識。而實驗教學中教師是上機的輔導者,學生親自動手、動腦參與教學活動。根據這些特點提出相應的指導原則。
3.1 循序漸進原則
驗證性實驗,是對基本知識的鞏固和證明,有利于培養(yǎng)學生實驗操作、數據處理和調試程序的技能,有利于基礎知識的掌握。拓展性實驗和設計性實驗,在實驗教學中,采取提前預習實驗內容,查閱資料,綜合運用已學過的知識,獨立地設計出達到實驗預期目標的實驗方案,得出合理的實驗結果。教師在指導過程中通過任務分解,逐漸過渡的講解方式,指導學生運用結構化程序設計思想,自頂向下、逐步細化,實現程序。學生經過由淺入深地分析、由簡單到綜合比較、積極主動地完成程序的設計,使其創(chuàng)新能力和獨立解決問題能力有所提高。
3.2 分層教學因材施教原則
教師根據學生的具體情況、實驗特點、實驗要求進行具體指導。例如:剛開始VB程序設計實驗時,軟件的使用方法、調試程序的技能技巧都需要教師指導。隨著學習深入,教師在指導過程中可根據學生理論基礎和學習能力的差別,提出靈活的實驗要求。對基礎較好、能力較強的學生鼓勵嘗試多種設計方法和實現更多的程序功能;對于基礎較差或動手能力較弱的學生,只要求完成基本要求。既能做到實驗基本技能訓練,又能體現能力、綜合素質培養(yǎng)。使成績好的學生能夠“吃飽”,成績差的學生也能“吃好”,每個學生通過實驗均得到鍛煉和提高,學生的潛能得到較好的挖掘和施展。
4 優(yōu)化評價體系
VB程序設計語言是一門理論性和實踐性均很強的一門課程。實驗教學非常重要。要求較全面的考查學生的應用能力,動手能力和分析問題解決問題的綜合能力,充分發(fā)揮學習的主觀能動性。為了更好的檢測學生的編程能力,進一步鞏固教學效果,將課程的考核方式向實踐能力傾斜,期中實驗成績20分,學生通過完成教師布置的實驗,鞏固程序設計理論知識,積累解決實際問題的方法和步驟,為綜合作業(yè)完成做準備;綜合作業(yè)20分,4~6人為一組,完成具有一定難度的小型系統(tǒng)設計開發(fā),培養(yǎng)學生的團結合作能力,體會程序開發(fā)的過程。期末上機考試成績60分(如圖1所示)。
綜合作業(yè)由三部分組成:程序源代碼,相關文檔和小組答辯。
程序源代碼:考核形式為當面檢查,解釋代碼含義,了解學生對程序的掌握理解程度。
相關文檔:描述程序的核心及開發(fā)過程中重點、難點的解決方案,促進學生全面的掌握程序設計的內容,同時煅煉學生撰寫報告的能力。
答辯:各小組依次進行系統(tǒng)演示,教師針對程序以及相關知識點進行提問。
綜合作業(yè)安排在課程結束前一個半月,學生自行分組,按綜合作業(yè)的題目和要求完成任務,學生可以相互討論但必須自己完成。綜合作業(yè)成績由教師評定成績、小組組長成績和學生自評成績組成。教師評定要站在較高的高度全面的評價學生工作,應以鼓勵為主,既要對其作業(yè)的優(yōu)點進行褒獎,也要指出系統(tǒng)存在的不足,鼓勵其在能力范圍內充分發(fā)揮其自學能力和創(chuàng)新能力。教師通過對學生的評議,可以較全面的掌握學生對所學知識點理解和應用的熟練程度;進一步的總結學生學習過程的經驗和問題;為更好的開展教學工作積累教學經驗。小組長成績,就是一個參與答辯的學生互評的過程,目的是引導學生進行正面、客觀的評價。發(fā)現其他同學的系統(tǒng)的優(yōu)點和長處,提升學生團隊協(xié)作的能力。學生通過自評能夠端正學習態(tài)度,養(yǎng)成自我總結的好習慣,提高其參與教學活動的積極性和主動性。
5 改革效果
教研室抽取2009級不同專業(yè)300人的VB程序設計語言課程機考成績,分析實驗教學改革的效果(如圖2所示)發(fā)現:絕大多數學生(88%)通過平時實驗和綜合作業(yè),積累程序設計方法和分析問題能力, 順利通過考試。一方面:優(yōu)秀(80~100分)人數占總人數的25%,另一方面:從30分以下占總人數5% 可以看出平時積累較少的學生很難取得及格分數。
圖2 VB程序設計語言機考成績分析圖
6 結語
程序設計基礎是非計算機專業(yè)學生的一門重要的基礎課,是了解專業(yè)應用軟件原理的基礎,而VB程序設計語言實驗教學的改革是一個初步嘗試,突出學生獨立分析問題、解決問題能力的培養(yǎng),使學生將知識轉化為應用的一種嘗試。從教材建設、教學方法和評價體系等多方面進行改進,對于學生更好、更牢固的掌握課程內容具有一定的幫助,使學生了解軟件編程的原理和過程,從而在專業(yè)軟件的使用和開發(fā)角度打下良好的基礎。
參考文獻:
[1] 中國高等院校計算機基礎教育改革課題研究組. 中國高等院校計算機基礎教育課程體系2006[M]. 北京:清華大學出版社, 2006:66-692.
[2] 教育部高等學校文科計算機基礎教學指導委員會. 大學計算機教學基本要求(高等學校文科類專業(yè))[M].北京:高等教育出版社,2008:80-125.
[3] 黃冬梅,王愛繼,陳慶海. Visual Basic 6.0程序設計案例教程[M]. 北京:清華大學出版社,2008:205-252.
[4] 黃冬梅,王愛繼,陳慶海. Visual Basic 6.0程序設計案例教程[M]. 北京:中國鐵道出版社,2011:212-253.
Visual Basic Programming Language Experiments Teaching Method
AI Hong, CHEN Qinghai, PEI Renlin
(College of Information Technology, Shanghai Ocean University, Shanghai 201306, China)
篇9
關鍵詞:NDQJava2;創(chuàng)新;程序設計;量子成分
中圖分類號:TP311.52
量子程序設計語言NDQJava2處理系統(tǒng),是借助于NDQJava的經典系統(tǒng),加以相應的量子成分,在NDQJava2的處理系統(tǒng)中,是使用的層層遞進的樹形結構,把語法樹來翻譯成java代碼,更加有利的實現語法的分析。
1認識NDQJava2語言
NDQJava2是在NDQJava的基礎之上,增加了具有量子成分的條件語句、循環(huán)語句、子程序等進化而來,形成的是一種混合式的、結構化的量子程序設計語言。但是由于技術的限制,還沒有真正的量子計算的問世,要進行NDQJava2設計語言,就要在傳統(tǒng)計算機上進行模擬,由于NDQJava2和NDQJava一樣,都是以Java為基礎的,所有要采取從編譯到解釋的過程。在設計中,也遵循著NDQJava的原則:實用、簡明、嚴謹、快速。
量子成分的條件語句,與Java語言的運用相類似,主要是為了解決在NDQJava在書寫時沒有固定的條件控制語句,時常需要在傳統(tǒng)部分與量子部分之間進行切換作業(yè),影響了程序效果。在NDQJava2的條件語句中,每一個作為變量的量子都能獨立的使用一個使能量子,更加清晰合理。
量子成分的循環(huán)語句,在NDQJava2中會先進行判斷,判斷語句的真?zhèn)?,如果證明為真,就進行量子程序表達式的循環(huán),但如果證明為偽,就會終止循環(huán)。
量子成分的子程序,解決了程序書寫時的重復問題。子程序應用于NDQJava2主要是分為定義、調用這兩個部分,能有效減少語言的重復情況,在出現重復的計算時,就可以把相互重復的部分代碼變?yōu)橐粋€子程序,使程序結構變得更加清晰。
量子成分的異常處理,量子的程序設計語言,與傳統(tǒng)的設計語言有一個很大的不同點,就是量子的變量性質。在量子的語言結構中,引起異常變化的因素非常多,比如:IF語句的使用,在條件滿足的情況下進行,但在條件不滿足的情況下就不能進行,就會引起異常情況,異常處理的模塊就是專門應對這樣的情況。
2NDQJava2系統(tǒng)功能
NDQJava2以其創(chuàng)新的設計,對NDQJava進行系統(tǒng)的優(yōu)化,也是在Java語言的基礎上,進行從編譯到解釋的過程。主要是在詞法分析、程序匯編與解釋、代碼轉換這幾個領域作用突出。
2.1NDQJava2的詞法分析功能
詞法分析功能,是NDQJava2的第一大功能,主要是為了對NDQJava2源程序的單詞進行識別,并形成單詞的序列。由于現在完備的量子技術還沒有真正實現,所以在NDQJava2中就包括傳統(tǒng)和量子兩個部分,本著對已有資源充分利用的原則,把傳統(tǒng)經典的部分與量子的部分進行區(qū)別處理。
在傳統(tǒng)經典的部分中,使用的是Java處理,量子部分出現的語法都默認為量子成分,自行設計。兩部分別的要創(chuàng)建不同的文件夾進行保存,在運行時要進行判斷為哪種部分,如果為量子部分,就利用量子成分的循環(huán)語句,進行文件的處理,處理后建立起語法樹。如果經判斷,為經典的部分,就由Java運行。NDQJava2系統(tǒng)中,語言的關鍵字和分解符都有獨特的碼與之一一對應,這就把源程序中所出現的單詞,轉化為單詞序列,而標示符用量過大,無法實現一一對應,為了使用方便,就統(tǒng)一為一種碼。并進行程序設計,需要使用以的下形式:
開始NDQJava2源程序預處理子系統(tǒng)(對多余信息進行刪除)掃描程序(對單詞進行實際識別)單詞序列結束。
2.2NDQJava2的程序匯編與解釋功能
為了實現NDQJava2在傳統(tǒng)計算機上書寫量子的程序,就要設計假設的基本的指令集和匯編的指令集,并使用Java來編寫相應的匯編程序、解釋程序。
NDQJava2中,程序匯編功能是采用的分段匯編,將每一段匯編指令各自進行匯編,再集合起來,形成一個完整的匯編指令,在獲取匯編指令以后需要使用command函數把指令輸入到量子的匯編系統(tǒng)中,量子的匯編字符串就是command函數得參數。匯編字符串被空格分隔為多個子串,指令字符串上的第一個子串,就是操作碼。根據獲得的操作碼,查找對應的操作數,生成指令。不同的指令所需要的操作數也各不相同,最后就需要把操作碼與操作數進行合并,作為機器的指令向外輸出。
程序的解釋功能,就是對于機器的指令進行逐條的翻譯過程,并執(zhí)行計算。在程序的解釋功能中,經過量子的匯編程序處理過的機器指令存入系統(tǒng)中,以指令地址分類,分為單地址和雙地址,單地址的最高操作碼位數為0,雙地址的最高操作碼位數為1。以此來獲得準確的操作碼。分析得到的操作碼,調整與之相匹配的量子操作方法,根據操作數的兩種分類:寄存器編碼型和數值型,進行操作數據處理,匯集為參數輸入函數處理。
2.3NDQJava2的代碼轉換功能
NDQJava2在進行代碼轉換的時候,首先要遵循相應的原則,主要是三方面:第一要確保轉化的正確性,第二是機構程序要清晰、易讀,第三就是要利用自身的Java系統(tǒng),提高效率。
在進行代碼轉換時,采取樹形的逐層轉換,先轉換低層次的代碼,再由低層次的代碼來轉換高層次的代碼,這就很大程度上保證了完整性和正確性。代碼之間要層級明確,建立起一個明確的結構,每一個量子成分的代碼都要有一個單獨的函數,各個函數之間不能在功能上產生交叉和重復。函數之間可以進行上下級的調用,但不能在同級之間進行調用。在整個NDQJava2系統(tǒng)中,是采用建立語法樹,轉化為以Java語言編寫的指令程序,在運用中,要分析整個語法樹,對每一個量子模塊都進行識別,調用代碼的模塊轉換為函數,進行處理以達到生成的Java代碼要包含匯編的指令。
經過本文的論述,主要是探討了整個NDQJava2的技術理念:即在NDQJava的基礎上,進行的發(fā)展和創(chuàng)新。以及技術的系統(tǒng)功能,可以預見的是量子程序設計語言NDQJava2處理系統(tǒng)已經是未來發(fā)展的主流,隨著科技的進步,必將能真正的投入應用之中。
參考文獻:
[1]劉玲,徐家福.量子程序設計語言NDQJava-2[J].軟件學報,2011(2).
篇10
關鍵詞:四環(huán)教學法;理論教學
程序設計語言是計算機專業(yè)非常重要的專業(yè)基礎課之一,它主要培養(yǎng)學生編程的邏輯思維方式。學生初次接觸此類課程經常被繁雜的語法規(guī)則所困擾,影響了程序的編寫。尤其是對于面向對象的程序設計語言,眾多的控件、事件、屬性,更是讓學生無從下手。筆者在多年的程序語言教學中總結出了“四環(huán)教學法”,經過實踐,這種方法對于程序設計語言的理論教學,頗有成效。
一、程序設計語言理論教學現狀分析
1、學習動力不足
目前高職學生的綜合素質相對于普通本科學生很有差距。尤其是普高考入的學生,從來沒有接觸過程序設計語言,學起來感覺相當枯燥,難以理解。于是有些學生認為學習程序設計語言既枯燥又無用,不如學習多媒體或的一些課程;也有的學生由于數學基礎和邏輯思維能力都比較差,在學習時顯得力不從心,不能掌握應用計算機解題的基本思維方式,對計算機程序設計產生畏懼感,就知難而退了。
2、教學課時少
與普通高校本科計算機專業(yè)相比,一方面,高職學生的學習基礎相對較差,導致他們接受較慢,學習困難;另一方面,目前我國高職院校的學制一般是3年,并且采用“2+1”學習制,即兩年在校學習理論知識,一年在社會實踐中提高專業(yè)水平。計算機專業(yè)的程序設計語言的課時較少,這就導致了實際教學中存在理論課時和實踐課時不夠的情況。因此,教師只能傳授最基礎的程序設計知識,不能提高學生應用程序設計語言解決實際問題的能力。
3、實踐教材的缺乏
計算機專業(yè)本身就是技術應用專業(yè),而高職院校更是以提高實踐能力為主的職業(yè)。然而,現今高職程序設計語言教材,存在的普遍問題就是實踐性教學內容不足,沒有體現教材的實用性和職業(yè)性,不能保證對學生實踐能力的培養(yǎng),不能體現高等技術應用型人才的培養(yǎng)要求,缺少高職教育特色。
4、教學方法落后、考核方式單一
高職程序設計語言課程一般采用的教學方法是教師課上講授加學生實驗的形式,教師在理論課上常常采用“填鴨式”教學,學生很少主動思維,編程題不能獨立作答案。上機實驗時學生僅僅是對書本上現有的一些實例進行編輯調試,一旦調試成功就完成任務。這種教學方法根本不能讓學生掌握如何從一個實際問題入手分析、解決問題。單一的筆試考核方式也使教師和學生忽視實踐課環(huán)節(jié),舍本逐末。
二、什么是四環(huán)教學法
所謂的四環(huán)教學法是指教學中的四個環(huán)節(jié),包括知識點的簡要概括、學生獨立學習、學生上臺講述和教師總結四個部分。
1、知識點簡要概括
知識點概括是四環(huán)教學法的第一個環(huán)節(jié)。在此環(huán)節(jié)中,主要由教師將本節(jié)課的知識點簡要概括講述,使學生在以下獨立學習的時間內可以有目的性地學習。
教師在此環(huán)節(jié)講授的時間大約控制在十分鐘左右,注意要將本節(jié)課的重點、難點以及考點交代清楚。
2、學生獨立學習
在教師講完知識點后,就進入了第二個環(huán)節(jié),學生獨立學習階段。此階段教師可根據本節(jié)課的內容多少和難易程度,給學生半小時到四十分鐘的時間,讓學生根據本節(jié)課的重點難點來進行獨立學習和記憶,教師同時也可以針對學生提出的問題進行答疑。
3、學生講授
學生在經過了獨立學習階段后,對知識點有了自己的理解和認識。此時隨機抽取五位學生到講臺上進行講述,既鍛煉了學生的表達能力,又加深了對知識點的印象。
在學生講述的同時, 教師要注意學生對知識點講述的內容是否正確,理解是否有偏差。此環(huán)節(jié)大約需要半小時左右時間。
4、教師總結
經過第三個環(huán)節(jié)后,教師利用最后的時間對本節(jié)課的內容進行講授,并針對學生講述的問題進行剖析解答,同時可以舉例解釋說明。
三、“四環(huán)教學法”在程序設計語言理論教學中的優(yōu)勢
以VB程序設計語言為例,教師采用四環(huán)教學法進行理論教學,可以使學生有目的性地去學習諸如屬性、事件、方法等理論知識,同時讓學生到講臺來表述已自學過的內容也可以提高學生的表達能力,在臺下的同學也可以通過不同同學的反復講述加深記憶。作為教師,可以根據學生的講述來掌握學生的薄弱環(huán)節(jié),在總結的時候可以有側重點地講授。
這種教學方式加強課堂互動,注重啟發(fā)式教學。教師在激發(fā)學生欲望的基礎上,加強培養(yǎng)學生發(fā)現問題、提出問題和解決問題的能力。在教學中可利用新舊知識的聯系,提出需要解決的問題,并由易到難,設計一系列具有啟發(fā)性的問題,引導學生一步步完善程序設計。
當然,四環(huán)教學法只是對理論知識采用一種新的方式進行教學。教師在授課時還要精心設計教學實例。零散實例可以加深學生對某些知識點的理解,但實例的內容不連貫,不利于學生從整體上掌握教學內容。因此建議在學期末還要設計一個規(guī)模較大的、典型的、學生熟悉且感興趣的核心實例貫穿于教學全過程。該實例從小到大,隨章節(jié)的開而逐步成長,呈現為逐步進化的多個版本。例如,在visual Basic程序設計教學中,可以設計一個“學生成績管理系統(tǒng)”作為核心實例,貫穿始終,從而加深對該程序設計語言的整體理解。
最后還應將軟件工程的思想融合到程序設計語言課程的教學過程中。教師在教學中從一開始就明確應用于工程開發(fā)的目的,以工程實踐的方式,將軟件工程的基本觀念與課程的全部內容融合為—體傳授給學生。
參考文獻
[1]葉幼林.對計算機C語言教學的探討與研究[J].中南民族大學學報(人文社會版),2004,(4).
[2]解晨光.關于高職高專計算機教學改革的研究[J].教育探索,2006,(8).
[3]袁鋒.談VB程序設計教學方法改革的幾個轉變[J].成人教育,2004,(2).