前言
C: 現(xiàn)實(shí)生活中,我們每天都要面對(duì)各種選擇,有句俗話叫" 選擇比努力更重要 ",不同選擇所對(duì)應(yīng)的結(jié)果千差萬(wàn)別。在程序中編寫的代碼也是如此,我們上篇學(xué)到的關(guān)系運(yùn)算符、邏輯運(yùn)算符就可以讓程序執(zhí)行不同的選擇。
查老師有話說(shuō): 跟著查老師,就是你比較明智的選擇。
而且對(duì)于初級(jí)的應(yīng)用開發(fā)者(碼農(nóng)),未來(lái)每天的工作就是用本篇的選擇結(jié)構(gòu)寫業(yè)務(wù)邏輯,所以它們學(xué)起來(lái)也不難,因?yàn)榻?jīng)常要使用?。?/p>

在介紹 Java 中的選擇結(jié)構(gòu)語(yǔ)法前,查老師先帶你在本篇介紹一下程序中常見的流程控制語(yǔ)句。
概述
在前幾篇的學(xué)習(xí)中,我們也寫了幾行代碼,而且也明白編寫的代碼是自上而下依次執(zhí)行下來(lái)的,編寫幾行,就會(huì)自上而下執(zhí)行幾行。這種"一根筋"的代碼被稱為 順序控制語(yǔ)句 。

順序控制語(yǔ)句
順序控制語(yǔ)句 是程序中最簡(jiǎn)單的流程控制,按照代碼執(zhí)行的先后順序,依次執(zhí)行,程序中的大多數(shù)代碼都是這樣執(zhí)行的。[1]

選擇控制語(yǔ)句
本篇我們要學(xué)習(xí)的選擇結(jié)構(gòu)就屬于 選擇控制語(yǔ)句 。 選擇控制語(yǔ)句 也被稱為分支結(jié)構(gòu)語(yǔ)句,選擇結(jié)構(gòu)有特定的語(yǔ)法規(guī)則,代碼要執(zhí)行具體的邏輯運(yùn)算進(jìn)行判斷,邏輯運(yùn)算的結(jié)果有兩個(gè)或多個(gè)(真或假),所以產(chǎn)生了選擇,根據(jù)不同的選擇就會(huì)執(zhí)行不同的代碼。[1]

循環(huán)控制語(yǔ)句
循環(huán)控制語(yǔ)句可以在滿足循環(huán)條件的情況下,反復(fù)執(zhí)行某一段代碼,這段被重復(fù)執(zhí)行的代碼被稱為循環(huán)體語(yǔ)句(循環(huán)操作)。當(dāng)反復(fù)執(zhí)行這個(gè)循環(huán)體時(shí),需要在合適的時(shí)候把循環(huán)判斷條件修改為 false ,從而結(jié)束循環(huán),否則循環(huán)將一直執(zhí)行下去,形成死循環(huán)。[1]

流程圖
概述
你看上方的控制語(yǔ)句,查老師每個(gè)都配有一個(gè)簡(jiǎn)單圖示,這種圖示叫流程圖。以后的程序邏輯越來(lái)越復(fù)雜,我們就可以通過(guò)流程圖,用圖示的方式,來(lái)反映出特定主體為了滿足特定需求而進(jìn)行的,有特定邏輯關(guān)系的一系列操作過(guò)程(程序步驟)。
流程圖是對(duì)過(guò)程、算法、流程的一種圖像表示,在技術(shù)設(shè)計(jì)、交流及商業(yè)簡(jiǎn)報(bào)等領(lǐng)域有廣泛的應(yīng)用。通常用一些圖框來(lái)表示各種類型的操作,在框內(nèi)寫出各個(gè)步驟,然后用帶箭頭的線把它們連接起來(lái),以表示執(zhí)行的先后順序。用圖形表示算法,直觀形象,易于理解。有時(shí)候也被稱之為輸入-輸出圖。顧名思義,就是用來(lái)直觀地描述一個(gè)工作過(guò)程的具體步驟。這種過(guò)程既可以是生產(chǎn)線上的工藝流程,也可以是完成一項(xiàng)任務(wù)所必需的管理過(guò)程。
一張簡(jiǎn)明的流程圖,不僅能促進(jìn)產(chǎn)品經(jīng)理與設(shè)計(jì)師、開發(fā)者的交流,還能幫助我們查漏補(bǔ)缺,避免功能流程、邏輯上出現(xiàn)遺漏,確保流程的完整性。流程圖能讓思路更清晰、邏輯更清楚,有助于程序的邏輯實(shí)現(xiàn)和有效解決實(shí)際問(wèn)題。
通常,對(duì)于任何希望創(chuàng)建流程的人來(lái)說(shuō),無(wú)論創(chuàng)建的是什么用的流程,流程圖都是很有用的。它可以幫你:
- 設(shè)計(jì)你產(chǎn)品的交互流程
- 確保的你的產(chǎn)品在任何時(shí)候都是友好的(甚至包括你原來(lái)根本未曾考慮過(guò)的故障發(fā)生時(shí))
- 幫助你整合零散的線框圖
- 幫助你與不同背景的同事進(jìn)行溝通:比如引導(dǎo)工程師開發(fā)[2]
圖示
為便于識(shí)別,繪制流程圖的習(xí)慣做法是:
圓角矩形:表示開始與結(jié)束
矩形:表示操作步驟、用于普通工作環(huán)節(jié)
菱形:表示問(wèn)題判斷(審核/審批/評(píng)審)環(huán)節(jié)
平行四邊形:表示輸入和輸出
箭頭:代表工作流方向


