久久久国产精品视频_999成人精品视频线3_成人羞羞网站_欧美日韩亚洲在线

0
首頁 精品范文 結構化程序設計

結構化程序設計

時間:2023-06-01 09:09:37

開篇:寫作不僅是一種記錄,更是一種創造,它讓我們能夠捕捉那些稍縱即逝的靈感,將它們永久地定格在紙上。下面是小編精心整理的12篇結構化程序設計,希望這些內容能成為您創作過程中的良師益友,陪伴您不斷探索和進步。

第1篇

關鍵詞:實例拓展;結構化;程序設計教學;教學應用

中圖分類號:TP311.1

在計算機專業的教學中,程序設計是一門最基礎,也是最重要的課程之一,是培養學生計算編程能力的主要課程[1]。但是又因為這門課程涉及到很多理論性極強的內容和大量的編碼知識,不容易被學生理解,所以是計算機專業教學的重點和難點。在過去傳統的教學方式之下,老師只是按照大綱的順序來講解相關的知識點,即使舉例也只是引用一些比較典型的例題,例題和例題之間缺乏聯系,使得學生只能進行生硬的記憶法來掌握程序設計各種語句,不能真正理解這些編程方法,達不到自主編程的教學目的,收效甚微。為了改變這一現狀,讓學生能夠真正理解程序結構之間的關系,能夠靈活運用各種編程方法進行自主編程,在教學的過程中怎樣選擇具合適的實例已經成為提高教學效果的關鍵。我校推行的實例拓展教學法很好地解決了這一難題,在我校大力推行之后,受到廣大師生的好評,結構化程序設計的教學效果明顯。

1 實例拓展法概述

實例拓展教學法屬于教學方式創新的表現形式之一。在這種教學方法中,實例就是整個教學的中心,所有的教學活動都可以通過實例來完成,這也是這種教學方法最典型的特征[2]。運用實例拓展法進行教學,學王可以充分利用各種學習資源,通過自主探索或者相互合作的方式來完成實例任務,同時又會催生出一種新的實例。這種重在學生實踐活動的教學方式就被稱之為拓展實例法。這種教學方法有助于培養學生的自主學習能力,提高他們獨立分析問題和解決問題的能力。在計算機結構化程序設計這種實踐性較強的課程教學中,尤其適合使用這種方法。

2 實例拓展法在結構化程序設計教學中的實際應用

在計算機程序設計中,VB語言是一門重要的課程,所以我們就以這門課程為例,對實例拓展教學方法在課堂上的具體應用進行具體。為了便于學生理解和練習,我們將實例分成了兩種,一種在老師進行課堂理論教學時應用,另一種則在上機實踐活動中應用,下面我們對實例的應用進行出詳細介紹。

老師在進行教學設計時,如何安排實例是教學活動的核心所在。在對教學實例進行安排時,老師一定要結合中專學生的年齡特點、心理發展水平和實際生活的需要等因素。同時,實例的拓展應該遵循教育學的客觀規律,從易到難,由淺入深,便于學生進行理解[3]。另外,實例的難度應該適中,既不能讓他們一看就明白,也不能讓他們冥思苦想而不得,要讓大部分學生通過自己的思考能夠完成,而且要將相關的知識點囊括其中,這樣才能充分實例拓展的作用。

在VB結構化程序設計的教學中,課堂內容可以被大致分成順序結構、選擇結構、循環結構、數組應用和過程設計等五個部分[4]。老師在進行教學的過程中一定要全面掌握這些內容之間的內在關系。在本文中,我們將省略比較復雜的程序代碼,對這5部分內容運用到的實例進行簡單分析。

在進行順序結構這一內容的教學時,我們可以以計算圓的面積為例,在輸入圓的半徑之后就可以計算出來。這一實例可以作為入門介紹,理解起來并不困難。在這個實例中,融入了程序的三大基本組成部分,即數據輸入、處理和輸出,在講解實例的過程中,就能讓學生掌握這一知識點。

在結構程序的教學中,可以在對上述實例進行拓展,提出問題:“假設圓的半徑的小于0時該怎們辦?”讓學生進行思考,然后提出程序設計中的基本語句――選擇結構的if語句。為了讓學生理解if語句的語法,老師可以讓學生在鍵盤上隨意輸入三個數字,求解最大值和最小值,在這個過程中介紹if語句的兩種格式,即單行格式和多行格式。到這里,我們就在前兩個實例的基礎上衍生出了新的實例。在了解if語句的格式之后,老師還可以對實例進行進一步拓展,讓學生求解分段函數,明確if語句和Select Case這兩種多支結構的語句格式。

在循環結構的教學中,我們可以引入一個新的實例來介紹循環結構For Next語句,例如在窗體上顯示出1、3、5、7、9這五個奇數。然后讓學生對求解上述數字之和,對上述實例進行拓展。進一步掌握For Next語句。在求和的基礎上,再一次對實例進行拓展,讓學生在100以內,求出1+3+5+7+……的最大奇數值,在講解實例的過程中引入循環結構中一種重要的語句形式――Do Loop語句。

在講解數組應用這一內容時,可以在任意輸入3個數字求解最大值和最小值這一實例的基礎上加以拓展,讓學生思考怎樣求出任意10個數字的最大值和最小值,通過這個實例引入數組概念和靜態數組的使用方法。在這一實例的基礎上還能進一步拓展,求出任意數字的最大值和最小,引入動態數組的概念的和具體的使用方法。

在進行過程設計這一內容的教學時,依然在任意求解3個數字的最大值和最小值這一實例的基礎上加以拓展,將它們分成兩個函數,在講解的過程中讓學生掌握過程的概念以及Function過程的建立和使用方法。在此基礎上,對實例進一步拓展,將3個數字的最大值和最小值看成兩個Sub過程,讓學生通過老師對實例的講解掌握Sub過程的建立和使用方法[5],并與Function過程進行對比。

以上的實例主要是在引入相關概念和講解程序基本原理時使用的,需要在多個課時中講解。根據所講內容的課時安排,可適當補充其他實例,更加詳細地講解相關知識,也可以補充一些比較有趣實用的綜合例子,如制作計算器、打印九九乘法表等,進一步開闊學生的眼界。

經過多年的教學實踐,筆者發現在運用實力拓展法之后,學生對程序設計的學習興趣大增,不管是課堂表現還是作業完成情況都有了明顯改善,考試成績也得到了大幅度提升。通過這種教學方法,學生能夠從中學到自己需要的知識,并真正將其轉化為實際應用,設計出實用的小軟件來,對于他們將來學習其他知識和提高計算機操作水平都有很大的促進作用。

3 結束語

綜上所述,在結構化程序設計的教學中,實力拓展法對于提高教學效果,培養學生的計算機運用能力具有非常重要的作用。但是在具體的教學過程中還要從學生的實際情況出發,進行靈活地調整,才能真正激發出學生的興趣,充分發揮實例拓展法的作用。

參考文獻:

[1]武相軍,白晨希.實例拓展法在結構化程序設計教學中的應用[J].計算機教育,2013(17):47-49.

[2]傅籬.計算機結構化程序設計教學探索與實踐[J].計算機教育,2009(12):78-80.

[3]孫英,徐順瓊,李興美.C語言中循環結構程序課的教學設計與探討[J].計算機教育,2009(07):186-187.

[4]周顯春.合作探究式教學法在結構化程序設計教學中的運用[J].學習月刊,2010(30):91-92.

第2篇

摘要:本文結合學生的學習心理和認知規律,分析了C語言教學問題的主客觀原因,提出了“先過程,后對象”的教學理念,從教材建設、教學內容安排上闡述了教學內容的具體組織實施過程,從教學思路、教學觀念、教學手段幾方面探討了教學方法的改革。

關鍵詞:C語言;教學方案;教學組織;教學改革

中圖分類號:G642

文獻標識碼:B

C語言程序設計是一門難學、難懂、難以應用的課程,對學生越來越缺乏吸引力。傳統的C語言教材大都存在著內容陳舊、缺乏現代編程思想、過于偏重語法、難度高等缺點,難以提起學習興趣,學生有畏難情緒。

傳統的教學觀念,強調先打好基礎,然后再進行實踐、學習技能。教學實踐證明,基礎和技能的教學可以同步進行,甚至先教技能再教理論,在不斷實踐中掌握技能,在技能學習中提高基礎理論。這樣更適合學生的成長。

為此,我們以社會對學生編程和軟件開發能力的需求為依據,參照人才培養模式和專業課程體系改革,對C語言課程教學進行了探索實踐。

1 教學方法的改革

在C語言程序設計教學中,我們不再局限于單純介紹C語言基本語法,而是本著面向未來的精神,把C語言作為一種實踐工具,以程序設計方法為主線,以語法和結構為核心,以能力培養和提高學習興趣為目標,注重理論與實踐的結合、先進性與基礎性的統一,變應試為應用。

1.1先過程、后對象的教學方法

考慮到絕大部分學生今后不會去搞程序開發,所以思維能力的培養是首要的。從這一角度來說,先過程、后對象的方法更符合學生的認知規律。而過程化的程序設計方法和解決問題的思路更切合學生已有的認知結構,甚至可以說就是我們日常分析問題、解決問題思路和步驟的一種計算機的代碼化,更易于被學生接受。

1.2采用一體化教學方法,以程序案例為主教學,通過案例講解語法要點和難點

“案例驅動”教學法應用在C語言程序設計教學中,就是講解語法時不停留在理論討論上,不是教會這一語法現象是什么,而是通過實例教會學生某一語法現象如何應用。比如,算術運算符中的求余運算和整除運算是比較有特色和應用較多的運算,在講解這兩個運算符的時候,就不能只停留在寫兩個表達式讓學生計算出結果來,而應該結合實例讓學生知道這樣的語法特色用在什么地方,怎么用。如通過求1到5的倒數和這樣一個小例子使學生認識整除運算的特點及在今后級數求和運算中如何避免可能引起的誤差;通過一個求兩位整數的逆序數的小程序,學生就會明白整除運算和求余運算可以用來將一個整數的各個位數分解出來,待后續循環結構介紹完畢時,又可將問題擴展到求任意位數整數的逆序數;當介紹到函數的概念時,又可將問題引申到回文數的判別,這樣將一個對學生來說很難的算法問題分散到各個部分來處理,不僅降低了算法講解的難度,也使學生能真切地體會到學習語法知識的必要性。

教學始終貫穿一個核心實例 ―― 學生成績管理系統的開發。選擇這樣一個系統的原因是學生比較熟悉有關成績的業務和功能,同時開發學生成績管理系統將涉及到 C 語言程序設計課程的全部知識點。

1.3教學模式特色

集課堂、實驗、網絡教學于一體,教、學、研有機結合、相互促進,形成了“課內教學+課外俱樂部”、“常規教學+實驗教學+網絡教學”、“開放實驗室+自編教材+教學網站+教輔系統”、“課上現場編程互動+課后作業練習+課下實驗練兵+機上考試實戰+課外創新實踐提高”的立體化教學模式。

2 教學的組織實施

C語言課程的教學目標突出培養學生的編程能力,為實現這一目標,在教學內容上拋棄了過多的語法細節和非通用的或實際用途很少的語言特性,注意強調基礎性、實用性、先進性和系統性,兼顧教學和自學兩方面的適用性。精簡過程化部分的內容、降低其難度、銜接面向對象的方法是關鍵。主要特點如下:

(1) 以結構化程序設計為重點,面向對象的概念和編程思想為擴展,MFC編程基礎為補充,體現了先進性和系統性的統一。

(2) 淡化語法,對語法難點通過實例具體而分散地介紹,舍棄不實用和過于復雜的內容,如位運算、共用體、多繼承等概念,體現了基礎性和實用性的統一。

(3) 在內容上降低難度,淡化了過于繁雜的指針概念,簡化了字符串的處理方法,體現了基礎性和先進性的統一。

(4) 將面向對象的一些概念有機地滲透到過程化的內容中,如引用、函數重載、默認參數,這樣避免了在面向對象部分集中介紹過多的概念而使學生產生畏難心理。

(5) 強調算法的分析訓練,有利于在學時緊張的情況下學生通過自學提高分析問題、解決問題的能力。

3 教學內容安排

結構化的程序設計是本課程教學的基礎和重點。結構化程序設計強調按照一定的結構形式來設計和編寫程序,不僅可以讓學生養成良好的程序設計習慣,而且可以有效地培養學生思維的條理性和邏輯性,這正是程序設計課程的主要教學目的所在。面向對象的程序設計也是以結構化為基礎,這充分表明了結構化程序設計的基礎地位。這部分內容在講解上強調算法分析、淡化語法細節,語法內容是程序實現的手段和工具,而不是學習程序設計的目標。

