摘要
在編程解題時(shí),學(xué)生經(jīng)常會(huì)遇到審題問(wèn)題。本文結(jié)合教學(xué)經(jīng)歷,列舉編程審題時(shí)出現(xiàn)的幾類(lèi)常見(jiàn)問(wèn)題,并提出針對(duì)性的矯正策略以培養(yǎng)學(xué)生的解題能力。
關(guān)鍵詞
信息奧賽 編程審題 矯正策略
我們?cè)诰幊探虒W(xué)中,經(jīng)常會(huì)遇到各類(lèi)問(wèn)題,其中較為常見(jiàn)的是學(xué)生在解題過(guò)程中的審題問(wèn)題。在教學(xué)中,通過(guò)查看學(xué)生提交上來(lái)的程序文件,筆者總會(huì)遺憾地發(fā)現(xiàn),學(xué)生不是沒(méi)弄明白題目的意思,就是不能挖掘出題目隱含的條件。只要筆者把題目要求再讀一讀或者稍作解釋,他們會(huì)馬上反應(yīng)過(guò)來(lái)并能修改正確。為此,筆者根據(jù)自身實(shí)際教學(xué)經(jīng)驗(yàn),談一下初中學(xué)生編程審題的常見(jiàn)問(wèn)題及教師教學(xué)針對(duì)性的矯正策略。
一、分清主次,耐心讀題,深入理解
盲目審題是學(xué)生解題的一大障礙,教學(xué)中教師的巧妙引導(dǎo)顯得尤為重要。審編程題首先是要理解題目中問(wèn)題的描述部分,這其中含有這個(gè)題目的已知條件,解題的關(guān)鍵是將這些條件認(rèn)真分析,加以整理,發(fā)現(xiàn)隱藏在其中的條件和規(guī)律,然后再選擇正確的算法和數(shù)據(jù)結(jié)構(gòu)加以解題。
有時(shí)候,編程題不會(huì)像數(shù)學(xué)題那樣,直接將已知條件告訴你,再告訴你要求什么。出題者往往以故事開(kāi)頭,這些故事可能對(duì)問(wèn)題的解決毫無(wú)幫助。例如,“秘密會(huì)談”中一開(kāi)始講述了世界為什么會(huì)毀滅,各國(guó)重要人士將云集北京進(jìn)行秘密會(huì)談尋求解救策略……這些信息其實(shí)和解題基本無(wú)關(guān),真正有用的信息是最后敘述的這些重要人士坐的地鐵出發(fā)時(shí)間和速度,求這些人什么時(shí)間能到達(dá)北京。很多學(xué)生被一開(kāi)始所講的故事給迷惑了,都以為題目?jī)?nèi)容這么長(zhǎng),肯定很難做。
針對(duì)這種情況,筆者的策略是指導(dǎo)學(xué)生耐心讀題、深入理解。對(duì)于很長(zhǎng)且一時(shí)半刻不能理解的題目,教師需告訴學(xué)生要有耐心和信心,學(xué)會(huì)心理暗示:這題就是題目有點(diǎn)長(zhǎng)且不太好懂,看懂了就很簡(jiǎn)單。我們關(guān)心的不是故事中說(shuō)了什么,這些事是不是真有,而是要從故事中提取出有用的信息,知道真正要讓我們處理什么樣的數(shù)據(jù),要得到什么結(jié)果。這樣才有可能正確理解題意,從而深入解題。正是在筆者指導(dǎo)下用這種方法審題,多數(shù)學(xué)生很快就把上題做出來(lái)了。
二、重視變量,立足基礎(chǔ),靈活應(yīng)用
在做題時(shí),忽視條件中的變量數(shù)據(jù)范圍是學(xué)生解題的又一大障礙。同一個(gè)題目,因變量的數(shù)據(jù)范圍不同可能會(huì)影響到定義的變量和解題方法。教師該如何幫助學(xué)生有效避免這類(lèi)問(wèn)題呢?以下,筆者列出了學(xué)生由于未注意數(shù)據(jù)范圍因素而可能會(huì)出現(xiàn)的問(wèn)題及教師的輔導(dǎo)策略。
在Pascal中,每個(gè)變量具有一個(gè)特定的類(lèi)型,它決定了變量的存儲(chǔ)器的大小和布局、范圍內(nèi)的值可否存儲(chǔ)在該存儲(chǔ)器內(nèi)。在實(shí)際審題過(guò)程中,學(xué)生往往會(huì)只注重解題方法,而忽視題目中變量的數(shù)據(jù)范圍。例如,“Oliver的成績(jī)”這道題目中的數(shù)據(jù)規(guī)模:
對(duì)于50%的數(shù)據(jù),0 對(duì)于100%的數(shù)據(jù),0 分析:M是Oliver的成績(jī)變量的位數(shù),一開(kāi)始很多學(xué)生把M設(shè)置成longint類(lèi)型,長(zhǎng)整形變量最大范圍是10位數(shù),int64類(lèi)型變量最大范圍是19位。題目規(guī)定50%的成績(jī)M是19位。所以,把M設(shè)置成長(zhǎng)整型的學(xué)生測(cè)試成績(jī)是0分,把M設(shè)置成int64類(lèi)型的學(xué)生測(cè)試成績(jī)是50分,只有用高精度方法做的學(xué)生才能得到100分。 針對(duì)這種情況,我們必須幫助學(xué)生打好自身基礎(chǔ),牢記各變量類(lèi)型特點(diǎn)。我們還要幫助學(xué)生養(yǎng)成仔細(xì)分析數(shù)據(jù)范圍的習(xí)慣。一般的試題都會(huì)告訴你數(shù)據(jù)范圍,如30%的數(shù)據(jù)在一個(gè)小的范圍,60%以內(nèi)的數(shù)據(jù)在稍大的范圍,100%的數(shù)據(jù)是更大的范圍。首選目標(biāo)是針對(duì)100%的數(shù)據(jù)范圍進(jìn)行仔細(xì)分析研究,盡量要拿全分。假如學(xué)生確實(shí)只能解決小數(shù)據(jù)的,應(yīng)放棄全對(duì)的期望,切不能因貪心而導(dǎo)致一分未得。 三、考慮時(shí)空限制,充分分析,巧妙應(yīng)變 評(píng)價(jià)學(xué)生程序的重要指標(biāo)就是題目中所給出的時(shí)間和空間數(shù)據(jù)。通常,在競(jìng)賽中都有運(yùn)行內(nèi)存和測(cè)試點(diǎn)時(shí)間限制的數(shù)據(jù)說(shuō)明。同一個(gè)題目如果數(shù)據(jù)限制差異大的話可能難度差異也很大。從某種意義上說(shuō),這些數(shù)據(jù)限制也暗示了可能的算法,數(shù)據(jù)小,也許是搜索派上用場(chǎng)的時(shí)候,數(shù)據(jù)大了,可能只能考慮動(dòng)態(tài)規(guī)劃、數(shù)學(xué)方法等高效的算法了。 例如,“烏龜棋”一題大意是有M張爬行卡片,分成4種不同的類(lèi)型,每種類(lèi)型的卡片上分別標(biāo)有1、2、3、4四個(gè)數(shù)字之一,表示使用這種卡片后,烏龜棋子將向前爬行的格子數(shù)。用不同的使用順序得分不同,求最多能得到的分?jǐn)?shù)。(N≤350,M≤120,每張卡片不超過(guò)40)有學(xué)生定義了數(shù)組a:array[1..350,1..40,1..40,1..40,1..40] of longint。longint類(lèi)型占用4個(gè)字節(jié),此數(shù)組占用空間為:350*40*40*40*40*4/1024/1024=3417.97M。一般題目不會(huì)提供這么大的空間,所以即使下面的程序?qū)懙迷俸靡矔?huì)因爆空間而得0分。 分析:程序題目的說(shuō)明部分會(huì)給出“運(yùn)行內(nèi)存上限”,常見(jiàn)的數(shù)據(jù)有128M、256M、512M。我們?cè)趯?xiě)程序時(shí),數(shù)據(jù)一定不能超過(guò)這個(gè)內(nèi)存上限。 爆空間相當(dāng)于編譯不通過(guò),測(cè)試直接零分。如何避免超內(nèi)存上限呢?我們需要指導(dǎo)學(xué)生學(xué)會(huì)準(zhǔn)確計(jì)算自己定義的數(shù)組占用空間值,可通過(guò)writeln(sizeof(數(shù)組名)div 1024 div 1024)表達(dá)式求出。若數(shù)組容量超空間,我們可以減小數(shù)組維數(shù)和個(gè)數(shù),并應(yīng)用哈稀表、循環(huán)隊(duì)列等加以修正。我們還應(yīng)讓學(xué)生明白:由于空間復(fù)雜度和時(shí)間復(fù)雜度在一定條件下可以相互轉(zhuǎn)化,所以,在時(shí)間要求允許的前提下可考慮利用多余的時(shí)間來(lái)減小空間的占用。 編程審題是學(xué)生解題過(guò)程中很重要的一個(gè)環(huán)節(jié),我們千萬(wàn)不能忽視。學(xué)生不應(yīng)在沒(méi)有完全理解題意的情況下上來(lái)就寫(xiě)程序。江蘇省信息奧賽高級(jí)教練員林厚從老師對(duì)學(xué)生有這樣的要求:在信息奧賽解題過(guò)程中要把握好三個(gè)三分之一,即審題、編程、測(cè)試。每一題花在這三部分上的時(shí)間都要盡量平均,不要斬頭去尾。這是非常有道理的,沒(méi)有經(jīng)驗(yàn)的學(xué)生幾乎會(huì)把所有時(shí)間都放在編程這一部分上,忽視審題和測(cè)試。因此,想要正確解題的第一步就是做好審題環(huán)節(jié)。 參考文獻(xiàn) [1]張苾菁.蘇式數(shù)學(xué)課堂:呼喚精致的適宜教育[J].江蘇教育,2015(9). [2]金志峰.中學(xué)生編程學(xué)習(xí)中的困難因素分析與對(duì)策研究[J] .信息記錄材料,2016(4). [3]林厚從.程序設(shè)計(jì)與應(yīng)用[M].南京:東南大學(xué)出版社,2012. (作者單位:江蘇省蘇州市吳江區(qū)盛澤第二中學(xué))