国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

逆向思維在C++程序設計教學中的應用

2012-06-17 05:55:32張雪伍常晉義
常熟理工學院學報 2012年6期
關鍵詞:數(shù)組程序設計逆向

張雪伍,常晉義

(常熟理工學院 計算機科學與工程學院,江蘇 常熟 215500)

逆向思維是對司空見慣的似乎已成定論的事物或觀點反過來思考的一種思維方式。C++程序設計中的諸多抽象復雜的概念和規(guī)則,除了用傳統(tǒng)思維方式去理解外,還可通過逆向思維的方式進行思考,以加深學生對知識的理解,促使其進行創(chuàng)造性、多角度的主動思考,培養(yǎng)其創(chuàng)新能力,增強創(chuàng)新意識。

一、逆向思維教學的基本思想

逆向思維是一種重要的思維方法,具有普適性、批判性和新穎性。它在研究問題時,能突破常規(guī),從常規(guī)思維的反向進行探索,除了加深理論知識的理解和活用外,有時還能在常規(guī)思維方式無法求解的情況下,獲得出奇制勝的效果。

逆向思維的思考方法主要有:反轉型逆向思維法,即從已知問題的相反方向進行思考;轉換型逆向思維法,即變換問題的思考角度的思維方法。在C++程序設計的教學過程中,對抽象、難理解的概念和問題,在常規(guī)思維的基礎上,引導學生通過逆向思維,從反向、側面、缺點利化的角度對問題進行充分理解,通過肯定、否定的思維方式,加深問題理解、增強思維的靈活性,提升學生的創(chuàng)新能力。

C++程序設計課程的主要內容可以分成過程程序設計和對象程序設計兩部分。C++程序設計課程內容多且抽象難懂,因此應根據(jù)開課學生專業(yè)和基礎知識掌握情況對教學內容進行適當?shù)牟眉簟?/p>

過程程序設計部分主要是講述C++程序語言的基本語法規(guī)則,教學過程中需要強調記憶且很難實施逆向思維教學;面向對象程序設計部分著重強調現(xiàn)實世界的抽象、表達以及基于它們的程序設計,具有較強的思維靈活性,使用傳統(tǒng)的教學方法只能從正面進行講授,若將其與逆向思維相結合,從問題的反面或側面進行教學,會收到更好的教學效果。

二、逆向思維的教學應用

(一)反轉型逆向思維教學案例

反轉型逆向思維,即從事物的相反方向進行思考,從而使問題得到很好的解決。在C++程序設計教學過程中,主要針對較難理解的概念和語法規(guī)則,通過與常規(guī)教學方法相結合,從問題的反方向來進行思考,加深問題的理解和掌握。

1.類與對象逆向思維教學

類、對象的概念及其相互關系是面向對象程序設計教學中非常重要的概念之一,對其的理解是否透徹直接影響后面內容的繼續(xù)學習。

傳統(tǒng)的類與對象的教學思路主要是通過類與結構體的對比來說明類的特性,并對類中的數(shù)據(jù)和方法進行講授,利用類進行對象構建來演示類與對象的關系、對象的使用方法,如圖1所示。采用傳統(tǒng)的教學方式講授,學生雖能夠掌握類的概念和使用方法,但對現(xiàn)實世界的抽象過程和類的創(chuàng)建過程比較陌生,很難活用。

圖1 傳統(tǒng)的類與對象的教學模式

圖2 逆向思維的類與對象教學模式

基于逆向思維的類與對象教學模式如圖2所示。所采用的教學方式是將現(xiàn)實世界中的同類對象作為教學的起點,分析同類現(xiàn)實對象,并對其進行泛化來構建概念對象,它包含了現(xiàn)實對象的描述屬性和動作;基于封裝思想構建相應的類,將概念對象的屬性和動作轉化成類的數(shù)據(jù)成員和相應的操作方法,并對類的定義和構建方法進行講授;通過對類進行實例化創(chuàng)建多個對象,通過不同的對象來影射現(xiàn)實世界中不同的現(xiàn)實對象,并通過對象的數(shù)據(jù)來描述現(xiàn)實對象,利用類方法來模擬現(xiàn)實世界中現(xiàn)實對象的相應動作及其相互關系?;谀嫦蛩季S,以真實對象作為教學的起點和歸宿,在講授概念和語法的同時,還重點強調了類的構建過程,從而加深對概念的理解和語法的活用。

2.靜態(tài)數(shù)據(jù)成員的逆向思維教學

