吳經志


摘要:在面向非計算機專業學生的程序設計課程教學中,相比傳統編程語言如VB語言等過于強調語法,知識點繁多,且缺乏對程序設計思維能力的培養,使學生失去學習編程的興趣,Python語言因其教學內容精煉及輕量級的語法和高層次的語言表示而更適合于學生學習掌握。
關鍵詞:非計算機專業學生;VB語言;Python語言
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2019)29-0094-02
我校非計算機專業第二層次的計算機課程包括有VB語言程序設計、C語言程序設計、信息技術導論和多媒體技術應用等。其中理工科院系開設的是VB語言程序設計或C語言程序設計,從這幾年的教學實踐來看,作為教師,我們在教學過程中過于注重高級語言語法知識的講解而忽略了學生的計算思維能力的培養;從教學效果來看,這些非計算機專業的學生普遍存在著對理論知識理解不夠深刻,在程序設計過程中缺乏算法思想,同時學習積極性較差、自學能力不足、學習興趣較難培養等。
1程序設計課程教學現狀
目前我校針對多數非計算機專業理工科學生開設的程序設計課程為VB語言程序設計,教學內容分為理論知識教學和上機實驗教學兩部分,理論教學以教師講授知識單元為主,實驗教學以完成驗證性實驗作業為主。VB語言發展自早期的Basic語言,用于開發Windows系統中的視窗應用,其教學內容圍繞窗體對象、按鈕、文本框、圖形界面、事件響應等開展,是一種基于視窗的語法設計體系。用VB語言及后續的VB.NET所開發的程序僅限于Windows系統,應用面狹窄,具有較大的局限性。
由于VB語言本身的特性及大多數非計算機專業的學生在學習程序設計課程之前并未接觸過相關知識這兩方面的原因,我們在教學實踐中基本上都會碰到以下幾個問題:一是教學過程中過于強調語法知識等語言細節。在教學中側重程序設計語言本身,針對數據類型、表達式、函數等各種語法規則的教學占用了大量的課時和精力。語法基礎雖然是編程基礎,但知識點多且瑣碎,需要理解、掌握和運用,學生極易在枯燥的語法學習中失去學習編程的興趣,把課程學習重點放在學習語法規則,并沒有掌握程序設計思想和方法,忽視對程序設計能力的培養。二是缺乏程序思維能力的培養。編寫計算機程序的難點在于程序設計語言的學習,而重點是解決問題的思路,或者說是程序設計思維。程序設計思維是面向計算機解決問題的一種方式和方法,即運用計算機程序設計的概念、環境、工具和系統等從事計算機程序設計的一種思維方式。當前許多院校在程序設計課程教學中缺乏程序思維能力的培養,學生雖然能通過考試,但是在實踐中如果遇到真正的編程問題,往往無從下手,不知該如何分析、分解問題,進而設計算法和解決問題。三是程序設計課程內容與專業結合不夠。大部分院校的程序設計課程采用通用的計算機程序設計教材,案例也多針對計算機專業學生所設計,課程的教學內容是和實踐沒有同學生的專業應用結合起來,在多數非計算機專業的學生看來,程序設計課程是一門計算機編程課,和自身專業無關,后繼的專業學習和實踐中也很少會使用,因此對程序設計課程興趣不大,缺乏學習熱情。
2用Python語言替代VB語言
Python語言是目前美國大學最受歡迎的程序設計語言之一,由Guido vanRossum于1989年發明,是一種輕語法、弱類型的腳本語言。Python語言的教學內容是分支、循環、函數等基本的程序邏輯關系及功能強大的函數庫應用,它是目前最接近自然語言的通用編程語言。相比我們目前開設的VB語言,Pv—thon語言只關心計算問題的求解,其輕量級的語法和高層次的語言表示表達了應用計算機解決問題的計算思維理念。
從計算思維培養角度來看,VB語言等傳統編程語言因為過分強調語法,并不適合非計算機專業的學生。在傳統應用技能教育向計算思維培養轉變的過程中,Pvthon語言作為新技術時代的輕語法程序設計語言,無疑是更合適的選擇。Pvthon語言解釋器是開源的且開源協議限制較少,基于該語言編寫的程序符合我國自主可控的信息安全要求;其易學易用的特點和豐富的開源庫可以給學生帶來一個全新的程序設計認識,改變目前學生想學好編程語言但學不會學不精的狀況。隨著大數據、云計算等概念的興起,當代信息社會要求大學生除具備操作計算機的基礎技能外,還應具備一定的編程能力,用于解決學習和工作生活中遇到的各類非通用計算問題,理解并實踐計算思維。
從我校的程序設計教學情況來說,要用Python語言替代VB語言,在教學理念方面,有如下幾個地方要做出轉變:
(1)Python語言教學不是傳統高級語言教學的Python版。
以VB語言為例,在程序設計教學中,語法是教學重點,教學過程圍繞按鈕、文本框、圖形界面等展開,其詮釋的是計算機視窗時代的計算思維。Python語言則弱化語法講解,更注重程序本質。Python語言的特點是開源、跨平臺、腳本執行、通用和具有粘性,其詮釋了復雜信息系統時代的計算思維。
(2)Python語言教學不是基本算法表達的教學手段。
算法即解決問題的步驟序列,其作用是表述人類解決問題的思想,對于復雜的問題,直接寫出程序是比較困難的,通常需要先設計算法,用自然語言或流程圖或偽代碼描述出來,再用高級語言進行編程。而在使用Python語言的時候,我們可以在描述算法的同時,讓程序也同步編寫出來,讓學生更側重于計算問題的解決。
(3)Python語言教學需要滲透“開源開放”思想。
開源指的是軟件的源代碼是開放的。在微軟成立之前,程序是程序員思想和智慧的結晶,人們可以共享程序員的這種智慧成果。而自微軟成立之后,人們意識到,程序是有知識產權的,軟件是要花錢買的,在這種思想指導下,比爾·蓋茨創造了微軟帝國,軟件的商品化也促進了軟件產業的發展。但隨著社會的發展,人們的計算機知識水平越來越高,這對于想要進行自我調整的軟件產業來說,閉源就顯得跟不上時代了,而應用開源思想,可以最大限度地集成各種各樣的天才思想,使得軟件系統更加完善,同時更加開放。
(4)Python語言教學需要提高練習題品味,激活創新。
面對非計算機專業的學生,我們的程序設計教學不能僅以數據處理為目標,這樣會讓學生覺得編程很無聊,使得課程本身缺乏對學生的吸引力。通過結合Python語言的特點,設計更好的教學案例,讓學生覺得編程也可以很好玩,很有趣,很時尚,以激發他們學習的熱情。
3教學案例
Python解釋器提供了幾百個內置類和函數庫,此外,世界各地的程序員通過開源社區貢獻了十幾萬個第三方函數庫,幾乎覆蓋了計算機技術的各個領域,編寫Python程序可以大量利用已有的內置或第三方代碼,具備良好的編程生態。
我們這里以PIL庫為例,介紹一下Python庫的使用。PIL(Python Image Library)庫是Python語言的第三方庫,具有強大的圖像處理能力,不僅包含了豐富的像素、色彩操作功能,還可以用于圖像歸檔和批量處理等。PIL庫支持圖像存儲、顯示和處理,它能夠處理幾乎所有圖片格式,可以完成對圖像的縮放、裁剪、疊加以及向圖像添加線條、圖像和文字等操作。根據功能不同,PIL庫共包括21個與圖片相關的類,這些類可以看作是PIL庫的子庫或P1L庫中的模塊。
這里有一張圖片eat.1ipg,其存放于D盤py文件下,效果如圖1所示,若要獲取這張圖片的輪廓效果,可通過調用PIL庫中的Image類和ImageFiher類的相關方法實現。
Image類是PIL庫中最重要的類,它代表一張圖片,引入這個類的方法如下:
from PIL import Image
在PIL中,任何一個圖像文件都可以用Image對象表示。表1列出了Image類的圖像讀取和創建方法。
要加載圖像文件cat.jpg,方法如下,之后所有操作對iml起
其中第1、2兩條代碼分別為引入PIL庫中的Image類和Im-ageFiher類,第3條代碼為加載圖片eat.jlpg并用變量im1表示,第4條代碼為獲取圖片iml的輪廓效果并用變量im2表示,第5條代碼為將圖片im2保存至D盤py文件夾下并命名為ctcat.jpg。運行以上代碼,即可獲得圖片ctcat.jpg,其效果如圖2所示。
4結束語
在本學期的Python語言程序設計試講教學過程中,我最大的感受是對于這門最接近自然語言的通用編程語言,多數學生都能夠理解并掌握它。在學習程序的分支結構、循環結構、函數應用等知識點時,學生們并沒有感覺到枯燥無味,反而因一些“簡單”或好玩的Python庫及實例,如turtle庫、PIL庫、詞頻統計實例等,激發了他們學習的興趣和積極性。