杜佳慧
(山西應(yīng)用科技學(xué)院 山西省太原市 040000)
2006年3月,美國(guó)卡內(nèi)基··梅隆大學(xué)計(jì)算機(jī)科學(xué)系主任周以真教授在美國(guó)計(jì)算機(jī)權(quán)威期刊雜志上首次提出了計(jì)算思維的概念。周教授認(rèn)為:計(jì)算思維時(shí)運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問(wèn)題求解、系統(tǒng)設(shè)計(jì)以及人類行為理解等涵蓋計(jì)算機(jī)科學(xué)之廣度的一系列思維活動(dòng)。計(jì)算思維的概念一經(jīng)提出,立刻引起了各界的關(guān)注,國(guó)內(nèi)外幾乎同步關(guān)注到計(jì)算思維的研究以及對(duì)大學(xué)計(jì)算機(jī)教育帶來(lái)的潛在影響,如何將計(jì)算思維的理念融入到計(jì)算機(jī)教學(xué)中,培養(yǎng)學(xué)生的計(jì)算思維能力是計(jì)算機(jī)教學(xué)研究和改革的焦點(diǎn)?;诟鹘鐚<覍W(xué)者關(guān)于“計(jì)算思維”的研究背景,我們來(lái)探究一下在高校學(xué)生的程序?qū)W習(xí)中如何將計(jì)算思維融入其中,提高學(xué)生的分析和解決問(wèn)題的能力。
當(dāng)代的大學(xué)生們基本是出生在2000年左右的“00”后,而當(dāng)時(shí)社會(huì)網(wǎng)絡(luò)時(shí)代已經(jīng)到來(lái),信息化基本已經(jīng)應(yīng)用到生活的方方面面,他們從小學(xué)開(kāi)始就已經(jīng)在接觸計(jì)算機(jī),對(duì)于他們而言,計(jì)算機(jī)的基本知識(shí)和應(yīng)用已經(jīng)非常熟悉,而計(jì)算機(jī)專業(yè)中的核心課程程序?qū)W習(xí)這部分的內(nèi)容需要很強(qiáng)的邏輯能力、抽象性較強(qiáng),難以理解,對(duì)于學(xué)生而言會(huì)有些陌生。以C 語(yǔ)言程序設(shè)計(jì)為例,學(xué)生們?cè)趧偨佑|的時(shí)候,前幾章的內(nèi)容還比較簡(jiǎn)單,出于對(duì)新鮮事物的好奇,學(xué)生們還有極大的學(xué)習(xí)熱情和學(xué)習(xí)興趣,但隨著后面幾章出現(xiàn)函數(shù)、指針和文件操作等內(nèi)容,知識(shí)難度和抽象程度越來(lái)越大,學(xué)生們的學(xué)習(xí)興趣和熱情逐漸消減,很多學(xué)生遇到難題不會(huì)盡力解決或者采取直接放棄的態(tài)度,學(xué)生的學(xué)習(xí)效率極其低。
信息技術(shù)的不斷發(fā)展和進(jìn)步,計(jì)算思維在各個(gè)領(lǐng)域有不同的解讀,計(jì)算機(jī)科學(xué)與技術(shù)領(lǐng)域,計(jì)算思維是指運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念去求解問(wèn)題、設(shè)計(jì)系統(tǒng)和理解人類的行為,具體而言,就是指通過(guò)簡(jiǎn)約、嵌入、構(gòu)造、模擬、仿真等方式,把一個(gè)復(fù)雜的問(wèn)題分解為若干個(gè)子問(wèn)題,從而達(dá)到解決問(wèn)題的目標(biāo)。計(jì)算思維是概念化的,是一種思想。計(jì)算機(jī)程序是計(jì)算機(jī)所有指令的集合,人們利用計(jì)算機(jī)解決實(shí)際生活中的問(wèn)題,通過(guò)對(duì)問(wèn)題進(jìn)行分析,設(shè)計(jì)出解決該問(wèn)題的算法,然后利用計(jì)算機(jī)能夠識(shí)別的語(yǔ)言,編寫命令以便計(jì)算機(jī)能夠執(zhí)行。根據(jù)其概念可知,計(jì)算思維與計(jì)算機(jī)程序有一定的相關(guān)性,計(jì)算機(jī)程序中通過(guò)算法來(lái)編寫,閱讀者可以通過(guò)查看程序看出其計(jì)算思維,即計(jì)算機(jī)程序是計(jì)算思維的載體。
任何一種語(yǔ)言的學(xué)習(xí)都需要先了解其規(guī)則,程序語(yǔ)言也是如此,在編寫基本的語(yǔ)句之前,需要了解其語(yǔ)法、語(yǔ)義及其語(yǔ)句規(guī)則,以C 語(yǔ)言程序設(shè)計(jì)為例,學(xué)生們需了解其數(shù)據(jù)類型、關(guān)鍵詞、運(yùn)算符及其表達(dá)式等基本知識(shí),然后根據(jù)教學(xué)目標(biāo),結(jié)合計(jì)算思維的特點(diǎn),對(duì)C 語(yǔ)言程序設(shè)計(jì)中的語(yǔ)句進(jìn)行設(shè)計(jì)。以簡(jiǎn)單的賦值語(yǔ)句為例,以計(jì)算思維的方式來(lái)進(jìn)行設(shè)計(jì):
教學(xué)內(nèi)容:賦值語(yǔ)句
教學(xué)目標(biāo):掌握賦值語(yǔ)句的使用及思維方法
教學(xué)過(guò)程:
(1)提出問(wèn)題:兩個(gè)正整數(shù)a 和b,它們的值分別是a=6,b=9;試著交換a 和b 的值,使得a=9,b=6。
(2)問(wèn)題轉(zhuǎn)化:假設(shè)有若干個(gè)相同容量的瓶子,a瓶中裝入醬油,b 瓶中裝入醋,現(xiàn)需將a 瓶和b 瓶中裝的東西進(jìn)行置換,即a 瓶中放入醋,b 瓶中放入醬油。
(3)問(wèn)題求解:在現(xiàn)實(shí)生活中遇到這樣的問(wèn)題,首先我們會(huì)準(zhǔn)備一個(gè)空瓶,然后將a 瓶中的醬油放入空瓶中,這樣a 瓶空出來(lái)后倒入b 瓶中的醋,在將空瓶中的醬油倒入b 瓶中,這樣a 瓶中為醋,b 瓶中為醬油。解決問(wèn)題的關(guān)鍵在于需要借助一個(gè)空瓶子。
(4)知識(shí)講解:賦值語(yǔ)句中的“=”與數(shù)學(xué)中“=”意義不一樣,賦值語(yǔ)句的特點(diǎn)是將右邊的值賦值給左邊的變量。
(5)求解方法:①定義變量 int a,b,c;
②給變量賦值 a=6,b=9;
③進(jìn)行置換 c=a;a=b;b=c;
結(jié)合上述例子,程序設(shè)計(jì)的過(guò)程可以將其類比于我們生活中的實(shí)例,賦值語(yǔ)句涉及的變量其實(shí)就是我們所說(shuō)的空瓶子,在這個(gè)空瓶子中不僅可以放醋,還可以放水、飲料這些東西,是可以變化的,我們稱它為變量,賦值的過(guò)程其實(shí)就是將瓶子裝滿的過(guò)程,置換數(shù)字的過(guò)程就是生活中將瓶子中的實(shí)物進(jìn)行交換的過(guò)程。學(xué)習(xí)者在解決問(wèn)題的時(shí)候,首先明確了原問(wèn)題和目標(biāo)問(wèn)題之間的聯(lián)系,然后將目標(biāo)問(wèn)題轉(zhuǎn)換為一個(gè)一個(gè)細(xì)化的小問(wèn)題,逐步進(jìn)行解答,這種解決問(wèn)題的方式有助于提供學(xué)習(xí)者的計(jì)算思維能力,而且有助于調(diào)動(dòng)課堂枯燥的學(xué)習(xí)氛圍。
在了解了語(yǔ)言的基本結(jié)構(gòu)之后,我們要學(xué)會(huì)自己造句,也就是我們所說(shuō)的語(yǔ)法,即主、謂賓、定于從句、主語(yǔ)從句這樣的結(jié)構(gòu),對(duì)于我們程序設(shè)計(jì)語(yǔ)言而言,即為三種基本的控制結(jié)構(gòu),分別是選擇、順序和循環(huán)結(jié)構(gòu),程序的編寫過(guò)程都是基于這三種經(jīng)典的結(jié)構(gòu)來(lái)設(shè)計(jì)的。以我們簡(jiǎn)單的選擇結(jié)構(gòu)為例,來(lái)介紹一下其中的計(jì)算思維過(guò)程。選擇結(jié)構(gòu)的基本思路為,遇到一個(gè)問(wèn)題要根據(jù)條件進(jìn)行判斷,滿足A 條件是要執(zhí)行什么操作,不滿足A 條件又會(huì)執(zhí)行什么樣的操作。
教學(xué)內(nèi)容:選擇結(jié)構(gòu)
教學(xué)目的:掌握選擇的結(jié)構(gòu)的功能及其編寫過(guò)程。
教學(xué)過(guò)程:
(1)提出問(wèn)題:超市新進(jìn)一批水果,超市規(guī)定當(dāng)顧客所購(gòu)水果小于等于5 公斤,每公斤5 元,當(dāng)大于5 公斤時(shí),每公斤打九折,問(wèn)超市的收銀系統(tǒng)該如何編程統(tǒng)計(jì)。
(2)問(wèn)題分析:在實(shí)際的超市收費(fèi)過(guò)程中,只能存在一種計(jì)費(fèi)方式,如果滿足小于等于5 公斤時(shí),選擇每公斤5 元的計(jì)費(fèi)方式,如果滿足大于5 公斤時(shí),選擇每公斤4.5 元的計(jì)費(fèi)方式,重點(diǎn)是要分析選擇的條件是什么。
(3)知識(shí)講解:選擇結(jié)構(gòu)主要使用關(guān)鍵詞if else,選擇結(jié)構(gòu)的書寫方式為
本例是生活中的一個(gè)實(shí)例,問(wèn)題的分析過(guò)程就是程序的執(zhí)行過(guò)程,在分析問(wèn)題時(shí),要注意分析事物的結(jié)構(gòu)性特征,學(xué)習(xí)者在分析問(wèn)題的過(guò)程中能夠培養(yǎng)計(jì)算思維結(jié)構(gòu)性和秩序性等特征。
在程序?qū)W習(xí)中了解了關(guān)鍵詞、表達(dá)式、控制結(jié)構(gòu),要能夠靈活的進(jìn)行編程,還需重點(diǎn)了解其算法,算法是對(duì)問(wèn)題解決方法的準(zhǔn)確及完整的表述,是解決問(wèn)題的清晰明確的指令,計(jì)算機(jī)運(yùn)行時(shí),輸入一個(gè)初始指令,經(jīng)過(guò)算法的一系列指令,最終得出所要求輸出的結(jié)果。學(xué)習(xí)程序設(shè)計(jì)必須得了解各種類型的算法,如常用的有冒泡、排序、查找、迭代、遞歸算法等,搞清楚各種各樣的算法,有助于培養(yǎng)學(xué)生計(jì)算思維的分析、抽象、建模的能力,以C 語(yǔ)言中的冒泡算法為例。
教學(xué)內(nèi)容:冒泡算法
教學(xué)目的:掌握冒泡算法的原理并能夠靈活運(yùn)用進(jìn)行排序
教學(xué)過(guò)程:
(1)提出問(wèn)題:把{6,5,3,1,8,7,2,4}這個(gè)數(shù)組按從小到大進(jìn)行排列
(2)分析問(wèn)題:要對(duì)這數(shù)組中的幾個(gè)數(shù)值進(jìn)行比較,然后按從小到大的順序進(jìn)行排列,如果只是用眼睛看然后操作很容易就可以將其排序出來(lái),當(dāng)對(duì)計(jì)算機(jī)而言需有序進(jìn)行比較然后在移動(dòng)其位置,涉及到存儲(chǔ)空間,不能雜亂無(wú)章的進(jìn)行,基于此顧慮,最簡(jiǎn)單是進(jìn)行相鄰元素的比較,然后相鄰元素之間交換,這樣才能保證所有數(shù)值有序進(jìn)行移動(dòng)并且是最小”步數(shù)“的移動(dòng)。
(3)問(wèn)題詳解:
①比較相鄰元素6 和5,6>5,進(jìn)行交換;
②比較相鄰元素6 和3,6>3,進(jìn)行交換;依此類推,相鄰元素進(jìn)行比較,最后會(huì)將最大的數(shù)值給排序到最末的位置;
③除去最末位置的數(shù)值,所有其它元素依次進(jìn)行兩兩比較,第二大的數(shù)值會(huì)排到倒數(shù)第二的位置。
④持續(xù)重復(fù)以上步驟,直到?jīng)]有任何一個(gè)數(shù)值需要比較為止。
(4)知識(shí)講解:這幾個(gè)數(shù)值屬于一個(gè)數(shù)組當(dāng)中,需定義數(shù)值a[i],需定義變量進(jìn)行計(jì)數(shù),求解過(guò)程主要是采用循環(huán)結(jié)構(gòu)進(jìn)行
算法的學(xué)習(xí)是個(gè)比較抽象復(fù)雜的內(nèi)容,在本例中有意識(shí)地去培養(yǎng)學(xué)生的數(shù)據(jù)分析、遷移和建模能力,同時(shí)還有學(xué)會(huì)規(guī)律的總結(jié),從而找出解題方法。
程序?qū)W習(xí)是計(jì)算機(jī)學(xué)科中的核心知識(shí)點(diǎn),有較強(qiáng)的邏輯性和嚴(yán)謹(jǐn)性,對(duì)于學(xué)生來(lái)講學(xué)起來(lái)比較困難,一直以來(lái)學(xué)生們都是通過(guò)不斷強(qiáng)化練習(xí)鞏固所學(xué)知識(shí)點(diǎn),沒(méi)有形成分析問(wèn)題和解決問(wèn)題的能力。而采用計(jì)算思維的方式來(lái)進(jìn)行程序?qū)W習(xí),首先把程序設(shè)計(jì)問(wèn)題類比到一個(gè)生活化的設(shè)計(jì)情境中,然后將計(jì)算機(jī)程序設(shè)計(jì)中抽象的概念給具象化,引導(dǎo)學(xué)生進(jìn)行思考,搞清楚其中的思路過(guò)程,再建立起抽象的數(shù)據(jù)模型,結(jié)合程序設(shè)計(jì)中的基礎(chǔ)知識(shí),將數(shù)學(xué)模型轉(zhuǎn)換為計(jì)算機(jī)語(yǔ)言的過(guò)程。這樣在不斷的練習(xí)中總結(jié)規(guī)律,逐步加深難度,層層深入,在思考中培養(yǎng)邏輯思維和解決問(wèn)題的能力。其實(shí),這也對(duì)應(yīng)的是問(wèn)題解決的五個(gè)階段,分別是提出問(wèn)題、明確問(wèn)題、提出假設(shè)、檢驗(yàn)假設(shè)、總結(jié)評(píng)價(jià),在這個(gè)過(guò)程中習(xí)得知識(shí)、獲得能力。