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

?

以圖形牽引興趣的Python案例教學方法與實踐

2017-09-01 17:42黃天羽嵩天
計算機教育 2017年8期
關鍵詞:圖形教學案例教學

黃天羽+嵩天

摘 要:針對目前程序設計課程的教學狀況,分析學生在程序設計課程入門學習中的困惑,探討將現有程序設計課程案例與圖形相結合,提出“圖形牽引興趣,開展Python案例教學”的觀點,并給出圖形化入門程序案例、圖形化程序結構案例、圖形化數據結構案例、實際問題應用等,在程序設計入門教學過程中通過圖形實現計算問題求解過程或結果呈現的多樣化、可視化,以達到提高學生程序設計學習興趣和培養(yǎng)現代計算思維的目的。

關鍵詞: Python程序設計;圖形教學;興趣牽引;案例教學

0 引 言

Python語言是目前最接近自然語言的通用編程語言,它是程序設計課程教學改革的理想選擇,是理解計算思維時代性的重要體現[1]。程序設計課程教學改革不僅僅是選擇一種語言,更應該是建立一種易于理解、提升興趣的教學形式。在教學方法層次上,教師應重視圖形的作用[2]。我們生活在一個豐富多彩的圖形世界里,學會利用圖形分析和解決問題,既是現實生活的需要,又是圖形編程的重要內容。在教學中,用圖形的可視化手段輔助解決計算問題,在提升學生學習興趣的同時,又有助于解決學習、生活及生產中的問題。

計算機顯示技術給人們的生活帶來了巨大改變。計算機用戶接口的人機方式由最初穿孔紙帶,經歷了字符顯示、文字顯示、圖形/圖像、視頻/多媒體,發(fā)展到今天全方位感知的虛擬現實技術。與此形成鮮明對比的是,當前程序設計語言教學案例依然沿用基于字符的人機接口。

Python語言提供了豐富的圖形計算生態(tài)環(huán)境,借助第三方庫可以方便地實現圖形繪制、數據可視化、用戶界面以及復雜的圖形應用[3]。在Python教學中引入圖形化手段[4],實現計算問題求解過程或結果呈現的多樣化、可視化,可以達到增強學生程序設計學習興趣、引導學生建立學習自信、培養(yǎng)學生現代計算思維的目的。

1 當前程序設計語言教學現狀

自程序設計語言課程在我國高校開設以來,一直沿用以求解數學類問題為主的教學案例主線,典型例子如下。

(1)星號問題。編寫程序,輸出由星號(*)組成的菱形。

(2)溫度轉換問題。編寫程序,轉換攝氏溫度為華氏溫度,轉換公式為C=(5/9)(F-32),其中,C表示攝氏溫度,F表示華氏溫度。

求解這些問題的共同點是對簡單數學公式進行編程并計算結果。翻譯成程序設計語言即通過定義合適的數學變量,建立數學表達式,將結果賦值給變量,最終輸出計算結果。對于剛剛接觸程序設計的學生來說,程序設計語言是一種全新的思維訓練,也是計算思維習慣的培養(yǎng)過程。然而,枯燥的程序設計語言語法學習和單一形式的問題求解實踐降低了學生的學習興趣,并使得他們對程序設計產生了理想和現實差距的困惑。這些困惑反映了當前程序設計教學案例已經遠離學生實際生活的事實。

2 以圖形牽引興趣

圖形讓現實生活變得豐富多彩。在教學中,用圖形的可視化手段輔助解決計算問題,在提高學生學習興趣的同時,又有助于解決學習、生活及生產中的問題。

2.1 教學案例的字符化與圖形化對比

針對前文中的典型程序問題,在Python語言教學過程中,可以通過圖形化設計將計算過程和結果以直觀的可視化形式展示出來,其設計結果如圖1和圖2所示。將其與傳統(tǒng)教學的輸入輸出設計相比,圖形化的輸入輸出具有更好的理解性和直觀性,同時對學生的學習興趣也起到有益的引導作用。

在圖1所示的星號問題案例中,主要考查學生對循環(huán)結構的理解以及輸入邊界條件的驗證。雖然以星號排列組成的求解結果形式屬于圖形化的范疇,如圖1(a)所示,但黑白顏色和“*”字符輸出會讓學生對圖形理解產生障礙;而圖1(b)所示的結果不僅在顏色上有豐富的變化,同時能更直觀、更形象地幫助學生理解通過輸入n值獲得3~n邊形的循環(huán)結構問題。

