- 我跟爸爸學(xué)編程:從Python到C++
- 葉哲語 葉洪濤
- 1093字
- 2020-11-23 14:59:39
第2章 選擇
“選擇”是計(jì)算機(jī)語言中最基礎(chǔ)的語法結(jié)構(gòu),也被稱為“條件結(jié)構(gòu)”,其典型流程及語法格式如下表所示。

關(guān)于流程圖

早期的計(jì)算機(jī)語言教程都配有很多流程圖,現(xiàn)在的書則很少見了。這大概是因?yàn)樾碌挠?jì)算機(jī)語言功能都很強(qiáng)大,傳統(tǒng)流程圖已經(jīng)很難表達(dá)。本書只是在講解基本的程序結(jié)構(gòu)時(shí)會(huì)用到流程圖。
讀懂和繪制流程圖并不是學(xué)習(xí)編程的必要條件。計(jì)算機(jī)程序代碼是給計(jì)算機(jī)用的,是人與機(jī)器之間的交流手段。而流程圖是卻給人看的,本質(zhì)上是一種自然語言。
流程圖可用于向他人解釋你的編程思想、程序的原理及運(yùn)行過程。如果你是在一個(gè)人編寫程序,那么會(huì)不會(huì)流程圖真的無所謂。但是對于軟件行業(yè)的從業(yè)者來說,獨(dú)立工作是不可能的事情。
在我初學(xué)計(jì)算機(jī)編程的時(shí)候,學(xué)生中有一個(gè)很有意思的現(xiàn)象—往往特別會(huì)編程的人,都不怎么會(huì)畫流程圖;而流程圖畫得好的,卻不怎么會(huì)編程。
可見,會(huì)不會(huì)畫流程圖與會(huì)不會(huì)編程之間,并不具有正相關(guān)性。
但最終的結(jié)果你們應(yīng)該能猜到,會(huì)流程圖的可以當(dāng)項(xiàng)目主管,而只會(huì)編程的只能當(dāng)“碼農(nóng)”。
流程圖還是有必要學(xué)會(huì)的,至少高考會(huì)考。而且無論你將來上大學(xué)、讀研學(xué)什么專業(yè)、從事什么樣的工作,繪制流程圖都應(yīng)該成為一種基本的能力。
下面先來看幾個(gè)實(shí)例。
例2.1 求絕對值
任務(wù)描述
在窗口中輸出“請輸入一個(gè)數(shù):”,并輸入一個(gè)數(shù)。
輸出這個(gè)數(shù)的絕對值。
Python
源程序

程序注解
· if a<0:如果a<0成立,語句后應(yīng)以:結(jié)束。
a<0稱為“條件表達(dá)式”,如果條件成立,則表達(dá)式的值為真(記為True或1),如果條件不成立,則值為假(記為False或0)。
<稱為“關(guān)系運(yùn)算符”,在Python中共有7種關(guān)系運(yùn)算符,如下表所示。

注意:判斷兩個(gè)量是否相等要用==,而不能用=。前面已經(jīng)講過,=是賦值運(yùn)算符,不能用作量的比較,這一點(diǎn)要切記。

· 語句縮進(jìn)
條件結(jié)構(gòu)的執(zhí)行語句應(yīng)該有統(tǒng)一的縮進(jìn)尺寸。在Python中,語句的層次結(jié)構(gòu)是依靠縮進(jìn)尺寸來區(qū)分的。同一層次的語句縮進(jìn)必須保持一致。
運(yùn)行結(jié)果(粗斜體字為輸入)
請輸入一個(gè)數(shù):-3
|a|=3.0
請輸入一個(gè)數(shù):4
|a|=4.0
C++
源程序

