一般是,思考[問題的解題流程],再製作程式的流程圖,有了流程圖就可以轉換成程式。如此問題變成-不知從何著手寫出[問題的解題流程]。
而設計解題流程中,需要有
1.題型辨識; 2. 解題規劃; 3.腦中模擬 ; 4.錯誤修正...
而這些是需要直觀、經驗與創意的配合,沒有一定的流程。所是稱為藝術(art)
在教學課本中,內容為:提出問題、秀出解題流程及轉換成程式。而解題流程是很大的問題所在。
而大多的程式,並非以藝術而是程序性的工作。因此以Bottom-UP及Top-Down策略。
Bottom-Up為,先找出"解決部份問題",接著再用"相同的方法及相似的程式段",依序把剩下問題解決。
而其中,最主要的是了解電腦中,要去做什麼工作(敘述)。
Bottom-UP:
練習:印出3+6+9+12+15的和。
1.
印出3+6+9+12+15=45,程式一邊求和一邊印出連加的算式,最後再印出[=]及[累加結果]
1.
計算6!並印出其結果
1.
傳統的方式是分析出資料輸出的變化規則,再用迴敘述其規則來產生所要的資料。
而我最缺的就是"問題的分析"能力。故用Bottom-UP(即碰到不會解的問題,就不要嘗試一次完成,先解決一部份再以相同的樣式完成其它部份)
這個適合不知如何下手的程式。因此不需要分析問題,只要按部就班寫出暴力程式,再使用迴圈敘述即可。
1.先解決一部分的,如第一列
2x2...2x5...2x9
問題:
而設計解題流程中,需要有
1.題型辨識; 2. 解題規劃; 3.腦中模擬 ; 4.錯誤修正...
而這些是需要直觀、經驗與創意的配合,沒有一定的流程。所是稱為藝術(art)
在教學課本中,內容為:提出問題、秀出解題流程及轉換成程式。而解題流程是很大的問題所在。
而大多的程式,並非以藝術而是程序性的工作。因此以Bottom-UP及Top-Down策略。
Bottom-Up為,先找出"解決部份問題",接著再用"相同的方法及相似的程式段",依序把剩下問題解決。
而其中,最主要的是了解電腦中,要去做什麼工作(敘述)。
Bottom-UP:
- 按部就班地解決問題,寫出暴力程式。
- 用變數取代重複敘述中不同的部分,將之變成相同。
- 使用迴圈敘述取代完全相同的重複敘述。
練習:印出3+6+9+12+15的和。
1.
- sum=0
- sum=sum+3
- sum=sum+6
- sum=sum+9
- sum=sum+12
- sum=sum+15
- sum=i;
- i=3
- sum=sum+i
- i=6
- sum=sum+i
- i=9
- sum=sum+i
- i=12
- sum=sum+i
- i=15
- sum=sum+i
- for(i=0;i<=15;i+=3)
- sum=sum+i
印出3+6+9+12+15=45,程式一邊求和一邊印出連加的算式,最後再印出[=]及[累加結果]
1.
- sum=0,
- sum=sum+3
- printf(%d+,3);
- sum=sum+6
- printf(%d+,6);
- sum=sum+9
- printf(%d+,9);
- sum=sum+12
- printf(%d+,12);
- sum=sum+15
- printf(%d+,15);
- sum=0;
- i=3;
- printf(%d+,i);
- sum=sum+i
- i=6;
- printf(%d+,i);
- sum=sum+i
- i=9;
- printf(%d+,i);
- sum=sum+i
- i=12;
- printf(%d+,i);
- sum=sum+i
- i=15;
- printf(%d,i);
- sum=sum+i
- printf(=%d,sum);
- for(i=3;i<15;i+=3)
- printf(%d,i)
- sum=sum+i
- printf(%d,i);
- sum=sum+i
- printf(=%d,sum);
計算6!並印出其結果
1.
- sum=1;
- sum=sum*2;
- sum=sum*3;
- sum=sum*4;
- sum=sum*5;
- sum=sum*6;
- sum=1;
- i=2;
- sum=sum*i
- i=3;
- sum=sum*i
- i=4;
- sum=sum*i
- i=5;
- sum=sum*i
- i=6;
- sum=sum*i
- sum=1;
- for(i=2;i<=6;i++)
- sum=sum*i
傳統的方式是分析出資料輸出的變化規則,再用迴敘述其規則來產生所要的資料。
而我最缺的就是"問題的分析"能力。故用Bottom-UP(即碰到不會解的問題,就不要嘗試一次完成,先解決一部份再以相同的樣式完成其它部份)
這個適合不知如何下手的程式。因此不需要分析問題,只要按部就班寫出暴力程式,再使用迴圈敘述即可。
1.先解決一部分的,如第一列
2x2...2x5...2x9
問題:
沒有留言:
張貼留言