在圖2所示的溫度轉換問題案例中,需要讓學生實踐C=(5/9)(F-32)數學公式的計算。圖2(a)展示了以英文句子作為提示的輸入方式;圖2(b)給出了基于對話框的用戶交互界面,在輸入框中輸入攝氏溫度C值,在對話框中輸出數值型華氏溫度F值,同時對話框背景色根據當前溫度的高低給出不同顏色暗示,第1張圖表示溫度越低,第3張圖表示溫度越高。圖2(b)的圖形化結果較圖2(a)更加直觀且考核了分支結構。這種運用色彩的方式使學生自身能產生與顏色值類似的感受,更貼近生活實際,與學生“學習程序設計語言,解決身邊計算問題”的初衷一致。

2.2 Python的圖形計算生態(tài)

Python語言具有開源、跨平臺、腳本執(zhí)行、通用等若干特點,1991年正式發(fā)布至今26年,迅速發(fā)展且得到普及和廣泛應用。Python語言的開源思想深入發(fā)展,已構建了龐大的計算生態(tài)。目前,Pyton語言形成了約10萬多個以開源項目為代表的第三方庫,在圖形和可視化領域也形成了龐大的生態(tài)社區(qū),如Enthought公司提供了豐富的第三方圖形庫,Enthought社區(qū)也成為典型的圖形計算生態(tài)圈。

Python語言的第三方圖形庫可以分為簡單平面繪圖庫、GUI圖形用戶界面庫、數據可視化庫、圖形/圖像/多媒體庫等幾類,見表1。

2.3 教學案例的圖形化設計

程序設計語言教學案例的圖形設計不僅需要考慮程序設計結構的展示,還需要在求解問題的過程中引入圖形化設計方法,輔助問題求解,更大限度地提高學生學習興趣。圖形化設計可考慮從以下4個方面展開。

1)計算問題求解結果呈現的多樣化、可視化。

2.1節(jié)分別針對星號問題和溫度轉換問題開展了求解結果的圖形化設計,求解結果直觀生動、形式多樣化。對于傳統(tǒng)程序設計案例,可以通過Python語言第三方庫改造,實現可視化展現。Python語言第三方庫使用簡單,案例中不應回避圖形繪制,應盡可能利用圖形化手段豐富求解結果的呈現效果。

2)程序設計教學與圖形的結合。

程序設計語言的語法和程序結構是程序設計入門課程的學習重點。Python語言是一種重問題求解、輕語法的程序設計語言,其初衷是將程序員的主要精力放在問題求解上,因此,為了實現圖形牽引興趣的Python學習,應將程序設計教學的全部內容與圖形相結合,包括程序設計結構、程序數據結構、算法設計等。

3)引入圖形用以直觀展示問題的求解過程。

很多實際問題在抽象成計算問題的過程中,會逐漸丟失直觀的信息成分。通常數學問題的求解都是以理論推導為基礎,相對于可視化而言,其求解過程枯燥、非直觀,如遞歸類問題。通過引入圖形手段,可以直觀展示遞歸嵌套的逐級求解過程,這將幫助學生直觀理解遞歸原理和具體運行過程。

4)實際問題應用的豐富多彩。

在個人計算機上運行的90%應用程序都具有豐富的可視化形象,一方面,體現在絕大多數應用軟件都有美觀的圖形用戶接口GUI,即軟件界面;另一方面,很多實際問題的應用是基于計算機圖形技術生成的,如圖形藝術、圖像處理、游戲設計開發(fā)、3D應用等。在信息類相關專業(yè)開展程序設計高級進階課程教學時,應及時引入圖形化編程,以完善程序設計的知識體系。

3 程序設計課程入門實例

3.1 開展圖形教學可能產生的困惑

改變傳統(tǒng)的程序設計教學案例,開展基于圖形的程序設計案例教學,可能會給教師和學生帶來以下困惑。

(1)初學程序設計的學生是否真的理解圖形概念?調查表明,學生認為圖形的人機交互方式遠比命令行方式更好理解,因此圖形將成為程序設計學習的輔助工具。

(2)使用Pyhon圖形庫需要多少程序設計功底?能否在入門課程中使用?Python語言的圖形計算生態(tài)不僅提供了專業(yè)的第三方圖形庫,還提供了適用于入門學習者的第三方圖形庫,這使得編寫Python圖形程序非常簡單,對于零基礎入門學習者來說并不存在障礙。