程序注解
· if(a<0):
a<0為條件表達(dá)式(參見本例Python程序下的注解)。在C/C++中,表達(dá)式為真,記為True或1;為假記為False或0。
C/C++中,共有6種關(guān)系運(yùn)算符,除了沒有<>,其余與Python中的意義和用法相同。
· 層次結(jié)構(gòu)
C/C++實(shí)例程序中也常見到語句縮進(jìn),但這不是必需的,只是為了讓層次看起來更清晰、明確而已。C語言也可以將多個(gè)語句寫到同一行中,除了以#開頭的預(yù)編譯行、以//開頭的注釋行需要單獨(dú)成行,你甚至可以將整個(gè)主函數(shù)寫到一行中。
C/C++的層次結(jié)構(gòu)是由大括號({ })來確定的,同一層次的語句包含在同一個(gè)大括號({ })中。如果大括號({ })中只有一個(gè)語句,則大括號({ })可省略。
運(yùn)行結(jié)果(粗斜體字為輸入)
請輸入一個(gè)數(shù):-3
|a|=3
請輸入一個(gè)數(shù):4
|a|=4
例2.2 今天是星期幾(1)
任務(wù)描述
在窗口中輸出“今天是星期幾?”并輸入一個(gè)數(shù)。
如果是1~5,輸出“今天上學(xué)”,否則輸出“今天休息”。
程序代碼如下。
Python
源程序

程序注解
· a>=1 and a<=5:
and在這里稱為“邏輯與運(yùn)算符”,此處代表如果前、后兩個(gè)表達(dá)式均為真,則結(jié)果為真。
Python中的邏輯運(yùn)算符有3種,如下表所示。

運(yùn)行結(jié)果(粗斜體字為輸入)
今天是星期幾?4 今天上學(xué)
今天是星期幾?7 今天休息
C++
源程序

程序注解
· a>=1&&a<=5:
&&在這里稱為“邏輯與運(yùn)算符”,此處代表如果前、后兩個(gè)表達(dá)式均為真,則結(jié)果為真。
C/C++中的邏輯運(yùn)算符與Python相同,也有3種,只是寫法不同,如下表所示。

運(yùn)行結(jié)果
與Python相同。
現(xiàn)在重新運(yùn)行程序,如果輸入的是12,結(jié)果如何呢?
今天是星期幾?12 今天休息
這顯然不符合題意。
現(xiàn)在改一下任務(wù)要求,如果輸入數(shù)值超出1~7,則輸出“請輸入1~7”。
程序代碼如下。
Python
源程序

這里用到了elif。
運(yùn)行結(jié)果(粗斜體字為輸入)
今天是星期幾?4 今天上學(xué)
今天是星期幾?7 今天休息
今天是星期幾?12 請輸入1~7
C++
源程序

在C/C++中沒有elif語句,所以這里使用了一個(gè)嵌套選擇結(jié)構(gòu)。
運(yùn)行結(jié)果
與Python相同。
本章要點(diǎn)
本章學(xué)習(xí)了Python和C/C++中選擇結(jié)構(gòu)的基本用法,其使用方法對例如下表所示。

練習(xí)2 簡單人機(jī)對話(2)
任務(wù)描述
在窗口中輸出“請你在魚、鳥和獸之間選擇一樣,并默記”
輸出“請問它有羽毛嗎?(y/n)”
輸入y或n。
如果輸入的是y,則輸出“你選的是鳥。”
如果輸入的是n,則輸出“那請問它有腮嗎?(y/n)”
輸入y或n。
如果輸入的是y,則輸出“你選的是魚。”
如果輸入的是n,則輸出“你選的是獸。”
如果輸入的不是y或n,則輸出“請輸入y或n。”
語句提示
C++
因要求輸入的y或n是字符,需要使用字符變量。
字符變量的定義和使用格式如下。
char c; if(c=='y')……
詳細(xì)說明可參考例3.2程序的注解。
- Mastering Concurrency Programming with Java 8
- Hands-On Machine Learning with scikit:learn and Scientific Python Toolkits
- Boost C++ Application Development Cookbook(Second Edition)
- 匯編語言程序設(shè)計(jì)(第2版)
- 薛定宇教授大講堂(卷Ⅳ):MATLAB最優(yōu)化計(jì)算
- 概率成形編碼調(diào)制技術(shù)理論及應(yīng)用
- Jenkins Continuous Integration Cookbook(Second Edition)
- R語言與網(wǎng)絡(luò)輿情處理
- Protocol-Oriented Programming with Swift
- Service Mesh實(shí)戰(zhàn):基于Linkerd和Kubernetes的微服務(wù)實(shí)踐
- Learning AWS
- Spring MVC+MyBatis開發(fā)從入門到項(xiàng)目實(shí)踐(超值版)
- 案例式C語言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)
- 安卓工程師教你玩轉(zhuǎn)Android
- Keil Cx51 V7.0單片機(jī)高級語言編程與μVision2應(yīng)用實(shí)踐