通過類和對象的介紹使學生了解面向對象方法的實質是強制通過函數來對數據進行操作,從而保證數據操作的安全性,這就是數據隱藏和封裝的思想;通過介紹派生類的繼承關系,使學生深刻認識面向對象方法對代碼重用的支持;而介紹多態性的關鍵在于讓學生了解基于虛函數的多態性的實質是允許將派生類的對象當作基類的對象使用,因而不必為每一個派生類編寫功能調用,從而實現接口的復用。這部分內容強調從實用出發,著重介紹基本的、主要的概念。而對從純理論研究著眼的一些概念,如繼承關系中的私有繼承以及多繼承中的諸多概念等,對于初學者來說過于復雜,要么不做展開討論,要么就干脆舍棄。

從結構化程序設計到面向對象的方法過渡時,要解決學生思維方式的轉換和銜接的問題。由于思維慣性,學生會將面向對象方法和結構化方法的比較貫穿于所設計的程序中。授課時要從學生的認識規律出發,不必急于空泛地強調面向對象方法的好處,要讓學生清楚面向對象的程序設計和結構化程序設計一樣,只是一種程序設計方法,它是為解決程序復雜性而產生的。就解決簡單問題而言,并非一定要采取面向對象的方法,也并非面向對象方法一定比結構化方法更好。結構化程序設計是從一個個具體的局部入手,描述問題的解決過程;而面向對象的方法是從全局的角度抽象出問題所涉及對象的整體框架,再來描述各層次、各部分的內在聯系。方法雖然因著眼點不同而不同,但面向對象的方法仍然是以結構化程序設計方法作為其代碼基礎的。這樣學生既了解了它們之間的區別,又認識到了其間的聯系。

4 考核體系

課程考核評價方面,建立了全新的考核評價體系,注重過程考核、編程實踐能力考核,改革后的課程評價考核體系主要體現了考核形式多樣化、考核標準合理化以及考核試卷個性化三大特征。

5 實驗教學

C 語言特別適合編寫系統軟件,執行速度快,代碼質量高,在進行系統控制、調節、測量、硬件驅動等方面具有獨特優勢,這些優勢必須要通過實訓室中軟硬件結合的程序設計方可體現。按照“少而精”的原則,壓縮并精選實驗項目與內容,提高教學效率,從而使實驗教學與理論教學的結合更加緊密。

開放實驗室,讓學生可自主選擇實驗時間、自主選擇實驗內容,為學生提供勇于探索、敢于創新的外部環境。

建設了與課程相配套的具有我院特色的實驗環節: 課程設計、項目分析設計、科研開發等??荚嚪绞剑荷蠙C實驗和考試結合,增加機試,借助編程題自動評分系統考核學生實際編程能力;開發編程題自動評分系統,向無紙考試過渡;開發題庫系統,為機考提供支持;開發在線教學網站,拓展教學空間。

課內實驗教學兼趣味性和實用性于一體,課余通過指導學生參加科技創新活動、各種程序設計大賽、學生俱樂部的各類小型軟件開發項目,達到鞏固知識、鍛煉能力、提高素質的目的。

6 結束語

通過幾年來的實踐,我們加強教學的內容選取、組織形式、實例貫穿、上機實踐、課時安排、教學環境與利用、教學評價與考核等多個環節的改革,取得了相當不錯的教學效果。

參考文獻:

[1] 龔沛曾等. 案例教學法在"Visual Basic程序設計"課程中的應用[J]. 計算機教育,2004,(5): 62-63.

[2] (美)HM.DeitelP.J.Deitel著.C++編程金典第三版[M].北京:清華大學出版社,2005.

[3] 張春興.教育心理學[M].杭州; 浙江教育出版社,2006.

[4] 龔沛曾,楊志強主編.C/C++程序設計教程[M].北京:高等教育出版社,2004.

[5] 劉鵬,安玉潔. 微格教學的多元化架構[J]. 電化教育研究,2007,(9).

第3篇

關鍵詞:C語言;算法為先;教學模式

中圖分類號:G642 文獻標識碼:B

1引言

為適應社會和經濟的信息化需要,掌握計算機技術顯得尤為重要。C語言以它結構化豐富、靈活性大、可移植性強、效率高等優點,被廣大高校作為計算機專業基礎課,以及許多非計算機專業學習程序設計的首選課。但是又由于C語言涉及的概念復雜,規則繁多,數據類型和運算符豐富等特點,使許多初學者望而生畏。很多文獻致力于研究好的教學方法,幫助學生掌握C語言語法及上機技巧,這在一定程度上改善了教學效果,但是學生的學習熱情仍然缺乏積極主動。本文通過分析算法在C語言教學中的重要作用,進一步探討算法的教學方法,目的是從根本上激發學生的學習熱情,降低學習難度。

2C語言教學中常見問題分析

算法設計、基本語法規則、程序調試是C語言教學的核心內容。算法注重解決某一問題采用的方法步驟,語法注重語言規范,用規范的C語言描述的算法必須通過上機調試才能實現,三個核心內容緊密聯系。然而在教學環節中,教材內容基于語法體系,通常采用課堂講語法、上機調程序的教學模式,忽視了算法在教學中的積極作用,殊不知過細的語法知識易使學生失去興趣,靈活的編輯環境讓學生望而卻步,學生的學習熱情很難調動起來。

2.1語法細節易使學生失去學習興趣

通常C語言是學生接觸的第一門程序設計語言,任何程序主要由數據和操作兩部分組成,圍繞這一特點,C語言教學內容可歸納為:算法,數據結構,程序結構三部分。算法是編程的指導思路;數據結構是數據的組織形式,可細分為基本數據類型,構造類型,指針類型、位運算;程序結構是操作語句的組織形式,具體包括預處理,函數,順序結構,選擇結構,循環結構。雖然C語言知識結構清晰,但是它是面向過程的編程語言,具有靈活的編程格式及豐富的運算符和函數,如果對語法細節不熟悉,以及相關概念混淆不清,很難編出正確的程序。教師往往投入較多課時,講解C語言語法,而繁多的語法細則,不僅使學生難于記憶,而且容易誤導學生的編程思路。例如scanf函數的應用:

scanf函數的一般使用形式為:scanf(格式控制,地址表列)。

格式控制是用雙撇號括起來的字符串,它包含兩種 信息:

(1)%和格式字符,如%d,%c,%s等,它的作用是按指定的格式輸入數據;

(2) 普通字符,即在數據輸入時,需要原樣輸入的 字符。

地址表列由若干個地址組成,通常是變量的地址或字符串的首地址。輸入多個數據時,空格,回車鍵,跳格鍵為默認分隔符。

如:“scanf(“%d%d%d”,&a,&b,&c);”語句,運行時輸入:689L,可得到變量a,b,c的值。如果輸入語句變為:“scanf(“%d,%d,%d” ,&a,&b,&c);”,僅添加了兩個逗號,仍按以上方式輸入,則會出錯。原因在于格式控制部分出現的普通字符“,”,在數據輸入時要原樣輸入,正確的輸入方式為:6,8,9L。可見C語言語法格式非常靈活。

運用scanf函數輸入字符時,又出現特殊性。

如:“scanf(“%c%c%c” ,&c1,&c2,&c3);”語句,運行時輸入:abcL,目的是將a賦給c1,b賦給c2,c賦給c3。用“printf(“%c,%c,%c”, c1,c2,c3);”語句輸出,結果卻為a,,b。出錯原因在于:%c格式字符不需要空格作為輸入字符的間隔。正確的輸入為:abcL。

然而,用scanf函數輸入多個字符串時,空格又成為有效的分隔符。

如:“scanf(“%s%s%s” ,c1,c2,c3);”語句,其中c1,c2,c3為字符數組名,若輸入數據:How are you? L,則c1數組的數據是“How”; c2數組是“are”;c3數組是“you?”。若將語句改為“scanf(“%s”,c1);”,輸入字符串:How are you? L,用“printf(“%s”,c1);”輸出,則只顯示How,與原意不同。如果一定要將帶空格的字符串輸入到字符數組c1,需要用到另一個輸入函數,如“gets(c1) ;”。

雖然任何一個C程序輸入數據,都可能用到scanf函數,但是它靈活的編程格式,往往使初學者在具體運用時舉棋不定,忘卻抓住編程題目的實質性要求。教材中還有許多值得注意和思考的語法細節,學生編程時,如果缺乏解題思路的引導,常因語法的困擾而失去編程興趣。

2.2編程環境易讓學生望而生畏

上機操作是學習程序設計的必備環節,學生可以驗證語句的正確性,測試程序的功能,進一步增強對語法知識的理解和記憶。但是C語言編輯環境的一些特點,又讓學生望而生畏。

首先,編輯環境基于DOS,不像其它可視化語言有友好的交互界面,加之初學者對語法知識不熟悉,編程時稍有不慎就會出錯。如經常字母大小寫不分;語句末尾忘加“;”;關系運算符“= =”誤用為賦值運算符“=”等。初學者對出錯提示缺乏了解,不知道錯在哪里,更無從改正,經常一個小小的錯誤導致整個程序無法運行。

其次,C語言編譯程序對語法檢測不像其它高級語言那么嚴格,這種風格雖然給編程留下“靈活的余地”,卻常導致一些非語法性和非算法性的隱型錯誤。比如程序:

main ( )

{

int a,b;

a = 32767;

b = a+1;

printf(“%d”,b);

}

運行結果為-32768,不正確,原因在于發生了溢出。系統運行時并不報錯,程序中潛伏的隱型錯誤,給編程帶來很多麻煩,增加了調試難度,對編程者提出更高要求,只有他們較全面地掌握了計算機知識,才可能檢查出錯誤。然而初學者往往只懂得編程的一部分知識,這使他們感到C語言編程即抽象又復雜。如果沒有濃厚的興趣驅動,很容易在不知所措中放棄編程。

2.3算法為先,激發學習熱情

“C語言”課程長期沿襲傳統教學模式,以語法體系為脈絡展開教學,重視語法細節和操作技巧,忽視算法對編程的指導作用,學生見木不見林,容易失去興趣,經過一個學期的學習,除了掌握一些零星的語法外,收獲甚微,面對具體的編程問題,無從下手。從事軟件開發的人都知道,軟件開發過程包括:可行性研究,需求分析,概要設計,詳細設計,編碼,測試,維護等幾個階段。重點在于先設計,后編碼,并且整個開發環節需要不斷查閱資料,反復調試修改,最終才能設計出可運行的軟件,單靠記憶和背誦一些語法知識,根本無法適應實際需要。

在教學過程中,正確處理語法與算法的關系,是提高編程能力的關鍵。算法是程序設計的靈魂,沒有正確的算法,計算機解決不了任何問題,語言只是實現算法的工具,要從算法實現的角度來介紹語言,而不是用語言來套用算法。程序設計課程本身是綜合性較強的一門課,注重由設計算法到書寫程序并進行調試的整個過程,它要求學生首先明晰結構化程序設計思路,知道怎么做,其次要求學生用扎實的語法知識實現編程,最后通過上機調試保證程序正確運行。然而,這個過程并非一帆風順,會遇到許多意想不到的困難,需要耐心與毅力,只有具備真正的興趣和強烈的好奇心,才容易完成。

經過研究與實踐,教師在教學中如果注重算法為先,從算法實現的角度來介紹語法,那么不僅可以加深學生對語法知識的理解,增強語言應用能力,而且通過構造算法,培養了學生的邏輯思維,增強了學生分析和解決問題的實踐能力。學生面對新的問題,會從程序設計思想的角度出發,先設計算法,在迫切想要實現的好奇心下,克服學習語法和調試程序的各種困難,變被動為主動。著名計算機科學家Dijkstra曾提到:“學編程是一個由新奇到熟悉循序漸進的過程”,繼而又說:“在這種激進的新奇中含有愉悅的嘗試”。

3算法教學建議

由上分析可知,C語言教學目標不僅僅是要求學生掌握語法規則或再現簡單程序,更重要的是要求學生具備編程實踐能力。傳統教學方式,學生形成以語言為中心的思維模式,編程能力差。教師應引導學生逐步形成以算法為中心的思維模式,提高編程能力。但是算法的學習和掌握并不是一蹴而就,必須依靠平時訓練和知識積累,以下提幾點學習建議。

3.1以結構化程序設計思想為核心,開拓算法設計思路

學習的認知規律是將復雜問題簡單化,以便于初學者理解和接收。C語言程序設計遵循結構化程序設計方法,該方法提高了程序的可讀性,方便了程序的調試和維護,最重要的是該方法不拘泥于算法多變的外觀形式,總結出算法結構的內在規律。學生掌握了這種規律,面對新的問題,很容易進行知識結構的遷移,復雜的編程問題將變得簡單。

