【摘要】在任何一種程序設計語言中,常量和變量是進行編寫程序的基礎之一。雖然有關程序設計語言的教材中對于常量和變量的概念都給出了明確的定義。但是,對于初學程序設計的絕大多數學生學習編程的瓶頸是:為什么要使用常量與變量?何種情況下使用他們?針對一個具體的題目,需要定義幾個變量?
【關鍵詞】常量 變量 內存地址 數據類型
【中圖分類號】G642 【文獻標識碼】A 【文章編號】2095-3089(2014)04-0127-01
在任何一種程序設計語言中,常量和變量是進行編寫程序的基礎之一。一些我們認為學習中很容易理解的問題,對初學者而言,卻經常感覺到很迷茫,拿到一個題目無從下手。剛開始有學生問這個問題的時候,我覺得這么簡單的問題,有什么好多講的呢。后來通過與大量學生的接觸,發現在學生在初學編程時,都會存有這樣的疑惑。有些同學隨著以后的學習慢慢的也就懂了;還有一些同學,覺得好難啊,都不會用程序解決一個很簡單的問題,從而在心理上對程序的學習產生了抵觸情緒,進而使的很多學生在學習生活中,一提到程序就感覺“頭大”了。所以,我希望本文對初學程序的學生有一些幫助。對于程序的初學者而言,為什么要定義變量?針對一個具體的題目而言,需要定義什么類型的變量?需要定義幾個變量呢?要解決上述問題,我們首先要清楚地理解如下的幾個概念:
1.內存
學習了計算機的基礎知識后,我們知道:計算機在工作過程中,其用到的數據首先要被調入內存才能被CPU處理。而內存有三個最基本的屬性,即內存地址、存儲單元 和其存儲數據。這就好比有一排抽屜,為了方便區分不同的抽屜,給每一個抽屜分配一個唯一的編號。爾后根據具體的編號來區分不同的抽屜,把抽屜的大小比作存儲單元的大小,把抽屜里面存放的東西比作數據,把抽屜的編號比作內存地址(地址:存儲器由若干個單元組成,每個單元都有一個唯一的編號,該編號稱為地址)。
2.數據類型
在高級程序設計語言中引入了數據類型的概念,即把所有的數據加以分類。每一個數據(包括表達式)或每一個數據變量都屬于其中確定的一類,稱這一類數據為一個數據類型。 舉例來說,人一看到20這個數據,則在頭腦中首先形成一個基本認識:它是一個整數20,而看到20.0時,則是認為是小數;而用計算機解決問題時,它并不能分辨出一個數據是小數還是整數還是其他類型。所以在程序設計時首先必須要掌握的就是數據類型,即通過它告訴計算機這是一個什么樣的數據。因此,數據類型是數據或數據變量類屬的說明,它指示該數據或數據變量在什么范圍內取值才有意義,它們在內存中占多大的存儲空間,允許進行哪些運算等。根據數據的種類及編程需要,高級語言定義了一系列的數據類型。當然不同的高級語言所定義的數據類型也不盡相同:如C語言既提供了若干基本類型(整型、字符型、單精度型等),又有構造類型(結構體、共用體),還有作為C語言精華的指針類型。所以在編寫程序時,需要通過數據類型告訴計算機需要申請一個多大的空間來存放什么類型的數據。
3.常量與變量的概念
系統中的內存地址,通常以十六進制數據表示,而十六進制地址方便計算機“記憶”及操作,不方便學習者的記憶和使用。為此在高級程序設計語言中提出了標識符的概念。十六進制地址和標識符是一一對應,同一個程序中不能有地址相同的兩個存儲單元,自然也就不能有相同名稱的兩個標識符。故編程時為了程序的可讀性,標符的命名一般都遵循見名知義的原則。如想申請一個內存空間存放學生的年齡,一般取名為age或nl等。程序一旦編譯,標識符就會分配到相應的存儲單元,存儲單元地址的十六進制與標識符之間就建立了映射關系。編程者用標識符編寫程序,計算機用十六進制內存地址高速進行程序處理。
在程序的運行過程中有一些標志符的值會隨著程序的執行發生變化,而有一些不會發生變化,這就是在編程時常說的變量和常量。其實,從字面上不難看出常量在程序運行過程中標識符的值不能改變的,而變量是指標識符的值會隨著程序語句的不斷執行會發生改變的。前面已經說了,儲存地址、存儲單元大小和存儲單元內存放的數據是內存的三個最基本的屬性,因此常量與變量當然也有三個最基本的屬性,即其所分配到儲存單元,該常(變)量占多大的存儲空間及該地址所指的存儲空間里面的數值。為便于區分,C語言中一般用大寫來表示常量,用小寫來表示變量。
4.簡單的編程思路
那么在編寫程序的過程中需要定義多少個常量和變量呢?這也是很多學生在初學程序時感到十分疑惑的地方。簡單來說,一般都把已知條件定義為常量,未知條件和求解過程中用到的一些輔助量定義為變量。對于初學者而言,當看到一個具體的題目時,首先要分析題目中,哪些是已知條件,哪些是未知條件,哪些是解題過程中的輔助量。事實上,學生在初學程序時,很多學生都存在定義變量個數少于題目編程中實際應該定義的個數。在教學過程中總結了一下,發生這一現象的主要原因是:沒有把題目求解過程中用到的輔助量定義出來。所以在初學程序時,掌握了基本概念后,接著應該是教給學生如何畫出程序的流程圖或者盒圖,這一部分的內容要盡量的給出學生練習、總結的時間。建議在做教學日歷的時候盡量的多出4個課時,以便于學生掌握程序流程圖或盒圖的畫圖技巧,然后再按照教材結構及知識的特點進行具體內容的學習。看到一個具體的題目,盡量讓學生首先畫出流程圖或盒圖,從而可以方便學生確定在編寫程序的過程中用到的一些隨條件變化的數值并將它們也要定義為變量;基礎打牢了,學會編程也就成了水到渠成的事情了。一旦編程入門之后,為了程序編寫的方便性與簡潔性,我們通常會把比如圓周率π、自然對數的底數e等一些數學常數定義為常量,而有一些已知條件我們會直接在程序中使用。例:假設有一張足夠大的紙,厚度為0.0001米,問對折多少次之后,厚度可以超過喜馬拉雅山的高度 (8848.13米)。已知條件為紙的厚度和喜馬拉雅山的高度,我們可以定義為常量:#define T 0.0001;#define H 8848.13;未知條件對折次數可定義為i,輔助量即每次對折后的高度定義為h。當對程序編寫熟練之后,可以按照自己的編程習慣省略一些不必要的常量定義而直接使用數據本身。
學習程序并不難,難在找到正確的學習方法。在初學程序時,首先要對基本的概念有一個清晰的認識,接著學習用流程圖或盒圖來描述題目,最后,多閱讀程序并能進行分析與改進,那么離自己獨立的編寫出程序也就不遠了。總之,編程的編寫是學習計算機相關學科的一個基礎,也是在計算機方面有較深造詣的一個前提,希望本文能給剛剛學習編程的同學提供一點幫助。
參考文獻:
[1]譚浩強.C語言程序設計.北京:清華大學出版社,2008年.
作者簡介:
劉軍(1979-),女,山東聊城人,講師,碩士。