流程圖中有這么多符號(hào),想要更好更快的繪制,我們可以使用一些流程圖繪制工具!例如微軟的 visio 或是直接使用在線流程圖繪制網(wǎng)站:Process On(使用挺順手,就是容量小,免費(fèi)用戶只能創(chuàng)建9張圖,想新建更多,要么充錢要么導(dǎo)出圖后刪除一些無(wú)用的,記得刪除后再進(jìn)入回收站內(nèi)刪除,否則也會(huì)占用容量)、還有 億圖 也可以使用。


示例
例如:公司報(bào)銷的流程,特定主體是員工,特定需求是報(bào)銷,特定邏輯關(guān)系是員工報(bào)銷過(guò)程中的一系列操作。下方是某辦公自動(dòng)化系統(tǒng)的報(bào)銷業(yè)務(wù)流程設(shè)計(jì)圖。

注意事項(xiàng)
繪制流程圖時(shí),為了提高流程圖的邏輯性,應(yīng)遵循從左到右、從上到下的順序排列,而且可以在每個(gè)元素上用阿拉伯?dāng)?shù)字進(jìn)行標(biāo)注。
從開始符開始,以結(jié)束符結(jié)束。開始符號(hào)只能出現(xiàn)一次,而結(jié)束符號(hào)可出現(xiàn)多次。若流程足夠清晰,可省略開始、結(jié)束符號(hào)。
當(dāng)各項(xiàng)步驟有選擇或決策結(jié)果時(shí),需要認(rèn)真檢查,避免出現(xiàn)漏洞,導(dǎo)致流程無(wú)法形成閉環(huán)。
處理符號(hào)應(yīng)為單一入口、單一出口。
連接線不要交叉。
如果兩個(gè)同一路徑的下的指示箭頭應(yīng)只有一個(gè)。
相同流程圖符號(hào)大小需要保持一致。
處理為并行關(guān)系,可以放在同一高度。
必要時(shí)應(yīng)采用標(biāo)注,以此來(lái)清晰地說(shuō)明流程。
流程圖中,如果有參考其他已經(jīng)定義的流程,不需重復(fù)繪制,直接用已定義流程符號(hào)即可。
參考文獻(xiàn)
[1]文瀧Vincent. 流程控制語(yǔ)句—順序、選擇、循環(huán)[EB/OL]. https://blog.csdn.net/qq_34236718/article/details/80596376. 2018-06-06
[2]edraw 億圖. 什么是流程圖?看完你就明白了![EB/OL]. https://www.edrawsoft.cn/what-is-flowchart/. 2021-01-08
后記
我們即將進(jìn)入選擇結(jié)構(gòu)的學(xué)習(xí),意味著我們要開始編寫稍微靈活的程序,這時(shí)候大家要注意自己的邏輯思維訓(xùn)練。如果無(wú)法在腦海中構(gòu)建一個(gè)比較好的空間思維圖,那就老實(shí)的畫畫流程圖,然后再寫程序,絕對(duì)是有用的?。?!

查老師有話說(shuō): 對(duì)于技術(shù)的學(xué)習(xí),查老師一貫遵循的步驟是:先用最最簡(jiǎn)單的 demo 讓它跑起來(lái),然后學(xué)學(xué)它的最最常用 API 和 配置讓自己能用起來(lái),最后熟練使用的基礎(chǔ)上,在空閑時(shí)嘗試閱讀它的源碼讓自己能夠洞徹它的運(yùn)行機(jī)制,部分問(wèn)題出現(xiàn)的原因,同時(shí)借鑒這些技術(shù)實(shí)現(xiàn)來(lái)提升自己的代碼高度。
所以在查老師的文章中,前期基本都是小白文,僅僅穿插很少量的源碼研究。當(dāng)然等小白文更新多了,你們還依然喜歡,后期會(huì)不定時(shí)專門對(duì)部分技術(shù)的源碼進(jìn)行解析。