結構化程序設計包括結構化算法設計和結構化編程。由順序、選擇、循環三種基本結構(或基本結構的簡單變形),按由上到下的順序排列,組成的算法稱為結構化算法。已經證明,結構化算法可以解決任何問題。對于特別復雜的編程項目,可以先采用自頂向下、逐步細化的分析方法,或采用模塊化設計方法,把大任務分解為容易求解的若干子任務,分而治之。對于非結構化算法,還可以用等價的結構化算法替換。在設計好一個結構化算法之后,就可以進行結構化編程,C語言提供了與三種基本結構相對應的語句,進行結構化編程也并非難事。

由上可知,既然基本結構的順序組合,可以表示任何復雜的算法結構,并且基本結構易于用C語句實現,那么學生只要深刻理解并熟練掌握這三種基本結構,就會提高設計算法和編寫程序的能力。表1對算法的三種基本結構進行了總結。

說明:算法的表示方法很多,其中N-S流程圖最適于表示結構化算法。表1列出了算法的三種基本結構以及相應的N-S流程圖和語句的主要表示形式,學生通過該表很容易理解算法,N-S圖,編程三者之間的關系。

教師要向學生說明,任何復雜算法都是由這三種基本結構構成,構造算法其實很容易,大家之所以覺得困難,是因為沒有深刻理解A、B代表的含義。正如表中提到:A、B較靈活,既可以代表選擇結構也可以代表循環結構,選擇結構中還可以再套用一個循環,循環結構中還可以再嵌套循環或選擇……由于A、B代表含義不同,可能構造出各種各樣不同的N-S圖,教師邊闡述,邊在黑板上繪制,開拓學生的思維空間。最后總結:能構造多少N-S圖,就可能存在多少算法;順序、選擇、循環是三塊基本的積木,形式多樣的算法是由它們搭建而成,用于解決實際問題。這種教學方式,以簡單的N-S圖為切入點,學生很容易發現N-S圖的多樣性,算法的多樣性,實際問題的多樣性之間的聯系,從而激發設計算法的濃厚興趣。

正確的解題算法將減少程序的邏輯錯誤,算法用N-S圖描述出來后,利用相應的C語句,學生很容易編寫出程序的主體代碼,至于其它編程細節,可以引導學生查閱資料。這樣,學生對語法的學習由被動變為主動。精心培植的幼苗,一定期盼開花結果,學生經過一番努力,編寫出的程序代碼,也一定希望能用計算機實現,于是上機調試也變得既有目的性,挑戰性又有趣味性。

3.2案例式教學,一題多解,培養設計算法的邏輯思維

C語言是實踐性很強的一門課程,學生除了掌握結構化程序設計方法外,還必須進行大量編程訓練。通常情況下,一個程序是用哪種語言實現的并不重要,關鍵在于算法設計的優劣。計算機科學家N. Wirth教授提出了一個著名公式:算法+數據結構=程序,由此可見程序設計的本質在于先設計出解決問題的算法。

教學初期,學生對語法知識了解甚少,教師可以根據每節課的教學目標和內容,精選程序例題,將重點放在算法的設計思路和方法上,逐步培養學生建立正確的思維模式。學生設計算法時,常犯的錯誤是,不會從計算機角度出發,分析實際問題內在的邏輯關系,而習慣于按照人的思維方式設計求解過程,算法往往無法用計算機操作實現。因此改變學生思維習慣,培養邏輯分析能力,尤為重要。

實踐證明,對同一問題,設計多種有效算法,并對算法進行優化選擇,有利于培養學生邏輯思維。通過一題多解,既拓展了學生的解題思路,增強了學生對同類問題求解的熟練程度,同時又潛移默化地培養了學生思維的科學性、嚴謹性。通常,不同問題間存在某種共性,一些基本算法掌握熟練后,學生很容易舉一反三解決不同問題,樹立起編程的信心。

例如通過一題多解,讓學生熟練三個數由大到小排序的算法,進而引導學生對一組無序數據進行排列,用N-S圖描述算法,更能反映出不同問題之間的聯系和區別。

再如典型例題:用100元錢買100只雞,每只公雞5元,每只母雞3元,每3只小雞1元,要求每種雞至少買一只,而且必須是整只,問各種雞各買多少只?

對該問題設計多種算法,既幫助學生熟悉了循環語句,同時通過對各種算法進行評價,學生又深刻體會到算法設計的優劣對程序執行效率的影響。經過這種長期訓練,學生求解問題時,不僅會注意算法的正確性,也會注重思維的嚴謹性。一題多解既培養了學生創造性思維,又訓練了邏輯思維,是提高算法設計能力的有效方法。

3.3算法帶動語法學習,全面提高編程能力

在編程訓練過程中,學生不僅要積累設計正確,高效算法的經驗,而且隨著課程內容的不斷豐富,還要能將各種算法轉化為可執行程序,完成整個結構化程序設計過程。

以往教學模式過多重視語句命令格式,教學內容繁瑣,學生需要識記的知識多,并且不易體會其用途,容易失去學習興趣。如果在教學過程中,教師采用一些方法,充分利用學生對算法的理解和掌握,激發學習語法的興趣,將取得好的教學效果。

首先,面對編程問題,如果學生明晰解題思路,在結構化程序設計思想的指導下,會很快設計出算法的N-S圖。由前可知,算法是由順序、選擇、循環三種基本結構構成,表1只是簡單地列出了三種基本結構的C語句實現,教師應廣泛搜集并認真挑選典型例題,幫助學生全面掌握三種基本結構的各種語法表示。這樣,學生根據算法的N-S圖,就會很容易編寫出程序的主體代碼。

其次,教學初期,采用案例式教學,注重培養學生的算法設計能力,學生的語法知識比較薄弱,若要求他們將算法的N-S圖完全轉換成計算機語言,會遇到較多困難。如果教師能認真解析C語言知識,將教學內容有機組織起來(見2.1所述),再現在學生面前,那么學生在迫切想要實現算法的心理之下,借助腦海中的知識體系,會很容易尋找到相關章節,查閱還未曾系統學習的語法內容,獨自完成編程過程。這樣既增強了學生的學習自主性,學生在解決問題的同時,又深刻體會到語句的用途和功能,從而激發出強烈的編程興趣。

最后,建議教師按照總體教學目標組織教學,制定每節課的語法教學任務,針對教學任務挑選例題,通過對案例的分析講解,一方面幫助學生積累設計算法的經驗;另一方面,加強學生對算法所涉及語法內容的理解,掌握和應用,學生只有正確理解并熟練掌握每一個基本概念,編程時才會少犯語法錯誤,從而減少不必要的程序調試,逐漸樹立編程的信心。

4結束語

C語言是計算機基礎教育的重要組成部分,教學目標在于培養學生的編程能力。多年來,教學模式一直圍繞語法體系,學生學習興致不高,分析和解決實際問題的能力差。經過多年教學與實踐,本文倡導算法為先的教學模式,以結構化程序設計思想為指導,通過案例式教學,提高學生算法設計能力;利用學生對算法的理解和掌握促進語法學習,進而提高學生將算法轉換為計算機語言的能力;算法和編程能力的提高,將有效減少程序中的邏輯錯誤和語法錯誤,降低調試難度。由此可見,算法為先的教學模式,有利于提高學生的程序設計水平。

參考文獻:

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

[2] Edsger W. Dijkstra. On the Cruelty of Really Teaching Computing Science[J]. Comm.ACM,1989(32):1398-1404.

第4篇

【關鍵詞】數據結構;算法;軟件設計

1.經典算法的選擇

選擇經典算法的重要性,PASCAL語言的創始人、著名的計算機科學家N.沃思說得好“程序=數據結構+算法”,足以見得算法在程序設計中的重要地位。在合理的數據結構基礎上,算法是對數據結構的操作(運算),是數據處理的核心。在《數據結構》中介紹的基本數據結構有線性表、堆棧、隊列、數組、樹、二叉樹、圖以及相應的算法。一個算法是建立在某種數據結構的基礎上,一個算法不可能脫離數據結構而孤立存在。只有通過學習算法,才能真正掌握某種數據結構??梢哉f學習《數據結構》的過程基本上是學習各種算法的過程。在眾多的算法中有簡單的、有復雜的、有容易的、有難度大的,在有限的學時情況下,不可能也沒有必要逐一講解每一個算法。大多數的算法,要靠學生自己理解消化。在這種情況下,如何選擇少量的經典算法進行分析講解,顯得尤其重要。一個經典算法往往能起到以一當十、以點帶面的關鍵作用。通過經典算法的分析,一方面讓學生加深對數據結構基本理論的理解另一方面讓學生學習程序設計方法。

選擇好經典算法后下一步就是要對其展開綜合分析,下面以具體的算法為例進行討論。

2.利用經典算法說明基本原理

2.1 經典算法應能體現某個數據結構的基本特征

我們知道線性表順序存儲時其優點是能夠對每個數據元素隨機訪問,存儲密度高,其缺點是插入、刪除操作時需要移動大量的數據元素,操作效率低?!跋蛴行颍ㄓ尚〉酱蠡蛴纱蟮叫。┑木€性表(順序存儲)插入一個新的數據元素”,這一經典算法集中反映了線性表順序存儲的這些特點。

