杜佳慧
(山西應用科技學院 山西省太原市 040000)
2006年3月,美國卡內基··梅隆大學計算機科學系主任周以真教授在美國計算機權威期刊雜志上首次提出了計算思維的概念。周教授認為:計算思維時運用計算機科學的基礎概念進行問題求解、系統設計以及人類行為理解等涵蓋計算機科學之廣度的一系列思維活動。計算思維的概念一經提出,立刻引起了各界的關注,國內外幾乎同步關注到計算思維的研究以及對大學計算機教育帶來的潛在影響,如何將計算思維的理念融入到計算機教學中,培養學生的計算思維能力是計算機教學研究和改革的焦點。基于各界專家學者關于“計算思維”的研究背景,我們來探究一下在高校學生的程序學習中如何將計算思維融入其中,提高學生的分析和解決問題的能力。
當代的大學生們基本是出生在2000年左右的“00”后,而當時社會網絡時代已經到來,信息化基本已經應用到生活的方方面面,他們從小學開始就已經在接觸計算機,對于他們而言,計算機的基本知識和應用已經非常熟悉,而計算機專業中的核心課程程序學習這部分的內容需要很強的邏輯能力、抽象性較強,難以理解,對于學生而言會有些陌生。以C 語言程序設計為例,學生們在剛接觸的時候,前幾章的內容還比較簡單,出于對新鮮事物的好奇,學生們還有極大的學習熱情和學習興趣,但隨著后面幾章出現函數、指針和文件操作等內容,知識難度和抽象程度越來越大,學生們的學習興趣和熱情逐漸消減,很多學生遇到難題不會盡力解決或者采取直接放棄的態度,學生的學習效率極其低。
信息技術的不斷發展和進步,計算思維在各個領域有不同的解讀,計算機科學與技術領域,計算思維是指運用計算機科學的基礎概念去求解問題、設計系統和理解人類的行為,具體而言,就是指通過簡約、嵌入、構造、模擬、仿真等方式,把一個復雜的問題分解為若干個子問題,從而達到解決問題的目標。計算思維是概念化的,是一種思想。計算機程序是計算機所有指令的集合,人們利用計算機解決實際生活中的問題,通過對問題進行分析,設計出解決該問題的算法,然后利用計算機能夠識別的語言,編寫命令以便計算機能夠執行。根據其概念可知,計算思維與計算機程序有一定的相關性,計算機程序中通過算法來編寫,閱讀者可以通過查看程序看出其計算思維,即計算機程序是計算思維的載體。
任何一種語言的學習都需要先了解其規則,程序語言也是如此,在編寫基本的語句之前,需要了解其語法、語義及其語句規則,以C 語言程序設計為例,學生們需了解其數據類型、關鍵詞、運算符及其表達式等基本知識,然后根據教學目標,結合計算思維的特點,對C 語言程序設計中的語句進行設計。以簡單的賦值語句為例,以計算思維的方式來進行設計:
教學內容:賦值語句
教學目標:掌握賦值語句的使用及思維方法
教學過程:
(1)提出問題:兩個正整數a 和b,它們的值分別是a=6,b=9;試著交換a 和b 的值,使得a=9,b=6。
(2)問題轉化:假設有若干個相同容量的瓶子,a瓶中裝入醬油,b 瓶中裝入醋,現需將a 瓶和b 瓶中裝的東西進行置換,即a 瓶中放入醋,b 瓶中放入醬油。
(3)問題求解:在現實生活中遇到這樣的問題,首先我們會準備一個空瓶,然后將a 瓶中的醬油放入空瓶中,這樣a 瓶空出來后倒入b 瓶中的醋,在將空瓶中的醬油倒入b 瓶中,這樣a 瓶中為醋,b 瓶中為醬油。解決問題的關鍵在于需要借助一個空瓶子。
(4)知識講解:賦值語句中的“=”與數學中“=”意義不一樣,賦值語句的特點是將右邊的值賦值給左邊的變量。
(5)求解方法:①定義變量 int a,b,c;
②給變量賦值 a=6,b=9;
③進行置換 c=a;a=b;b=c;
結合上述例子,程序設計的過程可以將其類比于我們生活中的實例,賦值語句涉及的變量其實就是我們所說的空瓶子,在這個空瓶子中不僅可以放醋,還可以放水、飲料這些東西,是可以變化的,我們稱它為變量,賦值的過程其實就是將瓶子裝滿的過程,置換數字的過程就是生活中將瓶子中的實物進行交換的過程。學習者在解決問題的時候,首先明確了原問題和目標問題之間的聯系,然后將目標問題轉換為一個一個細化的小問題,逐步進行解答,這種解決問題的方式有助于提供學習者的計算思維能力,而且有助于調動課堂枯燥的學習氛圍。
在了解了語言的基本結構之后,我們要學會自己造句,也就是我們所說的語法,即主、謂賓、定于從句、主語從句這樣的結構,對于我們程序設計語言而言,即為三種基本的控制結構,分別是選擇、順序和循環結構,程序的編寫過程都是基于這三種經典的結構來設計的。以我們簡單的選擇結構為例,來介紹一下其中的計算思維過程。選擇結構的基本思路為,遇到一個問題要根據條件進行判斷,滿足A 條件是要執行什么操作,不滿足A 條件又會執行什么樣的操作。
教學內容:選擇結構
教學目的:掌握選擇的結構的功能及其編寫過程。
教學過程:
(1)提出問題:超市新進一批水果,超市規定當顧客所購水果小于等于5 公斤,每公斤5 元,當大于5 公斤時,每公斤打九折,問超市的收銀系統該如何編程統計。
(2)問題分析:在實際的超市收費過程中,只能存在一種計費方式,如果滿足小于等于5 公斤時,選擇每公斤5 元的計費方式,如果滿足大于5 公斤時,選擇每公斤4.5 元的計費方式,重點是要分析選擇的條件是什么。
(3)知識講解:選擇結構主要使用關鍵詞if else,選擇結構的書寫方式為

