程序設(shè)計的教學(xué)設(shè)計的分析介紹
7.4.5 程序設(shè)計的教學(xué)設(shè)計
程序設(shè)計的教學(xué)特別要注意漸近性原則,由淺入深,由仿制到獨創(chuàng),要特別鼓勵創(chuàng)新。
1.框架式教學(xué)設(shè)計
用例子將解決某類問題的程序講解之后,歸納其基本結(jié)構(gòu)框架,學(xué)生可以很容易地套用此框架解決同類問題。
例如,累加器程序設(shè)計框架可分析歸納如下:
累加器變量S=初值
FOR I=1 TO N
給定一個加數(shù)
S=S+加數(shù)
NEXT I
輸出S
用此框架可解決的一類問題示例:
(1) S=1+2+3+…+1000
(2) S=12+22+32+…+1002
(3) S=21+22+…+263
(4) 將鍵盤輸入若干數(shù)量加等等
(5) 階乘程序
(6) S= 1+(1+2)+(1+2+3)+ …+(1+2+3+ … +n)
2.算法的邏輯分析
上面的教學(xué)設(shè)計是仿制,要進(jìn)一步教會學(xué)生掌握程序設(shè)計中特有的一些邏輯思維方式。如累加的算法其核心是計算機程序中常用的遞推思維,將若干數(shù)的求和變成若干步的兩數(shù)相加,新和=前一次和+加數(shù),用數(shù)列形式,即 An=An-1+加數(shù)。
(1)遞推算法
許多問題的解決,都要用到遞推的算法。這類問題的特點是:①與自然數(shù)有關(guān),如斐波拉契數(shù)列問題;②有明顯的遞進(jìn)步驟。復(fù)利計算、增長率問題都可看成是在前一次的基礎(chǔ)上增加一個定比。字符方式的圖形也是一行一行的進(jìn)行。
例:用字符“*”號構(gòu)成n行金字塔圖形打印。
算法分析:用具休的N值為例講解,N=5。但要強調(diào)不能就此用5個PRINT語句來實現(xiàn)。而要向一行又一行遞推方式引導(dǎo)。實際圖形特點是由兩類字符構(gòu)成,左邊的空格和“*“。研究空格個數(shù)和“*”號個數(shù)與行數(shù)的關(guān)系式如下,
(2)窮盡算法分析
把可能出現(xiàn)問題的情況都考慮到,讓計算機逐一處理,這一邏輯方式也是計算機程序設(shè)計中常用的方式。例如求不定方程的整數(shù)解就常用此法。
例:求X2 +Y2=19992的正整數(shù)解。
算法分析:容易估計到0<X<1999,同0<Y<1999 因此正整數(shù)解包含于集合
(3)漸近式算法分析
從個例一步一步的算法分析,最后歸納到一般的算法。例如求N 個數(shù)A(1),A(2),……,A(N)的最大數(shù)M的算法分析,可以如下進(jìn)行:上式可演變?yōu)檠h(huán)方式:
為發(fā)展能力,此問題還可以進(jìn)一步形象化和延伸。如把這個方法比喻為擂臺,還可以有標(biāo)志法,即記憶下標(biāo)值,還有直接交換法,即直接用A(1)、A(2)比較、不用變量M。
(4)逐步求精算法分析
逐步求精包含兩層意思:一是自項向下,逐漸細(xì)化的過程;二是由粗到精、由繁到簡的過程。
例:打印出某畢業(yè)班學(xué)生成績總分在前三名的成績??杉俣ㄟ@些成績單存入A(1)、A(2)、、、、A(N)中了。
第一層:找出前三名的成績打印出來
第二層:找出第一名的成績= >M1
找出第二名的成績單=>M2
找出第三名的成績單=> M3
打印出M1、M2、M3
第四層:A(1)、A(2)、…A(N)中最大數(shù)的下標(biāo)=>K
M1=A(K):A(K)= -1去除最大數(shù)
A(1)、A(2)、…A(N)中最大數(shù)的下標(biāo)=>K
M2=A(K):A(K)= -2
A(1)A(2)、…A(N)中最大數(shù)的下標(biāo)=>K
M3=A(K):A(K)= -3
打印A1、M2、M3
第五層:僅需細(xì)化A(1)、A(2)、…A(N)中最大數(shù)的下標(biāo)=>K即可。
第六層:該算法中有三段是重復(fù)的程序段即第五層的程序,考慮精簡。精簡的方式可用子程序或?qū)⑷齻€比較歸一個循環(huán)。
以上幾種算法、分析方式往往是結(jié)合進(jìn)行的。
3.算法的評價
包括正確性、可讀性、速度、存儲空間等評價算法。中學(xué)的算法應(yīng)著重在正確性和可讀性。
例:將三個數(shù)A、B、C由大到小排序輸出。
算法分析如下:
第1種算法,窮舉列出六種情況
第2種 算法
因此上面六行將有12個判斷,其中有的是不必要的。
這個算法減少了判斷,但增加了閱讀程序的困難。如果更看重算法的可讀性,第1種算法反而是更好的了。
4.一些典型程序算法
(1) 離散函數(shù)的極值問題
例:已知矩形的周長是整數(shù)L,且長和寬也是整數(shù),求矩形面積最大時的長和寬?可用窮舉比較的方法
設(shè)邊長為a和L-a,則 0<a<l,S=a(L-a)算法:S=0
(2) 分類求和、統(tǒng)計問題。
例:將學(xué)生考試成績分為五類統(tǒng)計每類的人數(shù)。分類如后:60分以下;60~69分;70~79分;80~89分;90~100分;
(3) 增長率、復(fù)利等問題
(4) 數(shù)列值和數(shù)列求和問題。
(5) 數(shù)、表中數(shù)字、字符的查找問題。
(6) 數(shù)列的排序問題。
免責(zé)聲明:以上內(nèi)容源自網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請告知,我們將盡快刪除相關(guān)內(nèi)容。