分析:將一個值為X的數據元素插入到有序(由小到大或由大到?。┑木€性表(順序存儲)中,可以分兩步進行,首先查找到值為X的數據元素在線性表中應有的位置,采用從頭到尾循環比較的方法確定其位置I,然后,將第I個以后的全部數據元素向后移動一個存儲單元,最后將值為X的數據元素存放到第I個位置上,線性表元素個數增1。

【算法1】

PROCEDURE INSERT(V,m,n,X)

//將值為X的數據元素插入到V數組中,(線性表順序存貯在V中)m為最多元素個數,n為當前實際元素個數

IF (m=n) THEN{“OVERFLOW”; RETURN}

FOR I=1 TO n DO

IF (X〈V(I))THEN BREAK

FOR J=n TO I BY -1 DO V(J+1)=V(J)

V(I)=X

n=n+1

RETURN

分析:【算法1】的優點是簡單,便于理解,缺點是:

①循環體內有提前退出語句,不利于結構化程序設計;

②確定新數據元素位置和移動數據元素分兩步進行,有重復操作,可以改進之,將兩步合并一步完成,即將循環比較與移動數據元素同時進行。從線性表的尾部開始向前循環比較,比新數據元素大者后移,直到小于等于時停止。

【算法2】

PROCEDURE INSERT(V,m,n,X)

IF(m=n)THEN{“OVERFLOW”;RETURN}

I=n

WHILE (I〉=1)AND (V(I)〉X)DO {V(I+1)=V(I);I=I-1}

V(I+1)=X

n=n+1

RETURN

分析:注意【算法2】中循環條件,當循環結束后I=0或V(I)〈=X,新數據元素的位置為I+1,【算法1】的時間復雜度為0(2n),而【算法2】的時間復雜度為0(n),效率提高一倍。循環結構是結構化程序設計中最基本最核心的部分,歸納循環條件是關鍵。【算法2】能進一步推廣。

2.2 利用經典算法學習算法設計

經典算法能給學習者以啟示、示范作用。

分析:可以將【算法2】用于對線性表(順序存儲)排序算法中。在直接插入排序算法中,其算法思想是從第2個數據元素開始直到第n個數據元素,逐一插入到已有序的子線性表中。

【算法3】

PROCEDURE SORT(V,n)

FOR I=2 TO n DO

{ Y=V(I)

J=I-1

WHILE (J〉=1) AND (V(J)〉Y) DO {V(J+1)=V(J);J=J-1}

V(J+1)=Y }

RETURN

分析:【算示3】其結構分為雙重循環,外循環完成逐一取數據元素,即取第I個數據元素,內循環完成將第I個數據元素插入到前I-1個已有序的子線性表中。內循環完成的功能可以獨立成為一個子函數(子過程),可以借用【算法2】。這正是結構化程序設計思想的體現,即主程序完成任務的劃分,說明“做什么”,子函數(子過程)完成任務的具體實現,說明“如何做”。結構化程序設計方法采取“分解”的手段來控制系統的復雜性,將大系統劃分為若干個相對獨立的、功能單一的子模塊。一方面子函數(子過程)可以實現軟件的重用性,在不同的程序段有相同的處理過程時調用子函數(子過程),減少軟件開發的工作量;另一方面子函數(子過程)對具體的實現技術細節進行隱藏,便于開發人員集中精力把握軟件開發的核心和主要問題,降低了軟件開發難度,從而保證軟件質量。在利用【算法2】時要稍加修改,見【算法4】。

【算法4】

PROCEDURE INSERT(V,I,X)

//將值為X的數據元素插入到已有序的前I-1個數據元素中

J=I-1

Y=X

WHILE (J〉=1) AND (V(J)〉X) DO {V(J+1)=V(J);J=J-1}

V(J+1)=Y

RETURN

相應的主程序也要作修改,見【算法5】

【算法5】

PROCEDURE SORT(V,n)

FOR I=2 TO n DO

INSERT(V,I,V(I))

RETURN

3.結束語

在眾多的算法中選擇好少量的經典算法對于教好、學好《數據結構》至關重要;經典算法要有助于學生理解對應的數據結構,經典算法的分析要側重于程序設計能力的提高。

參考文獻

[1]歐建圣.數據結構教學研究――經典算法的綜合分析[J].武漢工程職業技術學院學報,2004,16(1):58-60.

第5篇

C語言 結構化程序設計 循環結構 效率

一、引言

學習和應用計算機高級程序設計語言的人都知道,在這些語言中為實現結構化程序設計,一般都會采用三種最基本的結構,即順序結構、選擇結構和循環結構。因此,掌握這三種基本結構的使用方法,是學習和掌握高級程序設計語言課的基礎。這三種基本結構中,順序結構和選擇結構和我們平常的思維習慣相似。因此,最容易理解和掌握;而循環結構是這三種基本結構中最復雜的一種結構,與我們日常的思維習慣不盡相同,因此理解起來相對來說比較困難。但是,幾乎所有的程序都離不開循環結構,利用它可以簡化程序、提高工作效率。因此,學習和應用高級程序設計語言的人又必須要掌握循環結構。但是,通過本人近幾年的教學發現,大多數學生在學到循環結構一段時間后,干脆將這門課給放棄了,原因是他們覺得循環結構太難理解了。用順序結構和選擇結構做一個小程序還可以,用循環結構實在難理解。鑒于這個原因,本人將日常授課中總結出來的一點心得從初學者的角度寫出來,希望能對即將和正在學習高級程序設計語言課的人有所幫助。當然,我們在這里是以C語言為例來說的,其實這方面的知識對其他語言比如Visual Basic語言等同樣適用。

在C語言中,循環結構主要是由For語句、While語句、Do-While語句三種結構來實現的。而在這三種循環結構語句中又以for語句的應用更為廣泛。因為for語句在其開頭語句中就已經包含了循環變量的初始值、循環變量的終止值、循環的判斷條件以及循環變量的變化趨勢等這些內容,因此在編寫其循環體時,只用考慮其循環體應該包含的主要功能就行了,而不用在For語句之前對循環變量的初始值進行過多地考慮,同樣也不用在循環內部考慮其循環變量如何變化。對大多數有程序設計經驗的人來說,使用for語句實現循環結構是一件輕而易舉的事情。但是,對于沒有經驗的初學者來說,要想將for語句的作用及使用方法掌握住也不是一件容易的事情,更不用說While語句、Do-While語句的使用了。因此,本文從初學者的角度,闡述了C語言中循環結構的幾種典型應用。

二、用循環結構輸出幾何圖形

在教學過程中,不管開設哪一種高級程序設計語言課,只要一講到循環結構,大多數老師幾乎不約而同地選擇輸出簡單的幾何圖形來作為講解循環結構的最好實例。

對于這種類型的題目,初學者往往最容易想到的方法就是采用多條輸出語句來完成程序的設計。雖然這種方法很快能夠實現所要效果,但其缺陷也是很明顯的:缺乏靈活性、程序修改起來不方便,也不符合程序設計的思想。比如,我想讓大家輸出8行,每行36個“*”。這個時候,我們就不得不在輸入“*”的時候特別仔細,因為一不小心可能個數就不對了。

但是,這樣的問題如果用循環語句來實現的話,程序不但可以簡化多,并且可以很靈活地將其修改成我們想要的效果。

因此,在講解這一類圖形時,授課教師最好引導學生按照正常的程序設計思想,先分析圖形的組成結構,找出其中變化的規律,然后按照所找到的規律用循環結構來編寫出相對應的程序代碼,這樣一旦要求有一點點變化不用大篇幅地修改程序,而只用找到關鍵的幾個地方修改一下就可以了。教師在講解的過程中,可以舉一反三,多次修改、讓學生反復練習,直到他們理解為止。

現在,我們來具體分析一下該圖形,看看它有什么樣的特點,然后我們利用For循環將它的程序代碼編寫出來。

三、結束語

以上關于循環結構的使用基本上都是在程序設計教學過程中的一些體會與總結,可能比較膚淺,但是對于初學者來說,掌握這些知識還是有必要的。在進行課程教學的過程中,將自己在學習過程中得到的一些好的方法傳授給學生,讓他們從中去實踐、體會,從而引起他們更大的學習興趣是必要的。如何讓一名初學者盡快擺脫日常的思維定式,更加透徹地理解和掌握程序設計中的基本思想,領會程序設計的精髓,是高級語言程序設計這門課程在講授過程中,應該時刻注意的問題。更希望學生在學習的過程中不只是從老師這里拿一些現成的經驗去使用,更重要的是讓學生學會自己去發現問題、解決問題,總結出一些更好的程序設計方法,為以后進行軟件開發與設計打下良好的基礎。

參考文獻:

[1]譚浩強.C程序設計(第三版)[M].清華大學出版社,2005.

[2]蘇運霖.計算機程序設計藝術第1卷?基本算法[M].北京:國防工業出版社,2002.

[3]譚浩強.C語言程序設計(第二版)[M].北京:清華大學出版社,1999.

第6篇

關鍵詞:教學探索;程序設計;Scratch

中圖分類號:G642 文獻標識碼:A

1 引言(Introduction)

1.1 基礎薄弱

目前,中小學的信息化教育內容參差不齊,有的學??赡軙谐绦蛟O計的教學,有的學校則以Word、Excel操作為主,對程序設計的入門不重視[1]。很多剛進入大學的學生在程序化的思維方式方面還比較弱,要入高級程序設計語言的門還有很長的路要走。

1.2 課時較少

通常程序設計入門以C語言或C++語言為教學內容。作為一種實踐性較強的語言,在一個學期中要完成程序設計概念和語法的教學,又要在有限的時間里完成編程調試訓練。如果學生沒有一定的基礎和自學能力,就很難適應這種節奏。

1.3 抽象帶來的問題

語法、算法等抽象的教學內容將降低學生的學習興趣,而學習興趣對教授與學習兩方面都非常重要。有的學生不能通過考核經常就跌入補考和重修的循環。程序設計入門作為核心課程,這個課程出了問題將給計算機專業的后續課程帶來很多不好的影響,比如本專業學生對程序設計和其他專業技能缺乏信心以及實踐能力。

2 程序設計課程的前導課程(Leading program of

programming classes)

學生在程序設計課程中,一方面要努力熟悉算法抽象、程序控制等一些全新的概念,一方面會遇到很多語法錯誤,必須要學習如何調試程序,理論加上實踐可能都是前所未有的挑戰。前導課程應帶來有趣味的內容,為學生補充各種必要的基礎概念,如抽象、邏輯、流程等,告訴學生如何在現實世界和計算機世界之間建立起一座橋梁。這樣的課程會對程序設計教學有很大幫助。

3 Scratch簡介(Introduction of scratch)

Scratch是美國麻省理工學院(MIT)媒體實驗室開發的一套“程序語言”,利用這個軟件可以輕輕松松地創造出互動式故事、動畫、游戲、音樂等令人驚嘆的作品,是一套簡單又有趣的軟件[2]。

Scratch采用拖曳、組合的方式來設計程序。它是可視化的程序語言,具有所見即所得的功能。設計Scratch作品的過程是學生學習用計算機進行思考、分析、解決問題的過程,還能進行團隊建設方面的實踐。

Scratch把程序命令歸為幾大部分:包括動作、外觀、聲音、畫筆、變量、事件、控制等,并用顏色來分類。學生只需要了解各部分模塊的功能,按照自己的想法拖到腳本窗口,并按一定規則堆積在一起,最后在瀏覽窗口就能根據命令腳本直接運行。通過可視化操作學生可以搭建起自己的程序,輕易地把自己的想法表達為計算機的程序。在這個抽象的過程中不用過分操心語法錯誤等問題。

圖1為Scratch設計界面,左上為程序運行場景,左下為程序中設計的主體對象。一個項目可以有多個動畫主體(可以是動物人物或其他一些對象),中間是可視化程序模塊,右邊是程序窗口,利用鼠標可以把中間的程序模塊拖入右邊的程序窗口,經過修改參數、安排程序模塊的順序和嵌套等工作,就完成了程序編制,接著程序可以在瀏覽器中執行。

4 Scratch對程序設計教學的支持(Supports to

programming classes)[3]

4.1 抽象

現實世界的問題如何抽象為計算機世界的模型?第一步可以從學習抽象為計算機里的對象開始。我們把需要處理的內容抽象為Scratch的動畫主體,比如一個人物或一個物體。動畫主體可以具有各種行為,比如在平面中移動。如圖2是一個負責動作的程序模塊,能控制動畫主體平移到坐標(100,200)處,其中白色的部分為可以修改的坐標值。

4.2 結構化程序

Scratch具有可以拖曳的結構化模塊。設計時候只需要把模塊拖入場景中,就可以實現循環或選擇的程序結構,并且能實現循環和選擇的嵌套,制作需要的程序流程。圖3演示了循環結構的程序模塊,repeat后面的循環次數可以修改,可以看到循環程序模塊和循環體中的其他程序模塊的顏色是不同的,它們屬于不同的功能分類。

Fig.4 Block to control choosing

其中使用的橙色模塊i是Scratch的變量模塊。Scratch程序能夠使用數字和字符串變量。變量可用來控制某個圖形的大小或個數,變量還能具有不同的作用域。由此我們向學生展示了變量存儲值、變量值影響程序結果以及變量的作用域等概念。

Scratch具有列表的結構,列表可以存儲數值或字符串。列表可以具有作用域,可以獲得列表的長度。列表項具有添加、刪除、插入等操作,并能通過下標獲取特定的列表項。列表可以幫助學生學習數組的概念。

Scratch的結構化程序設計是可視化的,調試簡單,能幫助學生把精力集中在程序結構上,而不需要為語法錯誤分心。

4.3 面向對象

Scratch能夠設置動畫主體,可以視為對象模塊。不同的動畫主體具有獨特的屬性,可操作自己的變量,能完成獨特的任務。在后續課程中這些概念很容易引申為對象及其屬性和行為的概念,這是面向對象程序設計的基礎。圖5為迷宮程序的設計,其中球體是一個對象,而終點方塊的是另一個對象。我們可以利用鍵盤移動球體,當碰到方塊對象時后者能做出贏得游戲的反應。球體對象在移動過程中碰到障礙則會產生反彈。

5 Scratch作為程序設計教學前導課程的實踐

(Experiments in programming classes)

在參考文獻[4]中提到的學校已經嘗試使用Scratch平臺作為計算機專業課程的前導課程。學校把學生分為兩部分,一部分基礎薄弱的學生在第一個學期先參加Scratch課程,到第二個學期才開始學習高級程序設計語言。而另一部分基礎良好的學生則在第一個學期就開始學習高級程序設計。

最終學過Scratch的學生,盡管基礎薄弱,他們的最終成績在通過率和平均成績方面都超過基礎良好的學生,并且在精通程序、喜愛專業課程、參與專業實踐等方面都有更好的表現。這些學生專業成績更好,對專業更熱愛,對程序設計更有信心。

6 結論(Conclusion)

程序設計是一種具有創造性的工作,它具有一定的抽象性,而且需要使用數學的方法去描述一些問題。這使得在語言程序設計的課程教學中,必須打破原有的教學模式和知識體系[5]。我們探索不同的方式幫助學生入門,Scratch可能是一個良好的平臺,它的可視化特性,對結構化程序設計的支持,都能幫助學生在實踐中培養計算機思維方式,為程序設計入門打下堅實基礎,為后續課程的挑戰做好準備。另一方面程序設計教學的困境也要需要在考核模式方面進行改革,激勵學生重視創新和實踐。

參考文獻(References)

[1] 張傳科.如何讓抽象的設計變得精彩――LOGO程序設計與

Scratch[J].中國信息技術教育,2010,(5):29-31.

[2] 陳捷.Scratch語言簡介及應用[J].電腦知識與技術,2009,5(26):

7439-7440.

[3] 朱,鄭曉妹.C語言程序設計教學前導課程研究[J].軟件導

刊,2014,13(4):160-162.

[4] M.Rizvi,T.Humphries,D.Major,M.Jones,and H.Lauzun.A

NewCS0 Course for At-Risk Majors[C].The Proceedings of

the 24th IEEE-CS Conference on Software Engineering

Education and Training,Honolulu,Hawaii,May 2011: 314-323.

[5] 劉興林.大學工科C語言程序設計教學探索與實踐――以五

邑大學為例[J].軟件工程師,2014,17(5):39-40.

第7篇

關鍵詞:軟件工程;結構化;面向對象;程序設計

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)21-30451-02