本例是生活中的一個實例,問題的分析過程就是程序的執行過程,在分析問題時,要注意分析事物的結構性特征,學習者在分析問題的過程中能夠培養計算思維結構性和秩序性等特征。
在程序學習中了解了關鍵詞、表達式、控制結構,要能夠靈活的進行編程,還需重點了解其算法,算法是對問題解決方法的準確及完整的表述,是解決問題的清晰明確的指令,計算機運行時,輸入一個初始指令,經過算法的一系列指令,最終得出所要求輸出的結果。學習程序設計必須得了解各種類型的算法,如常用的有冒泡、排序、查找、迭代、遞歸算法等,搞清楚各種各樣的算法,有助于培養學生計算思維的分析、抽象、建模的能力,以C 語言中的冒泡算法為例。
教學內容:冒泡算法
教學目的:掌握冒泡算法的原理并能夠靈活運用進行排序
教學過程:
(1)提出問題:把{6,5,3,1,8,7,2,4}這個數組按從小到大進行排列
(2)分析問題:要對這數組中的幾個數值進行比較,然后按從小到大的順序進行排列,如果只是用眼睛看然后操作很容易就可以將其排序出來,當對計算機而言需有序進行比較然后在移動其位置,涉及到存儲空間,不能雜亂無章的進行,基于此顧慮,最簡單是進行相鄰元素的比較,然后相鄰元素之間交換,這樣才能保證所有數值有序進行移動并且是最小”步數“的移動。
(3)問題詳解:
①比較相鄰元素6 和5,6>5,進行交換;
②比較相鄰元素6 和3,6>3,進行交換;依此類推,相鄰元素進行比較,最后會將最大的數值給排序到最末的位置;
③除去最末位置的數值,所有其它元素依次進行兩兩比較,第二大的數值會排到倒數第二的位置。
④持續重復以上步驟,直到沒有任何一個數值需要比較為止。
(4)知識講解:這幾個數值屬于一個數組當中,需定義數值a[i],需定義變量進行計數,求解過程主要是采用循環結構進行

算法的學習是個比較抽象復雜的內容,在本例中有意識地去培養學生的數據分析、遷移和建模能力,同時還有學會規律的總結,從而找出解題方法。
程序學習是計算機學科中的核心知識點,有較強的邏輯性和嚴謹性,對于學生來講學起來比較困難,一直以來學生們都是通過不斷強化練習鞏固所學知識點,沒有形成分析問題和解決問題的能力。而采用計算思維的方式來進行程序學習,首先把程序設計問題類比到一個生活化的設計情境中,然后將計算機程序設計中抽象的概念給具象化,引導學生進行思考,搞清楚其中的思路過程,再建立起抽象的數據模型,結合程序設計中的基礎知識,將數學模型轉換為計算機語言的過程。這樣在不斷的練習中總結規律,逐步加深難度,層層深入,在思考中培養邏輯思維和解決問題的能力。其實,這也對應的是問題解決的五個階段,分別是提出問題、明確問題、提出假設、檢驗假設、總結評價,在這個過程中習得知識、獲得能力。