發(fā)布時(shí)間:2023-08-04 17:18:31
序言:寫作是分享個(gè)人見(jiàn)解和探索未知領(lǐng)域的橋梁,我們?yōu)槟x了8篇的程序設(shè)計(jì)的基本結(jié)構(gòu)樣本,期待這些樣本能夠?yàn)槟峁┴S富的參考和啟發(fā),請(qǐng)盡情閱讀。
關(guān)鍵詞:結(jié)構(gòu)化程序設(shè)計(jì) 數(shù)據(jù)結(jié)構(gòu) 算法 設(shè)計(jì)技巧
近年來(lái),計(jì)算機(jī)程序設(shè)計(jì)技術(shù)已從結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)逐步向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)過(guò)渡,特別是當(dāng)設(shè)計(jì)一個(gè)較大規(guī)模的應(yīng)用程序時(shí),面向?qū)ο笤O(shè)計(jì)思路成為首選??v觀計(jì)算機(jī)軟件技術(shù)的發(fā)展,在局部功能的實(shí)現(xiàn)上及功能模塊的設(shè)計(jì)上,結(jié)構(gòu)化程序設(shè)計(jì)仍然有其不可替代的獨(dú)特魅力。在結(jié)構(gòu)化程序設(shè)計(jì)中(以C語(yǔ)言為例),巧妙地運(yùn)用一些設(shè)計(jì)技巧,對(duì)增強(qiáng)程序的穩(wěn)定性和可靠性,簡(jiǎn)化程序操作步聚,提高程序的運(yùn)行效率十分有效。
結(jié)構(gòu)化程序設(shè)計(jì)的概念最初是由荷蘭學(xué)者E?W?DUKSTRA等人在20世紀(jì)60年代提出的,它的基本思路是:以模塊化設(shè)計(jì)為中心,將原來(lái)較為復(fù)雜的問(wèn)題簡(jiǎn)化為一系列簡(jiǎn)單模塊的設(shè)計(jì),也就是將一個(gè)大的計(jì)算任務(wù)劃分為若干個(gè)較小的任務(wù),這些小任務(wù)均由函數(shù)來(lái)完成。函數(shù)既可以是C語(yǔ)言定義的標(biāo)準(zhǔn)庫(kù)函數(shù),也可以是自定義函數(shù)。在實(shí)際應(yīng)用程序中,一個(gè)具備一定規(guī)模的C語(yǔ)言程序往往由多個(gè)函數(shù)組成,其中必有一個(gè)命名為main的主函數(shù),由main來(lái)調(diào)用其他函數(shù)。必要時(shí),其他函數(shù)還可以調(diào)用另外的函數(shù),同一函數(shù)可以被一個(gè)或多個(gè)函數(shù)調(diào)用一次或多次。
結(jié)構(gòu)化程序設(shè)計(jì)把程序歸結(jié)為用順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)等三種基本結(jié)構(gòu)來(lái)描述的邏輯問(wèn)題。順序結(jié)構(gòu)的程序流程是按語(yǔ)句的書寫順序依次執(zhí)行;在C語(yǔ)言中,有4種語(yǔ)句是順序執(zhí)行的:即空語(yǔ)句、表達(dá)式語(yǔ)句、函數(shù)調(diào)用語(yǔ)句及復(fù)合語(yǔ)句;選擇結(jié)構(gòu)是對(duì)給定條件進(jìn)行判斷,根據(jù)判斷結(jié)果決定執(zhí)行兩分支中的一個(gè)分支或多分支中的一個(gè)分支,選擇語(yǔ)句有if語(yǔ)句和switch語(yǔ)句;循環(huán)結(jié)構(gòu)是在給定條件成立的情況下,反復(fù)執(zhí)行某個(gè)程序段,循環(huán)語(yǔ)句有for,while和do-while語(yǔ)句以及一些輔助流程轉(zhuǎn)向語(yǔ)句如continue,break,go to等等。以上三種結(jié)構(gòu)通過(guò)流程控制語(yǔ)句來(lái)實(shí)現(xiàn)。流程控制語(yǔ)句在程序設(shè)計(jì)中起著十分重要的作用,通過(guò)三種基本控制結(jié)構(gòu)的合理調(diào)配使結(jié)構(gòu)化程序具有唯一的入口和出口,不會(huì)出現(xiàn)死循環(huán),而且程序的靜態(tài)形式與動(dòng)態(tài)執(zhí)行形式之間具有良好的對(duì)應(yīng)關(guān)系。
從以上結(jié)構(gòu)化程序的基本特點(diǎn)分析,結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)的是程序。程序=算法+數(shù)據(jù)結(jié)構(gòu)+程序設(shè)計(jì)方法+語(yǔ)言工具和環(huán)境,其中算法是靈魂,是解決“做什么”和“怎么做”的問(wèn)題;數(shù)據(jù)結(jié)構(gòu)是加工對(duì)象;語(yǔ)言是工具;編程需要采用合適的方法。具體解決主要問(wèn)題包含以下幾個(gè)步驟:
分析問(wèn)題,找出解決問(wèn)題的模型根據(jù)模型設(shè)計(jì)出適合計(jì)算機(jī)特點(diǎn)的處理方法即算法進(jìn)行編程程序,以實(shí)現(xiàn)算法上機(jī)編輯(.c)、編譯(.obj)、連接(.exe)、運(yùn)行所編制的程序,直到得出正確結(jié)果對(duì)結(jié)果進(jìn)行分析,整理出文字材料。
程序設(shè)計(jì)的任務(wù)不只是編寫出一個(gè)能得到正確結(jié)果的程序,還應(yīng)考慮程序的質(zhì)量,否則編寫的程序就會(huì)出現(xiàn)質(zhì)量低下、可靠性差、開(kāi)發(fā)周期長(zhǎng)、維護(hù)費(fèi)用高等不良后果,即所謂的的“軟件危機(jī)”,它會(huì)嚴(yán)重阻礙計(jì)算機(jī)應(yīng)用的發(fā)展。由于大多高級(jí)語(yǔ)言都支持結(jié)構(gòu)化程序設(shè)計(jì)方法,其語(yǔ)法上都含有表示三種基本結(jié)構(gòu)的語(yǔ)句,所以用結(jié)構(gòu)化程序設(shè)計(jì)方法設(shè)計(jì)的模塊從結(jié)構(gòu)到程序的實(shí)現(xiàn)是直接轉(zhuǎn)換的,只需用相應(yīng)的語(yǔ)句結(jié)構(gòu)代替標(biāo)準(zhǔn)的控制結(jié)構(gòu)即可。筆者在實(shí)際應(yīng)用中,總結(jié)出以下幾點(diǎn)實(shí)用技巧。
一、通過(guò)引申法廓清思路,選準(zhǔn)目標(biāo)
“引申法”就是通過(guò)對(duì)某一結(jié)論的合理引申,結(jié)合已經(jīng)解決的問(wèn)題,因勢(shì)利導(dǎo),在此基礎(chǔ)上解決相關(guān)聯(lián)的其他問(wèn)題?!耙攴ā笨梢耘囵B(yǎng)人們?cè)诔绦蛟O(shè)計(jì)方面的發(fā)散思維,提高程序設(shè)計(jì)的應(yīng)變能力。問(wèn)題是活的,但程序是有章可循的;語(yǔ)法是有限的,可解決的問(wèn)題是無(wú)限的。程序設(shè)計(jì)相當(dāng)一部分工作是分析問(wèn)題,找到解決問(wèn)題的方法,再以相應(yīng)的語(yǔ)言寫出代碼。要熟練掌握一些簡(jiǎn)單的算法,根據(jù)不同的問(wèn)題,再靈活應(yīng)用。如用100元錢買100只雞,公雞、母雞、小雞分別是5元、3元、1元一只。在數(shù)學(xué)上解三元一次方程,三個(gè)未知數(shù),兩個(gè)方程好像解不出來(lái)。通過(guò)“窮舉法”,我們要費(fèi)好大一番工夫才能算出結(jié)果,但是通過(guò)計(jì)算機(jī)“引申”編程運(yùn)算卻不用一秒鐘即可解決問(wèn)題。只有在分析實(shí)際向題的基礎(chǔ)上,以清晰的思路去設(shè)計(jì)算法,才能舉一反三,以不變應(yīng)萬(wàn)變。通過(guò)“引申”法,我們可使初學(xué)者對(duì)函數(shù)設(shè)計(jì)的關(guān)鍵問(wèn)題有清晰的認(rèn)識(shí),利于從統(tǒng)籌全局的角度去考慮問(wèn)題,體現(xiàn)了程序設(shè)計(jì)逐步求精的思路。
二、利用框架法培養(yǎng)全局思維和算法的整體設(shè)計(jì)能力
其具體體現(xiàn)在兩方面。一是在有了一點(diǎn)編程基礎(chǔ)后要利用偽代碼或流程圖,從算法設(shè)計(jì)的角度講解編程思路,而不應(yīng)拘泥于語(yǔ)法細(xì)節(jié),不分主次、逐條語(yǔ)句地講解代碼。這樣可以層次分明,突出算法設(shè)計(jì)的關(guān)鍵,利于培養(yǎng)編程思路。二是在學(xué)習(xí)重點(diǎn)章節(jié)函數(shù)時(shí),由于新的算法已很少,主要是學(xué)習(xí)用函數(shù)調(diào)用的方法來(lái)重新編制以前所熟悉的程序,我們可以把著眼點(diǎn)放在函數(shù)的設(shè)計(jì)框架上,體現(xiàn)參數(shù)設(shè)計(jì)、返回值設(shè)計(jì)等關(guān)鍵問(wèn)題,而無(wú)需細(xì)講函數(shù)體的實(shí)現(xiàn)細(xì)節(jié)。結(jié)構(gòu)化構(gòu)造減小了程序的復(fù)雜性,提高了可靠性、可測(cè)試性和可維護(hù)性,使用少數(shù)的基本結(jié)構(gòu),就可使程序邏輯結(jié)構(gòu)清晰,易讀易懂,并且容易驗(yàn)證程序的正確性。
三、借助求異法引導(dǎo)新思路,啟迪新思維
結(jié)構(gòu)化程序設(shè)計(jì)方法的基本思路是:把一個(gè)復(fù)雜的問(wèn)題的求解過(guò)程分階段進(jìn)行,每個(gè)階段處理的問(wèn)題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。一個(gè)固定的問(wèn)題,解決的方法可能不唯一,如果能啟發(fā)人們多角度、多側(cè)面去尋求解決問(wèn)題的辦法,則可激發(fā)思考的積極性,提高其學(xué)習(xí)興致。對(duì)一個(gè)初學(xué)計(jì)算機(jī)語(yǔ)言的人來(lái)說(shuō),最重要的就是要有正確的程序流程概念,不僅要懂得,而且要靈活應(yīng)用。由此可見(jiàn),用結(jié)構(gòu)化方法設(shè)計(jì)的結(jié)構(gòu)是清晰的,有利于編寫出結(jié)構(gòu)良好的程序。在C語(yǔ)言中一題多解的情況有很多,有意識(shí)地引導(dǎo)新思路,鼓勵(lì)新方法,以培養(yǎng)人們?cè)诰幊讨械那螽愃季S,而不是死記硬背,墨守成規(guī)。結(jié)構(gòu)化程序設(shè)計(jì)強(qiáng)調(diào)程序設(shè)計(jì)風(fēng)格和程序結(jié)構(gòu)的規(guī)范化,提倡清晰的結(jié)構(gòu)。
四、選準(zhǔn)切入口,合理劃分功能模塊“分而治之”
結(jié)構(gòu)化程序設(shè)計(jì)的關(guān)鍵在于功能模塊的選定和劃分。模塊化設(shè)計(jì)的思想實(shí)際上是一種“分而治之”的思想,把一個(gè)大任務(wù)分為若干個(gè)子任務(wù),每一個(gè)子任務(wù)的劃分以相對(duì)簡(jiǎn)單為前提。劃分子模塊時(shí)我們應(yīng)注意模塊的獨(dú)立性,即:使一個(gè)模塊完成一項(xiàng)功能,耦合性愈少愈好。具體應(yīng)用時(shí)從問(wèn)題本身入手,自頂向下,逐步細(xì)化,精益求精,將解決問(wèn)題的步驟分解為由基本程序結(jié)構(gòu)模塊組成的通過(guò)程序流程圖、N-S圖、PAD圖表格等表示的結(jié)構(gòu)化程序框圖。在實(shí)踐應(yīng)用中往往會(huì)出現(xiàn)以下幾個(gè)問(wèn)題:一是用戶要求難以在系統(tǒng)分析階段準(zhǔn)確定義,致使系統(tǒng)在交付使用時(shí)產(chǎn)生許多問(wèn)題。二是用系統(tǒng)開(kāi)發(fā)每個(gè)階段的成果來(lái)進(jìn)行控制,不能適應(yīng)事物變化的要求。三是系統(tǒng)的開(kāi)發(fā)周期較長(zhǎng)。
為解決這些問(wèn)題,我們要求模塊的設(shè)計(jì)要簡(jiǎn)潔明了,語(yǔ)句的選用要直觀,不要拖泥帶水。下面是一段小程序,從中可以看出一些語(yǔ)句選用的技巧。
某淘寶商城為鼓勵(lì)更多網(wǎng)友光臨本店,對(duì)新老網(wǎng)友給出如下優(yōu)惠:凡是購(gòu)買10件以上者,打9折;20件以上者,8.5折優(yōu)惠;30件以上者,8折優(yōu)惠,40件以上者,7.5折優(yōu)惠。如用習(xí)慣上的if嵌套語(yǔ)句編寫程序如下:
Main()
{float x,y;
printf(“請(qǐng)輸入優(yōu)惠購(gòu)額款X:\n”);
scanf(“%f”,&x);
if(x
y=x;
else if(x
y=0.9*x;
else if(x
y=0.85*x;
else if(x
y=0.8*x;
else
y=0.75*x;
printf(“網(wǎng)友應(yīng)付優(yōu)惠后款額Y為:y);}
顯然,這段程序冗長(zhǎng),一旦情況有變化,難以擴(kuò)展。轉(zhuǎn)換為switch語(yǔ)句結(jié)構(gòu)后,程序就變得相對(duì)簡(jiǎn)單:
Main()
{float x,y;
Int t;
Printf(“請(qǐng)輸入優(yōu)惠購(gòu)額款X:\n”);
Scanf(“%f”,&x);
If(x>=40)
t =4;
elst
t=(in)(x/10);
switch(t)
{case 0:y=x;break;
case1:y=0.9*x;break;
case2:y=0.85*x;break;
case3:y=0.8*x;break;
case4:y=0.75*x;break;}
printf(“網(wǎng)友應(yīng)付優(yōu)惠后款額Y為:y);}
兩種方法可謂異曲同工,但是對(duì)于程序的調(diào)試性和可維護(hù)性卻有天壤之別。在結(jié)構(gòu)化程序的編程實(shí)踐中,我們要查找某些錯(cuò)誤比較困難,所以要盡可能避免出現(xiàn)這些問(wèn)題。編程技巧需要在編制和調(diào)試結(jié)構(gòu)化程序時(shí)不斷總結(jié)和完善,力求找出最簡(jiǎn)便、最直觀的方法。
總之,結(jié)構(gòu)化程序設(shè)計(jì)方法在實(shí)際應(yīng)用中有許多技巧可以合理運(yùn)用,這需要我們對(duì)算法和數(shù)據(jù)結(jié)構(gòu)展開(kāi)深入分析,尋找最佳結(jié)合點(diǎn),有的放矢,對(duì)癥下藥;更需要在實(shí)踐中不斷總結(jié)和積累。在編寫過(guò)程中我們覺(jué)得有些程序沒(méi)什么問(wèn)題,但是一上機(jī)調(diào)試,就出現(xiàn)這樣或那樣的問(wèn)題,這說(shuō)明程序還不完善,還需要調(diào)整或改進(jìn)。當(dāng)今,高效率和快節(jié)湊的生活與工作方式對(duì)程序的設(shè)計(jì)提出了更高的要求和更苛刻的標(biāo)準(zhǔn),我們只有不斷創(chuàng)新設(shè)計(jì)理念和方法,才能編制出更多高質(zhì)量、高性能、低故障的優(yōu)質(zhì)程序。
參考文獻(xiàn):
[1]林銳等編著.高質(zhì)量程序設(shè)計(jì)指南[M].北京:電子工業(yè)出版社,2002.
關(guān)鍵詞: 高級(jí)語(yǔ)言程序設(shè)計(jì) 流程圖 控件 子程序 參數(shù)傳遞
一方面中職學(xué)生在初中階段基礎(chǔ)較差,另一方面對(duì)于高級(jí)語(yǔ)言程序設(shè)計(jì)的教學(xué)不同教材編寫者有不同的思路,為了適應(yīng)中職學(xué)生的學(xué)習(xí),在教學(xué)中如何更便于學(xué)生掌握高級(jí)語(yǔ)言程序設(shè)計(jì),我在長(zhǎng)期從事高級(jí)語(yǔ)言程序設(shè)計(jì)教學(xué)的過(guò)程中摸索出一套針對(duì)中職學(xué)生教學(xué)的組織教材的思路,下面就以Visual Basic語(yǔ)言為教學(xué)背景談?wù)劷滩慕M織,請(qǐng)同行予以批評(píng)指正。
首先,讓學(xué)生熟悉所學(xué)的高級(jí)語(yǔ)言程序設(shè)計(jì)的程序結(jié)構(gòu)。不同的高級(jí)語(yǔ)言的程序結(jié)構(gòu)的描述過(guò)程是不同的,以Visual Basic語(yǔ)言為例,它的程序結(jié)構(gòu)大至如下:
End Sub
因此,讓學(xué)生熟悉上述的結(jié)構(gòu)描述方法,讓它像模板一樣印在學(xué)生的腦袋中,對(duì)于學(xué)生對(duì)該語(yǔ)言的編寫格式的直觀認(rèn)識(shí)及后續(xù)的學(xué)習(xí)會(huì)起到良好的作用,同時(shí)也會(huì)為后續(xù)學(xué)習(xí)數(shù)據(jù)類型、運(yùn)算符、表達(dá)式和常用函數(shù)的上機(jī)調(diào)試掃除障礙。
其次,讓學(xué)生熟悉所學(xué)的高級(jí)語(yǔ)言程序設(shè)計(jì)上機(jī)的調(diào)試環(huán)境和掌握基本的調(diào)試步驟。對(duì)于程序設(shè)計(jì)的最終結(jié)果是否正確,上機(jī)調(diào)試是必過(guò)的一關(guān),不同的高級(jí)語(yǔ)言程序上機(jī)的調(diào)試環(huán)境是不同的,有的調(diào)試環(huán)境功能單一,有的調(diào)試環(huán)境功能很多,我認(rèn)為首先掌握基本的調(diào)試功能,再根據(jù)需要逐步介紹和掌握調(diào)試環(huán)境所提供的其他功能,這樣更有利于學(xué)生學(xué)習(xí)。以Visual Basic語(yǔ)言為例,我們要求學(xué)生首先掌握以下幾個(gè)技能:建立一個(gè)新的工程,打開(kāi)代碼編寫環(huán)境,保存一個(gè)工程,打開(kāi)已有的工程,知道運(yùn)行程序,自如查看運(yùn)行的結(jié)果,并從運(yùn)行結(jié)果中返回并重新修改程序。至于Visual Basic語(yǔ)言集成開(kāi)發(fā)環(huán)境中所具有的其他功能,則根據(jù)具體調(diào)試演示時(shí)的需要零散分開(kāi),并個(gè)別介紹,這樣學(xué)生將掌握得較好。
再次,讓學(xué)生掌握程序的基本輸入、輸出語(yǔ)句或函數(shù)的功能及用法。程序要進(jìn)行調(diào)試就要有各種各樣測(cè)試的數(shù)據(jù)及根據(jù)測(cè)試數(shù)據(jù)運(yùn)行后顯示出的測(cè)試結(jié)果,以驗(yàn)證所編寫程序是否正確,這就要求掌握基本的輸入輸出語(yǔ)句的用法。在Visual Basic語(yǔ)言中,inputbox()函數(shù)和print語(yǔ)句的用法就是必須掌握的。通過(guò)以上,學(xué)生掌握了程序設(shè)計(jì)的基本“骨架”,以及輸入輸出語(yǔ)句的用法,就可以進(jìn)行最簡(jiǎn)單的順序結(jié)構(gòu)程序的設(shè)計(jì)了,從而在較短的時(shí)間里體驗(yàn)到成就感,為后繼學(xué)習(xí)樹(shù)立信心。
另外,在講解順序結(jié)構(gòu)程序設(shè)計(jì)的過(guò)程中就要開(kāi)始逐步地把流程圖的識(shí)讀及使用方法教授給學(xué)生。流程圖能直觀地表示整個(gè)程序設(shè)計(jì)的流程, 程序的編寫只是對(duì)流程圖的一種語(yǔ)句的細(xì)化過(guò)程,因此看懂流程圖既方便程序設(shè)計(jì)的講解,又便于學(xué)生在課后通過(guò)流程圖了解程序設(shè)計(jì)的思路進(jìn)行復(fù)習(xí)或思考,從而避免由于對(duì)識(shí)讀程序的困難造成理解上的不便。我曾試圖讓學(xué)生沒(méi)看流程圖而直接通過(guò)程序語(yǔ)句來(lái)理解程序設(shè)計(jì)思路,與讓學(xué)生通過(guò)流程圖來(lái)理解程序設(shè)計(jì)的思路相比,顯然前一種方式對(duì)學(xué)生來(lái)說(shuō)要困難得多,而且時(shí)間長(zhǎng)了就很難再理解,而通過(guò)流程圖顯然更容易,即使時(shí)間久了重新識(shí)讀起來(lái)也相當(dāng)容易。
不要把控件的功能及屬性單獨(dú)介紹。以Visual Basic語(yǔ)言為例,很多教材都是以順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、常用控件的順序來(lái)組織教學(xué),我認(rèn)為這樣讓學(xué)生感到很枯燥。因?yàn)楹芏鄬?shí)例在內(nèi)容上涉及許多數(shù)學(xué)的知識(shí),而學(xué)生本來(lái)數(shù)學(xué)基礎(chǔ)就很差,這樣學(xué)生厭學(xué)的情緒會(huì)增加,既不利于教學(xué),又不利于學(xué)生學(xué)習(xí)。因此在教學(xué)中應(yīng)把后面要掌握的控件分別有意識(shí)地穿插在順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)課堂的實(shí)例中,讓學(xué)生生動(dòng)地用各種控件結(jié)合順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)程序?qū)嵗齺?lái)學(xué)習(xí)程序設(shè)計(jì)。一方面,學(xué)生不僅有濃厚的興趣而且很容易體驗(yàn)到成功的喜悅,另一方面又聯(lián)系緊密、節(jié)省課時(shí)。當(dāng)然這樣穿插教學(xué),程序樣例的選擇就非常關(guān)鍵,每個(gè)樣例都要精挑細(xì)選,每節(jié)新課牽涉到的控件以1~2個(gè)為宜,否則控件太多的話就會(huì)造成課堂時(shí)間不足,學(xué)生掌握得也不好。
最后就是子程序與參數(shù)的傳遞要放在該門課程快結(jié)束時(shí)再介紹。這部分內(nèi)容對(duì)學(xué)生來(lái)說(shuō)相對(duì)較難,特別是參數(shù)傳遞,若在學(xué)生還未掌握好程序設(shè)計(jì)或程序設(shè)計(jì)還不熟練時(shí)就介紹,學(xué)生就會(huì)思路混亂,從而增加學(xué)習(xí)難度。若學(xué)生都已經(jīng)能熟練地進(jìn)行程序設(shè)計(jì),在此基礎(chǔ)上再進(jìn)一步地增加子程序與參數(shù)的傳遞的知識(shí),就會(huì)錦上添花,學(xué)生和老師都會(huì)有事半功倍的體驗(yàn)。
當(dāng)然,對(duì)于教材中的其他內(nèi)容,則基本上根據(jù)教材編寫的既定內(nèi)容進(jìn)行講授。以上是我在高級(jí)語(yǔ)言程序設(shè)計(jì)教學(xué)中的體會(huì),至于是否適應(yīng)其他老師的課堂教學(xué)要求,還要在實(shí)際教學(xué)中進(jìn)一步探討。
參考文獻(xiàn):
[關(guān)鍵詞]C語(yǔ)言程序設(shè)計(jì) 探究教學(xué) 實(shí)施目標(biāo)
中圖分類號(hào):TP312.1-4 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-914X(2014)17-0126-01
一、 C語(yǔ)言程序設(shè)計(jì)探究教學(xué)實(shí)施的目標(biāo):情感目標(biāo)、能力目標(biāo)和認(rèn)知目標(biāo)
1、體驗(yàn)C語(yǔ)言程序設(shè)計(jì)的編程思想,激發(fā)和保持對(duì)C語(yǔ)言程序設(shè)計(jì)課程的求知欲,形成積極主動(dòng)地學(xué)習(xí)和參與C語(yǔ)言程序設(shè)計(jì)課程探究活動(dòng)的態(tài)度。
2、能辯證地認(rèn)識(shí)C語(yǔ)言程序設(shè)計(jì)對(duì)社會(huì)發(fā)展、科技進(jìn)步和日常生活學(xué)習(xí)的影響。
3、獲得親自參與研究探索的積極體驗(yàn)、培養(yǎng)嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度。
4、能從日常生活、學(xué)習(xí)中發(fā)現(xiàn)或歸納可以利用C語(yǔ)言程序設(shè)計(jì)解決的問(wèn)題,通過(guò)問(wèn)題分析確定程序功能。
5、能根據(jù)任務(wù)的要求,確定所需信息的類型和來(lái)源,并鑒別信息的真實(shí)性、準(zhǔn)確性和相關(guān)性。
6、掌握計(jì)算機(jī)程序的基本概念,理解并掌握C語(yǔ)言程序設(shè)計(jì)語(yǔ)言的基本知識(shí),包括語(yǔ)句、數(shù)據(jù)類型、變量、常量、表達(dá)式、函數(shù)等,熟悉語(yǔ)言的語(yǔ)法規(guī)則,熟悉計(jì)算機(jī)程序執(zhí)行的基本過(guò)程。
7、了解C語(yǔ)言程序設(shè)計(jì)語(yǔ)言,掌握編寫程序、編譯程序、連接程序以及程序開(kāi)發(fā)環(huán)境等基本知識(shí),掌握調(diào)試、運(yùn)行程序的基本方法與技巧。
二、C語(yǔ)言程序設(shè)計(jì)探究教學(xué)實(shí)施的條件
1、掌握一定的計(jì)算機(jī)操作基礎(chǔ)
C語(yǔ)言程序設(shè)計(jì)課程由于其學(xué)科自身的特點(diǎn),需要在計(jì)算機(jī)上調(diào)試程序,所以要求學(xué)生具有一定的計(jì)算機(jī)操作知識(shí),如:開(kāi)關(guān)機(jī)、鍵盤和鼠標(biāo)的使用、文件的建立與查找、常用軟件的使用等。
2、良好的C語(yǔ)言程序設(shè)計(jì)認(rèn)知結(jié)構(gòu)
認(rèn)知結(jié)構(gòu)就是學(xué)生頭腦里的知識(shí)結(jié)構(gòu),是學(xué)習(xí)者觀念的全部?jī)?nèi)容和組織。奧蘇伯爾的認(rèn)知結(jié)構(gòu)理論是針對(duì)新學(xué)習(xí)內(nèi)容的影響(即遷移)提出的,良好的認(rèn)知結(jié)構(gòu)有利于知識(shí)的提取和正向遷移。C語(yǔ)言程序設(shè)計(jì)探究教學(xué)強(qiáng)調(diào)在已有知識(shí)經(jīng)驗(yàn)上的主動(dòng)建構(gòu),面對(duì)新的問(wèn)題和任務(wù),需要學(xué)生及時(shí)從頭腦中提取信息,建立新舊知識(shí)間的聯(lián)系,在已有C語(yǔ)言程序設(shè)計(jì)知識(shí)的基礎(chǔ)上思考解決新問(wèn)題的辦法,并試圖將新知識(shí)納入自己的認(rèn)知結(jié)構(gòu)中。
3、良好的探究環(huán)境
良好的探究環(huán)境是學(xué)生順利進(jìn)行探究的保證,至少包含兩方面的內(nèi)容:(1)要有充足的探究時(shí)間和靈活的探究條件。探究時(shí)間應(yīng)該根據(jù)學(xué)習(xí)任務(wù)進(jìn)行合理安排,應(yīng)該考慮到學(xué)生假設(shè)錯(cuò)誤時(shí)所耽誤的時(shí)間以及討論交流所需要的時(shí)間。探究教學(xué)中可能需要查閱大量的資料,教師還應(yīng)該準(zhǔn)備書籍、網(wǎng)絡(luò)等輔助資源。(2)學(xué)生在探究學(xué)習(xí)的時(shí)候不能有太多壓力,不同的學(xué)生由于其自身的因素不可能以相同的速度學(xué)習(xí),所以教師在進(jìn)行評(píng)價(jià)的時(shí)候也應(yīng)該因人而異,應(yīng)該為每個(gè)學(xué)生提供充分的思考機(jī)會(huì)和時(shí)間,讓每個(gè)學(xué)生都能以自己的進(jìn)度進(jìn)行探索,并在此過(guò)程中感受到樂(lè)趣。
三、C語(yǔ)言程序設(shè)計(jì)探究教學(xué)情境的創(chuàng)設(shè)
心理學(xué)研究表明,恰當(dāng)、適宜的環(huán)境能有效激發(fā)人的熱烈情緒,提高活動(dòng)的質(zhì)量和效果。教學(xué)情境是指教師人為創(chuàng)造的“典型場(chǎng)景”,創(chuàng)設(shè)目的在于引出教學(xué)任務(wù),將學(xué)生的注意力吸引到學(xué)習(xí)任務(wù)中來(lái)。教師把將要學(xué)習(xí)的C語(yǔ)言程序設(shè)計(jì)知識(shí)通過(guò)一定的情境呈現(xiàn)給學(xué)生,使得學(xué)生認(rèn)知結(jié)構(gòu)與周圍環(huán)境不平衡,引起他們對(duì)學(xué)習(xí)目標(biāo)的注意和興趣,并通過(guò)探究活動(dòng)把學(xué)生過(guò)去的活動(dòng)和將來(lái)的活動(dòng)聯(lián)系在心理學(xué)研究表明,恰當(dāng)、適宜的環(huán)境能有效激發(fā)人的熱烈情緒,提高活動(dòng)的質(zhì)量和效果。教學(xué)情境是指教師人為創(chuàng)造的“典型場(chǎng)景”,創(chuàng)設(shè)目的在于引出教學(xué)任務(wù),將學(xué)生的注意力吸引到學(xué)習(xí)任務(wù)中來(lái)。教師把將要學(xué)習(xí)的C語(yǔ)言程序設(shè)計(jì)知識(shí)通過(guò)一定的情境呈現(xiàn)給學(xué)生,使得學(xué)生認(rèn)知結(jié)構(gòu)與周圍環(huán)境不平衡,引起他們對(duì)學(xué)習(xí)目標(biāo)的注意和興趣,并通過(guò)探究活動(dòng)把學(xué)生過(guò)去的活動(dòng)和將來(lái)的活動(dòng)聯(lián)系在一體。探究教學(xué)情境的創(chuàng)設(shè)應(yīng)做到:(1)創(chuàng)設(shè)的情境是為C語(yǔ)言程序設(shè)計(jì)教學(xué)服務(wù)的,要以C語(yǔ)言程序設(shè)計(jì)探究教學(xué)目標(biāo)為依據(jù)。(2)探究情境要接近學(xué)生的真實(shí)生活經(jīng)驗(yàn),能夠吸引學(xué)生的注意力,激發(fā)他們的認(rèn)知沖突和求知欲。(3)學(xué)生在情境中能夠感覺(jué)到問(wèn)題的存在,自然地將新舊知識(shí)聯(lián)系起來(lái)。(4)情境中必須包含學(xué)生未知的新內(nèi)容,而且是能夠通過(guò)探究掌握的。
四、C語(yǔ)言程序設(shè)計(jì)課程中的探究形式
C語(yǔ)言程序設(shè)計(jì)課程中開(kāi)展探究教學(xué)主要有4種形式:探究性提問(wèn)、探究性討論、探究性演示和探究性實(shí)驗(yàn)。這4種形式是相輔相承的,而不是孤立存在的,在C語(yǔ)言程序設(shè)計(jì)探究教學(xué)中,需要用到多種形式來(lái)構(gòu)成一個(gè)完整的探究教學(xué)過(guò)程。C語(yǔ)言程序設(shè)計(jì)探究教學(xué)通常都是由探究性提問(wèn)開(kāi)始,然后進(jìn)行探究性討論、探究性演示或探究性實(shí)驗(yàn);也可能從探究性演示或探究性實(shí)驗(yàn)開(kāi)始,在演示或?qū)嶒?yàn)的過(guò)程中發(fā)現(xiàn)問(wèn)題,再進(jìn)行探究性討論。在實(shí)際教學(xué)過(guò)程中,要根據(jù)學(xué)習(xí)內(nèi)容和課堂情況靈活地選用這些形式。
五、C語(yǔ)言程序設(shè)計(jì)探究教學(xué)評(píng)價(jià)
教學(xué)評(píng)價(jià)指依據(jù)一定的標(biāo)準(zhǔn),通過(guò)各種策略和相關(guān)資料的收集,對(duì)教學(xué)活動(dòng)及其效果進(jìn)行客觀衡量和科學(xué)判定的系統(tǒng)過(guò)程。C語(yǔ)言程序設(shè)計(jì)探究教學(xué)評(píng)價(jià)是對(duì)C語(yǔ)言程序設(shè)計(jì)探究教學(xué)過(guò)程及其影響的測(cè)量、分析和評(píng)定,評(píng)價(jià)中我們更關(guān)注學(xué)生學(xué)習(xí)和成長(zhǎng)的過(guò)程,尋找適合學(xué)生發(fā)展的學(xué)習(xí)方式,滿足學(xué)生知識(shí)和能力發(fā)展的需要。評(píng)價(jià)對(duì)探究教學(xué)的積極作用是很明顯的,但是如果評(píng)價(jià)指標(biāo)制定不合理,或者評(píng)價(jià)方法的選用、評(píng)價(jià)結(jié)果的表述不當(dāng),不僅不能達(dá)到預(yù)期效果,還會(huì)對(duì)學(xué)生的C語(yǔ)言程序設(shè)計(jì)學(xué)習(xí)產(chǎn)生消極影響。
參考文獻(xiàn)
[1] 《基礎(chǔ)教育課程改革綱要(試行)》教育部文件,教基[2001]17號(hào).
[2] 保羅 朗格朗.終身教育引論瞰[M].北京:中國(guó)對(duì)外翻譯出版公司,1985,p15~31.
[3] 聯(lián)合國(guó)教科文組織.學(xué)會(huì)生存――教育世界的今天和明天[M].上海:上海譯文出.
版社,1979,p2.
[4] 張大均。教育心理學(xué)[M].北京:人民教育出版社,2005,p68--71.
[5] 靳玉樂(lè).探究教學(xué)論[M].重慶:西南師范大學(xué)出版社,200l.
關(guān)鍵詞:C語(yǔ)言;程序設(shè)計(jì);for循環(huán)語(yǔ)句;程序算法
中圖分類號(hào):G433 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):16727800(2013)003018403
0 引言
設(shè)計(jì)程序就好比寫文章和蓋房子,寫文章要有文章結(jié)構(gòu),蓋房子要事先設(shè)計(jì)房子的建筑結(jié)構(gòu),設(shè)計(jì)程序則要有程序結(jié)構(gòu)。早在1966年,Bohm和Jacopini提出了程序設(shè)計(jì)的3種基本結(jié)構(gòu):順序結(jié)構(gòu)程序設(shè)計(jì)、選擇結(jié)構(gòu)程序設(shè)計(jì)和循環(huán)結(jié)構(gòu)程序設(shè)計(jì),并且已經(jīng)證明所有程序都可以由這3種基本結(jié)構(gòu)組合而成。其中,循環(huán)結(jié)構(gòu)程序設(shè)計(jì)是《C語(yǔ)言程序設(shè)計(jì)》中最重要和最難掌握的一種結(jié)構(gòu),幾乎每一個(gè)實(shí)用的程序都少不了循環(huán)結(jié)構(gòu)。因此,循環(huán)結(jié)構(gòu)程序的教學(xué)內(nèi)容對(duì)《C語(yǔ)言程序設(shè)計(jì)》的學(xué)習(xí)非常重要,在《C語(yǔ)言程序設(shè)計(jì)》中提供了3種循環(huán)語(yǔ)句:while循環(huán)語(yǔ)句、do~while循環(huán)語(yǔ)句和for循環(huán)語(yǔ)句。其中,for循環(huán)語(yǔ)句是最難掌握和最難使用的一種語(yǔ)句,是整個(gè)C語(yǔ)言程序結(jié)構(gòu)中的一個(gè)重點(diǎn)內(nèi)容,也是初學(xué)者最難理解的一種語(yǔ)句。在《C語(yǔ)言程序設(shè)計(jì)》中,for循環(huán)語(yǔ)句是最常使用的“計(jì)數(shù)”型循環(huán)結(jié)構(gòu)語(yǔ)句。解決實(shí)際問(wèn)題時(shí),一般情況下,如果題目中明確給出循環(huán)次數(shù),應(yīng)該首選for循環(huán)語(yǔ)句設(shè)計(jì)程序,因?yàn)閒or循環(huán)語(yǔ)句看起來(lái)結(jié)構(gòu)最清晰、最緊湊,在語(yǔ)句結(jié)構(gòu)中循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的四要素一目了然,而且執(zhí)行效率高,使用靈活,可以完全取代while語(yǔ)句和do~while語(yǔ)句。當(dāng)然,對(duì)于一些循環(huán)次數(shù)不明確的問(wèn)題,同樣也可以使用for語(yǔ)句來(lái)解決。
1 教學(xué)問(wèn)題分析
for循環(huán)語(yǔ)句是3種循環(huán)語(yǔ)句之一,一般情況下,教學(xué)是在學(xué)生掌握了《C語(yǔ)言程序設(shè)計(jì)》的基本語(yǔ)法知識(shí)、順序結(jié)構(gòu)和選擇結(jié)構(gòu),學(xué)習(xí)了while循環(huán)語(yǔ)句和do~while循環(huán)語(yǔ)句后,對(duì)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的進(jìn)一步學(xué)習(xí)。for循環(huán)語(yǔ)句對(duì)于那些沒(méi)有學(xué)習(xí)《C語(yǔ)言程序設(shè)計(jì)》的初學(xué)者來(lái)說(shuō),的確有點(diǎn)難度。但是,學(xué)好for循環(huán)語(yǔ)句對(duì)后續(xù)章節(jié)內(nèi)容的學(xué)習(xí)相當(dāng)重要,因此,作為教師一定要清楚學(xué)生學(xué)好for循環(huán)語(yǔ)句的重要性,明確教學(xué)目標(biāo)。對(duì)于學(xué)生而言,能夠靈活地使用for循環(huán)語(yǔ)句解決實(shí)際問(wèn)題,并非一件容易的事情。在多年教學(xué)實(shí)踐中,筆者發(fā)現(xiàn)學(xué)生學(xué)習(xí)for循環(huán)語(yǔ)句時(shí)主要存在以下幾個(gè)方面的問(wèn)題:①不清楚什么樣的問(wèn)題需要循環(huán)結(jié)構(gòu)來(lái)處理;②對(duì)for循環(huán)語(yǔ)句的執(zhí)行過(guò)程不易掌握和理解;③不能靈活地使用for循環(huán)語(yǔ)句解決實(shí)際問(wèn)題;④編寫的程序經(jīng)常出現(xiàn)死循環(huán)。2 教學(xué)問(wèn)題解決
教師在教學(xué)過(guò)程中如何取得良好的教學(xué)效果,并很好地達(dá)到教學(xué)目標(biāo),離不開(kāi)教師的“教”和學(xué)生的“學(xué)”,如何“教”和怎樣引導(dǎo)學(xué)生“學(xué)”是教師所要探討的問(wèn)題。整個(gè)教學(xué)過(guò)程的教學(xué)設(shè)計(jì)、教學(xué)環(huán)節(jié)、教學(xué)方法、教學(xué)手段和教學(xué)思路都特別重要。對(duì)《C語(yǔ)言程序設(shè)計(jì)》這門課程中的for循環(huán)語(yǔ)句來(lái)說(shuō),根據(jù)知識(shí)點(diǎn)的特點(diǎn),主要應(yīng)采用案例教學(xué)法和任務(wù)驅(qū)動(dòng)教學(xué)法,并通過(guò)遷移式指導(dǎo)的學(xué)習(xí)方法,引導(dǎo)學(xué)生學(xué)會(huì)如何運(yùn)用新知識(shí)解決實(shí)際問(wèn)題。
在教學(xué)活動(dòng)中,學(xué)生掌握f(shuō)or循環(huán)語(yǔ)句的格式,并能夠正確地理解for循環(huán)語(yǔ)句的流程和功能,對(duì)于學(xué)生學(xué)習(xí)和使用for循環(huán)語(yǔ)句來(lái)編寫程序相當(dāng)重要。所以,本節(jié)課的重點(diǎn)確定為“掌握f(shuō)or循環(huán)語(yǔ)句的結(jié)構(gòu)”。學(xué)生掌握f(shuō)or語(yǔ)句的結(jié)構(gòu)和用法并不困難,難的是在實(shí)際應(yīng)用中,如何分析問(wèn)題、解決問(wèn)題,使程序變得更加簡(jiǎn)潔、高效。因此,本節(jié)課的難點(diǎn)確定為“for循環(huán)語(yǔ)句的應(yīng)用”。為了取得良好的教學(xué)效果,讓學(xué)生很好地掌握f(shuō)or循環(huán)語(yǔ)句,根據(jù)知識(shí)點(diǎn)的特點(diǎn),設(shè)計(jì)的教學(xué)思路是:厚基礎(chǔ)、抓重點(diǎn)、破難點(diǎn)。根據(jù)知識(shí)點(diǎn)難易程度的不同,把教學(xué)新內(nèi)容由易到難、由淺入深地劃分為3個(gè)層次進(jìn)行講解。
第一:講解for循環(huán)語(yǔ)句的一般格式和流程。
在教學(xué)過(guò)程中,主要采用的辦法是把教材原本復(fù)雜的內(nèi)容簡(jiǎn)單化,變得易于理解和掌握。針對(duì)語(yǔ)句格式,首先講解語(yǔ)句的一般格式:
for(表達(dá)式1;表達(dá)式2;表達(dá)式3)
{ 循環(huán)體語(yǔ)句; }
進(jìn)一步講解易于理解的應(yīng)用格式:
for( 循環(huán)變量初始化;循環(huán)控制條件;修正循環(huán)變量 )
{ 循環(huán)體語(yǔ)句; }
最后講解簡(jiǎn)化為容易掌握的四要素格式:
for( 1 ; 2 ; 4 )
{ 3; }
同時(shí),為加深學(xué)生對(duì)知識(shí)點(diǎn)的理解,將for循環(huán)語(yǔ)句與while循環(huán)語(yǔ)句、do~while循環(huán)語(yǔ)句進(jìn)行比較學(xué)習(xí),并且強(qiáng)調(diào)應(yīng)用for語(yǔ)句格式應(yīng)注意的事項(xiàng)。
針對(duì)語(yǔ)句的流程,并沒(méi)有講解教材中描述的復(fù)雜流程圖,而是想辦法把復(fù)雜內(nèi)容簡(jiǎn)單化后再講解。在for循環(huán)語(yǔ)句四要素格式的基礎(chǔ)上,給出一種能夠?qū)⒄Z(yǔ)句的流程在語(yǔ)句格式上體現(xiàn)得清晰、明了的 “語(yǔ)句格式流程圖”。見(jiàn)圖1。
在講解了語(yǔ)句格式和流程后,緊接著采用案例教學(xué)法和任務(wù)驅(qū)動(dòng)教學(xué)法,引導(dǎo)學(xué)生自己設(shè)計(jì)一個(gè)簡(jiǎn)單程序:運(yùn)用for語(yǔ)句在屏幕上輸出20個(gè)“*”。主要目的是給學(xué)生創(chuàng)造一定的條件,引導(dǎo)學(xué)生主動(dòng)探索、獨(dú)立思考、發(fā)現(xiàn)問(wèn)題、分析問(wèn)題和解決問(wèn)題,以培養(yǎng)學(xué)生的探索精神和自學(xué)能力,從而提高學(xué)生學(xué)習(xí)新知識(shí)、解決新問(wèn)題的能力。
第二:講解for循環(huán)語(yǔ)句靈活多變的語(yǔ)句格式。
for循環(huán)語(yǔ)句靈活多變的格式是學(xué)習(xí)for循環(huán)語(yǔ)句的重點(diǎn)內(nèi)容。緊抓重點(diǎn),在教學(xué)活動(dòng)中主要采用遷移式指導(dǎo)的學(xué)習(xí)方法,教師“舉一”,主要以輸出20個(gè)“*”的問(wèn)題為例,培養(yǎng)學(xué)生“反三”,反復(fù)變化for語(yǔ)句的格式來(lái)解決同一個(gè)問(wèn)題。結(jié)合循環(huán)結(jié)構(gòu)程序設(shè)計(jì)的四要素,對(duì)for循環(huán)語(yǔ)句的各種形式進(jìn)行詳細(xì)地剖析,并且演示程序的運(yùn)行結(jié)果,使學(xué)生完全透徹地理解for語(yǔ)句靈活多變的結(jié)構(gòu)。從而解決教學(xué)的重點(diǎn)內(nèi)容:for語(yǔ)句的結(jié)構(gòu),并從中拓展以提高學(xué)生對(duì)知識(shí)點(diǎn)的學(xué)習(xí)。
第三:for循環(huán)語(yǔ)句的應(yīng)用。
運(yùn)用for循環(huán)語(yǔ)句解決實(shí)際問(wèn)題是教學(xué)的難點(diǎn)所在。教師在授課時(shí)應(yīng)盡量結(jié)合生活中的實(shí)際問(wèn)題,講解程序設(shè)計(jì)的基本思想和方法。既讓學(xué)生掌握f(shuō)or循環(huán)程序設(shè)計(jì)的思路和方法,同時(shí)教會(huì)學(xué)生學(xué)習(xí)新知識(shí),并培養(yǎng)其解決實(shí)際問(wèn)題的能力。在教學(xué)活動(dòng)中通過(guò)解決一個(gè)實(shí)際問(wèn)題:判斷素?cái)?shù)(輸入一個(gè)正整數(shù)m,判斷它是否為素?cái)?shù)),來(lái)突破教學(xué)的難點(diǎn)內(nèi)容。教學(xué)活動(dòng)中采用了案例教學(xué)法和情景教學(xué)法,并輔以任務(wù)驅(qū)動(dòng)及討論的方式。從問(wèn)題的概念出發(fā),教學(xué)活動(dòng)通過(guò)如下的一系列問(wèn)答來(lái)開(kāi)展:
問(wèn):什么是素?cái)?shù)?
答:除了1和它本身,不能被其它數(shù)整除的數(shù)叫素?cái)?shù)。
問(wèn):17是不是素?cái)?shù)?
答:是。
問(wèn):你們是怎么知道17是素?cái)?shù)的?怎么才能讓計(jì)算機(jī)明白?
答:從2開(kāi)始一個(gè)一個(gè)去找,看是否能找到一個(gè)能被17整除的數(shù),如果找到了,就不是素?cái)?shù),如果找不到,就是素?cái)?shù)。
教學(xué)的目的是為學(xué)生創(chuàng)造自主體驗(yàn)的情景和語(yǔ)言描述的情景,使學(xué)生在課堂上處于主體地位,并且為學(xué)生提供良好的暗示和啟迪,從而鍛煉學(xué)生的創(chuàng)造性思維,以培養(yǎng)學(xué)生的適應(yīng)能力為目標(biāo)。在學(xué)生主動(dòng)參與教學(xué)活動(dòng)的前提下,詳細(xì)講解算法分析,從而獲得良好的教學(xué)效果。
算法分析如下:
判斷一個(gè)數(shù)m是否為素?cái)?shù),需要判斷該數(shù)是否能被除了1和自身以外的其它數(shù)整除,即判斷m能否能被2~m-1之間的數(shù)整除。運(yùn)用C語(yǔ)言算術(shù)運(yùn)算符中的求余運(yùn)算來(lái)判斷整除。
設(shè)i取值\[2,m-1\],如果判斷m不能被該區(qū)間上的任何一個(gè)數(shù)整除,即對(duì)每個(gè)i,m%i都不為0,則m是素?cái)?shù);但是只要m能被該區(qū)間上的某個(gè)數(shù)整除,即只要找到一個(gè)i,使m%i為0,則m肯定不是素?cái)?shù)。顯然,這個(gè)判斷過(guò)程是一個(gè)循環(huán)問(wèn)題。
從數(shù)學(xué)的角度考慮,m不可能被大于m/2的數(shù)整除,所以上述i的取值區(qū)間可以縮小到\[2,m/2\]。
引導(dǎo)學(xué)生編寫程序代碼如下:
#include
void main ( )
{ int i , m ;
printf (“ 請(qǐng)輸入m的值:”);
scanf (“%d” , &m);
for ( i=2 ; i
if ( m%i==0 ) break ;
if ( i>m/2)
printf (“%d是一個(gè)素?cái)?shù)\n” , m);
else printf (“%d不是素?cái)?shù)\n” , m);
}
數(shù)學(xué)上可以充分證明,i的取值區(qū)間還可以縮小到\[2,sqrt(m)\]。從減少判斷范圍的角度出發(fā),進(jìn)一步優(yōu)化程序的算法,編寫出更加簡(jiǎn)潔、高效的程序,從而提高學(xué)生的程序設(shè)計(jì)能力,激發(fā)學(xué)生的編程興趣。
#include
#include
void main ( )
{ int i , m ;
printf (“ 請(qǐng)輸入m的值:”);
scanf (“%d” , &m);
for ( i=2 ; i
if ( m%i==0 ) break ;
if ( i>sqrt(m))
printf (“%d是一個(gè)素?cái)?shù)\n” , m);
else printf (“%d不是素?cái)?shù)\n” , m);;
}
為鞏固學(xué)生對(duì)新知識(shí)點(diǎn)的掌握,安排課堂作業(yè):仍然解決判斷素?cái)?shù)的問(wèn)題,在以上講解的基礎(chǔ)上,引導(dǎo)學(xué)生從排除偶數(shù)的角度出發(fā),進(jìn)一步優(yōu)化程序的算法,要求學(xué)生分組討論問(wèn)題,課堂完成作業(yè)。教學(xué)設(shè)計(jì)的主要目的是實(shí)現(xiàn)學(xué)生情感目標(biāo)的培養(yǎng),增強(qiáng)學(xué)生的編程興趣,提高學(xué)生的學(xué)習(xí)積極性。
3 循環(huán)程序?qū)崿F(xiàn)要點(diǎn)
實(shí)現(xiàn)循環(huán)結(jié)構(gòu)程序必須具備4個(gè)組成部分:循環(huán)變量的初始化;循環(huán)控制條件;循環(huán)體語(yǔ)句;循環(huán)變量的修改。其中,最關(guān)鍵的是要確定以下兩點(diǎn):①歸納出哪些操作需要反復(fù)執(zhí)行?――循環(huán)體語(yǔ)句;②這些操作在什么情況下重復(fù)執(zhí)行?――循環(huán)控制條件。只要明確地分析出循環(huán)體語(yǔ)句和循環(huán)控制條件,那么循環(huán)結(jié)構(gòu)也就基本確定了,再根據(jù)具體問(wèn)題,加上循環(huán)變量的初始化和循環(huán)變量的修改,最后從《C語(yǔ)言程序設(shè)計(jì)》提供的3種循環(huán)語(yǔ)句中選擇一種具體循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)程序代碼。
4 結(jié)語(yǔ)
for循環(huán)語(yǔ)句在整個(gè)《C語(yǔ)言程序設(shè)計(jì)》的學(xué)習(xí)中相當(dāng)重要,在程序設(shè)計(jì)中幾乎是無(wú)處不用。因此,在教學(xué)過(guò)程中一定要想辦法讓學(xué)生很好地掌握f(shuō)or循環(huán)語(yǔ)句,為學(xué)好《C語(yǔ)言程序設(shè)計(jì)》打下堅(jiān)實(shí)的基礎(chǔ)。
參考文獻(xiàn):
\[1\] 廖雷.C語(yǔ)言程序設(shè)計(jì)\[M\].北京:高等教育出版社,2002.
[2] 譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)\[M\].北京:清華大學(xué)出版社,2000.
[3] 楊起帆.C語(yǔ)言程序設(shè)計(jì)\[M\].杭州:浙江大學(xué)出版社,2006.
論文摘要 針對(duì)現(xiàn)階段程序設(shè)計(jì)語(yǔ)言教學(xué)中存在的普遍問(wèn)題,在對(duì)程序設(shè)計(jì)教學(xué)思想、程序設(shè)計(jì)能力認(rèn)識(shí)分析的基礎(chǔ)上,提出程序設(shè)計(jì)語(yǔ)言教學(xué)中的若干要點(diǎn)。
1 引言
在計(jì)算機(jī)專業(yè)和非計(jì)算機(jī)專業(yè)的計(jì)算機(jī)教學(xué)中,學(xué)校幾乎都設(shè)置了高級(jí)語(yǔ)言程序設(shè)計(jì)課程。與一些應(yīng)用軟件或工具軟件相比,編程課程的教學(xué)具有較大的靈活性。很多學(xué)生的學(xué)習(xí)能力較差,課后不肯花時(shí)間,久而久之,導(dǎo)致聽(tīng)不懂,給計(jì)算機(jī)編程語(yǔ)言課的教學(xué)帶來(lái)一定的難度。采用何種教學(xué)模式進(jìn)行教學(xué)就成為編程語(yǔ)言教學(xué)的一個(gè)關(guān)鍵。
2 現(xiàn)階段程序設(shè)計(jì)語(yǔ)言教學(xué)中存在的普遍問(wèn)題
根據(jù)以往的教學(xué)經(jīng)驗(yàn)和通過(guò)與學(xué)生、同事之間的交流,得知部分學(xué)生反映上課時(shí)都能聽(tīng)懂講解,可在涉及到具體的編程及上機(jī)操作時(shí),往往會(huì)出現(xiàn)沒(méi)有思路、無(wú)從下手或錯(cuò)誤百出,不會(huì)調(diào)試程序等各種情況,究其原因,在教學(xué)方面可能存在以下2個(gè)問(wèn)題。
2.1 過(guò)于注重對(duì)語(yǔ)句語(yǔ)法的講解,缺乏以算法為核心的編程題教學(xué)教師鐘情于舉一反三地對(duì)使用語(yǔ)句、語(yǔ)法的深入教學(xué),而不是有機(jī)地結(jié)合算法思想進(jìn)行教學(xué),貼近生活并引起學(xué)生興趣的編程題講得很少。由于教學(xué)不是站在如何應(yīng)用計(jì)算機(jī)工具編程解決實(shí)際問(wèn)題或?qū)嶋H項(xiàng)目的角度,就沒(méi)有把邏輯與編程解題思路放在主體地位,也就沒(méi)有很好講解如何分析問(wèn)題和解決問(wèn)題。結(jié)果導(dǎo)致學(xué)生程序設(shè)計(jì)能力、上機(jī)解題能力訓(xùn)練不夠,更談不上引導(dǎo)學(xué)生進(jìn)行課題研究和科研探索。
2.2 學(xué)生厭倦傳統(tǒng)的課堂教學(xué),缺乏師生之間的溝通交流學(xué)生對(duì)于先講后編、先聽(tīng)后編這一傳統(tǒng)的課堂教學(xué)方式有厭倦心理。課堂成了教師的“一言堂”,教與學(xué)不能銜接起來(lái)。有時(shí)教師為了趕進(jìn)度,講授法成了唯一的教學(xué)方法,師生之間缺乏足夠的交流和溝通,學(xué)生沒(méi)有有效、實(shí)用的學(xué)習(xí)輔助途徑,也間接影響著學(xué)生的學(xué)習(xí)興趣和學(xué)習(xí)效果。
3 程序設(shè)計(jì)教學(xué)思想解析
學(xué)生與教師的角色改變,就是教與學(xué)相互滲透的結(jié)果。教學(xué)中突出學(xué)生的主體能動(dòng)性,是現(xiàn)代教學(xué)方法的核心。教學(xué)過(guò)程是教師根據(jù)教學(xué)的目的和任務(wù)以及學(xué)生身心發(fā)展的特點(diǎn)有計(jì)劃地引導(dǎo)學(xué)生掌握知識(shí)、認(rèn)識(shí)客觀世界的過(guò)程,是通過(guò)知識(shí)的傳授和掌握來(lái)促進(jìn)學(xué)生身心全面發(fā)展的過(guò)程。而在教學(xué)過(guò)程中一定要按照教學(xué)規(guī)律,只有按照教學(xué)規(guī)律辦事,才能提高教學(xué)質(zhì)量,增強(qiáng)教學(xué)效果,并促進(jìn)學(xué)生思維的拓展和能力的提高。
教學(xué)應(yīng)該在理論與實(shí)際的結(jié)合過(guò)程中傳授和學(xué)習(xí)基本知識(shí),從而引導(dǎo)學(xué)生運(yùn)用所掌握的知識(shí)去分析問(wèn)題和解決問(wèn)題,在動(dòng)手實(shí)踐中達(dá)到培養(yǎng)學(xué)生手腦并用能力的目的。除了進(jìn)行一些必要的概念講解之外,教師主要應(yīng)該讓學(xué)生通過(guò)上機(jī)實(shí)踐的辦法來(lái)掌握所學(xué)內(nèi)容。一方面,通過(guò)上機(jī)實(shí)踐可以加深對(duì)課堂理論內(nèi)容的理解和掌握;另一方面,通過(guò)上機(jī)實(shí)踐可以提高學(xué)生上機(jī)調(diào)試程序的能力,提高學(xué)生的編程能力,提高學(xué)生分析問(wèn)題和解決問(wèn)題的能力。
4 程序設(shè)計(jì)能力認(rèn)識(shí)
程序是軟件的本體,程序設(shè)計(jì)(Programming)是指設(shè)計(jì)、編制、調(diào)試程序的方法和過(guò)程。它應(yīng)排除軟件開(kāi)發(fā)中的工程與管理因素,主要指軟件開(kāi)發(fā)過(guò)程中的技術(shù)因素,尤其是計(jì)算機(jī)技術(shù)因素。
根據(jù)調(diào)查分析,合格程序員必須具有:1)扎實(shí)的專業(yè)基礎(chǔ)知識(shí);2)很強(qiáng)的綜合分析和解決問(wèn)題的能力;3)熟練的編程調(diào)試能力;4)創(chuàng)新能力;5)團(tuán)隊(duì)合作能力;6)持續(xù)的自學(xué)能力;7)強(qiáng)烈的好奇心;8)較高的英語(yǔ)水平和軟件工程的實(shí)踐能力等。
應(yīng)看到,程序設(shè)計(jì)能力,并非完全等價(jià)于程序員所應(yīng)具備的專業(yè)素質(zhì),它還包括其他一些內(nèi)容,如:1)理解問(wèn)題,根據(jù)已知條件,找出求解該問(wèn)題的數(shù)學(xué)方法或建立相應(yīng)的數(shù)學(xué)模型;2)歸納程序的基本功能;3)設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)和算法;4)用程序設(shè)計(jì)語(yǔ)言實(shí)現(xiàn)算法描述;5)編譯與調(diào)試;6)測(cè)試程序,保證程序正常運(yùn)行。
綜上所述,可以將程序設(shè)計(jì)能力定義為:依據(jù)程序設(shè)計(jì)思想與觀念,應(yīng)用程序設(shè)計(jì)語(yǔ)言,采用相應(yīng)程序開(kāi)發(fā)技術(shù)和環(huán)境,進(jìn)行程序設(shè)計(jì)并達(dá)到預(yù)計(jì)結(jié)果的程度。
5 程序設(shè)計(jì)語(yǔ)言教學(xué)要點(diǎn)分析
基于對(duì)程序設(shè)計(jì)教學(xué)思想、程序設(shè)計(jì)能力的認(rèn)識(shí),為使學(xué)生充分掌握程序設(shè)計(jì)的思想和方法,有效實(shí)現(xiàn)程序設(shè)計(jì)課程教學(xué)目標(biāo),我認(rèn)為程序設(shè)計(jì)教學(xué)還應(yīng)注意并強(qiáng)調(diào)以下幾個(gè)基本的教學(xué)任務(wù)和要求。
5.1 程序設(shè)計(jì)基本概念的灌輸在整個(gè)課程教學(xué)過(guò)程中,結(jié)合具體實(shí)例的演示,應(yīng)向?qū)W生反復(fù)強(qiáng)調(diào)程序,注意學(xué)生程序設(shè)計(jì)中基本概念的理解。學(xué)生只有對(duì)程序設(shè)計(jì)基本概念有了正確的掌握,才會(huì)為以后課程學(xué)習(xí)打下基礎(chǔ),為學(xué)習(xí)興趣培養(yǎng)埋下伏筆;同時(shí)程序設(shè)計(jì)作為一門特殊意義上的課程,包含了許多計(jì)算機(jī)用于數(shù)據(jù)處理的基本原理、基本過(guò)程和特點(diǎn),這些知識(shí)蘊(yùn)藏于程序的基本概念之中,同時(shí)這些概念也是程序設(shè)計(jì)思想與觀念的載體。
5.2 結(jié)構(gòu)化程序設(shè)計(jì)基本概念的培養(yǎng)結(jié)合控制語(yǔ)句結(jié)構(gòu)和函數(shù)的學(xué)習(xí),應(yīng)著重培養(yǎng)學(xué)生的結(jié)構(gòu)化程序設(shè)計(jì)的基本觀念。結(jié)構(gòu)化程序設(shè)計(jì)的基本思想是采用“自頂向下,逐步求精”的程序設(shè)計(jì)方法和“單入口單出口”的控制結(jié)構(gòu),它是程序設(shè)計(jì)的基本原理之一。貫徹課程始終、通過(guò)具體實(shí)例潛移默化地培養(yǎng)這一思想,比在軟件工程中空洞的說(shuō)教,更容易被學(xué)生理解和接收。
5.3 計(jì)算機(jī)算法觀念的培養(yǎng)通過(guò)控制結(jié)構(gòu)、函數(shù)等學(xué)習(xí),初步培養(yǎng)學(xué)生在程序設(shè)計(jì)中的算法觀念。如同數(shù)據(jù)結(jié)構(gòu)觀念培養(yǎng)一樣,一則增強(qiáng)學(xué)生的程序設(shè)計(jì)觀念,二則也為學(xué)生留下廣闊的思考空間,以增強(qiáng)學(xué)習(xí)興趣。再次,通過(guò)這種觀念的培養(yǎng),能夠直接提高學(xué)生初步的程序設(shè)計(jì)能力。
5.4 通過(guò)優(yōu)秀的有趣的實(shí)例,激發(fā)學(xué)生學(xué)習(xí)興趣恩格斯說(shuō)“興趣與愛(ài)好是最好的老師”。為了使初學(xué)者能盡快地掌握計(jì)算機(jī)知識(shí),進(jìn)入計(jì)算機(jī)的應(yīng)用領(lǐng)域,在課程講授過(guò)程中,要特別注意培養(yǎng)學(xué)生的學(xué)習(xí)興趣。學(xué)習(xí)興趣就是學(xué)生在心理上對(duì)學(xué)習(xí)活動(dòng)產(chǎn)生愛(ài)好、追求和向往的傾向,是推動(dòng)學(xué)生積極主動(dòng)學(xué)習(xí)的直接動(dòng)力。學(xué)習(xí)興趣直接關(guān)系到教學(xué)效果的好壞。為提高學(xué)生的學(xué)習(xí)興趣,筆者歸納出6個(gè)辦法:1)通過(guò)演示程序突出程序語(yǔ)言的實(shí)用性;2)通過(guò)簡(jiǎn)單的編程練習(xí)突出語(yǔ)言的易學(xué)性;3)運(yùn)用恰當(dāng)?shù)念惐仁箯?fù)雜問(wèn)題形象化、簡(jiǎn)單化;4)做到一題多解;5)要善于舉一反三;6)通過(guò)解決實(shí)際問(wèn)題使學(xué)生樂(lè)學(xué)。
5.5 有選擇地運(yùn)用多媒體教學(xué)直觀、形象、便捷的多媒體教學(xué)可以使學(xué)生在有限時(shí)間內(nèi)迅速理解、掌握、獲取更多知識(shí)和信息,在教學(xué)過(guò)程中,我們有選擇地使用多媒體教學(xué),將編程語(yǔ)言語(yǔ)法中的深?yuàn)W理論和邏輯推理的內(nèi)容,運(yùn)用多媒體教學(xué)直觀、形象地講授給學(xué)生,加深其對(duì)問(wèn)題的理解。這樣的多媒體教學(xué),收到了將抽象問(wèn)題形象化、枯燥問(wèn)題生動(dòng)化的效果。對(duì)于多媒體教學(xué)不易實(shí)施的程序設(shè)計(jì)方法的講解,我們可以采用傳統(tǒng)的教學(xué)方法,教會(huì)學(xué)生如何思考、推理,如何用語(yǔ)句實(shí)現(xiàn)算法,培養(yǎng)了學(xué)生的抽象思維、邏輯推理能力。這樣,將傳統(tǒng)的教學(xué)方法與多媒體教學(xué)相結(jié)合,大大提高了學(xué)生的綜合思維能力。
5.6 教師在教學(xué)過(guò)程中,應(yīng)當(dāng)注意設(shè)置疑難問(wèn)題,引導(dǎo)學(xué)生思考和探索教學(xué)時(shí)發(fā)現(xiàn),學(xué)生問(wèn)不出問(wèn)題的原因往往在于沒(méi)有真正學(xué)好。實(shí)際上,問(wèn)題是最好的老師,是學(xué)生學(xué)習(xí)的引導(dǎo)者,沒(méi)有問(wèn)題便沒(méi)有深入。在教學(xué)過(guò)程中,引導(dǎo)學(xué)生在問(wèn)題解決中學(xué)習(xí),即提出問(wèn)題,留給學(xué)生時(shí)間思考、討論、解決問(wèn)題,從而更深入地展開(kāi)學(xué)習(xí)。實(shí)踐證明,這種教學(xué)方法充分調(diào)動(dòng)了學(xué)生學(xué)習(xí)的積極性和主動(dòng)性。
5.7 充分利用上機(jī)實(shí)踐程序設(shè)計(jì)語(yǔ)言,學(xué)生與教師在理論課與實(shí)踐課的角色是不同的。教師從課堂上的教學(xué)組織者轉(zhuǎn)變?yōu)樯蠙C(jī)操作的指導(dǎo)者。作為教學(xué)組織者,負(fù)責(zé)知識(shí)點(diǎn)的傳授,此時(shí)教師有較充分的主動(dòng)性,易于控制所傳遞的知識(shí)內(nèi)容,可使學(xué)生在較短時(shí)間內(nèi)獲得較多的知識(shí)。但學(xué)生只是被動(dòng)地接受知識(shí),學(xué)生的積極參與少。上機(jī)操作是實(shí)現(xiàn)檢驗(yàn)計(jì)算機(jī)編程語(yǔ)言課堂教學(xué)效果的重要方面。此時(shí)的教師是上機(jī)的輔導(dǎo)者,學(xué)生親自動(dòng)手、動(dòng)腦參與教學(xué)活動(dòng)。但是上機(jī)操作課對(duì)學(xué)生來(lái)說(shuō)是輕松的,若教師管理不當(dāng),會(huì)造成學(xué)生無(wú)所事事的局面。上機(jī)課是對(duì)理論課的應(yīng)用和檢驗(yàn),對(duì)教師有更高的要求,因此,上機(jī)操作前教師要根據(jù)知識(shí)點(diǎn)布置相應(yīng)的練習(xí)任務(wù),編程序或調(diào)試程序。同時(shí)學(xué)生要完成有針對(duì)性的上機(jī)報(bào)告,進(jìn)一步鞏固上機(jī)成果。
5.8 布置代表性的作業(yè)做作業(yè)是復(fù)習(xí)、練習(xí)的過(guò)程,也是繼續(xù)和深入學(xué)習(xí)的過(guò)程。我們每次課后給學(xué)生布置一些有代表性、恰當(dāng)?shù)牧?xí)題,以鞏固課堂上所學(xué)的內(nèi)容。也通過(guò)學(xué)生所做作業(yè)的好壞來(lái)了解學(xué)生對(duì)課程內(nèi)容的掌握程度以及教師的教學(xué)效果。對(duì)作業(yè)中比較普遍出現(xiàn)的錯(cuò)誤,我們都要在下節(jié)課上當(dāng)堂講解,因?yàn)槟鞘窃谏瞎?jié)課沒(méi)講清楚所致。作業(yè)中表現(xiàn)出與眾不同的、新穎的程序設(shè)計(jì)方法和思路,也要當(dāng)堂宣講或作業(yè)批注,以鼓勵(lì)這種另辟新徑的有創(chuàng)意的學(xué)風(fēng)。
在程序設(shè)計(jì)語(yǔ)言教學(xué)中,尤其語(yǔ)言基本要素的講解過(guò)程中,或隱或顯地,把如上幾點(diǎn)教學(xué)內(nèi)容納入到課堂中,程序設(shè)計(jì)語(yǔ)言教學(xué)必定會(huì)從一種就語(yǔ)言而教語(yǔ)言的呆板模式中走出來(lái),充分發(fā)揮出其在程序設(shè)計(jì)能力培養(yǎng)中的作用。
關(guān)鍵詞:研究;計(jì)算機(jī)編程思想;結(jié)構(gòu)化程序設(shè)計(jì)思想;面向?qū)ο蟮某绦蛟O(shè)計(jì)思想;AOP編程思想
中圖分類號(hào):TP3文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1007-9599 (2012) 05-0000-02
隨著經(jīng)濟(jì)社會(huì)的發(fā)展,信息技術(shù)也迎來(lái)了前所未有的快速發(fā)展,計(jì)算機(jī)編程的應(yīng)用范圍也愈加廣泛。而其中的編程思想,作為一個(gè)主要條件,可以使編程人員編出更好的程序,本文分析了目前編程界最為主流的兩種計(jì)算機(jī)編程思想,同時(shí)和將要興起的新技術(shù)AOP,與OOP相比,其影響力巨大。因此,本文分析了其編程思想以及優(yōu)越性,還闡述了開(kāi)發(fā)步驟。
一、計(jì)算機(jī)編程思想研究
(一)結(jié)構(gòu)化程序設(shè)計(jì)
對(duì)于結(jié)構(gòu)化編程思想,其為面對(duì)繁雜任務(wù)的時(shí)候,防止混亂的一種編程思想,重視將程序結(jié)構(gòu)進(jìn)行規(guī)范化,要按照大腦極易理解的方式,合理組織繁雜問(wèn)題的求解過(guò)程。針對(duì)此編程思想,編程者應(yīng)該遵循結(jié)構(gòu)形式,進(jìn)行程序的設(shè)計(jì)及編寫,保證程序的正確結(jié)構(gòu),方便地進(jìn)行程序正確性的證明,該思想重點(diǎn)有以下幾點(diǎn)內(nèi)容:
運(yùn)用由頂往下逐漸細(xì)化的方法。因?yàn)榻Y(jié)構(gòu)化編程運(yùn)用了功能抽象與模塊分解,其能合理地把繁雜程序任務(wù)分解為容易處理及控制的一些子任務(wù),隨后實(shí)施級(jí)別更細(xì)的任務(wù)分類,保證最終分出的子任務(wù)均是進(jìn)行獨(dú)立編程的子程序模塊。隨后根據(jù)某些調(diào)用以及結(jié)構(gòu)關(guān)系,將子程序模塊進(jìn)行合理組織,最終得出需要的程序。根據(jù)結(jié)構(gòu)化程序設(shè)計(jì)思想,得出的程序具有如下好處:很好的結(jié)構(gòu)、每個(gè)模塊之間有著簡(jiǎn)單清楚的關(guān)系、在各個(gè)模塊內(nèi),均有基本單元構(gòu)成。因此,得出的程序清楚易讀,良好的可理解性,正確性還易驗(yàn)證,維護(hù)、調(diào)試以及修改容易進(jìn)行。出現(xiàn)了結(jié)構(gòu)化編程思想,使之前軟件開(kāi)發(fā)存在的混亂狀況消除,編程人員編寫的程序存在優(yōu)越的結(jié)構(gòu)。還因?yàn)檫\(yùn)用“自頂向下以及逐步細(xì)化”的方法,使人們智力合理地組織起來(lái),對(duì)軟件工程化研發(fā)是有益的。所以程序維護(hù)以及設(shè)計(jì)工作效率得以提升。
若干基本結(jié)構(gòu)構(gòu)成程序,對(duì)于任意的大型程序,均包括三種基本結(jié)構(gòu),這些基本結(jié)構(gòu)使某個(gè)結(jié)構(gòu)化的程序得以順序地組成。主要有順序、選擇以及循環(huán)結(jié)構(gòu)這三種基本結(jié)構(gòu)。軟件界的具體實(shí)踐以及結(jié)構(gòu)化定理已證明,對(duì)于任意繁雜問(wèn)題的程序設(shè)計(jì),均可運(yùn)用順序結(jié)構(gòu)、選擇結(jié)構(gòu)以及循環(huán)結(jié)構(gòu)構(gòu)成,同時(shí)還具備下面一些特征:僅一個(gè)入口及出口;在結(jié)構(gòu)內(nèi),沒(méi)有死循環(huán),在程序內(nèi),以上三種基本結(jié)構(gòu)的順序執(zhí)行關(guān)系得以構(gòu)成。
根據(jù)功能,能把大型程序劃分為若干基本功能模塊。一些子模塊一起構(gòu)成各個(gè)模塊,每個(gè)模塊在功能方面互相獨(dú)立,各個(gè)功能模塊均有進(jìn)行計(jì)算機(jī)控制以及數(shù)據(jù)處理的功能。盡量使模塊間的聯(lián)系簡(jiǎn)潔。最終將模塊根據(jù)某些層次關(guān)系,實(shí)施組織,繁雜程序的功能得以構(gòu)成。
(二)面向?qū)ο蟮某绦蛟O(shè)計(jì)
針對(duì)面向?qū)ο蟮某绦蛟O(shè)計(jì),其編程思想是運(yùn)用消息、對(duì)象、類、繼承以及封裝等這些基本概念,實(shí)施程序設(shè)計(jì)。為使結(jié)構(gòu)化程序設(shè)計(jì)方法處理不了的代碼重用這些問(wèn)題得以解決,便給出了面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù),面向?qū)ο蟮某绦蛟O(shè)計(jì)編程思想包括如下特點(diǎn):面向?qū)ο蟮奶攸c(diǎn)之一就是封裝,其為類與對(duì)象概念的重要特征。封裝給模塊帶來(lái)了比較良好的獨(dú)立性,程序修改與維護(hù)起來(lái)較為簡(jiǎn)單。抽象包括數(shù)據(jù)與過(guò)程抽象。繼承性使軟件的可重用性這個(gè)問(wèn)題得到良好處理。多態(tài)性使應(yīng)用程序函數(shù)的同名這類問(wèn)題得到良好解決。
面向?qū)ο蟮木幊趟枷氪嬖诤芏鄡?yōu)越性,其減少了程序開(kāi)發(fā)時(shí)間,提升了可靠性,開(kāi)發(fā)出來(lái)的程序更有強(qiáng)壯性,維護(hù)起來(lái)更容易。面向?qū)ο缶幊桃驗(yàn)榫哂休^高的可重用性,針對(duì)應(yīng)用程序,能積極運(yùn)用成熟的類庫(kù),進(jìn)而使軟件開(kāi)發(fā)效率得以極大提高,所以,軟件界對(duì)這種面向?qū)ο蟮木幊趟枷脒M(jìn)行提倡運(yùn)用。日益增多的編程人員認(rèn)可并運(yùn)用了面向?qū)ο蟮木幊趟枷?,同時(shí)結(jié)構(gòu)化編程思想在進(jìn)行具有比較強(qiáng)功能性的軟件設(shè)計(jì)里,其指導(dǎo)作用仍然得以發(fā)揮。實(shí)際上,以上兩種編程思想沒(méi)有互相隔離,卻是相互支持、聯(lián)系的。在如今的軟件界,進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì)的時(shí)候,具有公認(rèn)的編程公式:其一為對(duì)象=算法十?dāng)?shù)據(jù)結(jié)構(gòu),其二為程序=對(duì)象+對(duì)象,通過(guò)公式,能觀察出以上兩種編程思想的關(guān)系及區(qū)別。進(jìn)行面向?qū)ο蟮某绦蛟O(shè)計(jì)時(shí)候,仍然不能脫離完成算法的結(jié)構(gòu)化程序設(shè)計(jì),其中的結(jié)構(gòu)化程序設(shè)計(jì)還是編寫對(duì)象進(jìn)行操作的重要所在。
二、AOP編程思想研究
(一)AOP將系統(tǒng)視為關(guān)注點(diǎn)
其實(shí)它為GOF(Observer Design Pattern)設(shè)計(jì)模式的一種持續(xù),進(jìn)行了被調(diào)用者與調(diào)用者間解耦的強(qiáng)調(diào),給開(kāi)發(fā)人員帶來(lái)進(jìn)行橫切關(guān)注點(diǎn)-Crosscutting Concern描述的合理機(jī)制,還可以把橫切關(guān)注點(diǎn)主動(dòng)地織入-weaving于面向?qū)ο蟮能浖到y(tǒng)內(nèi),確保橫切關(guān)注點(diǎn)模塊化得以實(shí)現(xiàn),進(jìn)行方面-Aspect代碼的合理劃分,橫切關(guān)注點(diǎn)顯得極易進(jìn)行處理。開(kāi)發(fā)人員進(jìn)行編譯的時(shí)候,插入、更改或者除去系統(tǒng)的方面,更可能重用系統(tǒng)的方面。由于開(kāi)發(fā)環(huán)境各不相同,關(guān)于概念也會(huì)有所不同。
(二)針對(duì)的問(wèn)題
AOP通常基于進(jìn)行業(yè)務(wù)處理中的切面實(shí)施提取,進(jìn)行處理的時(shí)候,其面對(duì)著其中的一個(gè)步驟或者哪個(gè)環(huán)節(jié),以確保整個(gè)邏輯中每個(gè)部分間低耦合性產(chǎn)生的隔離作用。針對(duì)動(dòng)詞方面,其重視的為橫向的,即為整個(gè)邏輯中一個(gè)方面或者某個(gè)片段,例如:權(quán)限以及日志管理,一般情況下,其進(jìn)行某些軟件系統(tǒng)自身東西的關(guān)注。并非面向?qū)ο筮M(jìn)行業(yè)務(wù)邏輯的關(guān)注。運(yùn)用有效松散方式,使系統(tǒng)間的耦合度這些問(wèn)題減少,方面即為它的模塊化單位。
(三)軟件性能
1.代碼擴(kuò)展性
對(duì)于AOP,因?yàn)榉矫婺K并不了解橫切關(guān)注點(diǎn),因此極易進(jìn)行新方面的增加,并投入新功能。同時(shí),把新的模塊加到系統(tǒng)中的時(shí)候,已經(jīng)存在的方面會(huì)自動(dòng)橫切進(jìn)入,確保系統(tǒng)容易擴(kuò)展。
2.代碼冗余度
運(yùn)用最小的耦合進(jìn)行各個(gè)關(guān)注點(diǎn)的有效處理,保證雖然為橫切關(guān)注點(diǎn),還是模塊化。如此實(shí)現(xiàn)的系統(tǒng),它的代碼冗余不大。進(jìn)行模塊化實(shí)現(xiàn),促使系統(tǒng)的維護(hù)與理解更為容易。
3.代碼重用性
AOP將各個(gè)方面變成為獨(dú)立模塊,在模塊間,其為松散耦合。能使用其它獨(dú)立的日志寫入器取代此時(shí)的,進(jìn)而將日志合理地寫入數(shù)據(jù)庫(kù)中,保證與各種日志寫入要求相符。正確實(shí)現(xiàn)松散耦合,經(jīng)常象征著代碼重用性更為良好。
(四)AOP的開(kāi)發(fā)程序
基于面向?qū)ο缶幊?OOP這種方法,AOP才得以改進(jìn),其為具有創(chuàng)新性的一種軟件開(kāi)發(fā)方法。一般具有如下的幾個(gè)開(kāi)發(fā)程序:
1.方面分解
進(jìn)行分解,要得出橫切關(guān)注點(diǎn)。在這個(gè)步驟中,將系統(tǒng)級(jí)的橫切關(guān)注點(diǎn)與核心模塊級(jí)關(guān)注點(diǎn)進(jìn)行合理分離。
2.關(guān)注點(diǎn)實(shí)現(xiàn)
進(jìn)行關(guān)注點(diǎn)的獨(dú)立實(shí)現(xiàn),將各個(gè)需求映射成為代碼,編譯器隨后將其翻譯成為一些可執(zhí)行代碼。能依靠另外的編程范型,把其當(dāng)作前提,確保基礎(chǔ)范型具有的優(yōu)勢(shì)還得以保留。比如:AOP能利用OOP當(dāng)作基礎(chǔ)范型,直接地將OOP擅長(zhǎng)處理普通關(guān)注點(diǎn)的優(yōu)勢(shì)引用來(lái)。利用如此的實(shí)現(xiàn),一般的獨(dú)立關(guān)注點(diǎn)能利用OOP技術(shù),其和過(guò)程型語(yǔ)言為很多OOP語(yǔ)言的基礎(chǔ)相似。關(guān)注點(diǎn)實(shí)現(xiàn)因?yàn)榘凑罩付ㄟ^(guò)程這一形式產(chǎn)生,能運(yùn)用C、C++或者Java這些傳統(tǒng)語(yǔ)言。
3.方面的重新組合
在此步驟中,方面集成器進(jìn)行某個(gè)模塊單元的建立,也就是方面,進(jìn)行重組標(biāo)準(zhǔn)的指定,常把重組過(guò)程稱為結(jié)合或者織入,運(yùn)用合適的信息進(jìn)行最終系統(tǒng)的組建。
AOP實(shí)現(xiàn)能夠運(yùn)用許多方式進(jìn)行織入的實(shí)現(xiàn),進(jìn)行源碼至源碼的變換,進(jìn)行各方面源碼的預(yù)處理,織入過(guò)的源碼得以出現(xiàn),再將織入過(guò)的源碼傳到編譯器,最終可執(zhí)行代碼得以生成。運(yùn)用此方式,基于Java的一個(gè)AOP實(shí)現(xiàn),能將很多方面變換為Java源代碼,隨后通過(guò)Java編譯器,將其變換為字節(jié)碼,還能處于字節(jié)碼級(jí)別進(jìn)行織入的執(zhí)行,實(shí)際上,字節(jié)碼自身也為一種源碼。同時(shí),對(duì)于底層中的執(zhí)行系統(tǒng)Java虛擬機(jī),還能設(shè)計(jì)成為對(duì)AOP支持。基于Java的AOP實(shí)現(xiàn)要是運(yùn)用此方式,能在虛擬機(jī)中,把織入規(guī)則載入,隨后就之后載入的類均利用此規(guī)則,實(shí)際上,其能進(jìn)行just-in-time方面織入的執(zhí)行。
三、總結(jié)
由于編程實(shí)踐的一直開(kāi)展,編程思想就會(huì)產(chǎn)生,產(chǎn)生的各種新編程思想,均對(duì)編程實(shí)踐進(jìn)行合理指導(dǎo),且均使計(jì)算機(jī)軟件開(kāi)發(fā)的質(zhì)量與速度得以提升。在當(dāng)今,AOP實(shí)現(xiàn)與語(yǔ)法尚未進(jìn)行完全規(guī)范,其為基于OOP以后的編程思想的一種創(chuàng)新,其能選用OOP當(dāng)作基礎(chǔ)范型,具有讓人無(wú)法抗拒的好處,業(yè)界會(huì)進(jìn)行認(rèn)可、接受,但是還要更深刻地探究其中存在的問(wèn)題。
參考文獻(xiàn):
[1]李明.C++程序設(shè)計(jì)[M].北京:中央廣播電視大學(xué)出版社,2008:l96-198
1.思維導(dǎo)圖
思維導(dǎo)圖(Mind Maps)是英國(guó)人東尼?博贊(Tony Buzan)在20世紀(jì)70年代提出的一種先進(jìn)的記筆記方法,一般通過(guò)帶順序標(biāo)號(hào)的樹(shù)狀結(jié)構(gòu)來(lái)實(shí)現(xiàn)思維過(guò)程,它是以圖和直觀形象的線條進(jìn)行思考和表達(dá)的,并將放射性思考實(shí)現(xiàn)具體化。國(guó)外的一些世界500強(qiáng)企業(yè),如微軟、IBM、惠普等,都是思維導(dǎo)圖的第一受益者和倡導(dǎo)者。思維導(dǎo)圖主要由圖像、顏色、曲線和關(guān)鍵詞等元素構(gòu)成,其主要特點(diǎn)有:主題主干作為分支呈放射狀、注意力主要集中在中央圖形上、分支構(gòu)成一個(gè)連接的節(jié)點(diǎn)結(jié)構(gòu)體系、由關(guān)鍵詞或關(guān)鍵圖形構(gòu)成分支。
2.“C語(yǔ)言程序設(shè)計(jì)”課堂教學(xué)的現(xiàn)狀
《C語(yǔ)言程序設(shè)計(jì)》是一門理論與實(shí)踐并重的程序設(shè)計(jì)課程,教學(xué)難度較大,對(duì)于很多知識(shí),學(xué)生總是似是而非,概念模糊,不能完全理解和掌握。
目前,《C語(yǔ)言程序設(shè)計(jì)》課程教學(xué)情況主要表現(xiàn)在以下幾個(gè)方面:
(1)在教學(xué)模式上,教師多采用多媒體教學(xué),課堂理論加上機(jī)實(shí)驗(yàn)的教學(xué)模式,課堂理論為主;
(2)在教學(xué)手段上,教師按照CAI教學(xué)課件進(jìn)行講解,學(xué)生所接受的都是零散的知識(shí),這一節(jié)課學(xué)完,下一節(jié)課可能就忘記了最基本的知識(shí)點(diǎn);
(3)在教學(xué)方法上,以教師講授為主,缺乏師生互動(dòng)和驅(qū)動(dòng)式任務(wù)教學(xué),對(duì)于課程和章節(jié),學(xué)生也不能從整體進(jìn)行認(rèn)識(shí)和掌握;
(4)在實(shí)驗(yàn)環(huán)節(jié)中,由于學(xué)生對(duì)基礎(chǔ)理論知識(shí)掌握的不夠扎實(shí),在上機(jī)課時(shí),只是機(jī)械的照搬教材代碼,以驗(yàn)證課堂內(nèi)容為主,不能很好地理解程序的編程思路和方法,以致于課程結(jié)束時(shí),學(xué)生不能很好地開(kāi)發(fā)一個(gè)小的C語(yǔ)言程序。
為了加強(qiáng)學(xué)生的邏輯思維能力,提高學(xué)生學(xué)習(xí)效果,我們將思維導(dǎo)圖這一教學(xué)方法應(yīng)用在《C語(yǔ)言程序設(shè)計(jì)》課堂教學(xué)中。
3.思維導(dǎo)圖在C語(yǔ)言程序設(shè)計(jì)課堂教學(xué)中的探索
在《C語(yǔ)言程序設(shè)計(jì)》這門課程中,教學(xué)內(nèi)容非常多, 包括程序設(shè)計(jì)基礎(chǔ)知識(shí)、常量變量、數(shù)據(jù)類型和表達(dá)式、順序結(jié)構(gòu)程序設(shè)計(jì)、選擇結(jié)構(gòu)程序設(shè)計(jì)、循環(huán)結(jié)構(gòu)程序設(shè)計(jì)、數(shù)組、函數(shù)、指針、用戶自己建立用戶類型、文件的輸入輸出等。
(1)課程的綜合性設(shè)計(jì)。由于C語(yǔ)言內(nèi)容較多,學(xué)生對(duì)知識(shí)只是進(jìn)行線性的接受,不能對(duì)課程形成整體的認(rèn)識(shí),因此,首先對(duì)課程進(jìn)行整體設(shè)計(jì)。
采用XMind思維導(dǎo)圖設(shè)計(jì)軟件,對(duì)C語(yǔ)言課程整體結(jié)構(gòu)圖進(jìn)行設(shè)計(jì),如圖1所示。
在第一節(jié)課授課過(guò)程中,教師采用思維導(dǎo)圖呈現(xiàn)給學(xué)生這門課程的整體結(jié)構(gòu),學(xué)生頭腦中能夠?qū)φn程有整體的認(rèn)識(shí)和了解,有助于提高學(xué)生的學(xué)習(xí)興趣和求知欲望,便于學(xué)生進(jìn)一步學(xué)習(xí)。
(2)章節(jié)的連續(xù)性設(shè)計(jì)。C語(yǔ)言中的三種程序設(shè)計(jì)結(jié)構(gòu)在知識(shí)講授結(jié)束時(shí),要進(jìn)行章節(jié)的總結(jié),將三種程序結(jié)構(gòu)的相關(guān)知識(shí)以思維導(dǎo)圖的形式展現(xiàn)出來(lái),一方面不僅可以加深了學(xué)生對(duì)知識(shí)的理解和掌握,另一方面也潛移默化地引導(dǎo)學(xué)生主動(dòng)學(xué)習(xí)和對(duì)知識(shí)連續(xù)記憶的能力。
(3)知識(shí)點(diǎn)的擴(kuò)展性設(shè)計(jì)。在引入新章節(jié)時(shí),教師首先向?qū)W生展示章節(jié)完整的思維導(dǎo)圖,將其作為目標(biāo)教學(xué)的工具。思維導(dǎo)圖的運(yùn)用能使學(xué)生明確學(xué)習(xí)目標(biāo)、學(xué)習(xí)內(nèi)容與范圍,以及各知識(shí)點(diǎn)之間的先后順序,能夠更形象、更直觀、更全面的表述學(xué)習(xí)進(jìn)度目標(biāo)。以循環(huán)結(jié)構(gòu)一章為例,教師首先給出整體的章節(jié)結(jié)構(gòu),同時(shí)每個(gè)知識(shí)點(diǎn)都可以進(jìn)行擴(kuò)展,輔助學(xué)生記憶。
(4)學(xué)生的自主性設(shè)計(jì)。在進(jìn)行章節(jié)復(fù)習(xí)時(shí),教師展示章節(jié)完整思維導(dǎo)圖的同時(shí),引導(dǎo)學(xué)生自行繪制出思維導(dǎo)圖,教師也可以只給出提示或關(guān)鍵詞,引導(dǎo)學(xué)生建立內(nèi)容全面、詳實(shí)的思維導(dǎo)圖,從而建立自己的知識(shí)結(jié)構(gòu),更好地掌握知識(shí)。
教師通過(guò)學(xué)生設(shè)計(jì)的思維導(dǎo)圖能夠發(fā)現(xiàn)學(xué)生的知識(shí)結(jié)構(gòu)和對(duì)知識(shí)的理解和認(rèn)知程度,從而更好的優(yōu)化教學(xué)。學(xué)生在自我設(shè)計(jì)過(guò)程中,能夠及時(shí)發(fā)現(xiàn)知識(shí)的盲點(diǎn)區(qū),不斷學(xué)習(xí)并進(jìn)行彌補(bǔ),提高自己對(duì)知識(shí)的掌握。
初中信息技術(shù)選修部分主要介紹VB程序設(shè)計(jì),學(xué)生剛接觸到它會(huì)感到陌生,并帶有一種神秘感,認(rèn)為程序設(shè)計(jì)一定很難,只有高手才能學(xué)會(huì)編寫程序。有了這樣的想法,就為教師的教學(xué)帶來(lái)一定的困難。那么,程序設(shè)計(jì)這部分內(nèi)容怎樣教,才能讓學(xué)生順利地掌握這些內(nèi)容,為升入高一級(jí)學(xué)校繼續(xù)學(xué)習(xí)程序設(shè)計(jì)打下堅(jiān)實(shí)的基礎(chǔ)呢?經(jīng)過(guò)幾年的程序設(shè)計(jì)教學(xué),要讓學(xué)生掌握以下幾個(gè)方面,就會(huì)很輕松地完成教學(xué)目標(biāo)。
一、什么是程序和程序設(shè)計(jì)
首先要讓學(xué)生理解什么是程序。程序是為實(shí)現(xiàn)特定目標(biāo)或解決特定問(wèn)題而用計(jì)算機(jī)語(yǔ)言編寫的命令序列的集合。要讓學(xué)生理解它,必須從學(xué)生熟悉的實(shí)例入手。教材中舉了一個(gè)“獵人過(guò)河”的趣味問(wèn)題,獵人怎樣順利一把一只狼、一頭羊和一些白菜帶過(guò)河,只要按照如下的指令做,就能順利過(guò)河:
第1條:把羊帶到對(duì)岸;
第2條:返回;
第3條:把狼帶到對(duì)岸;
第4條:返回時(shí)把羊帶回原岸;
第5條:把菜帶到對(duì)岸;
第6條:返回;
第7條:把羊帶到對(duì)岸。
通過(guò)執(zhí)行這些有序的指令完成了“獵人過(guò)河”這一具體的工作,這些指令的集合就是程序。這個(gè)程序是用人類語(yǔ)言描述的,計(jì)算機(jī)不能識(shí)別,如果用計(jì)算機(jī)能識(shí)別的語(yǔ)言來(lái)描述這些指令,這就是計(jì)算機(jī)程序。
其次要知道什么是程序設(shè)計(jì)。程序設(shè)計(jì)是給出解決特定問(wèn)題程序的過(guò)程,可以用一個(gè)公式來(lái)說(shuō)明:程序設(shè)計(jì)=數(shù)據(jù)結(jié)構(gòu)+算法。
按照百度百科的定義:數(shù)據(jù)結(jié)構(gòu)求助編輯百科名片數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)存儲(chǔ)、組織數(shù)據(jù)的方式;數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。算法是指解題方案的準(zhǔn)確而完整的描述,是一系列解決問(wèn)題的清晰指令,算法代表著用系統(tǒng)的方法描述解決問(wèn)題的策略機(jī)制。
如果把程序設(shè)計(jì)當(dāng)成蓋房子,那么數(shù)據(jù)結(jié)構(gòu)就像磚、瓦,而算法就是設(shè)計(jì)圖紙。你若想蓋房子首先必須有原料(數(shù)據(jù)結(jié)構(gòu)),但是這些原料不能自動(dòng)地蓋起了你想要的房子;你必須按照設(shè)計(jì)圖紙(算法)上的說(shuō)明一磚一瓦地去砌。這樣你才能擁有你想要的房子。程序設(shè)計(jì)也一樣,你使用的編譯工具中有各種功能語(yǔ)句或基本結(jié)構(gòu),它們不會(huì)自動(dòng)排列成你要的程序代碼。你得按照程序規(guī)定的功能去編寫,而程序的功能是實(shí)現(xiàn)算法的具體體現(xiàn)。所以通俗地說(shuō):你必須按照特定的規(guī)則,把特定的功能語(yǔ)句和基本結(jié)構(gòu)按照特定的順序排列起來(lái),形成一個(gè)有特定功能的程序,這就是:程序設(shè)計(jì)=數(shù)據(jù)結(jié)構(gòu)+算法。
二、學(xué)好數(shù)據(jù)結(jié)構(gòu)是學(xué)好程序設(shè)計(jì)的第一步,也是關(guān)鍵的一步。
三、學(xué)好算法,這個(gè)是程序設(shè)計(jì)的重點(diǎn),也是難點(diǎn)。
四、要讓學(xué)生養(yǎng)成一個(gè)良好的程序設(shè)計(jì)風(fēng)格和習(xí)慣。
首先,要讓學(xué)生養(yǎng)成自上向下逐步求精的程序設(shè)計(jì)思想和方法。怎樣才是自上向下逐步求精的程序設(shè)計(jì)呢。舉個(gè)例子,有這樣一個(gè)問(wèn)題:求1+2+3+…+N。
現(xiàn)在,當(dāng)你看到這個(gè)問(wèn)題時(shí),你不要立即下手去編寫,而是要思考一下怎樣才能求解(算法),然后把它寫下來(lái)以免忘記。于是就寫了一級(jí)算法:
1.輸入N;
2.計(jì)算S=1+2+3+…+N;
3.輸出S。
當(dāng)你寫完之后,你若覺(jué)得第2步不太清晰,還不能寫出代碼,那就繼續(xù)求精,二級(jí)求精:
2-1.S初始為0;i初始為1;
2-2.第i次循環(huán)將i累加到S;
2-3.i每循環(huán)一次增加1,直到i等于N后結(jié)束。
這樣問(wèn)題就得到了解決,接著就可以輕松的編代碼了。再仔細(xì)看看上面的步驟:先寫出一級(jí)算法,如果覺(jué)得由此還是得不到源代碼,或者是其中有一步還有很多步驟要寫,那么就繼續(xù)求精,直到你認(rèn)為可以很清晰的寫出代碼為止。但是求精可以因人而異,像上面的題目,若是一個(gè)編過(guò)很多程序的人來(lái)說(shuō),可能不用什么求精,代碼就可以直接寫出來(lái)了;但要是一個(gè)初學(xué)者來(lái)說(shuō)就可能要寫到二級(jí)求精。
這樣說(shuō)來(lái),有人可能認(rèn)為這個(gè)求精是不是太慢,抑或根本就是在浪費(fèi)時(shí)間。這可是眾多的編程先驅(qū)推薦的基本方法。你知道編程中,主要時(shí)間用在了哪里嗎?不是編寫代碼,而是用在了求解算法和調(diào)試程序上了!而算法的求精就是縮短這些時(shí)間的最好的方法。它可以使你不用再很費(fèi)力的苦思冥想到底該怎樣構(gòu)造算法,使這個(gè)過(guò)程更條理、更簡(jiǎn)明;它也很可能使你不用再為了一個(gè)小小BUG而調(diào)試半天,因?yàn)椋o出的算法已經(jīng)趨于完美。其實(shí),列一個(gè)小提綱(算法)就可以解決很多的問(wèn)題,生活中不也是如此嗎?所以,求精算法這個(gè)最重要的習(xí)慣一定要養(yǎng)成的。
其次,要讓學(xué)生養(yǎng)成一個(gè)良好的習(xí)慣就是要做到程序源代碼的清晰度與可讀性一定要高。
第三,要少用goto語(yǔ)句跳來(lái)跳去,雖然增加了編寫代碼的靈活性,可是卻嚴(yán)重破壞了程序的結(jié)構(gòu)化,容易造成程序運(yùn)行和大腦思維的邏輯混亂,很可能導(dǎo)致一些很不容易發(fā)現(xiàn)的錯(cuò)誤。而且所有的goto都可以用其他的語(yǔ)句來(lái)代替。