呂雙慶
摘 要:在C語(yǔ)言程序設(shè)計(jì)的教學(xué)過(guò)程中,運(yùn)用邏輯思維方法,把經(jīng)思維演繹得到的結(jié)果借助自然語(yǔ)言翻譯成程序設(shè)計(jì)語(yǔ)言,可以降低學(xué)生學(xué)習(xí)的難度,培養(yǎng)學(xué)習(xí)興趣,提高程序設(shè)計(jì)的技巧。
關(guān)鍵詞:邏輯思維;C語(yǔ)言程序設(shè)計(jì);教學(xué);
中圖分類號(hào):G40 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-3520(2015)-08-00-01
C語(yǔ)言具有功能豐富、表達(dá)能力強(qiáng)、應(yīng)用面廣等特點(diǎn),是現(xiàn)金在國(guó)內(nèi)外廣泛使用的一種計(jì)算機(jī)語(yǔ)言。許多高校都把C語(yǔ)言程序設(shè)計(jì)作為一門(mén)重要的課程。然而由于C語(yǔ)言牽涉的概念比較復(fù)雜、規(guī)則繁多、使用靈活,很多學(xué)生在學(xué)習(xí)的過(guò)程中不能很好地理解算法,編寫(xiě)程序困難,感覺(jué)無(wú)從下手,逐漸產(chǎn)生了抵觸和畏難情緒。為了解決這一問(wèn)題,我們可以把邏輯思維方法運(yùn)用到教學(xué)過(guò)程中。
程序設(shè)計(jì)語(yǔ)言不過(guò)是一種邏輯語(yǔ)言,而程序(或稱算法)不過(guò)是用該語(yǔ)言表示的一系列推理規(guī)則。計(jì)算機(jī)程序設(shè)計(jì)就是以一種符號(hào)化的語(yǔ)言系統(tǒng)為載體,通過(guò)對(duì)這一系列的符號(hào)進(jìn)行推理運(yùn)算以達(dá)到某一特定的目的。因此,一個(gè)C語(yǔ)言程序的設(shè)計(jì)過(guò)程實(shí)際上就是將人們處理該問(wèn)題的邏輯思維翻譯、變換成計(jì)算機(jī)所能識(shí)別的語(yǔ)句集合的過(guò)程。思維是人腦對(duì)客觀事物能動(dòng)的、間接的和概括的反映,語(yǔ)言是人類形成和表達(dá)思想的手段。人類借助于語(yǔ)言的幫助來(lái)進(jìn)行思維,并且通過(guò)語(yǔ)言表現(xiàn)出來(lái),但計(jì)算機(jī)不能直接執(zhí)行人類的自然語(yǔ)言。程序設(shè)計(jì)語(yǔ)言是人與計(jì)算機(jī)之間交換信息的工具,人是通過(guò)它來(lái)指揮計(jì)算機(jī)進(jìn)行工作的。C語(yǔ)言是一種計(jì)算機(jī)高級(jí)語(yǔ)言,采用英語(yǔ)單詞表達(dá)語(yǔ)句,接近人類的自然語(yǔ)言和數(shù)學(xué)語(yǔ)言。在C語(yǔ)言程序設(shè)計(jì)的教學(xué)過(guò)程中,依據(jù)結(jié)構(gòu)化程序設(shè)計(jì)的方法,可以從自然語(yǔ)言和程序設(shè)計(jì)語(yǔ)言的自身特點(diǎn)出發(fā),構(gòu)建一個(gè)可以將自然語(yǔ)言翻譯成程序設(shè)計(jì)語(yǔ)言的邏輯對(duì)應(yīng)關(guān)系。
在教學(xué)過(guò)程中我們從一開(kāi)始就要給學(xué)生建立一個(gè)清晰的基礎(chǔ)知識(shí)結(jié)構(gòu)。任何一個(gè)C語(yǔ)言程序都可以看作由4個(gè)步驟組成:定義變量、輸入數(shù)據(jù)、處理數(shù)據(jù)、輸出數(shù)據(jù)。即一個(gè)C程序的一般結(jié)構(gòu)可以將它歸納成下面的格式:
# include
main( )
{
定義變量;(int,float,char,double等)
輸入數(shù)據(jù);(直接賦值,例如x=8或標(biāo)準(zhǔn)輸入函數(shù)scanf( )等)
處理數(shù)據(jù);(if-else;switch;for;while;do…while等)
輸出數(shù)據(jù);(printf( ))
}
有了以上的結(jié)構(gòu)認(rèn)識(shí)后,在教學(xué)的過(guò)程中,遇到一個(gè)具體的問(wèn)題,就要按照人們處理問(wèn)題的邏輯思維,將問(wèn)題求解由抽象逐步具體化,搞清楚其中的數(shù)據(jù)關(guān)系及問(wèn)題的要求,分析如何解決此問(wèn)題。例如在中國(guó)古代著名的“雞兔同籠”數(shù)學(xué)問(wèn)題中講的是:在同一個(gè)籠子中養(yǎng)著雞和兔,但只知道雞和兔的總數(shù)是 ,雞和兔的總腳數(shù)是 ,求雞和兔各有多少只??吹竭@個(gè)題目后我們的思路一般是這樣:題目已經(jīng)知道雞和兔的總數(shù)是 以及雞和兔的總腳數(shù)是 兩個(gè)條件,要得到雞和兔分別有幾只,可以根據(jù)數(shù)學(xué)方法先假設(shè)雞有 只,兔有 只,然后建立方程組:
解方程組可得:
此即求 和 的數(shù)學(xué)模型,只要代入具體的 和 的值,即可得到 和 的值。
那么以上過(guò)程如何由計(jì)算機(jī)來(lái)完成計(jì)算呢?根據(jù)C程序的4個(gè)步驟,要先定義4個(gè)變量:m、n、x、y。接著把m和n的值從鍵盤(pán)輸入,然后根據(jù) , 計(jì)算x和y的值,也就是得到雞和兔的只數(shù),最后打印輸出雞有幾只,兔有幾只。
至此,我們完成了構(gòu)建自然語(yǔ)言翻譯成程序設(shè)計(jì)語(yǔ)言的邏輯對(duì)應(yīng)關(guān)系過(guò)程。可以輕松的寫(xiě)出程序如下:
#include< stdio.h >
main() /* 主函數(shù) */
{
int m,n,x,y; /* 定義變量m,n,x,y */
printf(“Enter the number of heads:”); /* 輸入雞和兔的總數(shù)m */
scanf(“%d”,&m);
printf(“Enter the number of feet:”); /* 輸入雞和兔的總腳數(shù)n */
scanf(“%d”,&n);
x=(4*m-n)/2; /* 計(jì)算雞的只數(shù) */
y=(n-2*m)/2; /* 計(jì)算兔的只數(shù) */
printf(“There are %d chicks \n”,x); /* 在屏幕上輸出雞有多少只 */
printf(“There are %d rabbits \n”,y); /* 在屏幕上輸出兔有多少只 */
}
程序運(yùn)行結(jié)果為:
Enter the number of heads: 18
Enter the number of feet: 60
There are 6 chicks
There are 12 rabbits
科學(xué)家馬希文教授曾說(shuō)過(guò):“用一串符號(hào)把一個(gè)計(jì)算機(jī)過(guò)程描述出來(lái),就是一個(gè)程序……制定一些嚴(yán)格的規(guī)則,以確定什么樣的符號(hào)表示什么樣的程序。這些規(guī)則的總和就叫做一種語(yǔ)言”。在程序設(shè)計(jì)的學(xué)習(xí)過(guò)程中,主要是學(xué)會(huì)分析問(wèn)題、設(shè)計(jì)方案(建立數(shù)學(xué)模型—— 算法),在此過(guò)程中,邏輯思維起到了重要的作用,它使程序設(shè)計(jì)的過(guò)程嚴(yán)謹(jǐn),條理清晰。經(jīng)過(guò)嚴(yán)密的思考,再將該過(guò)程通過(guò)自然語(yǔ)言和程序語(yǔ)言聯(lián)系,C語(yǔ)言的編程變得順理成章,大大降低了學(xué)生學(xué)習(xí)的難度,提高了學(xué)習(xí)興趣。
參考文獻(xiàn):
[1]譚浩強(qiáng).C程序設(shè)計(jì)(第三版)[M].北京:清華大學(xué)出版社,2005.
[2]張?zhí)壹t,彭真,楊炳儒,謝永紅.“C程序設(shè)計(jì)”課程的KM教學(xué)法研究 [J].計(jì)算機(jī)教育,2010(02):113—115.
[3]賈茹,郝長(zhǎng)勝,鄭惠生,裴衣非,董煥芝.運(yùn)用自然語(yǔ)言的思維建構(gòu)C語(yǔ)言程序設(shè)計(jì)教學(xué) [J].計(jì)算機(jī)教育,2006(10):52—54