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