In Programming Structurized Method and Object-oriented Method Comparison

FU Yu-jiang

(Hainan Software Professional Technology Institute,Qionghai 571400,China)

Abstract: The structurized method and the object-oriented method are 2 cores thought in the software development programming.These two programming method not only displays for in the program language, the analysis and the design difference, displays in the development thought and the development angle of view difference.

Keywords: Software Engineering; Structurization; Object-oriented; Programming

在計算機系統開發領域中存在各種各樣的系統分析和設計方法,其中結構化方法與面向對象方法是軟件開發程序設計中的2個核心思想。結構化方法來自于20世紀60年代流行的結構化設計語言,例如PASCAL、C語言等,經過幾十多年的研究及應用,最為成熟且影響最大。而面向對象方法近10年來發展較快,被廣泛應用于計算機軟件的各個領域,如計算機仿真、系統設計、人工智能程序設計等各個方面,顯示出了強大的生命力,現已呈現出取代結構化方法的趨勢。本文具體分析了兩者在系統分析設計中的差別及優劣。

1 結構化方法分析與設計

結構化方法承襲了傳統的編程思想與編程方法,結構化方法只是對傳統程序結構的改進。模塊是結構化編程的基本單位,計算方法(簡稱為算法)是程序的核心,結構化分析和結構化設計是結構化方法軟件開發最關鍵的兩個時期。

1.1 結構化方法的基本思想

結構化方法程序設計的基本思想是:自頂向下,采用模塊化技術,分而治之,逐步求精地將信息系統按功能分解為若干模塊進行分析與設計,應用子程序實現模塊化,模塊內部由順序結構、選擇結構、循環結構等三大基本控制結構組成。即從代表目標系統整體功能的單個處理著手,自頂向下不斷地把復雜的處理分解為子處理,這樣一層一層地分解下去,直到僅剩下若干個容易實現的子處理為止,并寫出各個最低層處理的描述。

1.2 結構化分析

結構化分析是一種面向數據流而基于功能分解的分析方法,在該階段主要通過采用數據流程圖、編制數據字典等工具,描述邊界和數據處理過程的關系,力求尋找功能及功能之間的說明。通常所說的“結構化分析”就是“數據流分析”。

數據流分析的核心特征是“分解”與“抽象”。“分解”和“抽象”是兩個相互有機聯系的概念,下層是上層的分解,上層是下層的抽象。例如,假設系統很復雜,為了理解它,將它分成了5個子系統,如果子系統仍然比較復雜還可以再繼續分解它,如此下去,直到每個子系統足夠簡單,能清楚地被理解和表達為止。

典型的結構化分析方法可以描述為:功能分解=功能+子功能+功能接口。問題域映射為功能和子功能,規格說明間接反映問題域。分析的結果是系統、子系統、功能、子功能層次結構的建立。

1.3 結構化設計

結構化設計通常與結構化分析方法銜接起來使用,以數據流圖為基礎,將數據流圖表示的信息轉換成程序結構的設計描述,在該階段力求尋找功能的實現方法,完成軟件層次圖或軟件結構圖。

結構化設計通常表述為:結構圖+關系數據模式,其中,結構圖描述軟件系統的程序結構,關系數據模式描述軟件系統的數據庫結構。因此,結構化設計工作主要包括程序結構設計和數據庫結構設計。設計過程分兩步完成,第一步構造出一個具體的系統設計方案,決定系統的模塊結構(包括決定模塊的劃分、模塊間的數據傳遞及調用關系);第二步在總體設計的基礎上,將實體聯系圖轉換成關系數據模式,確定每個模塊的內部結構和算法,產生每個模塊的程序流程圖,最終在此基礎上設計建立外模式。

1.4 結構化分析設計的局限

1)不能直接反映問題域:結構化分析方法以數據流為中心,強調數據的流動及每一個處理過程,不是以問題域中的各事物為基礎,打破了各事物的界限,分析結果不能直接反映問題域,容易隱蔽一些對問題域的理解偏差。

2)數據和代碼缺乏保護機制:一個特定全程數據既可以作這些數據的過程訪問,也可以被其他過程訪問,這給程序設計帶來了不安定因素,一個不正常的數據修改或者過程調用可能會破壞正常的程序執行流程或結果。

3)分析和設計體系不一:結構化分析的結果是數據流圖,結構化設計的結果是模塊結構圖。二者的表示體系不一致,分析文檔很難與設計文檔對應,所以從分析到設計的“轉換”過程容易因理解上的錯誤而使得設計文檔與用戶的原本需求相差甚遠。

4)開發過程復雜: 由于結構化方法將過程和數據分離為相互獨立的實體, 程序員在編程時必須時刻考慮到所要處理的數據的格式。對于不同的數據格式做相同的處理或對于相同的數據格式做不同的處理都需要編寫不同的程序,而且往往不能對數據的安全性進行有效的控制。如果程序進行擴充或升級,也需要大量修改函數,因此結構化程序的可重用性不好。要使數據與程序始終保持兼容,已成為程序員的一個沉重的負擔。

2 面向對象分析與設計

2.1 面向對象的基本思想

面向對象方法的出發點是盡可能模擬人類習慣的思維方式,使開發軟件的方法與過程盡可能接近人類認識世界、解決問題的方法與過程,也就是使描述問題的問題空間與實現解法的求解空間在結構上盡可能一致。

面向對象是一種運用對象、類、繼承、封裝、聚合、消息傳遞、多態性等概念來構造系統的軟件開發方法。它打破了傳統的代碼、數據分離做法,將一種數據結構和操作該數據結構的方法捆在一起,封裝在一個程序內,實現了數據封裝和信息隱藏,通過“操作”作為接口實現信息傳遞。對外部來說,只知道“它是做什么的”,而不知道“它是如何做的”,使得數據封裝、信息隱藏、抽象代碼共享等軟件工程思想得到充分體現。

2.2 面向對象的重要特征

1)抽象:從許多事物中舍棄個別的、非本質的特征,抽取共同的、本質性的特征,就叫作抽象。抽象是形成概念的必須手段。

2)類和對象:“類”是面向對象語言中的一種抽象數據類型。面向對象方法認為客觀世界是由各種對象組成的,復雜的對象可以由比較簡單的對象以某種方式組合而成。例如人、車、學校、球場、商店、螺絲釘等都可以看做是對象。對象按照不同性質可以劃分成各種對象類?!皩ο蟆笨梢岳斫鉃椤邦悺钡囊粋€實例,每個對象都有自己的屬性(狀態和特征)和方法(行為)。

3)繼承: 即特殊類的對象擁有其一般類的全部屬性與服務。由于具有“繼承”性這個特點,使得程序員對共同的屬性以及方法只說明一次,并且在具體的情況下可以擴展細化或修改這些屬性及方法。

4)封裝:表示對象狀態的數據和實現各個操作的代碼,都被封裝在對象里面,它與外界的聯系是通過對象的對外接口(方法)實現。外界不需要關心對象是如何進行各種細節處理。

5)多態:指相同的操作或函數、過程可作用于多種類型的對象上并獲得不同的結果。就如不同的對象,收到同一消息可以產生不同的結果。

2.3 面向對象分析(Object Oriented Analysis OOA)

面向對象分析是面向對象軟件工程方法的第一個環節,OOA的任務是把對問題域和系統的認識理解,正確地抽象為規范的對象(包括類、繼承層次)和消息傳遞聯系,最終建立起問題域的簡潔、精確、可理解的面向對象模型,為后續的面向對象設計和面向對象編程提供指導。面向對象分析方法可以描述為:OOA=對象+類+繼承+消息傳遞。

面向對象分析通常建立三種模型:對象模型、動態模型、功能模型。其中,對象模型描述了系統的靜態結構,在第一輪迭代中可能只確定類的名稱和類間的關系。動態模型表示瞬時的、行為化的系統的“控制”性質,它規定了對象模型中的對象的合法變化序列。功能模型表明了系統中數據之間的依賴關系,以及有關數據的處理功能,它有一組數據流圖組成。

面向對象的分析過程實際上是依次建立對象模型、動態模型、功能模型,之后反復迭代,細化類的屬性和服務(方法)。之后可以根據需要,再按此過程逐漸迭代細化。

2.4 面向對象設計(Object Oriented Design OOD)

1)OOA和OOD采用一致的概念、原則和表示方法,二者之間不存在鴻溝,不需要從分析文檔到設計文檔的轉換,二者之間也不強調嚴格的階段劃分。能體現二者之間關系的是軟件生命周期模型――噴泉模型(如圖1),其中分析與設計沒有嚴格的邊界,它們是連續的、無縫的、允許有一定的相交。在分析階段所獲得的信息,不僅是設計階段的輸入,同時也是設計階段的一個完整部分,分析得到對象及其相互關系,而設計則是解決這些對象及其相互關系的實現問題。

OOA與OOD的區別主要是,OOA與系統的問題域更加相關,OOD與系統的實現更加密切;OOD是對OOA所得出的對象模型的直接細化和抽象,得到可直接實現的類圖。

2)面向對象設計可看作是面向數據流圖與面向數據結構的結構化方法的統一,把數據及其操作封裝,再取個名字為對象。對象是高性能的數據,整個程序的執行就是若干對象彼此通信。這種以對象為中心的模塊,不但內聚、耦合性能良好,而且適于并發。這樣,系統的設計就可看成把系統所要求解的問題解釋為一些對象及對象間消息傳遞的過程。

2.5 面向對象方法的優點

面向對象技術較之與傳統的結構化方法有其獨到之處:

1)可重用性??芍赜眯允敲嫦驅ο筌浖_發的一個核心思路。通過類的繼承關系,使公共的特性能夠共享,簡化了對象、類的創建工作量,增加了代碼的可重性。另外,重用經過測試的代碼還可以使產生額外錯誤的可能性達到最小。

2)可擴展性??蓴U展性是對現代應用軟件提出的又一個重要要求。類的繼承性使類能反映現實世界的層次結構,多態性反映了現實世界的復雜多樣。類的繼承性和多態性使軟件編碼具有良好的可重用性和可擴展性。無需修改源代碼就可以使軟件功能容易擴充和修改。

3)數據保護。數據和操作數據的算法不再分離,它們被封裝在一起,對象內部的行為實現細節被隱藏。封裝防止了程序相互依賴性而帶來的變動影響。

4)可管理性。面向對象的開發方法采用類作為構建系統的部件,以對象作為系統的基本組成單元,使整個項目的組織更加合理、方便,因為歸納事物、劃分成類進行管理符合人們在認識和管理客觀世界的習慣思維方式。

3 結束語

結構化和面向對象是軟件工程的程序設計方法中最本質的思想方法。結構化編程的基本思想就是把大的程序劃分為若干個相對獨立、功能簡單的程序模塊。它以過程為中心,強調的是過程,強調功能和模塊化,通過一系列過程的調用和處理完成相應的任務。面向對象編程以對象為中心,是對一系列相關對象的操縱,發送消息給對象,由對象執行相應的操作并返回結果,強調的是對象。理論上,面向對象的程序設計方法將產生更好的模塊內聚和耦合特性,使得軟件更易于重用與維護。但在實踐中程序設計方法關注軟件生命周期的各個環節,從需求分析、總體設計到編碼、測試和維護。同時設計方法在各個階段需要工具和環境的支撐,因此在選擇程序設計方法時,需要綜合考慮這些因素。

參考文獻:

[1] 郭溪川.對比分析面向對象方法與結構化方法[J].農業網絡信息,2006(11).

[2] 郭燕慧.面向對象軟件分析設計與測試[M].北京:科學出版社,2004.

[3] 王德軍,郝永芳.結構化程序設計方法與面向對象的程序設計方法的比較[J].鐵路計算機應用,2003,12(11).

第8篇

關鍵詞:專業課;常用軟件;結構化;原型法;形式化;設計

中圖分類號:G718.5;G710 文獻標志碼:A 文章編號:1008-3561(2016)36-0013-01

當前,普遍采用的軟件設計方法有結構化分析與設計方法 (SD/SA)、Jackson(JSP/JSD)系統開發方法、原型法、生命周期方法等多種方法。為了更好地展現各種方法的特性,本文從設計思想、設計步驟或流程、優缺點等方面對各軟件設計方法進行了相應對比和分析,為軟件設計教學工作提供一定的參考。

一、結構化分析與設計方法(SD/SA)