(3)圖形是Python可選的教學內容,還是必選的教學內容?沒有圖形支持的程序只能基于數字或字符,在計算機圖形學和顯示效果十分發(fā)達的今天,這種學習體驗非常不利于學生保持學習興趣。對于初學者來說,圖形不僅是Python語言必選的教學內容,還是必不可少的教學手段。

3.2 第一個圖形入門程序設計

我們通過引入第一個圖形入門程序設計案例,分析圖形對入門者的學習興趣牽引作用。通常,程序設計語言教學的第一個入門案例都為“Hello World”,該案例通過執(zhí)行輸出語句,可以實現一個簡單的計算機程序。然而,在調查中發(fā)現,完成這樣的程序編寫并不能給初學者帶來成就感和學習信心,或者說從入門學習的興趣牽引角度上來說,效果并不明顯。

在教學實踐中,設計了以Python(英文釋義蟒蛇)為主題的小蛇繪制案例snake.py。該案例基于Python內嵌的Turtle庫,在圖形窗口中繪制了一條彎曲的蟒蛇,程序繪制結果如圖3所示。Python的程序代碼如下:

#snake.py

import turtle #引入turtle庫

def drawSnake(rad, angle, len, neckrad): #繪制小蛇函數

for i in range(len): #繪制小蛇身體彎曲的周期數

turtle.circle(rad, angle) #繪制正半圓

turtle.circle(-rad, angle) #繪制負半圓

turtle.circle(rad, angle/2) #繪制小蛇的脖子

turtle.fd(rad)

turtle.circle(neckrad+1, 180)

turtle.fd(rad*2/3)

turtle.setup(1300, 800, 0, 0) #建立窗框

pythonsize = 30 #設置畫筆變量

turtle.pensize(pythonsize) #設置畫筆粗細

turtle.pencolor("blue") #設置畫筆顏色

turtle.seth(-40) #設置前進的朝向

drawSnake(40, 80, 5, pythonsize/2) #調用小蛇繪制函數

snake程序案例體現了較多程序設計元素,如第三方庫的引用、變量定義、表達式、函數定義、循環(huán)結構等;同時,該程序還包含Python Turtle庫的若干函數。在實踐中,初學者并沒有因為抄寫15行陌生代碼而退縮,正是由于Python語言重問題求解、輕語法的特點,學生更關注如何繪制出一條小蛇,而非每一個語句的語法。在完成代碼抄寫并成功運行程序的情況下,95%以上的學生認為通過編寫代碼繪制出一條生動的小蛇“有趣”“有成就感”,78%以上的學生認為自己對學好程序設計語言課程“有信心”。

在該程序中引入的Turtle庫是一個適用于初學者的繪圖庫,通過模擬烏龜爬行釋義實現圖形的繪制,如turtle.fd()是沿著當前方向爬行/繪制一定長度的直線,trutle.pensize()是設置爬行/繪制路徑的寬度。

4 開展Python圖形案例教學

為了進一步探討圖形與程序設計語言教學的結合,我們針對程序設計結構、文件、字典和遞歸開展Python圖形案例教學的設計。由于Turtle圖形庫易于理解,本節(jié)案例均基于Turtle庫實現圖形可視化,源程序可參考中國大學MOOC“Python語言程序設計”課程在線資源[5]。

4.1 圖形與程序設計結構

程序設計的基本結構是程序設計語言教學的重要內容。結構化的程序設計提出了程序的3種基本結構,即順序、循環(huán)和選擇,它們控制了算法一系列操作的執(zhí)行次序。在圖形化程序設計結構中,教師可設計這樣的案例:“編寫程序,應用順序、循環(huán)和選擇3種程序基本結構,實現多邊形繪制”。順序、循環(huán)和選擇3種結構的程序主要代碼片段如下:

在程序實現上,通過順序調用Turtle庫中函數penup()、goto()、pendown()、circle()依次實現多邊形的繪制,程序執(zhí)行效果如圖4(a)所示;通過循環(huán)結構,設置goto()和circle()函數的參數為循環(huán)變量,實現多邊形的循環(huán)繪制;通過選擇結構,根據輸入的選擇參數shape,有選擇地進入不同的分支語句,執(zhí)行多邊形繪制。進一步,通過設置turtle的begin_fill()、pencolor()、end_fill()函數,可以為繪制的多邊形填充顏色,程序執(zhí)行效果如圖4(b)所示,可使得圖形結果更加生動、鮮明。該案例的設計可以讓學生直觀理解3種程序結構。

