WFU

2018年6月11日 星期一

學程式的第一步:如何製作流程圖?




作者:林明忠


流程圖與寫程式的關係


流程圖與演算法是撰寫程式成功與否的關鍵。流程圖的主要功能可使程式邏輯關係明確。除了可以訓練邏輯關係之外,也可以提高程式撰寫效率。通常流程圖畫完後,就決定程式執行的結果。在6月10日下午的說明會,我們用簡單明瞭的方式說明流程圖與演算法。我們請一位小朋友將題目用下面常用流程圖符號與演算法表示出來。





範例題目: 『把大象放入冰箱 』


小朋友作答如下



看起來好像沒有問題,但是如果在程式運行過程中,外部塞進來不是大象而是長頸鹿時,會變成什麼情況?


我們可以很明顯的發現,在 2.放入大象中,發生衝突。最常見到的現象是大象與長頸鹿混在一起,最後從冰箱要拿出大象時會拿到長頸鹿。

接下來,小朋友再動手修改流程圖如下:




看起來有解決上一個流程圖的問題,但是用這個流程圖進行程式運行過程中,冰箱門會三不五時的打開關閉。令人感覺不佳。


經過一番修改後,得到下面流程:



這個流程圖看起來很完整,但是還有兩個問題沒注意到。到底是哪兩個問題?

問題出在開門關門。因為程式下指令打開冰箱門後,還要再確認門已經確實打開。才把大象放進去。否則會發生大象貼在冰箱門上的情形。

關門這個動作也是一樣要確認門已經確實關閉。否則會發生冰箱門一直打開的情況。

所以再修改流程圖如下:




在修改流程圖的過程中,光是開門 / 關門就產生不少笑料。最後的流程圖是否已經達到面面俱到的考量?其實還是可以再修改的,以後有時間再討論。若是有人看完後,有其他修改這個流程圖的想法,可以到粉絲頁留言。

從這個例子,我們可以發現
1. 人的想法與程式執行方式有落差。
2. 流程圖可以幫助我們將想法 轉換 成程式執行方式


是否發現我們一直在做以下四件事:

1. 發現問題
2. 觀察問題
3. 分析問題
4. 解決問題


如果家長害怕孩子學不會寫程式,可以先用流程圖的方法讓他先學會把問題拆解成小步驟。再確認整個流程是否有問題。這樣將來寫成程式時,會很快的進入狀況。

在說明會中我們得到很多來自家長的建議,我們將彙整後修改課程方案。另外,6月17日的說明會因端午節連假順延。日期我們會另外公布。在此感謝參加說明會的家長所提供的寶貴意見。