結構化分析方法又稱作SD方法或SA方法,它是通過把現實世界逐一描繪為各種數據在信息系統中的一種流動,同時在數據不斷流動過程中進行數據和信息之間的轉化?;舅枷肟擅枋鰹椋夯谝环N將功能逐一分解的設計模式,不斷把復雜和綜合問題逐層進行分解,以便對問題進行簡化――自頂向下,逐層細化,從而將復雜的程序結構劃分為多個功能完全不相關或者獨立的小模塊,最終達到最簡化的過程。優點:比較直觀、應用簡單、容易理解,目前已經獲得了較為成功的實踐經驗,在市場推廣方面有較大的優勢。不足:首先,因為從抽象思維出發對模塊進行細化,所以得到的子模塊方案各異,共性較低;其次,由于對問題理解上的偏差,導致繼承性較為困難;再次,該方法的自適應能力相對較弱,其設計的軟件重用率不高,從而延緩了開發周期;最后,設計文檔時常出現與表示體系不一致的現象。

二、Jackson(JSP/JSD)系統開發方法

Jackson開發方法分為JSP和JSD兩種。(1)JSP開發方法。JSP方法是一種面向數據結構的程序設計方案。其基本思路是按照輸入、輸出和內部信息的三種數據結構形式進行設計,從而把對數據結構的描述轉變成一種程序結構的描述方案,因此可實現通過數據結構來反映程序結構的方法。其基本思想可描述為:首先采用自頂向下的思想按功能對系統進行劃分,并逐步求出各子問題的解,將軟件開發流程視為軟件的生命周期,最終建立一種所謂的瀑布模型?;緦崿F步驟可描述為:分析、設計、編碼、測試、運行及后期維護。優點:簡單易學;準入門檻底,對設計者的要求不高。不足:難以滿足規模較大的軟件系統設計,且JSP方法難以對付結構沖突問題。因此,該法僅適用于小型程序的開發。(2)JSD方法。此方法稱作杰克遜系統開發方法,它以事件的驅動為中心,將相連的順序組合構成程序進程,系統設計模型可進一步抽象成若干條以通信方式進行相聯的進程?;驹O計思想描述為:首先通過仿真來理解并描述客觀事實,其次添加相應輸出功能,最后通過某種收到實現系統間的轉換。方法實現步驟為:實體的動作分析過程實體結構分析定義初始模型功能描述決定系統時間特性硬件和軟件實現。優點:實現了同類軟件和客觀世界間的關系研究,并確定了各類軟件系統和軟件現實決策間的界限。不足:對客觀現實同類軟件間的相互關系認識不夠完整,有待提升;構造的軟件實現結構較為復雜,有待簡化;對軟件結構的相關描述不完善;JSD在實現階段較為費時和復雜,且需要手動實現。

三、原型法

原型法可分為示例型和漸增型兩大類。其實現思路為:利用設計程序自動生成軟件工程運行環境,以便構造出簡化的實際系統模型,從而便于軟件開發人員和用戶間進行有效交流,大大提高了設計的靈活性。該方法實現過程要求迅速,否則便失去了意義。開發基本步驟可大致分為四步:系統簡化原型實現系統修改最終實現。優點:能適應各種模糊不清和變化不定的用戶需求。不足:需要具備較強的知識理論基礎,同時需要以相應的硬件環境作支撐。

四、生命周期法

生命周期法學也把軟件開發過程分為若干獨立階段。在軟件實現過程中,各階段分別完成一定任務,并實現最終的軟件配置程序/文檔。在完成各階段性任務過程中,可運用結構分析(SA)技術、結構設計(SD)技術和其他相關輔助工具。在編程過程中,使用了SP(結構化程序設計)語言,在各階段結束時需要進行細致的復審過程,只有各項參數合格后才能進行下一步驟的工作。因此,該方法將軟件的生命周期依次分為系統需求分析、系統設計、系統實現、系統測試、系統維護五大階段。優點:該方法采取了自頂向下、逐步求精的設計思想;模塊化設計過程中,運用了結構化程序設計方法,采用了嚴格的復審及測試程序,保障了軟件的可維護性。不足:對時變系統不太適用,開發出的軟件穩定性、可重用性和可維護性都比較差。

五、結束語

總之,以上各種軟件設計方法均存在一定的優勢和缺陷。因此,相關專業的師生在設計時,應根據設計的主客觀條件進行相應的選擇,提高設計能力,充分利用自身和環境優勢完成軟件的設計。

參考文獻:

第9篇

摘 要:Visual FoxPro是技工院校計算機專業的基礎專業課程,也是開設最廣泛的數據庫類課程。通過這門課程的學習,可以為技校生獲得就業必備的計算機等級證書以及具有相應的專業素質打下基礎。因此,教師在實訓教學過程中運用案例法進行教學具有特殊的現實意義。

關鍵詞 :案例 數據庫 應用

由于技工院校處于本科、高職院校與中專院校的夾層地帶,教學理論的難度與深度不如本科與高職院校,單純的實操能力培養不如中專院校。經過幾年的實踐,我們發現要使技工院校的計算機專業建設走出困境,就必須大膽進行課程體系改革,為此,筆者所在技師學院一方面不斷根據招聘企業的專業技能要求調整計算機專業課程體系的內容,刪除、淘汰一些過時的課程,增加一些新技術課程;另一方面在實訓教學中引入案例法,從學生學習的興趣點培養入手,在加強學生基本的實操能力訓練的基礎之上,逐步加大程序設計能力的培養,收到良好的教學效果。筆者就以Visual FoxPro6.0數據庫技術與應用為例,簡述案例法在教學中的實際運用。

一、案例教學法的內涵

案例教學法就是在教學過程中,教師通過設置一個難易適中的案例,引導學生循序漸進地展開探究活動,從而在活動的過程中潛移默化地培養學生發現問題、分析問題、解決問題的能力。這種教學方法對技校計算機專業教學來說具有特殊的意義,一是技校生受身心發展狀況的制約,邏輯思維能力不強,而采用具體案例,就更加直觀、形象,更容易激發學生的學習興趣;二是便于教師組織、開展教學,教師通過案例,可以隨時發現學生對于所講授的內容掌握的情況,從而調整教學進度與難度,保證教學效果的優化;三是有利于學生程序設計能力的培養。學生通過一個具體案例問題的分析、解決,很容易舉一反三,由此及彼,這樣就刺激了學生的“發散思維”,這為他們今后走向企業必經的獨立工作與獨立思考打下了基礎。

二、Visual FoxPro6.0數據庫技術與應用課程的內容

數據庫技術是從20世紀60年代末開始發展起來的計算機軟件技術,隨著網絡技術、多媒體技術的不斷發展,數據庫技術在各領域得到越來越多地應用。Visual FoxPro作為20世紀90年代興起的高級數據庫管理軟件,它是一種完善的編程及數據管理語言,在小型數據庫系統開發中得到了廣泛應用。而Visual FoxPro6.0是一種32位關系數據庫管理系統,它在20世紀80年代流行的Xbase系列軟件基礎上增加了新的功能特性,性能不斷完善,技術不斷提高。作為關系數據庫管理系統,Visual FoxPro6.0提供了一個集成化開發環境,使數據的組織和操作變得方便、簡單,它不僅支持傳統的結構化程序設計,還支持面向對象程序設計,適合開發小型數據庫應用系統,適合計算機與非計算機專業學生學習。根據教育部計算機基礎教育白皮書的要求,數據庫應用技術不僅是計算機專業的必修課程,也是非計算機專業“1+X”課程體系中第二層次的重要方向之一。

三、案例法在Visual FoxPro實訓教學中的實踐探索

由于技工院校計算機專業數據庫應用課程的教學目標定位于培養技校生信息技術應用素質,注重數據庫基礎知識和基本理論的融會貫通,強調數據庫應用能力的培養。因此,案例教學法的采用必須兼顧科學性與實用性,一方面教學內容緊扣Visual FoxPro知識的體系結構,在介紹Visual FoxPro基礎知識后,逐步深入地講解數據庫與表操作、查詢與視圖、SQL的應用、數據與數據運算、程序設計基礎、表單及控件的應用、菜單設計、報表設計、項目管理等內容,深入淺出地向學生講解程序、軟件、軟件開發方法、結構化程序設計、面向對象設計等概念,為學生的專業學習打下扎實的理論基礎;另一方面將案例貫穿整個教學過程。在教學的第一個環節就引入案例—“學生管理系統”,后續的教學內容圍繞該案例展開,最終完成整個案例的實現。這樣就使教學充分體現了案例教學的特點。由于案例經過精心設計,選擇學生比較熟悉,比較有代表性的“學生管理系統”,整個教學內容講述這個綜合應用的案例,每一個知識點提出具體的任務和要求,形成一個小的、具體的案例,這樣就形成案例與任務共同驅動教學展開的良好情境,也更有利于技校生循序漸進地掌握數據庫應用的相關知識。

四、小結

第10篇

論文摘要 針對現階段程序設計語言教學中存在的普遍問題,在對程序設計教學思想、程序設計能力認識分析的基礎上,提出程序設計語言教學中的若干要點。

1 引言

在計算機專業和非計算機專業的計算機教學中,學校幾乎都設置了高級語言程序設計課程。與一些應用軟件或工具軟件相比,編程課程的教學具有較大的靈活性。很多學生的學習能力較差,課后不肯花時間,久而久之,導致聽不懂,給計算機編程語言課的教學帶來一定的難度。采用何種教學模式進行教學就成為編程語言教學的一個關鍵。

2 現階段程序設計語言教學中存在的普遍問題

根據以往的教學經驗和通過與學生、同事之間的交流,得知部分學生反映上課時都能聽懂講解,可在涉及到具體的編程及上機操作時,往往會出現沒有思路、無從下手或錯誤百出,不會調試程序等各種情況,究其原因,在教學方面可能存在以下2個問題。

2.1 過于注重對語句語法的講解,缺乏以算法為核心的編程題教學教師鐘情于舉一反三地對使用語句、語法的深入教學,而不是有機地結合算法思想進行教學,貼近生活并引起學生興趣的編程題講得很少。由于教學不是站在如何應用計算機工具編程解決實際問題或實際項目的角度,就沒有把邏輯與編程解題思路放在主體地位,也就沒有很好講解如何分析問題和解決問題。結果導致學生程序設計能力、上機解題能力訓練不夠,更談不上引導學生進行課題研究和科研探索。

2.2 學生厭倦傳統的課堂教學,缺乏師生之間的溝通交流學生對于先講后編、先聽后編這一傳統的課堂教學方式有厭倦心理。課堂成了教師的“一言堂”,教與學不能銜接起來。有時教師為了趕進度,講授法成了唯一的教學方法,師生之間缺乏足夠的交流和溝通,學生沒有有效、實用的學習輔助途徑,也間接影響著學生的學習興趣和學習效果。

3 程序設計教學思想解析

學生與教師的角色改變,就是教與學相互滲透的結果。教學中突出學生的主體能動性,是現代教學方法的核心。教學過程是教師根據教學的目的和任務以及學生身心發展的特點有計劃地引導學生掌握知識、認識客觀世界的過程,是通過知識的傳授和掌握來促進學生身心全面發展的過程。而在教學過程中一定要按照教學規律,只有按照教學規律辦事,才能提高教學質量,增強教學效果,并促進學生思維的拓展和能力的提高。

教學應該在理論與實際的結合過程中傳授和學習基本知識,從而引導學生運用所掌握的知識去分析問題和解決問題,在動手實踐中達到培養學生手腦并用能力的目的。除了進行一些必要的概念講解之外,教師主要應該讓學生通過上機實踐的辦法來掌握所學內容。一方面,通過上機實踐可以加深對課堂理論內容的理解和掌握;另一方面,通過上機實踐可以提高學生上機調試程序的能力,提高學生的編程能力,提高學生分析問題和解決問題的能力。

4 程序設計能力認識

程序是軟件的本體,程序設計(Programming)是指設計、編制、調試程序的方法和過程。它應排除軟件開發中的工程與管理因素,主要指軟件開發過程中的技術因素,尤其是計算機技術因素。

根據調查分析,合格程序員必須具有:1)扎實的專業基礎知識;2)很強的綜合分析和解決問題的能力;3)熟練的編程調試能力;4)創新能力;5)團隊合作能力;6)持續的自學能力;7)強烈的好奇心;8)較高的英語水平和軟件工程的實踐能力等。

應看到,程序設計能力,并非完全等價于程序員所應具備的專業素質,它還包括其他一些內容,如:1)理解問題,根據已知條件,找出求解該問題的數學方法或建立相應的數學模型;2)歸納程序的基本功能;3)設計數據結構和算法;4)用程序設計語言實現算法描述;5)編譯與調試;6)測試程序,保證程序正常運行。

綜上所述,可以將程序設計能力定義為:依據程序設計思想與觀念,應用程序設計語言,采用相應程序開發技術和環境,進行程序設計并達到預計結果的程度。

