<ol id="ebnk9"></ol>
    1. 基于閱讀分析程序的程序設計教學方法

      發布時間:2025-07-19 00:39:10   來源:作文大全    點擊:   
      字號:


      打開文本圖片集

      摘要:學生程序設計能力培養一直是計算機科學與技術、軟件工程等專業的教學重點和難點。培養和訓練學生掌握程序設計的閱讀能力,是解決學生在程序設計學習過程所存在問題的關鍵。探討了程序閱讀的方法、規律,并以此為依據通過實際教學對學生進行訓練。教學實踐證明,讓學生掌握程序閱讀的方法和規律,能夠有效地提高學生的程序設計能力。

      關鍵詞:閱讀分析程序;程序設計能力;程序閱讀;程序設計教學

      中圖分類號:G434文獻標識碼:A文章編號文章編號:16727800(2013)0010017603

      基金項目:2013年貴州財經大學信息學院教改項目

      作者簡介:楊正武(1963-),男,貴州財經大學信息學院教授,研究方向為信息化與軟件工程。

      0引言

      程序設計類課程涵蓋程序設計課程、面向對象程序設計課程、數據結構課程,是計算機科學與技術專業的基礎課程,并且程序設計一直是該類課程的教學重點和難點,學生能否掌握程序設計是學好程序設計類課程的關鍵。學生對程序設計反映的問題是抽象、找不到方法,培養和提高學生的程序設計能力一直是困擾計算機科學專業和軟件工程專業教學的難題。

      在交流、調查、分析和總結的基礎上,發現導致問題產生的因素有以下幾個方面:

      ①學生方面。設計類課程群(程序設計課、面向對象程序設計課、數據結構課)均開設在大學第一、二、三學期,學生從高中階段的文化知識學習到大學的專業知識學習需要有一個轉變的過程,由一門課程獨自完成則難以實現,需要由設計類課程群整體來完成;②教學方法。教師重視程序設計,講授方式過于直接簡單,輕視程序的閱讀,并且缺乏重要的中間過渡橋梁和臺階;③教學內容。在教材中,對表達數據的變量、對象、類構成缺乏深入剖析,使學生對其重視不夠;④訓練方面。在針對程序設計能力的習題與實驗練習方面,缺少方法指導,顯得雜亂。

      程序是指包括用嚴格語言或類語言表達的完整源代碼和部分代碼段。通過以程序閱讀逐漸法為核心的課程群改革,提升計算機科學與技術專業、軟件工程專業學生的程序設計能力,分析從設計課程群的整體出發來思考如何提高學生的程度設計能力。該課程群雖然內容上有所不同,程序設計能力要求則是相同的,而且是各門課的主要任務和內容,改變以往根據一門課程來訓練學生的程序設計能力。把程序閱讀能力作為程度設計能力的重要過渡橋梁,解決以往直接訓練學生程序設計能力時存在的問題。

      程序設計閱讀逐漸法即是解決學生學習程序設計存在的問題。程序設計閱讀逐漸法分為兩個階段:閱讀階段和應用設計階段。在閱讀階段的目的是訓練學生讀懂完整的程序(含用類語言表達的算法,以下均同),并以此為基礎,進行下一步應用設計階段的訓練。學生對程序設計反映的問題其實就是在程序設計的訓練中缺乏對閱讀階段的專題訓練。

      1程序閱讀方法

      根據經典公式:程序=算法+數據結構,程序的閱讀應該從兩條主線來展開,即算法線和數據結構線。算法線是對程序步驟和過程的執行,數據結構線是程序中變量內容的變化。在程序課中,強調算法線;在面向對象程序設計課中,強調數據結構線,但是重點是數據:類、對象及類與類之間的關系,而不是結構關系。在數據結構課中,重點是數據結構線,但強調的是結構關系。任何程序存在著的兩條主線是相互關聯的,程序的本質就是通過算法對數據(變量、對象、類)及內容數據結構的加工處理,得到最后結果,實現程序設計的任務。要能正確閱讀程序需要具備一定的前提條件:①能正確掌握每一個語句、每一個方法的執行過程;②能正確掌握變量、對象或數據結構的構成。閱讀程序本質上就是對程序中的語句或方法調用的逐條執行,能正確閱讀程序就需要能正確掌握每一個語句、每一個方法的執行過程。程序都有具體任務,程序都要通過變量、對象或由結構數據中的內容的變化來實現其任務。因此,正確閱讀程序而得到結果是需要正確掌握變量、對象或數據結構的構成。

      程序閱讀最直接的目的就是得到程序的執行結果,在此基礎上,會產生兩個效果。如果程序是一個應用性的程序,那么就能理解到程序的設計思想、方法和技巧;如果程序是一個驗證性的程序,那么就能理解到程序所要驗證的語句或方法的性質,以及是如何驗證的。程序閱讀的目的有3個,即:得到程序的執行結果;掌握語句或方法的性質;掌握程序的設計思想、方法和技巧。在3門程序設計類課程中進行程序閱讀訓練,一定能讓學生熟練掌握程序閱讀方法。

      程序閱讀又分為三步:理解程序結構階段、模擬計算機執行程序階段、上機驗證階段。其中模擬計算機執行程序處于核心地位,理解程序結構階段的目的就是為能正確模擬計算機執行程序,上機驗證階段的目的就是為能檢驗模擬計算機執行程序是否正確。模擬計算機執行程序也是閱讀階段的難點,模擬計算機執行程序訓練是否能達到效果決定了閱讀階段訓練的成效。

      1.1理解程序結構

      理解程序的構成,如果是結構化程序,主要理解構成的函數及預定義部分,理解函數與函數之間或函數與預定義部分之間的關系,理解函數中的每一個語句或方法的過程和變量(或數據成員)的構成;如果是面向對象的程序,主要理解構成的類、類與類之間的關系以及引用部分,理解類中的每一個語句或方法的過程和字段(或數據成員)的構成;如果是數據結構的程序,還需理解數據的邏輯結構、物理結構以及定義性的描述。理解程序結構如果要讀懂一篇英文的文章,首先是要知道其中單詞、詞組及相關語法,才能讀懂整個英文文章的內容、思想等。訓練學生對基礎語句的語法掌握。

      1.2模擬計算機執行程序

      模擬計算機對整個程序的執行。首先從主方法開始,逐條語句模擬執行,并記錄所有變量或對象等的內容及變化。對語句執行過程的準確和完整的理解是前提,怎么記錄所有變量或對象等的內容及變化是關鍵,程序的任務就是通這些變量或對象等的內容及變化來實現,這是模擬計算機執行程序的目的。

      關于程序設計(C語言)的重點是對語句和方法調用的執行過程,詳細展開其步驟。例如方法調用的過程分為四步:第一步,轉移;第二步,參數傳遞;第三步,方法體的執法;第四步:計算返回值,并返回調用處[1]。

      關于面向對象程序設計(C#語言)的程序重點是對象的構成及內容變化。例如有源程序[2]

      public class Automobile

      {private string name;

      public string Name

      { get { return name; }

      set { name = value; } }

      private float speed;

      public float Speed

      { get { return speed; }

      set { speed = value; } }

      private float weight;

      public float Weight

      { get { return weight; }

      set { weight = value; } }

      public Automobile(float speed, float weight)

      { name = "汽車";

      this.speed = speed;

      this.weight = weight; }

      }

      執行下列語句:

      Automobile autos = new Automobile(80, 3);

      對象的構成和初值描述與記錄如圖1所示。

      順序表的靜態結構定義:

      #define ListSize 100; //最大允許長度

      typedef int ElemType;

      typedef struct {

      ElemType elem[ListSize];

      int length;

      } SeqList;

      1.3上機驗證

      把模擬計算機執行程序的輸出結果與計算機執行程序的輸出結果對照,如果是對的,則說明模擬計算機執行程序是正確的;否則,要重新模擬計算機執行程序,找出問題,直到模擬計算機執行程序正確為止。上機實驗能訓練學生知道正確的結果是來自計算機的執行,而非是教材中的結果,也非教師給出的結果。上機實驗能訓練學生對程序實質的理解,上機實驗驗證還要與程序的結構對齊,即上機實驗驗證程序,要做到對程序的每一個程序段都能執行到。

      2以程序閱讀為基礎,從課程群角度展開程序設計教學

      以程序閱讀為基礎的程序設計即是在程序閱讀基礎上掌握程序設計。程序分為兩種:驗證性程序設計和應用性程序設計。驗證性設計包含對教材中的說明性程序段完善為一個完整的程序;或針對一個具體的語言問題,通過編程對比、輸出等來理解和掌握該語言問題。驗證性設計的設計難度較小,學生比較容易掌握,也容易樹立學生的自信心,且通過驗證性程序設計,學生能深刻理解語言中語句的語法問題和執行問題,執行過程更具體、更深刻。應用性設計包括簡單的應用性設計和復雜性、綜合性強的應用性程序設計。程序設計分為數據表示、程序設計、程序閱讀。通過對驗證性程序的閱讀,模仿該驗證性程序進行驗證性程序設計,通過對應用性程序的閱讀,模仿應用性程序的設計思想、方法和技巧,進行應用性程序設計。設計的程序是否正確都需要進行程序閱讀,檢驗程序設計的正確性。講授和練習的閱讀程序例子要與學生設計的程序有相似性,以便學生能夠模擬程序設計,啟發和激活學生的程序設計能力。

      在程序設計課中,分析一個具體的程序通過對變量的內容作一系列的加工處理得到改變,并得到最終結果,以達到任務目標。由于處理的變量及關系都較簡單,難點和重點應放在程序過程(主要是3種基本結構)和方法調用執行上,同時也需要描述和記錄變量的構成和內容變化。在面向對象程序設計課中,分析一個具體的程序通過對類、對象以及類與類之間的關系作一系列的加工處理得到改變,并得到最終結果,達到任務目標。在數據結構課中,分析一個具體的程序(類語言描述)通過對有結構的數據在存儲上的內容作一系列的加工處理得到改變,得到最終結果,達到任務目標。程序類程序任務存在差異,程序設計的訓練相應地也應有所不同。尤其是要有針對應用程序的程序閱讀訓練,這種訓練包括兩個方面:一是按程序設計類課程中的不同課程制作相應的程序閱讀材料;二是對程序閱讀材料按程序閱讀方法進行全面、深入的閱讀。程序閱讀訓練完成后,根據程序閱讀材料,制作相似的程序設計題目,訓練學生的程序設計能力。

      3結語

      教學實踐證明,讓學生掌握程序閱讀方法和規律,能有效促進學生提高程序設計能力;在程序設計類課程群的范圍內訓練程序設計能力,在時間和內容上更充分和全面,總體而言,提升學生程序設計能力的教學效果明顯。課程改革除了要有科學且改革可行的教學方式,還要在講授方式、教學講義、實驗項目、習題練習、課件等教學內容、教學手段方面有著配套的、整體的改革,才能實現效果最優化。分析、總結教學效果,做好整體配套工作,讓動態的課程改革本身不斷深入提高則是后續需要開展的工作。

      參考文獻:

      [1]鄭莉.C++面向對象程序設計[M].北京:清華大學出版社,2002.

      [2]鄭宇軍.C#面向對象程序設計[M].北京:人民郵電出版社,2003.

      [3]嚴蔚敏.數據結構:C語言版[M].北京:清華大學出版社,2006.

      責任編輯(責任編輯:孫娟)

      国产另类无码专区|日本教师强伦姧在线观|看纯日姘一级毛片|91久久夜色精品国产按摩|337p日本欧洲亚洲大胆精

      <ol id="ebnk9"></ol>