浙江學考信息技術(shù)加試怎么復習?
2017-10-24 16:56:50《浙江考試》期刊文章作者:吳建峰 高級教師
縱觀各次信息技術(shù)選考,所有加試題從知識內(nèi)容上說都沒有超出考試標準的范疇。但從前幾次選考加試題得分情況來看,考生的得分率普遍不是很高;仡櫱皫状芜x考,看看加試題考什么、怎么考,也許能獲得一些新啟示。
考什么
所謂“知己知彼,百戰(zhàn)不殆”,要在選考中發(fā)揮出較好的水準,必須要清晰地把握選考內(nèi)容。
縱觀前幾次選考,加試題總分為15分,由3個選擇題(第10、11、12題,共6分)和2個非選擇題(第16、17題,共9分)組成。從知識點分布來看,主要集中在“多媒體信息編碼”、“算法與VB程序設(shè)計”。除此之外,為了考查學生分析解決問題的能力,每次考試的最后一題(第17題)都會出現(xiàn)一個綜合題,此類綜合題不局限于某個經(jīng)典算法,往往綜合應用了程序設(shè)計中的各種方法與技術(shù),我們可以稱之為“開放性試題”。
進一步分析,“算法與VB程序設(shè)計”主要考查了排序、查找、自定義函數(shù)、字符串處理等算法與知識。而If語句、循環(huán)語句及數(shù)組、常見對象屬性操作等編程基礎(chǔ)知識,幾乎滲透到了每個試題。
怎么考
根據(jù)上述梳理可知,所有考查的知識都屬于選考科目考試標準的范疇。但由于試題的形式以及考查切入點的新穎性,會給考生一種不確定感,總體來說這幾次選考試題呈現(xiàn)出下列特點。
1、 傳統(tǒng)題講究全面而透徹
這里的傳統(tǒng)題指的是題材熟悉、所需知識與求解目標之間關(guān)系較為直接的試題,如表1所示的4個有關(guān)多媒體信息編碼的試題。
這類試題的特點是要求考生全面地理解相關(guān)的基礎(chǔ)知識,并能直接運用這些知識求解試題。如2015年10月選考的第10題:
[加試題]將一個時長為1分鐘、采樣頻率為44.1kHz、量化位數(shù)為16、雙聲道未經(jīng)壓縮的Wave格式音頻文件壓縮為MP3格式文件,壓縮后的MP3格式文件大小為940KB,則其壓縮比約為
A、 11:1 B、 11:2 C、 11:4 D、 88:1
考生首先要理解音頻數(shù)據(jù)數(shù)字化的原理,然后結(jié)合音頻采樣特點,計算出該音頻未經(jīng)壓縮的存儲量為10335.9375KB,將此結(jié)果除以壓縮后的存儲容量即可得到壓縮比約為11∶1(選項A)。
再如2016年10月、2016年4月的第10題都是針對BMP圖像數(shù)字化及存儲量計算的考查,雖然知識點相同,但考查的切入點不同。前者要求考生根據(jù)分辨率和每個像素存儲所需的二進制位數(shù)計算圖像的存儲量,而后者需要考生根據(jù)存儲量和分辨率反向計算每個像素存儲所需的二進制位數(shù)。
2、 算法題重視考查算法原理和設(shè)計思維
學習算法與程序設(shè)計不僅要會套用經(jīng)典算法的程序框架來解決實際問題,更要在深入理解算法原理的基礎(chǔ)上,逐漸形成基于既有算法改造之上的算法設(shè)計能力。加試部分的算法與程序設(shè)計題,充分體現(xiàn)了這種價值取向。
如2015年10月的第16題,要求考生在理解傳統(tǒng)冒泡排序算法基礎(chǔ)上,根據(jù)試題提示分析原算法中存在的冗余處理,并按照改進后的算法要求改正程序中的錯誤。核心部分的程序段如下:
本題考查的主要特點為:
理解冒泡排序算法的原理
冒泡排序的基本原理是每次在一個未處理區(qū)間內(nèi)掃描,發(fā)現(xiàn)逆序?qū)?shù)據(jù)后即進行互換,逐漸縮小掃描區(qū)間直到區(qū)間長度為2。該算法的改進原理就是當剩余區(qū)間內(nèi)數(shù)據(jù)沒有發(fā)現(xiàn)逆序?qū)r,即可停止排序。如果考生對原冒泡排序算法的原理理解不夠深刻,就無法設(shè)計出相應的循環(huán)條件并完成改錯。
理解冒泡排序程序外循環(huán)循環(huán)變量的作用原理
教材中冒泡排序算法用For i=1 to n-1語句來控制外循環(huán),循環(huán)變量i的主要作用有兩個,一是冒泡排序加工的遍數(shù),二是為每遍的加工設(shè)定左邊界。如果考生未能對這些原理有深刻的理解,就無法理解外循環(huán)變量i的作用,也就不能正確分析出Do While循環(huán)語句中的條件進而正確寫出改正后的結(jié)果(將標記(1)處的“or”改為“and”、將標記(2)處的“i”改為“i-1”)。
再如2016年4月第11、12題,2017年4月第11題,2017年4月第12題。這些試題首先需要運用已學經(jīng)典算法的原理去理解新的程序,更要基于新的問題去創(chuàng)造性地設(shè)計算法解決問題。以2017年4月的第12題為例,試題要求考生運用已學的選擇排序算法思想,完善改進后的在兩端同時進行選擇的排序程序。該題的主要內(nèi)容如下:
該題的考查特點有:
運用內(nèi)化的選擇排序思想理解新的選擇排序算法
本題可以說是考查選擇排序算法,但又不局限于考查教材中的選擇排序算法,而是需要運用內(nèi)化的選擇排序中的“選擇”思想,去幫助理解改進后的新排序算法。
根據(jù)新問題特點去創(chuàng)造性地設(shè)計算法
改進后的選擇排序算法帶來了新的問題,即兩端同時進行選擇時所帶來的數(shù)據(jù)交換的相互影響。為了解決這個新問題,需要考生能根據(jù)問題特點去完善算法(設(shè)計思維)。新問題只有在左端點是最大值時產(chǎn)生,順藤摸瓜進行分析,當最小值被交換到左端點時,最大值被交換到iMin所指位置,所以正確選項為A。
3、 開放性試題注重解決問題
為了考查學生設(shè)計算法解決問題的能力,幾次選考都出現(xiàn)了開放性試題。此類試題的特征是沒有經(jīng)典算法的影子,考生在分析程序時無法依據(jù)某個經(jīng)典算法的框架來幫助分析、設(shè)計算法,目的是考查學生分析問題、創(chuàng)造性地設(shè)計算法解決問題的能力。
這里的算法設(shè)計不是從零開始的設(shè)計,而是根據(jù)試題給出的任務和算法處理特點,針對程序中的斷層(需要改錯或者填空)設(shè)計算法。如,2015年10月的第17題空格②(核心代碼段如下)。
根據(jù)試題給出的數(shù)據(jù)加密方法以及自定義函數(shù)Code2Char()的功能,考生如能設(shè)計出“取出字符串s中第c+1個字符,并將該字符通過函數(shù)返回”的算法,就能運用字符串函數(shù)寫出此處應填的代碼“Mid(s,c+1,1)”。
怎么學
1、 領(lǐng)會程序設(shè)計本質(zhì),掌握關(guān)鍵知識
計算機進行自動化數(shù)據(jù)處理的本質(zhì)是對現(xiàn)實數(shù)據(jù)的規(guī)律性重復處理,因此程序設(shè)計的核心就是抽象數(shù)據(jù)重復處理的規(guī)律,并將規(guī)律通過程序加以體現(xiàn)。在這個過程中,規(guī)律性的重復處理往往用循環(huán)結(jié)構(gòu)來實現(xiàn),而數(shù)據(jù)的規(guī)則化組織又通過數(shù)組來實現(xiàn)。因此,循環(huán)和數(shù)組就成為了程序設(shè)計中的關(guān)鍵知識。實際前幾次選考的16個有關(guān)程序設(shè)計的加試題中,全部都涉及了循環(huán)語句和數(shù)組應用。為了真正掌握這些關(guān)鍵知識,教學中可以通過變式應用來加深對這些知識的理解和掌握,如原來用For語句實現(xiàn)的循環(huán)結(jié)構(gòu)可考慮用Do While語句來實現(xiàn),原來用多個數(shù)組實現(xiàn)的程序考慮用一個數(shù)組來實現(xiàn)等。
除了數(shù)值處理,計算機處理的非數(shù)值數(shù)據(jù)主要就是字符串,加試題也體現(xiàn)了這個特征(前幾次選考16個程序設(shè)計題中出現(xiàn)了3題)。為了熟練掌握字符串處理的關(guān)鍵知識,平時教學中不能只停留在傳統(tǒng)的字符串表達式計算的層面,而要在各種字符串相關(guān)實際問題的解決過程中深入掌握字符串處理技巧,養(yǎng)成字符串處理的意識和思維,否則就容易出現(xiàn)將“Mid(s,c+1,1)”寫成“s(c+1)”的錯誤?梢越梃b的實際問題可以是“字符文本排版”、“身份證號碼校驗”等。作為一種發(fā)展性思考,教學中還應關(guān)注基于字符編碼的字符串處理問題的解決。
2、 培養(yǎng)程序設(shè)計思維
有些老師認為信息技術(shù)考試是筆試,可以不必開展上機實踐,只需加強筆試題訓練即可。實際上,從前面試題特征的分析可知,即使是筆試題,加試題也已經(jīng)摒棄了原來“三項考試”中那種通過背代碼即可解題的風格,而需要在一定的程序設(shè)計思維支持下才能正確地解題。特別地,為了考查考生的程序設(shè)計思維,加試題已經(jīng)在逐步加強“設(shè)計”的分量,而不再是純粹的單個語句的填空或改錯。如2016年10月第11題,考生需要分析三個語句的組合順序,一定程度上還原了程序設(shè)計考查的原型。
程序設(shè)計思維是當學生面臨一個真實的問題時,在分析問題、設(shè)計算法與數(shù)據(jù)結(jié)構(gòu)、將算法用一種程序設(shè)計語言表示并進行程序調(diào)試的過程中逐步形成的。這個過程往往是費時、充滿挫折的,但正是在這樣一個不斷試錯、反思、調(diào)整、感悟的思考辨析中,程序設(shè)計思維才能不斷形成?赡芤还(jié)課學生只調(diào)試了一個程序,但其中隱含了基礎(chǔ)知識的回憶與應用、算法的設(shè)計與修正、程序代碼的解析等過程,其意義與作用遠遠大于一節(jié)課連續(xù)講多個試題?梢詮默F(xiàn)實中不斷挖掘一些程序設(shè)計相關(guān)的素材,并通過實際編程來解決這些問題,如超市貨物銷售統(tǒng)計、共享單車使用現(xiàn)狀統(tǒng)計等。
3、 針對問題特點,運用分析策略和方法
針對筆試題形式出現(xiàn)的選考,還可提煉并運用一些通用性的程序分析策略與方法,提高解題的正確性,如常識策略、黑匣子策略、對應策略等。
常識策略
算法與程序設(shè)計中,總存在一些相對固定的程序?qū)崿F(xiàn)方法,總結(jié)并運用這些方法來幫助程序設(shè)計和分析就是常識策略。如:在求和算法中,保存總和的變量一開始總要初始化為零;在求最大值算法中,結(jié)果變量初始化值總為一個極小值或者第一項數(shù)據(jù)值;等等。2016年4月第16題就可運用常識策略來求最大值。
黑匣子策略
黑匣子策略指的是當對某一段程序無法完全理解時(該部分程序段可以看成黑匣子),可以先暫時放棄該模塊內(nèi)部如何處理的分析,而只需從已知算法的整體結(jié)構(gòu)出發(fā),分析出該模塊的功能(即知道該模塊在做什么),并根據(jù)該功能去幫助理解其他部分的程序代碼。這樣處理后,一方面可以暫時跳出這個瓶頸,不致影響對整個問題的求解,另一方面,當其他部分理解透徹后,反過來又可幫助我們對該模塊算法的理解。
如,在2015年10月第17題中,如果第一遍看程序?qū)τ谧远x函數(shù)Code2Char有點費解,那么就不必糾結(jié),只需抓住該函數(shù)的功能是“將參數(shù)c中的整數(shù)轉(zhuǎn)換為加密后的字符”,然后利用對該功能的理解,進一步分析出主程序中Code2Char(b1)和Code2Char(b2)分別在將1個字節(jié)的前4位和后4位二進制數(shù)對應的編碼轉(zhuǎn)換為加密字符。以此為突破口,就能逐步梳理出算法并解決問題。
關(guān)鍵變量法
關(guān)鍵變量法指的是運用逆向思維,首先確定程序輸出結(jié)果時的關(guān)鍵數(shù)據(jù),分析輸出結(jié)果由哪些變量決定,將這些變量作為關(guān)鍵變量,在分析程序時抓住這些關(guān)鍵變量,從關(guān)鍵變量值的變化規(guī)律去歸納程序的處理規(guī)律,進而逐步梳理出算法并完成解題。
如,2016年10月選考的第11題,試題給出三行代碼(如下所示),要求確定這三行代碼的順序,使得程序(因篇幅有限,其余代碼略)能判斷s是否為對稱字符串。
在該程序中k是關(guān)鍵變量。結(jié)合最后輸出語句及第二行代碼,可知變量k在統(tǒng)計不同字符的個數(shù)。再結(jié)合程序中的其他代碼,可進一步逆向推斷出變量c1和c2分別表示左右兩邊對稱位置上的字符。由此可逐漸分析出正確組合順序為③②①。
對應策略
對應策略指的是如果已有程序的算法思想(可以是自己歸納得到,也可以是問題中給出),那么可在程序中尋找算法各個處理步驟對應的語句,然后根據(jù)算法要求分析程序中對應部分的功能并寫出所需的代碼。
2016年4月選考的第17題雖然難度較大,但如果充分運用對應策略,還是能比較順利地解決問題。該題部分代碼及題目中對應的方法描述如下表所示。
按照題目中的方法描述,示例3情況處理時應將a(pa+2)的值重復地賦予存放解壓縮數(shù)據(jù)的數(shù)組b,所以空格②處代碼應為“b(pb+i-1)=a(pa+2)”。而對于空格①處的代碼設(shè)計,既可對應題目中的方法描述得到,也可通過示例3情況處理中的“pa=pa+3”對應分析得到。
由此可見,加試題重在基本原理理解及應用、信息技術(shù)學科思維的考查,而盲目的題海戰(zhàn)術(shù)只能徒增師生負擔。信息技術(shù)教學應順應趨勢,著眼學科核心素養(yǎng)、遵循實踐性和綜合性,引導學生在解決實際問題的過程中逐步提升信息素養(yǎng)。
本文作者:吳建峰 高級教師
原文均刊載于《浙江考試》期刊2017年第10期