4.2 圖形與文件

文件操作是程序設計入門課程的重要內容之一。圖形化文件操作實例設計如下:讀取文件data.txt數據,繪制數據形成的圖形路徑。圖5(a)給出了文件data.txt示意,文件中第1行第1列數據300表示向當前方向前進300個像素,第2列數據0表示向左轉,1則表示向右轉,第3列數據144表示轉動的144度角,第4、5、6列數據(1,0,0)表示當前繪制路徑的顏色RGB值。根據該數據文件,可以動態(tài)地繪制出路徑圖形,如圖5(b)所示。這是典型的基于文件數據驅動應用案例,是工程數據可視化、視頻文件播放器等應用的極簡設計。該案例不僅可以讓學生練習文件讀取操作,還有助于學生理解基于數據驅動應用的實現原理。

4.3 圖形與遞歸

遞歸是程序算法教學中重要的知識點,對程序入門學習者來說,遞歸概念抽象不好理解,采用可視化手段,求解過程就變得直觀易懂。例如,遞歸案例“編寫程序,運用遞歸方法繪制一棵樹”,其程序執(zhí)行結果如圖6所示,利用Turtle的動態(tài)繪制機制,遞歸調用過程一目了然。

4.4 圖形與字典

字典是Python語言特有的高級數據結構,是非序列集合而提供的一種數據類型。字典學習的經典程序案例是詞頻統(tǒng)計,通過圖形化設計改造,教學案例設計為“讀取一篇英文文章,統(tǒng)計文章中每個單詞的出現頻率,并以柱狀圖輸出出現次數最多的10個英文單詞”。程序執(zhí)行結果如圖7所示,與文字輸出的結果形式相比,該圖呈現效果更為直觀。

4.5 豐富多彩的Python庫解決實際問題

應用Python第三方圖形庫可以解決諸多實際問題,如圖像處理、數據分析與展示、科學計算三維可視化、三維掃描數據處理、物理光照和全局光照、真實感圖形繪制、視景仿真、及時戰(zhàn)略游戲、FPS游戲、軍事仿真應用等。

5 結 語

基于Python圖形計算生態(tài),我們提出了“圖形牽引興趣,開展Python案例教學”的教學觀點,通過實現計算問題求解過程和結果呈現的多樣化、可視化,將圖形化教學案例設計思想引入第一門程序設計課程。實踐表明,經該方法改造后的案例可以有效提升并使學生保持較高的學習熱情、建立學習自信,達到進一步培養(yǎng)計算思維的目的。上述教學理念在北京理工大學7次課堂教學實踐和中國大學MOOC多次在線課程教學實踐中運用,取得了良好的教學效果。

參考文獻:

[1] 嵩天, 黃天羽, 禮欣. Python語言: 程序設計課程教學改革的理想選擇[J]. 中國大學教學, 2016(2): 42-47.

[2] 百度文庫. 重視圖形的作用[EB/OL]. (2014-12-22)[2017-06-20]. https://wenku.baidu.com/view/6e69ae188e9951e79b89278d.html.

[3] 中國大學MOOC. Python科學計算三維可視化[EB/OL]. [2017-06-20]. http://www.icourse163.org/course/BIT-1001871001.

[4] 嵩天, 禮欣, 黃天羽. Python語言程序設計基礎[M]. 2版. 北京: 高等教育出版社, 2017: 46-55.

[5] 中國大學MOOC. Python語言程序設計[EB/OL]. [2017-06-20]. http://www.icourse163.org/course/BIT-268001.

[6] Mayavi. 3D scientific data visualization and plotting in Python[EB/OL]. [2017-06-20]. http://docs.enthought.com/mayavi/mayavi/.

(編輯:宋文婷)

猜你喜歡
圖形教學案例教學
觀察實物,對比圖形
例談小學數學圖形生活化教學策略實踐
例談多媒體在小學數學圖形教學中的實踐
鋼琴對環(huán)境污染的探討
淺議課堂教學與管理的體會
案例教學在機械創(chuàng)新設計課程中的應用
馬克思主義基本原理概論課案例教學的幾點思考
EXCEL在《投入產出法》案例教學中的應用
《運籌學》教學模式探討
巧用信息技術,優(yōu)化低年級圖形教學