朱鵬飛
摘要:隨著科技的不斷發(fā)展,也帶動(dòng)著社會(huì)的持續(xù)進(jìn)步。相對(duì)而言,對(duì)于多元化人才的需求也在不斷提升,特別是在當(dāng)前信息化時(shí)代背景下,市場(chǎng)對(duì)于計(jì)算機(jī)人才的要求不僅僅局限于技術(shù)能力方面的需求,更體現(xiàn)在計(jì)算思維能力是否具備。雖然目前我國(guó)諸多高等院校也開設(shè)了對(duì)應(yīng)的計(jì)算機(jī)課程教學(xué),但是目前教學(xué)僅僅以傳授知識(shí)為主,對(duì)于學(xué)生能力的培養(yǎng)往往過(guò)于忽視,因而研究如何針對(duì)大學(xué)生的計(jì)算思維能力進(jìn)行培養(yǎng),同時(shí)引導(dǎo)他們運(yùn)用這種能力去解決一些現(xiàn)實(shí)問題,也是目前值得重視的問題之一。本文就以當(dāng)今高校中開設(shè)的程序設(shè)計(jì)課程Python語(yǔ)言為例重點(diǎn)闡述對(duì)學(xué)生計(jì)算思維能力的培養(yǎng)。
關(guān)鍵詞:計(jì)算機(jī)課程教學(xué);程序設(shè)計(jì);Python語(yǔ)言;計(jì)算思維
中圖分類號(hào):TP301 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2017)03-0238-02
1 引言
就一般計(jì)算機(jī)教學(xué)而言,主要以學(xué)習(xí)程序構(gòu)成、編程方法以及軟件開發(fā)等為主,特別是對(duì)于大學(xué)計(jì)算機(jī)教學(xué)而言,可以分為課程教學(xué)與上機(jī)實(shí)踐兩個(gè)教學(xué)階段,對(duì)于前者,一般是要求學(xué)生初步了解程序的基本理念、構(gòu)成,獲得更多編程基礎(chǔ)語(yǔ)言的知識(shí)儲(chǔ)備;而對(duì)于后者則更加注重對(duì)學(xué)生計(jì)算思維能力的培養(yǎng),同時(shí)讓學(xué)生能夠?qū)⑦@種思維能力用于處理一系列問題,從而達(dá)到學(xué)以致用的效果。當(dāng)然,計(jì)算機(jī)學(xué)習(xí)過(guò)程也是較為緩慢的過(guò)程,而要解決普遍學(xué)習(xí)者入門難的問題,對(duì)于教學(xué),特別是上機(jī)實(shí)踐教學(xué)引入科學(xué)的教學(xué)方式也是十分必要的。基于面向?qū)ο蟮?、解釋類型的Python程序設(shè)計(jì)語(yǔ)言,其主要優(yōu)勢(shì)體現(xiàn)在其程序語(yǔ)法的簡(jiǎn)潔性,易讀性,其整個(gè)學(xué)習(xí)過(guò)程特別是上機(jī)實(shí)踐過(guò)程入門簡(jiǎn)單,上手容易,非常適用于滿足不同計(jì)算機(jī)基礎(chǔ)學(xué)生的學(xué)習(xí)需求,且具有泛用性,與其他程序設(shè)計(jì)語(yǔ)言良好的通用性等特點(diǎn)。因此,筆者將通過(guò)本文,從Python程序設(shè)計(jì)語(yǔ)言對(duì)學(xué)生計(jì)算思維能力的培養(yǎng)方面入手,進(jìn)而進(jìn)行具體的分析與探討。
2 計(jì)算思維的基本概念
計(jì)算思維就是一種思維方式,而其主要是依靠基本的簡(jiǎn)化、嵌入、轉(zhuǎn)化及仿真等程序處理方式,將單個(gè)看似難度較大的程序難題二次整合,同時(shí)詮釋成為一個(gè)公眾能夠知曉問題如何處理的思維方式;同時(shí)它也是一種遞歸思維方法,即推行并行處理,就是將程序代碼與數(shù)據(jù)之間實(shí)現(xiàn)雙向翻譯轉(zhuǎn)換,而且它還能夠達(dá)到多維研究推行檢測(cè)的效果;當(dāng)然,計(jì)算思維還能夠保證通過(guò)抽象及解析來(lái)調(diào)控繁瑣的任務(wù)或者展開大規(guī)模的、繁雜的系統(tǒng)設(shè)定,當(dāng)然也是以關(guān)注分離作為基礎(chǔ);而且可以挑選科學(xué)的方法去產(chǎn)生單一問題,或?qū)δ硞€(gè)問題的有關(guān)內(nèi)容進(jìn)行建模,從而降低其解決和處理難度性的思維方式;當(dāng)然,對(duì)于計(jì)算思維而言,同時(shí)還會(huì)衍生出防護(hù)、預(yù)案,或者根據(jù)冗雜、容錯(cuò)、改錯(cuò)以達(dá)到對(duì)整個(gè)程序控制的效果,并根據(jù)最差的狀況下完成系統(tǒng)修整工作;此外,可以采用誘導(dǎo)推演方式獲得解答,而這種思維方式也能在不定狀態(tài)中完成對(duì)應(yīng)的策劃、學(xué)習(xí)與調(diào)整過(guò)程;可以借用大量數(shù)據(jù)資源提升運(yùn)算速度,從而保證在時(shí)間與空間、解決效率與存儲(chǔ)容量方面找出一種均衡的方案[1]。
3 目前大學(xué)生計(jì)算機(jī)基礎(chǔ)課程教學(xué)存在的問題
3.1 教學(xué)時(shí)長(zhǎng)有限
對(duì)于計(jì)算機(jī)課程教學(xué)而言,雖然屬于大學(xué)的基礎(chǔ)教學(xué),但是隨著社會(huì)人才需求方向的變化,課程時(shí)長(zhǎng)也受到相應(yīng)的縮減和影響。特別是對(duì)于非計(jì)算機(jī)專業(yè)的學(xué)生而言,往往在計(jì)算機(jī)課程學(xué)習(xí)的機(jī)會(huì)較少,而很多計(jì)算機(jī)教師也為了“趕進(jìn)度”,從而加快了教學(xué)速度,也忽視了學(xué)生的接受效果以及學(xué)習(xí)情況。此外,程序教學(xué)也是計(jì)算機(jī)教學(xué)中不可缺少的內(nèi)容,而教學(xué)時(shí)長(zhǎng)的縮短也讓學(xué)生很難通過(guò)短期的學(xué)習(xí)和練習(xí),熟練掌握和運(yùn)用這些理論化、抽象化的知識(shí)內(nèi)容,因而學(xué)習(xí)效果也難以達(dá)到。
3.2 語(yǔ)法學(xué)習(xí)不足
語(yǔ)法是所有語(yǔ)言學(xué)習(xí)的基礎(chǔ),而計(jì)算機(jī)語(yǔ)言的語(yǔ)法學(xué)習(xí)即是代碼,若在程序設(shè)計(jì)過(guò)程中學(xué)生語(yǔ)法學(xué)習(xí)程度不夠,就會(huì)導(dǎo)致代碼語(yǔ)法出現(xiàn)錯(cuò)誤、疏漏等問題,從而導(dǎo)致整個(gè)程序功能實(shí)現(xiàn)受到影響,最大的影響就在于很多程序無(wú)法運(yùn)作,對(duì)于學(xué)生學(xué)習(xí)的熱情也將是一個(gè)巨大的影響。此外,在程序運(yùn)行過(guò)程中,未能體現(xiàn)顯著的運(yùn)行情況,這也導(dǎo)致多數(shù)學(xué)生學(xué)習(xí)出現(xiàn)無(wú)從下手的情況,教學(xué)整體效率差。
3.3 算法教學(xué)較少
算法是多數(shù)計(jì)算機(jī)編程的基礎(chǔ),也是保證學(xué)生學(xué)習(xí)熱情的“催化劑”。但是在傳統(tǒng)高校的大學(xué)計(jì)算機(jī)課程教學(xué)過(guò)程中,僅僅只有部分教師會(huì)將其視為程序設(shè)計(jì)的教學(xué)引入,即如各類基礎(chǔ)算法(包含遞歸、迭代、排序、查找等等),而這些算法可以降低學(xué)習(xí)的難度性,也能直接對(duì)學(xué)生的思維產(chǎn)生共鳴,從而激發(fā)后者的興趣和熱情,而且各類算法的運(yùn)用也將對(duì)學(xué)生學(xué)習(xí)產(chǎn)生正面的效果[2]。
3.4 缺乏引導(dǎo)教學(xué)
無(wú)論是C語(yǔ)言或JAVA語(yǔ)言,雖然都屬于泛用性的程序語(yǔ)言,但是學(xué)生在學(xué)習(xí)過(guò)程中往往需要經(jīng)歷較長(zhǎng)的磨合期,而且入門往往需要花費(fèi)大量的精力與時(shí)間進(jìn)行摸索,再加上教學(xué)流程缺乏相應(yīng)的引導(dǎo)教學(xué),從而導(dǎo)致多數(shù)學(xué)生會(huì)在學(xué)習(xí)過(guò)程中陷入學(xué)習(xí)的誤區(qū),進(jìn)而引發(fā)更多學(xué)習(xí)問題,這也是由于教學(xué)流程缺乏對(duì)應(yīng)的引導(dǎo)流程所致。
4 Python語(yǔ)言特點(diǎn)及對(duì)學(xué)生計(jì)算思維能力的培養(yǎng)
Python語(yǔ)言是一種被廣泛使用,面向?qū)ο蟮母呒?jí)通用腳本編程語(yǔ)言,其程序語(yǔ)法簡(jiǎn)潔,明晰易懂[3]。對(duì)比其他的編程語(yǔ)言來(lái)說(shuō),Python語(yǔ)言有許多鮮明的特點(diǎn),主要有如下幾點(diǎn)。
(1)語(yǔ)法簡(jiǎn)潔易學(xué)。Python程序語(yǔ)言的語(yǔ)法比起其他編程語(yǔ)言來(lái)說(shuō)比較簡(jiǎn)練,易于學(xué)習(xí)掌握,很適合初學(xué)者學(xué)習(xí)。Python程序的重點(diǎn)在于問題本身的解決,而不是糾纏于某一條語(yǔ)句語(yǔ)法。
(2)代碼的開源,免費(fèi)。Python的程序代碼面向所有使用者是完全免費(fèi),開放的。程序使用者可以自由的閱讀,修改和發(fā)布新的Python程序。Python語(yǔ)言所提倡的開源理念為其發(fā)展奠定了堅(jiān)實(shí)廣泛的使用基礎(chǔ)。
(3)程序的可移植性、擴(kuò)展性。Python程序可以被移植到不同的操作系統(tǒng)平臺(tái)上,如計(jì)算機(jī)常用的Linux,Windows,移動(dòng)設(shè)備的Android系統(tǒng)平臺(tái)等。Python語(yǔ)言也與其他編程語(yǔ)言,如C,C++等有著良好的兼容性,能實(shí)現(xiàn)有機(jī)統(tǒng)一的整合。
(4)程序應(yīng)用的靈活通用。Python語(yǔ)言是一種靈活通用的編程語(yǔ)言,可用于編寫各個(gè)領(lǐng)域的程序。例如在圖像處理、數(shù)據(jù)分析、應(yīng)用計(jì)算、人工智能等方面,Python語(yǔ)言都能發(fā)揮非常重要的作用。
(5)豐富的類庫(kù)。Python除了自帶的標(biāo)準(zhǔn)庫(kù)(如math,turtle)之外,還有很多程序設(shè)計(jì)人員通過(guò)開源方式編寫的第三方庫(kù),可以說(shuō)涵蓋了各個(gè)領(lǐng)域,這些第三方庫(kù)都可以直接加以利用,大大的提高了編程的效率。
我校于14-15學(xué)年正式開設(shè)《Python語(yǔ)言程序設(shè)計(jì)》為計(jì)算機(jī)程序設(shè)計(jì)方面的基礎(chǔ)課程,最初在我校計(jì)算機(jī)系開設(shè)此門課程,隨后面向機(jī)械系,管理系,化工系等非計(jì)算機(jī)專業(yè)也開設(shè)該課程,今后將逐步面向全校推廣此門課程。雖然本課程開設(shè)時(shí)間不長(zhǎng),但規(guī)模和教學(xué)效果已經(jīng)取得了顯著的發(fā)展。同學(xué)們普通反映比起C,C++,Java等編程語(yǔ)言的枯燥難懂,不易理解,Python語(yǔ)言比較容易學(xué)習(xí)與掌握,并與學(xué)生所在專業(yè)的聯(lián)系較為密切,改變了過(guò)去學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言把大部分時(shí)間都花費(fèi)在了語(yǔ)法的理解和糾錯(cuò)上,使學(xué)生們現(xiàn)在可以把精力集中在對(duì)各類具體問題的思考,分析上,極大的提高了課程的教學(xué)效率,十分有助于培養(yǎng)學(xué)生們的計(jì)算思維能力。
5 上機(jī)實(shí)踐教學(xué)中的Python應(yīng)用及計(jì)算思維培養(yǎng)實(shí)例
Python語(yǔ)言雖然簡(jiǎn)單易懂,但與其他編程語(yǔ)言一樣,同樣是非常重視具體的上機(jī)實(shí)踐操作,只看書不實(shí)踐是無(wú)法學(xué)好任何一門編程語(yǔ)言的[4]。Python語(yǔ)言與其他編程語(yǔ)言一樣,將程序構(gòu)成為統(tǒng)一的運(yùn)算處理模式,即數(shù)據(jù)的輸入,處理和輸出,也稱IPO(Input,Process,Output)方法。一般來(lái)說(shuō),一道編程題目都可分為六個(gè)步驟,即問題的分析,功能邊界的劃分,算法的設(shè)計(jì),程序的編寫,程序的調(diào)試測(cè)試,程序的維護(hù)升級(jí)等。下面就以一道程序設(shè)計(jì)中的經(jīng)典題目——溫度轉(zhuǎn)換為例來(lái)進(jìn)行詳細(xì)的講解。
溫度的表示方式有兩個(gè)不同的體系,即攝氏度和華氏度。不同的國(guó)家可能使用不同的溫度表示方法,如中國(guó)采用攝氏度,美國(guó)采用華氏度。這里首先提出問題,如何編寫一個(gè)程序?qū)崿F(xiàn)兩種溫度體系的轉(zhuǎn)換。其大致的分析解決過(guò)程如下。
(1)問題的分析??梢詮脑S多不同的角度來(lái)理解溫度轉(zhuǎn)換問題的計(jì)算部分,這里從題目的實(shí)際出發(fā),由用戶輸入溫度值,通過(guò)編寫相關(guān)的程序給出輸出結(jié)果。
(2)邊界的劃分。在問題計(jì)算部分確定的基礎(chǔ)上進(jìn)一步明確問題的輸入數(shù)據(jù),數(shù)據(jù)處理要求,輸出數(shù)據(jù)。由于本問題是兩種溫度體系的轉(zhuǎn)換,所以輸入和輸出都為華氏或攝氏溫度,數(shù)據(jù)處理為選擇合適的轉(zhuǎn)換算法。
(3)算法的設(shè)計(jì)。根據(jù)兩種溫度體系的定義,給出相應(yīng)的轉(zhuǎn)換算法公式,即
C=(F-32)/1.8,F(xiàn)=C*1.8+32,其中C表示攝氏度,F(xiàn)表示華氏度。
(4)程序的編寫。
根據(jù)以上IPO描述分析和算法設(shè)計(jì),編寫如下程序代碼
temp=input("請(qǐng)輸入帶符號(hào)的溫度值:")
if temp[-1] in ['F','f']:
C=(eval(temp[0:-1])-32)/1.8
print("轉(zhuǎn)換后的溫度是{:.2f}C".format(C))
elif temp[-1] in ['C','c']:
F=1.8*eval(temp[0:-1])+32
print("轉(zhuǎn)換后的溫度是{:.2f}F".format(F))
else:
print("Error.")
(5)程序的調(diào)試測(cè)試。將上述程序代碼保存為.py文件后使用Run Module(或按鍵盤F5鍵)運(yùn)行程序,其運(yùn)行結(jié)果如下。
輸入華氏溫度
>>>
請(qǐng)輸入帶符號(hào)的溫度值:82F
轉(zhuǎn)換后的溫度是27.78C
輸入攝氏溫度
>>>
請(qǐng)輸入帶符號(hào)的溫度值:-30C
轉(zhuǎn)換后的溫度是-22.00F
(6)程序的維護(hù)升級(jí)。由于各國(guó)使用不同的溫度標(biāo)準(zhǔn),所以這個(gè)程序的生命周期將會(huì)一直存在。隨著問題的使用場(chǎng)景,輸入輸出等因素的改變,這個(gè)程序?qū)?huì)不斷的進(jìn)行改進(jìn),升級(jí)與維護(hù)。
6 結(jié)語(yǔ)
綜上所述,對(duì)于Python語(yǔ)言來(lái)說(shuō),主要就是將復(fù)雜的問題按照合理的方式進(jìn)行簡(jiǎn)化與分離,即將一個(gè)大的問題分解為若干階段,然后再去逐項(xiàng)解決,同時(shí)激發(fā)學(xué)生進(jìn)行自主分析與思索,讓他們能夠主動(dòng)將其與現(xiàn)實(shí)生活進(jìn)行深刻關(guān)聯(lián),同步激發(fā)學(xué)生潛在的程序設(shè)計(jì)的學(xué)習(xí)熱情,然后進(jìn)行積極引導(dǎo),讓他們構(gòu)建科學(xué)的計(jì)算思維方式,即如關(guān)注分析、構(gòu)建模型、保護(hù)、去繁、容錯(cuò)、改錯(cuò)與修正的一系列過(guò)程,而且能夠以誘導(dǎo)推斷探尋其中科學(xué)的答案,并且以規(guī)范的方式進(jìn)行整合,從而保證他們能夠歷經(jīng)思索、分析、研究、溝通等一系列過(guò)程,深刻了解程序的構(gòu)成以及功能實(shí)現(xiàn)的流程,同時(shí)得出解決實(shí)現(xiàn)過(guò)程中存在的不足,最終以編寫程序代碼并運(yùn)行結(jié)果的方式展示運(yùn)作結(jié)果。
參考文獻(xiàn)
[1]曹建芳.基于“計(jì)算思維”能力培養(yǎng)的《計(jì)算機(jī)操作系統(tǒng)》課程教學(xué)改革[J].軟件導(dǎo)刊,2014,07(07):174-175.
[2]劉瓊,史諾.基于計(jì)算思維視角的程序設(shè)計(jì)教學(xué)改革研究[J].自動(dòng)化與儀器儀表,2015,12(12):93-94.
[3]鄭戟明. Python程序設(shè)計(jì)課程中計(jì)算思維的應(yīng)用[J].大學(xué)教育,2016,08:127.
[4]喬亞男,李波,謝濤.基于Python的“大學(xué)計(jì)算機(jī)基礎(chǔ)”課程教學(xué)設(shè)計(jì)[J].課程教學(xué),2016,11:122.