Re: [討論] 請問多層迴圈的flow chart怎麼畫?

作者: MOONRAKER (㊣牛鶴鰻毛人)   2017-09-19 14:30:01
其實不應該在這邊講,因為大部份都是常識,不是常識書上一開始也會講。
- 1 -
流程圖一般而言就是從上畫到下:
███

███

....

███
開始結束還會用一個圓邊的block,那叫終結者(terminator, 端點)
不過這裡太難畫了,你知道就好。
反正早20年書上就教大家畫流程圖只要用這個長方格(執行步驟)和菱形(判斷)。
那這有什麼好講的呢?你都已經知道了啊
重點在下面。
- 2 -
迴圈一定會有一個判斷(condition),
不管先判斷(pre-condition)還是後判斷(post-condition),一定會有
███

███

◢◣
◥◤
這個判斷有點大,不過意思到就好。
迴圈畫法的重點,就是把判斷後的流程畫好
*判斷- 合乎迴圈執行的條件嗎?
yes: 回到迴圈頭
no: 往下執行
███<─┐
↓ │
███ │
↓yes │
◢◣──┘
◥◤
↓no
███

....
pre-condition就反過來
*判斷- 合乎迴圈執行的條件嗎?
yes: 往下執行
no: 往前跳過整個迴圈,繼續執行
no ◢◣<──┐
┌── ◥◤ │
│ ↓yes │
│ ███ │
│ ↓ │
│ ███──┘

└─> ███

....
如圖所示這樣會需要畫兩條跳躍(傳統上的goto),有別於post-condition的一條
因為post-condition當中,判斷和「繼續執行」的跳躍指令合在一起
而在pre-condition當中和判斷結合的跳躍指令卻是「停止執行,跳過迴圈」
而「繼續執行」的跳躍指令則在迴圈尾
為了一致性會希望你把「繼續執行」的跳躍都畫在同一邊
「跳過迴圈」畫在另一邊
如果有break,因為他是離開迴圈,所以也不要跟「繼續執行」畫在同一邊
不然兩條跳躍會交叉,你要畫個半圓表示跳過對方


╭─╮
─┘│└─>

這樣兩條流程交叉的畫法叫jog
(或jump,不過組語的跳躍也是jump,會混淆)
除非圖很複雜,不然最好不要畫。
掌握這些原則之後多層迴圈也不過就是多畫幾條跳躍而已
只是那幾條不要互相重疊
███<──┐
↓ │
███<─┐│
↓ ││
███ ││
↓YES ││
◢◣──┘│
◥◤ │
↓NO │
███ │
↓YES │
◢◣───┘
◥◤
↓NO
....
因為太懶了而且要上班(開玩笑,有人在盯的),畫兩層迴圈就好
三層的,還有混合post-和pre-condition的,就你自己畫
- 3 -
注意有的時候兩層迴圈的開頭其實沒有分開來
因為方框裏面大家只會寫有實際執行到的敘述,不會把大括號也畫一格
所以有時候多層迴圈繼續執行會跳回同一格
███<─┐┐
↓ ││
像這樣,可能好幾條跳躍都跳到同一格上
- 4 -
如果你覺得線很多很煩(事實上真的是很煩),可以使用connector符號
外觀是一個圈圈裏面一個數字或字母,例如"㊣"
(這是示意; 裏面不要寫正)
圖上線很多的時候就這樣畫
....

███ ─>㊣
然後在上面或下面哪裡
███<─㊣

....
數字要配合,1就接1,2就接2
他的原始意義就是接圖,畫到紙不夠的時候接到右邊最上面繼續畫
等於一條線,只是中間不畫
所以不要有一個1接到好幾個1這種情況,那應該包裝為判斷或switch block。
作者: MOONRAKER (㊣牛鶴鰻毛人)   2017-09-22 14:51:00
一直改不是因為很三八,是因為這個字型怪怪的Wenquanyi micro hei的符號都差半格 直線會斷… :~(
作者: Neisseria (Neisseria)   2017-09-19 14:50:00
推一個
作者: wtchen (沒有存在感的人)   2017-09-19 16:58:00
雖然有點離本板主題,不過言之有物+板工喜歡 :)
作者: school4303 (某爬蟲類)   2017-09-19 18:03:00
板工喜歡XD
作者: Yshuan (倚絃)   2017-09-19 20:46:00
推 很用心地說明阿
作者: stucode   2017-09-19 21:10:00
推 還想看更多像這樣的認真文章
作者: Lipraxde (Lipraxde)   2017-09-19 22:56:00
我記得以前我畫流程圖的時候老師要我把返回的箭頭指到線上
作者: VictorTom (鬼翼&娃娃魚)   2017-09-20 00:51:00
推~~M大竟然可以用BBS畫流程圖....Orz
作者: ddtsatan   2017-09-20 01:04:00
作者: MOONRAKER (㊣牛鶴鰻毛人)   2017-09-20 13:07:00
開玩笑我可是從北斗神拳還在連載的時候就在畫流程圖…(虎爛)(廢話)
作者: VictorTom (鬼翼&娃娃魚)   2017-09-21 03:07:00
支持M大畫到獵人連載完....(堆坑XD)
作者: zzss2003 (brotherD)   2017-09-21 11:09:00
謝謝,解釋得很清楚
作者: MOONRAKER (㊣牛鶴鰻毛人)   2017-09-21 11:10:00
不要阿~我不要畫到56億7000萬年後阿~
作者: Lee1027 (遇到吠狗真衰)   2017-09-22 01:21:00
推一個
作者: sunneo (艾斯寇德)   2017-09-25 22:05:00
cool

Links booklink

Contact Us: admin [ a t ] ucptt.com