5 程序設計語言教學要點分析

基于對程序設計教學思想、程序設計能力的認識,為使學生充分掌握程序設計的思想和方法,有效實現程序設計課程教學目標,我認為程序設計教學還應注意并強調以下幾個基本的教學任務和要求。

5.1 程序設計基本概念的灌輸在整個課程教學過程中,結合具體實例的演示,應向學生反復強調程序,注意學生程序設計中基本概念的理解。學生只有對程序設計基本概念有了正確的掌握,才會為以后課程學習打下基礎,為學習興趣培養埋下伏筆;同時程序設計作為一門特殊意義上的課程,包含了許多計算機用于數據處理的基本原理、基本過程和特點,這些知識蘊藏于程序的基本概念之中,同時這些概念也是程序設計思想與觀念的載體。

5.2 結構化程序設計基本概念的培養結合控制語句結構和函數的學習,應著重培養學生的結構化程序設計的基本觀念。結構化程序設計的基本思想是采用“自頂向下,逐步求精”的程序設計方法和“單入口單出口”的控制結構,它是程序設計的基本原理之一。貫徹課程始終、通過具體實例潛移默化地培養這一思想,比在軟件工程中空洞的說教,更容易被學生理解和接收。

5.3 計算機算法觀念的培養通過控制結構、函數等學習,初步培養學生在程序設計中的算法觀念。如同數據結構觀念培養一樣,一則增強學生的程序設計觀念,二則也為學生留下廣闊的思考空間,以增強學習興趣。再次,通過這種觀念的培養,能夠直接提高學生初步的程序設計能力。

5.4 通過優秀的有趣的實例,激發學生學習興趣恩格斯說“興趣與愛好是最好的老師”。為了使初學者能盡快地掌握計算機知識,進入計算機的應用領域,在課程講授過程中,要特別注意培養學生的學習興趣。學習興趣就是學生在心理上對學習活動產生愛好、追求和向往的傾向,是推動學生積極主動學習的直接動力。學習興趣直接關系到教學效果的好壞。為提高學生的學習興趣,筆者歸納出6個辦法:1)通過演示程序突出程序語言的實用性;2)通過簡單的編程練習突出語言的易學性;3)運用恰當的類比使復雜問題形象化、簡單化;4)做到一題多解;5)要善于舉一反三;6)通過解決實際問題使學生樂學。

5.5 有選擇地運用多媒體教學直觀、形象、便捷的多媒體教學可以使學生在有限時間內迅速理解、掌握、獲取更多知識和信息,在教學過程中,我們有選擇地使用多媒體教學,將編程語言語法中的深奧理論和邏輯推理的內容,運用多媒體教學直觀、形象地講授給學生,加深其對問題的理解。這樣的多媒體教學,收到了將抽象問題形象化、枯燥問題生動化的效果。對于多媒體教學不易實施的程序設計方法的講解,我們可以采用傳統的教學方法,教會學生如何思考、推理,如何用語句實現算法,培養了學生的抽象思維、邏輯推理能力。這樣,將傳統的教學方法與多媒體教學相結合,大大提高了學生的綜合思維能力。

5.6 教師在教學過程中,應當注意設置疑難問題,引導學生思考和探索教學時發現,學生問不出問題的原因往往在于沒有真正學好。實際上,問題是最好的老師,是學生學習的引導者,沒有問題便沒有深入。在教學過程中,引導學生在問題解決中學習,即提出問題,留給學生時間思考、討論、解決問題,從而更深入地展開學習。實踐證明,這種教學方法充分調動了學生學習的積極性和主動性。

5.7 充分利用上機實踐程序設計語言,學生與教師在理論課與實踐課的角色是不同的。教師從課堂上的教學組織者轉變為上機操作的指導者。作為教學組織者,負責知識點的傳授,此時教師有較充分的主動性,易于控制所傳遞的知識內容,可使學生在較短時間內獲得較多的知識。但學生只是被動地接受知識,學生的積極參與少。上機操作是實現檢驗計算機編程語言課堂教學效果的重要方面。此時的教師是上機的輔導者,學生親自動手、動腦參與教學活動。但是上機操作課對學生來說是輕松的,若教師管理不當,會造成學生無所事事的局面。上機課是對理論課的應用和檢驗,對教師有更高的要求,因此,上機操作前教師要根據知識點布置相應的練習任務,編程序或調試程序。同時學生要完成有針對性的上機報告,進一步鞏固上機成果。

5.8 布置代表性的作業做作業是復習、練習的過程,也是繼續和深入學習的過程。我們每次課后給學生布置一些有代表性、恰當的習題,以鞏固課堂上所學的內容。也通過學生所做作業的好壞來了解學生對課程內容的掌握程度以及教師的教學效果。對作業中比較普遍出現的錯誤,我們都要在下節課上當堂講解,因為那是在上節課沒講清楚所致。作業中表現出與眾不同的、新穎的程序設計方法和思路,也要當堂宣講或作業批注,以鼓勵這種另辟新徑的有創意的學風。

在程序設計語言教學中,尤其語言基本要素的講解過程中,或隱或顯地,把如上幾點教學內容納入到課堂中,程序設計語言教學必定會從一種就語言而教語言的呆板模式中走出來,充分發揮出其在程序設計能力培養中的作用。

第11篇

關鍵詞:C語言;實驗;教學改革

作者簡介:呂風杰(1973-),男,山東沾化人,濱州學院計算機科學技術系,講師;馬士明(1983-),男,山東濱州人,濱州學院計算機科學技術系,助教。(山東濱州256600)

基金項目:本文系濱州學院教學研究資助項目(項目編號:BZXYJYXM200737)的研究成果。

中圖分類號:G642.423     文獻標識碼:A     文章編號:1007-0079(2012)10-0118-02

C語言以其結構化、靈活性好、可移植性強、效率高等優點被廣大院校理工科專業選為程序設計的入門課程。[1]隨著應用型人才培養改革的不斷深入,學生培養目標和教育教學理念也不斷更新,但自進入高校課堂20余年來,受傳統應試教育的引導,大都將授課重點放在C語言的基本語法的理論講授上,而實驗教學大多用于C語言的語法規則的驗證和說明,這種教學模式僅從語言的使用這個單一的角度進行教學而使得大多數學生在學完之后吃不透、用不活所學語言知識。面對這種形勢,原先的實驗教學計劃已遠不能滿足要求,如何從培養學生能力的角度出發優化實驗教學內容,使實驗教學與理論教學形成一個目標明確、由淺入深、緊密聯系的有機整體已成為當前C語言教學中的迫切性問題。本文從C語言的特點出發,對如何在當前課時、實驗資源有限的情況下,通過實驗教學促進、完善課堂教學效果,培養學生實踐能力、創新能力和應用能力進行了深入的探討與實踐。

一、改革實驗教學內容

在應用型人才培養模式下,實驗教學的組織要兼顧實踐性與創新性。我們在原有教學大綱的基礎上,根據電子信息類專業的特點重新修訂了實驗大綱,教學內容中提高了設計性和綜合性實驗的比例。

1.改革實驗內容組織結構

為了不影響專業教學計劃,又能保證實驗教學改革的順利進行,我們結合理論教學進度,編寫了相對開放的實驗教學大綱和講義,將實驗分為基礎性實驗、設計性實驗和綜合性實驗三個層次,又將每個層次的實驗內容分為必做和選做兩類,以供不同專業按要求進行靈活選擇。根據理論教學進度安排基礎性實驗,讓學生熟悉編程、調試環境,掌握基本指令并學會簡單編程,加深對課堂理論教學內容的理解;在單元章節之后安排設計型實驗,采用任務驅動教學法,驗證性與應用性實驗相結合,在完成基礎性實驗的基礎上,逐步豐富功能要求,并要求學生在實驗報告中加以總結歸納,培養學生的綜合思維能力;綜合型實驗其實是一個開放性試驗,安排于每個知識單元或模塊(從知識的角度出發,獨立于理論教材編排)完成之后,每一個項目只給出具體的功能及性能要求,對具體方法不作要求和指導,并將一個實驗課題分為設計、調試、總結、改進等幾個進程,先由學生根據題目要求完成功能設計并通過調試,再由教師根據學生的設計從功能及性能方面進行有針對性的分析講解,進而提出設計建議,然后由學生完成設計改進并寫出實驗報告及分析總結,以達到實踐性與創新性的同步提高。

2.創新實驗內容

目前,高校教學過程中所用教材及參考書大都以普教為目標,極少有針對專業或行業的例題和習題出現,而各高校開設的C語言實驗教學內容恰恰大多為所用教材或參考書的習題。這類經典習題專業針對性差,對學生來說缺乏趣味性,用以進行功能驗證尚可,但對于能力提高或創新教育的確是勉為其難了。而且隨著網絡等學習資源的普及使得問題的解決極為簡單,學生僅需上網搜索一下即可得到完整答案,于是實驗課程就成了簡單的驗證,很難起到鍛煉和提高的作用。

為此,我們專門針對電子信息類專業的特點精心設計了實驗內容,基礎性實驗采用經典案例,針對性強,利于學生的入門學習;設計型和綜合型實驗盡量選擇與學生專業相關的項目,如數字濾波的實現、數據分析與驗證等。這樣一方面能夠貼近學生所學專業,使學生不但學會了C語言,而且使得C語言有了“用武之地”;另一方面,在實際學習過程中,能夠將學過的其他專業知識融入進來,提高了學生的興趣及學習積極性,對其他專業課程的學習以至學生的學習風貌與學習態度起到了積極的推動作用。

二、改革實驗教學模式

隨著各高校對高等教育應用型人才培養改革的不斷深入,各專業的教學內容有了較大幅度的修改和增加,在實際教學安排中“C語言程序設計”的理論與實踐課時都進行了一定程度的壓縮,為保證實踐教學效果,在組織教學時進行了一些改革。

1.推行任務推動教學

隨著計算機技術的應用與發展,C語言作為各理工科專業的程序設計入門課程,其培養方向應該是掌握程序設計及調試的一般方法,所以在實驗教學組織中應以程序設計為主線,有意識地淡化C語言本身語句、語法的介紹,并積極推行典型算法與案例教學相結合的方法,通過精心設計與編排,將復雜枯燥的語法知識分解到每個生動、有趣、實用的程序實例中,把軟件工程學的思想貫穿于算法分析和程序設計的過程中。例如,在每個知識單元開始之前先提出一個典型問題,如“業績提成計算”、“數據排序”等,從問題入手,然后循循善誘,通過任務的分解、解決、綜合逐步加以解決,這樣不但使學生在程序分析與解決中掌握了相關語法,而且程序設計和解決問題的能力也得到了極大的提高。[2-3]

2.突出結構化程序設計特點

結構化程序設計是C語言程序設計的一大特點,而在當前的教材中卻極少涉及到相關的實例,從而使得結構化程序設計在C語言教學中成了一句實實在在的空話。有些學生平時學得很認真,對語法、語句等細節也很熟悉,但碰到稍微復雜一點的編程則無從下手。在教學中,教師應該將現代程序設計的相關理念傳授給學生:一般來講,一個較復雜的軟件??梢园垂δ芊指顬槿舾蓚€典型的小模塊,每個小模塊最終都成為功能單一、結構清晰、接口簡單、容易理解和編寫的小程序,而加工對象――“數據流”就是將這些模塊串接起來的“主線”,只要讓學生掌握了典型的算法就可將這些算法變成像搭積木一樣組裝成相應軟件的算法。

如在學過數組部分后,教師給出一個由計時函數GetTickCount()、格式輸出函數printf()函數、格式輸入函數scanf()一起構成的能夠測試人的反應時間的“反應計時器”函數。在此基礎之上布置學生設計主函數和相關函數,通過調用“反應計時器”函數完成兩個個體各一組樣本的采集(如各采集并存儲10個獨立的反應時間),并計算各自平均值、標準差等指標;進而進行t檢驗,對個體差別進行分析驗證。這樣不但使學生學會了相應的算法實現,而且對結構化程序的靈活性和易于擴展等特點及工程應用中的程序設計方法有了較為深刻的理解,同時對工程數學中較為“死板”的統計與檢驗內容的實際應用有了一個感性的認識,達到了實踐能力與創新能力共同提高的培養目標。

另外,在教學過程中,教師還應有意識地總結歸納一些典型算法,并作為驗證型實驗內容,要求學生熟練掌握,如累加、累乘、查找、排序等,在后續設計型和綜合型實驗中將相關內容加入,使得學生能夠用會、用活,為以后的程序設計奠定基礎。同時,典型算法的熟練掌握也可增加學生學習計算機語言的信心,并提高學習興趣。[4]

3.充分利用多媒體及網絡教學平臺