類的靜態(tài)成員是C++程序設計語言中一個重要的概念,但由于課時有限,往往采用快速的傳統(tǒng)教學方式,即首先介紹靜態(tài)成員的概念,然后結合一個程序示例進行分析。由于概念本身較難懂,學生對其理解不夠深刻,感覺似懂非懂,更談不上合理的應用。對于此種情況,可以采用逆向思維教學模式進行教學,采取實例—理論—實例的教學方式,即首先通過實例展示靜態(tài)成員與普通成員的區(qū)別,然后結合實例介紹概念和相應的理論,最后再給出一個適合運用靜態(tài)成員解決的實際問題,并對其進行分析,最后通過靜態(tài)成員高效地解決問題,進而在傳授學生靜態(tài)成員知識的同時,也教會了學生如何獨立地分析問題和解決問題,具體過程如圖3所示。

圖3給出了基于逆向思維的靜態(tài)數(shù)據(jù)成員的教學過程。在CTestClass類中分別定義了靜態(tài)數(shù)據(jù)成員和普通數(shù)據(jù)成員,并給出了相應的操作方法,在main函數(shù)中分別創(chuàng)建a和b兩個對象,并在設置數(shù)據(jù)成員前后分別對靜態(tài)數(shù)據(jù)成員和普通數(shù)據(jù)成員進行輸出,比較它們的差異;然后結合示例講授靜態(tài)數(shù)據(jù)成員的概念;最后結合倉庫管理員統(tǒng)計貨物重量的實際問題,對靜態(tài)數(shù)據(jù)成員的應用進行分析,并解決問題。

圖3 逆向思維的靜態(tài)數(shù)據(jù)成員教學模式

(二)轉換型逆向思維教學案例

轉換型逆向思維是指在研究某一問題時,由于正常解決問題的方法受阻而轉換思考角度,從而使得問題得以順利解決的思維方法。

1.冒泡排序的逆向思維教學

通用的教材中,無論是遞增還是遞減的冒泡排序均是自頂向下進行的,首先對排序的數(shù)列中的第1對數(shù)進行沉底交換操作,直至第n對數(shù),完成第一趟;第二趟,仍然從第1對數(shù)開始,直至第n-1對數(shù)據(jù);如此下去,重復以上過程,直至最終完成排序(n為數(shù)的個數(shù))?;谀嫦蛩季S,將傳統(tǒng)的冒泡排序的操作方法進行逆轉,即從底向上的操作順序,先從第n對數(shù)進行冒泡交換操作,然后是第n-1數(shù)進行冒泡排序交換,直至第n對數(shù)。傳統(tǒng)與逆向思維方式的冒泡排序過程如圖4所示。

圖4 傳統(tǒng)與逆向思維方式的冒泡排序

逆向思維的冒泡排序代碼:

在實施冒泡排序教學時,先使用傳統(tǒng)的冒泡排序方法講授,在學生掌握了該方法后,對其進行逆向啟發(fā),啟發(fā)他們從另一個角度思考冒泡的操作方向,并結合示例程序對其進行介紹。通過不同思維方式的冒泡排序,可以活躍學生的思維方式,加深其對排序本質的理解,更重要的是可以培養(yǎng)其創(chuàng)新能力。

2.數(shù)組篩選的逆向思維教學

對于給定的一個整數(shù)數(shù)組arr[n],數(shù)組中不包括0和1,n為數(shù)組元素的個數(shù),輸出數(shù)組中的所有的合數(shù)。常規(guī)的思維方式是通過循環(huán)對數(shù)組中的各個整數(shù)進行合數(shù)判斷,若是合數(shù)則放在構建好的臨時數(shù)組中,最后將其作為計算結果返回。

可以啟發(fā)學生采用逆向思維進行如下思考:問題要求尋找出數(shù)組中的合數(shù),可以從問題的反面來操作,找出數(shù)組中的非合數(shù),即素數(shù),并把這些素數(shù)從數(shù)組中剔除出來,那么原始數(shù)組中剩下的數(shù)組元素就是問題的解。由于素數(shù)有著清晰的定義和算法,實現(xiàn)起來較為容易。

