官术网_书友最值得收藏!

第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程序的注解。

主站蜘蛛池模板: 长岭县| 巴里| 鹤岗市| 成都市| 肥西县| 依兰县| 盖州市| 西丰县| 孝感市| 华宁县| 延长县| 海宁市| 荥经县| 建水县| 新乐市| 盐城市| 万山特区| 白山市| 贡嘎县| 安国市| 呼和浩特市| 贵港市| 大关县| 饶平县| 西畴县| 萨嘎县| 松滋市| 阳东县| 常熟市| 黑水县| 沈阳市| 长子县| 义马市| 石阡县| 海南省| 资兴市| 拜泉县| 耒阳市| 岑巩县| 玛多县| 遂溪县|