多媒體課件具有演示直觀、動態性強等特點,易于被學生所接受和理解,尤其對于實踐教學,多媒體課件能夠進行直觀的演示與模擬,滿足了實驗教學的要求,把難以理解的內容或不容易觀察到的事物用多媒體充分顯示出來,調動學生的視覺直觀功能,為突破難點創造出良好的氛圍,有效地彌補傳統教學的不足。

運用網絡教學平臺進行課后習題的布置與討論,引導學生提出問題并找尋解決方案。一方面,充分節約了課堂教學時間,緩解了課時不足帶來的影響;另一方面,能夠將更多的學生吸引到問題的分析與討論中,“討論出真知”――相對課堂教學而言,網絡討論擴大了討論的參與面,能夠最大限度地窮盡并糾正學生在問題理解過程中可能出現的問題,極大地提高了學生的學習積極性與學習效果。

4.強化實驗教學過程管理

C語言是一門實踐性很強的課程,除了要把理論知識學好外,上機實踐也是相當重要的一個關鍵環節。學習中存在的疑點或難點,學生可通過上機調試得到明確解答,同時也加深對學習內容的理解。對學生而言,在每一次的上機前應做好充分準備,編寫好上機內容;對上機中出現的問題應能調試分析,編寫實驗報告,分析程序結果。學生只有反復上機操作才能對C語言有更深、更全面的認識和理解,逐步提高實際操作和學習的能力。對教師而言,應精心設計上機實驗內容。設計上機內容時,盡量把所學的內容綜合起來,達到知識的系統化。同時,也可布置一些趣味性較濃的內容,以提高學生的學習興趣,變學生的被動學習為主動學習。另外,上機內容盡量結合學生專業,讓學生覺得學有所用。

三、改革實驗教學評價模式

注意綜合素質的培養與評價,在“C語言程序設計”期末考核中采用實驗與理論考核相結合、平時成績與期終考核成績相結合的綜合考核評價方式,并采用實驗教學成績一票否決的形式,從而改變學生在以往課程學習中“重理論,輕實踐”的思想,激發學生學習的積極性與自主性,尤其在創新性培養上。具體做法是摒棄原先那種以對錯判分的一刀切的評價方式,在平時教學中對學生實驗完成的成績評判要采用個案分析的方法,在充分理解學生設計意圖的基礎上因勢利導,對設計中的創新之處或閃光點要給予充分的肯定;對不足和錯誤之處要幫助學生仔細分析,然后由學生自己總結改正,以提高學生的自信心,保護其學習興趣,最后根據學生的完成情況及鉆研態度進行綜合評判。

四、總結

任何一種程序設計語言都有其獨有的語法特點,作為程序設計入門課程的“C語言程序設計”也不例外,但是,應該認識到在高校C語言教學中,學習語法不是學習程序設計語言的真正目的,而是應該在掌握語法的基礎上,通過學習與實踐,真正地學會使用C語言來解決各種實際問題,進而使學生掌握程序設計思想,真正成為學生進入程序設計領域的“敲門磚”、“導航燈”。通過對近兩年的學生期終理論考試成績對比分析發現,改革前后對于語法部分的得分率沒有明顯變化,而綜合編程題的得分率比以前有了大約25%的提高,且學生學習的積極性比以前有較大的提高,課程結束后不少學生又通過計算機等級考試等各種形式進行了進一步的學習與提高,C語言實踐教學改革取得了理想的效果。

參考文獻:

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

[2]鄭人杰,馬素霞,殷人昆,等.軟件工程概論[M].北京:機械工業出版社,2001.

第12篇

關鍵詞:拋錨式教學模式;面向對象程序設計;教學案例

拋錨式教學模式是基于真實或模擬情景的信息化教學模式,它通過情景產生學習需求,確定教學內容和教學進程(就像輪船被錨固定一樣),通過鑲嵌式教學和學生的主動學習,親身體驗識別解決問題,從而達到學習的目標。

面向對象程序設計是近年來迅速發展的軟件設計思想和技術,它是在繼承結構化程序設計技術的優點與長處的基礎上產生的一種全新的程序設計思想和方法,在軟件開發中有著廣泛的應用。《面向對象程序設計》是高等學校計算機及相關專業必修的一門重要課程,研究如何在教學過程中運用信息化教學模式對于提高教學質量、培養學生掌握面向對象程序設計的知識和問題解決的能力具有一定的實踐意義和價值。

1.《面向對象程序設計》教學的特點

把握課程的特點是開展教學的起點和選擇合適教學模式的關鍵。面向對象程序設計是在繼承傳統的結構化程序設計的基礎上發展而來的。因此,《面向對象程序設計》的教學重點應該包括面向對象程序設計的基本概念和結構化程序設計與面向對象程序設計的區別兩個方面。

面向對象程序設計基于一種抽象的數據類型——類,和這種抽象數據類型的實例——對象[1]。對象是具有某些特性的具體事物的抽象,對象有屬性和方法,分別用來表征對象的狀態和行為,類是創建對象實例的模板,用來描述具有相同屬性和方法的對象集合,它定義了集合中每個對象共有的屬性和方法,對象是類的實例。事件是能被對象所識別的外部刺激,如單擊鼠標。面向對象程序設計通過事件驅動機制處理事件,即只有在事件發生時程序才會運行,否則處于靜止狀態。圖1表明了這幾個概念之間的聯系[2]:

圖1 面向對象程序設計中基本概念的關系

2.《面向對象程序設計》教學中的拋錨式教學

2.1理論基礎

拋錨式教學模式是指在多樣化的現實生活背景中(或在利用技術虛擬的情境中)運用情境化教學技術以促進學生反思,提高遷移能力和解決復雜問題能力的一種教學方式[3]。所謂的“錨”,是指在情景中創設的事例和提出的問題。拋錨式教學模式是建構主義教學模式之一,建構主義主張學習者通過感受真實的環境達到對事物的本質及其相互之間的聯系的認知。拋錨式教學模式以真實的事例或問題為錨,在問題背景中產生學習需求,通過主動學習、生成學習和與其他學習成員之間的交流與合作,親歷從識別目標到達成目標的全過程[4]。

拋錨式教學具有與傳統的課堂教學不同的特征:通過真實或者設置的情景引出用作“錨”的問題或者實例;教師不再是傳統教學中知識的傳播者,而是學生學習的引導者、支持者和學習伙伴;學生通過自主和合作的方式進行學習;強調教學的無序性,也就是教學順序與預先確定的教學設計不一致,無序性教學富有彈性,教學信息不確定,教學目標具有相對開放性,教學結果有彈性[5]。

2.2教學案例

以掌握面向對象程序設計的三大特性中的“繼承”、“多態”及“接口”的概念教學為例,下面談談在面向對象程序設計教學中如何實施拋錨式教學,程序的實現使用C#語言。學習的前提是學生已經掌握面向對象的概念和“類”的概念,掌握構造類、屬性和方法的知識。

“繼承”、“多態”和“接口”之間既相互聯系又有區別,為保持教學內容的連貫性和邏輯性,將本次教學分為2個單元,分別學習“繼承”、“多態”和“接口”。

單元1:“繼承”和“多態”

情境1:計算機動畫展示:一只“喵喵”叫的“貓”和一只“汪汪”叫的“狗”,動畫顯示它們都屬于“動物”。

問題1:“分別為貓和狗創建2個類‘Cat’和‘Dog’,這2個類都具有表示名字的屬性‘name’和表示動物叫喚的方法‘shout’。建立主程序,在其中實例化貓和狗的對象,輸出這2個對象的‘name’,執行‘shout’方法,分別輸出‘喵’和‘汪’?!?/p>

問題1的提出是建立在學生已經掌握了“類”和“對象”的概念基礎上。建立1個“Cat”類和一個“Dog”類,它們具有功能相同的屬性和方法。學生根據自己掌握的面向對象的知識和對問題的理解,可以自己獨立解決問題,也可以通過與其他同學交流協作的方式完成任務。

問題2:“問題1中創建了2個類,主程序中執行了一些操作,在這2個類和主程序中,許多代碼是重復或相似的,這些代碼被稱為冗余代碼,有什么方法將代碼精簡,實現代碼的重用?”

如前所述,學生建立的2個類中具有形同功能的屬性和方法,代碼冗余度大,復用率低。面向對象程序設計允許通過類的“繼承”實現代碼的優化和復用。在解決問題2之前要讓學生掌握“繼承”的概念,并掌握以“繼承”的方式建立新類的操作,然后著手解決問題2提出的問題。通過分析“Cat”和“Dog”兩個類的共同點,建立一個“animal”類,該類有1個“name”屬性和1個“shout”方法。重新構建“Cat”類和“Dog”類,讓它們繼承自“animal”類。重寫主程序,輸出“name”、執行“shout”方法。這時學生會發現出現新的問題:“Cat”對象和“Dog”對象執行“shout”方法輸出的結果是相同的。由此引出問題3。

問題3:“為什么執行重構后的程序,‘Cat’對象和‘Dog’對象執行‘shout’方法得到相同的結果?這顯然是不合實際的,如何解決?”

問題3引出了面向對象程序設計的另外一個重要屬性“多態”。所謂多態,在面向對象程序設計中是指的同一個消息或者操作作用于不同的對象產生不同的結果。在解決問題3之前要讓學生掌握“多態”的概念,然后著手解決問題。重構“animal”類,將“shout”方法改為沒有方法體的抽象方法。重構“Cat”和“Dog”類,在其中重載“shout”方法,并分別實現各自的“shout”方法。修改主程序,使用“animal”類分別實例化一個“Cat”對象和一個“Dog”對象,它們執行“shout”方法后得到不同的結果。

單元2:“接口”

情景2:在情景1的基礎上,計算機動畫在“貓”的下方顯示一只“機器貓”,“機器貓”一邊“喵喵”叫,一邊變魔術,變出一條魚。接著在“狗”的下方出現一只“機器狗”,“機器狗”一邊“汪汪”叫,一邊變魔術,變出一根骨頭。

問題4:“動畫中我們看到‘機器貓’和‘機器狗’除了分別具有‘貓’和‘狗’的一般特征外,還具有普通貓和狗不具備的特征,請用程序分別輸出‘機器貓’和‘機器狗’叫喚的聲音‘喵’和‘汪’,并輸出‘機器貓’和‘機器狗’變魔術的動作‘機器貓:變魚’和‘機器狗:變骨頭’。要求運用接口的知識解決該問題?!?/p>

“機器貓”和“機器狗”都要具有普通貓和狗的屬性,它們應該分別派生于“Cat”類和“Dog”類。它們又要分別實現“變”這個動作,如果讓2個派生類分別實現各自的“變”的動作,則顯然又會顯出代碼的冗余。似乎可以像上面的“貓”和“狗”那樣構造一個基類,讓“機器貓”和“機器狗”繼承基類。可是C#語言只允許單繼承,“機器貓”和“機器狗”已經分別繼承自“Cat”類和“Dog”類了,如何又能繼承自其他類呢?解決問題的辦法就是使用接口。接口是用來定義一種程序的協定。在面向對象程序設計中,接口主要用于行為跨越不同類的對象,使用接口可以很好地增強現有類的功能,保證在特定的環境下系統自動實現這些功能。

要解決問題4必須學習“接口”的相關知識,以及如何使用“接口”的操作。學生將在教師的引導下通過教師的講解和自主學習掌握這些知識,然后解答問題4。創建接口“IChange”,使其具有“change”方法。分別從“Cat”類和“Dog”派生出兩個類“CatMachine”和“DogMachine”,并且這兩個類都要實現“IChange”接口的“change”方法,分別輸出“機器貓:變魚”和“機器狗:變骨頭”字符串。由于“CatMachine”類和“DogMachine”類分別繼承自“Cat”類和“Dog”類,它們的實例對象都可以實現普通“Cat”類和“Dog”類的功能,又實現了“IChange”接口,具有“變”的功能,并且代碼復用率高,冗余度小。

3.教學反思

拋錨式教學密切聯系了課程內容和日常生活,從學生已知的知識出發,運用形象生動的情景、實例或者問題設置好教學內容和教學進程,讓學生從問題出發開展積極主動的學習。面向對象程序設計的思想是建立在對現實世界對象的基礎上的,運用拋錨式教學模式能夠很好地將面向對象的概念和操作與真實世界聯系起來,充分利用知識之間的聯系一步步地引導學生掌握面向對象程序設計的知識和相關操作。

參考文獻:

[1]楊帆.面向對象程序設計基本結構和思想分析[J].黃石高等專科學校學報,2000,(2):30-34.

[2]邵結.面向對象程序設計教學初探[J].寧波大學學報,2002,(6):90-92.

[3]William R.Booth.Anchored instruction[EB/OL].coe.enco.edu/ET500/Booth/SL D002.HTM/,2004,7.