對數(shù)組的訪問是通過數(shù)組下標進行的。常規(guī)的循環(huán)篩選方向是從第一個元素向最后一個元素進行循環(huán),由于在篩選過程中會刪除部分數(shù)組元素,致使數(shù)組個數(shù)發(fā)生變化,但循環(huán)次數(shù)的結束條件和訪問數(shù)組元素的遞增的下標沒有變化,當前被刪除的元素的下標指示位置會被其后的元素占據(jù),而下標在下一次循環(huán)后依然會遞增,從而漏掉該元素,數(shù)組元素的數(shù)目也會減少但循環(huán)結束的條件未變,訪問數(shù)組元素時會產(chǎn)生數(shù)組越界的問題?;谀嫦蛩季S,將循環(huán)方向進行逆轉,即從最后一個數(shù)據(jù)元素向第一數(shù)據(jù)元素進行循環(huán),訪問元素的下標是遞減的,篩選過程中刪除的元素位于循環(huán)的后面,且循環(huán)結束的條件是止于第一個元素,因此不會出現(xiàn)遺漏數(shù)據(jù)元素和數(shù)組越界的問題。

基于逆向思維的數(shù)組求合數(shù)的代碼如下:

三、逆向思維教學應注意的問題

(一)逆向思維的主從關系

從教學過程來看,教學內容和問題是思維的對象,學生應該是思維主體,教師是學生思維的引導者。教師思維不能代替學生思維,又不能讓學生在別人思維途徑上進行模仿,因此要把握好引導的度,在講授知識的同時,啟發(fā)學生的逆向思維,引導學生主動地逆向思考,尋找問題的解決方法。

(二)遵循可接受原則

逆向思維教學是比較靈活的教學方式,旨在傳授知識的同時,提高學生的思維能力,因此必須針對學生的知識、思維能力和教學內容,做到因材施教,按學生的認知規(guī)律,遵循可接受原則,使學生的思維能力得以自然形成。

(三)教師應更新教育觀念

教師要充分認識到逆向思維對提高計算機類專業(yè)學生素質和技能的重要性。在常規(guī)教學方式中,要盡可能多地穿插逆向思維訓練,提高學生的思維能力。

四、結 語

逆向思維的思考方式具有很好的啟發(fā)性,在拓寬學生的思維方式、調動學生的學習積極性、提升其分析問題解決問題的能力、培養(yǎng)學生創(chuàng)新思維等方面具有較大的優(yōu)勢。但是逆向思維教學也存在一定的弊端,主要有:(1)備課時間較長;(2)要求教師對問題有深刻的理解,并具備較強的思維能力;(3)課程的課時要比較充分。逆向思維是一種異于常規(guī)思維的思考方式,在將其運用到教學中時,需要根據(jù)問題本身的難易程度,與常規(guī)的思維教學方式相結合,取長補短,從而在活躍學生思維方式的同時,使教學內容更易理解和掌握,將教學效果提升一個層次。逆向思維教學方式何時、以何種方式與其他教學方法進行有機地結合,取長補短、相得益彰,是一個值得深入研究的課題。

[1]肖明.案例教學法在“C++語言程序設計”教學中的應用[J].計算機教育,2010(6):83-86.

[2]夏承遺,李文杰,孫世溫.問題驅動的“C++程序設計”教學方法研究[J].計算機教育,2010(1):122-125.

[3]杜少武,張毅,黃海宏,等.電力電子技術課程的逆向思維教學法研究[J].電氣電子教學學報,2007,29(4):94-97.

[4]向華.如何在C++教學中引入初步的設計模式思想[J].長江大學學報(自然科學版),2009,6(2):388-389.

猜你喜歡
數(shù)組程序設計逆向
逆向而行
JAVA稀疏矩陣算法
電腦報(2022年13期)2022-04-12 00:32:38
基于Visual Studio Code的C語言程序設計實踐教學探索
計算機教育(2020年5期)2020-07-24 08:52:56
JAVA玩轉數(shù)學之二維數(shù)組排序
電腦報(2020年24期)2020-07-15 06:12:41
從細節(jié)入手,談PLC程序設計技巧
電子制作(2019年9期)2019-05-30 09:42:04
逆向解答
高職高專院校C語言程序設計教學改革探索
尋找勾股數(shù)組的歷程
PLC梯形圖程序設計技巧及應用
逆向工程技術及應用
湖北省| 宁津县| 新宾| 股票| 龙口市| 四平市| 寿阳县| 天津市| 马公市| 长丰县| 宜章县| 曲水县| 永靖县| 抚宁县| 新昌县| 昌邑市| 花垣县| 通许县| 宁南县| 青田县| 珲春市| 翁牛特旗| 左云县| 平利县| 广德县| 鹿泉市| 禄丰县| 柳州市| 合肥市| 宜兰市| 邹城市| 油尖旺区| 石棉县| 阳泉市| 鞍山市| 仪陇县| 阿坝| 思茅市| 赫章县| 嵩明县| 泗水县|