王庶
算法是數(shù)學(xué)及其應(yīng)用的重要組成部分,是計(jì)算科學(xué)的重要基礎(chǔ),對(duì)同學(xué)們培養(yǎng)邏輯思維能力和數(shù)學(xué)表達(dá)能力有著重要意義. 程序的設(shè)計(jì)是本章的一個(gè)難點(diǎn)、重點(diǎn)問(wèn)題,主要體現(xiàn)在語(yǔ)句的選擇、語(yǔ)句的使用、語(yǔ)句的銜接等方面,在運(yùn)用過(guò)程中很容易出錯(cuò),哪怕一個(gè)極小的錯(cuò)誤都會(huì)導(dǎo)致整個(gè)程序無(wú)法被計(jì)算機(jī)運(yùn)行,因此在設(shè)計(jì)程序時(shí)一定要小心,要注意語(yǔ)句的前后邏輯關(guān)系和算法語(yǔ)句的選擇. 為了幫助同學(xué)們掌握算法語(yǔ)句,筆者列舉了一些常見(jiàn)錯(cuò)誤,希望能加深同學(xué)們對(duì)程序語(yǔ)句的理解.
一、基本語(yǔ)法規(guī)則錯(cuò)誤
例1 已知[y=2x+1],設(shè)計(jì)程序輸入[x]的值,輸出相應(yīng)的[y]的值.
點(diǎn)撥 出現(xiàn)上述錯(cuò)誤的原因是對(duì)算法程序的語(yǔ)法規(guī)則的嚴(yán)格性認(rèn)識(shí)不夠深刻,對(duì)相關(guān)的語(yǔ)句的意義和要求理解不夠準(zhǔn)確,從而導(dǎo)致語(yǔ)法規(guī)則上的錯(cuò)誤,其中輸入輸出語(yǔ)句、賦值語(yǔ)句是基本程序語(yǔ)句. (1)“PRINT”語(yǔ)句為輸出語(yǔ)句,同輸入語(yǔ)句一樣,其后應(yīng)跟隨變量或表達(dá)式,而不是一個(gè)語(yǔ)句,錯(cuò)解中的“PRINT”語(yǔ)句后跟了一個(gè)賦值語(yǔ)句,違反了輸出語(yǔ)句的語(yǔ)法規(guī)則;(2)賦值語(yǔ)句的一般格式是“變量=表達(dá)式”,賦值號(hào)的左邊只能是變量,右邊是一個(gè)常數(shù)或表達(dá)式.
二、條件語(yǔ)句的嵌套
例2 已知函數(shù)[y=12x2(0≤x≤2),2x-2(2 點(diǎn)撥 條件語(yǔ)句一般用在需要對(duì)條件進(jìn)行判斷的算法中,比如分段函數(shù)、求和、求積等問(wèn)題,而有時(shí)要用到條件語(yǔ)句的嵌套,通常有兩種格式:IF—THEN—ELSE和IF—THEN,運(yùn)用條件嵌套語(yǔ)句時(shí)需要保證語(yǔ)句的完整性,注意內(nèi)外分層避免邏輯混亂,否則就會(huì)造成程序無(wú)法在計(jì)算機(jī)上執(zhí)行. 三、循環(huán)語(yǔ)句特征理解不當(dāng) 例3 分別用WHILE型語(yǔ)句和UNTIL型語(yǔ)句設(shè)計(jì)一個(gè)求[1+12+13+…+1100]的值的程序. 點(diǎn)撥 循環(huán)語(yǔ)句有兩種類型,一種是當(dāng)型循環(huán)WHILE語(yǔ)句,一種是直到型循環(huán)UNTIL語(yǔ)句,要掌握該語(yǔ)句必須明確以下幾點(diǎn):(1)在WHILE語(yǔ)句中是當(dāng)條件滿足時(shí)執(zhí)行循環(huán)體,而在UNTIL語(yǔ)句中是當(dāng)條件不滿足時(shí)執(zhí)行循環(huán)體;(2)當(dāng)型循環(huán)先判斷后執(zhí)行,直到型循環(huán)先執(zhí)行后判斷;(3)在含有循環(huán)語(yǔ)句的程序里,變量的初始值和控制循環(huán)的條件是兩個(gè)關(guān)鍵,它們直接影響程序的輸出結(jié)果. 一般情況下,把累加變量sum的初始值定為0,這樣如果是WHILE型程序,循環(huán)的條件一般可以寫為“i<=n”,如果是UNTIL型程序,循環(huán)條件一般可以寫為“i>n”,其中n就是數(shù)列的總項(xiàng)數(shù);(4)對(duì)于同一算法而言,當(dāng)型循環(huán)和直到型循環(huán)的條件互為反條件,如果WHILE型程序的循環(huán)條件是i<=n,則UNTIL型程序的循環(huán)條件是i>n. 四、數(shù)學(xué)運(yùn)算符與計(jì)算機(jī)運(yùn)算符混淆 例5 某居民區(qū)的物業(yè)部門每月向居民收取衛(wèi)生費(fèi),計(jì)費(fèi)方法是:3人和3人以下的住戶,每戶收取5元;超過(guò)3人的住戶,每超出1人加收1.2元. 設(shè)計(jì)一個(gè)程序,根據(jù)輸入的人數(shù),計(jì)算應(yīng)收取的衛(wèi)生費(fèi). 錯(cuò)解 設(shè)人數(shù)為[x],收費(fèi)為[y]元,則: 點(diǎn)撥 計(jì)算機(jī)不認(rèn)得“[0 算法作為計(jì)算機(jī)科學(xué)的基礎(chǔ),是歷年來(lái)高考的一個(gè)必考點(diǎn),多以選擇、填空題的形式出現(xiàn),難度中等偏易,其中算法語(yǔ)句是算法在計(jì)算機(jī)上的最終體現(xiàn),算法語(yǔ)句的正確與否直接影響著計(jì)算機(jī)程序能否正常運(yùn)行.同學(xué)們?cè)趯W(xué)習(xí)過(guò)程中要注意理解算法的基本概念和算法語(yǔ)句的含義、作用,尤其要抓住條件語(yǔ)句、循環(huán)語(yǔ)句的特征,弄清當(dāng)型與直到型循環(huán)語(yǔ)句的區(qū)別,多加練習(xí),掌握算法語(yǔ)句并不是一件難事. [練習(xí)] 1. 寫出計(jì)算[112]+[122]+[132]+…+[11002]的程序. 2. 設(shè)計(jì)程序計(jì)算[13+15+17+…+137]. 3. 編寫程序?qū)τ诤瘮?shù)[y=-x+1(x<0),0(x=0),x+1(x>0),]輸入[x]的值,輸出相應(yīng)的函數(shù)值.