亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 02章 控制結構.txt

?? C++大學教程txt版中文版 C++大學教程txt版中文版
?? TXT
?? 第 1 頁 / 共 5 頁
字號:
第2章  控制結構


教學目標

   ●了解基本問題的解決方法
   ●通過自上而下、逐步完善的過程開發算法
   ●用if、if/else和switch選擇結構選擇操作
   ●用while、do/while和for重復結構重復執行程序語句
   ●了解計數器控制重復與標記控制重復
   ●使用自增、自減、賦值和邏輯運算符
   ●使用break和continue此程序控制語句

2.1 簡介

    編寫解決特定問題的程序之前,首先要徹底了解問題并認真計劃解決問題的方法。編寫程序時,還要了解可用的基本組件和采用實踐證明的程序結構原則。本章將討論結構化編程的理論和原理的所有問題。這里介紹的技術適用于大多數高級語言.包括C++。第6章在介紹C++面向對象編程時,將會介紹如何用第2章介紹的控制結構幫助建立和操作對象。

2.2 算法
    任何計算問題都可以通過按特定順序執行一系列操作而完成。解決問題的過程(procedure)稱為算法(algorithm),包括:
    1.執行的操作(action)
    2.執行操作的順序(order)
下例演示正確指定執行操作的順序是多么重要:
    考慮每個人早晨起床到上班的“朝陽算法”:(1)起床,(2)脫睡衣,(3)洗澡,(4)穿衣,(5)吃早飯,(6)搭車上班。
    總裁可以按這個順序,從容不迫地來到辦公室。假設把順序稍作調換:(1)起床,(2)脫睡衣,(3)穿衣,(4)洗澡,(5)吃早飯.(6)搭車上班。
    如果這樣,總裁就得帶著肥皂水來上班。指定計算機程序執行語句的順序稱為程序控制(program control),本章介紹C++程序的控制功能。

2.3 偽代碼
 偽代碼(pseudocode)是人為的非正式語言,幫助程序員開發算法。這里介紹的偽代碼在開發的算法轉換為結構化C++程序時特別有用。偽代碼類似于日常英語,方便而且容易掌握,但不是實際計算機編程語言。偽代碼程序并不在計算機上實際執行,而是幫助程序員先“構思”程序.再用C++之類的實際計算機編程語言編寫。本章介紹幾個如何在開發結構化C++程序時有效利用偽代碼的例子。
    我們介紹的偽代碼完全由字符構成,程序員可以用一個編輯器程序方便地輸入偽代碼程序,計算機可以在需要時顯示偽代碼程序。認真構思的偽代碼程序可以方便地變為對應的C++程序。很多情況下,只要將偽代碼語句轉換成對應的C++語句即可。
    偽代碼只包含執行語句,將偽代碼程序變為對應的C++程序時,這些語句可以運行。聲明語句不是執行語句。例如,下列聲明:
    int  i;
只是告訴編譯器,變量i的類型是整型,指示編譯器在內存中為這個變量保留內存空間。但這個聲明并在執行程序時不做任何操作(如輸入、輸出或計算)。有些程序員在偽代碼程序開頭列出變量及其簡要說明。

2.4  控制結構
    通常,程序中的語句按編寫的順序一條一條地執行,稱為順序執行(sequential execution)。程序員可以用稍后要介紹的不同C++語句指定下一個執行的語句不是緊鄰其后的語句,這種技術稱為控制轉移(transfer of control)。
    20世紀60年代,人們發現,軟件開發小組遇到的許多困難都是由于控制轉移造成的。goto語句使程序員可以在程序中任意指定控制轉移目標,因此人們提出結構化編程就是為了清除goto語句。
    Bohm和JMoP5n1的研究表明,不用goto語句也能編寫程序。困難在于程序員要養成不用goto語句的習慣。直到20世紀70年代,程序員才開始認真考慮結構化編程,結果使軟件開發小組的開發時間縮短、系統能夠及時交付運行并在顱算之內完成軟件項目。這些成功的關鍵是.結構化編程更清晰、更易調試與修改并且不容易出錯。
    BohM和J“jecopini的研究表明,所有程序都可以只用三種控制結構(control structure)即順序結構(sequence structure)、選擇結構(selection structure)和重復結構(repetition structure)。順序結構是C++內置的,除非另外指定,計算機總是按編寫的順序一條一條地執行。圖2.1的流程圖(flowchart)演示了典型的順序結構.按順序進行兩次計算。
    流程圖是算法或部分算法的圖形表示。流程圖用一些專用符號繪制,如長方形、菱形、橢圓和小圓,這些符號用箭頭連接,稱為流程。
    和偽代碼一樣,流程圖也用于開發和表示算法,但偽代碼更受歡迎。流程圖能清楚地表示控制結構如何操作.本書用流程圖表示控制結構如何操作。
    考慮圖2.1所示的流程圖。我們用矩形框(或稱為執行框)表示各種操作,包括計算、輸入和輸出操作。圖中的流程表示進行操作的順序,首先將grade加進total,然后將counter加1。C++允許順序結構中有多個操作,稍后可以看出,可以放一個操作的地方,也就可以放幾個順序操作。
    繪制表示完整算法的流程圖時,橢圓框加上其中的“Begin”(開始)字樣表示流程圖開始,橢圓框加上其中的“End”(結束)字樣表示流程圖結束。只畫部分算法時(如圖2.1),省略橢圓框,只用小圓框,也稱接頭框。








最重要的流程圖符號是菱形框,也稱為判斷框,表示要進行判斷。下一節將介紹菱形框。
    C++提供三種選擇結構,本章將介紹這三種選擇結構。if選擇結構在條件為true時執行一個操作,在條件為false時跳過這個操作。if/else選擇結構在條件為true時執行一個操作,在條件為false時執行另一個操作。swutch選擇結構根據表達式取值不同而選擇不同操作。
    if選擇結構稱為單項選擇結構(single—selection,structure),選擇或忽略一個操作。if/else選擇結構稱為雙項選擇結構(double-selection structure),在兩個不同操作中選擇。switch選擇結構稱為多項選擇結構(multiple-selection structure),在多個不同操作中選擇。
    C++提供三種重復結構while、do/while和for。if、else、switch、while、do和for等都是C++關鍵字(keyword)。這些關鍵字是該語言保留的,用于實現如C++控制結構等不同特性。關鍵字不能作為變量名等一些標識符。圖2.2顯示了完整的C++關鍵字列表。
-----------------------------------------------------------------------------------------------





----------------------------------------------------------------------------------------------

    常見編程錯誤 2.1
    用關鍵字作為標識符屬于語法錯誤。

    C++只有七種控制結構:順序結構、三種選擇結構和三種重復結構。每個C++程序都是根據程序所需的算法組合這七種控制結構。從圖2.1中的順序結構可以看出,每個控制結構的流程圖使用兩個小圓框,一個在控制結構入口點,一個在控制結構出口點。這種單入/單出控制結構(single-entry/single-exit control structure)使程序容易建立,只要將一個控制結構的出口與另一個控制結構的入口連接,即可組成程序。這點很像小孩子堆積木,因此稱為控制結構堆棧(control-structure stacking),還有另一種控制結構連接方法,稱為控制結構嵌套(control-structure nesing)。
    軟件工程視點 2.1
    任何C++程序可以用這七種控制結構(順序、if、if/else、switch、while、do/while和for并用兩種方式(控制結構堆棧和控制結構嵌套)組合而成。


2.5  if選擇結構
    選擇結構在不同操作之間選擇。例如,假設考試成績60分算及格,則下列偽代碼:
    if student's grade is greater than or equal to 60
        print "Passed"
確定“學生成績大于或等于60分”是true或false,如果是true,則該生及格,打印“Passed”字樣,并順序“執行”下一個偽代碼語句(記住,偽代碼不是真正的編程語言)。如果條件為false,則忽略打印語句,并順序“執行”下一個偽代碼語句。注意這個選擇結構第二行的縮排,這種縮排是可選的,但值得提倡,因為它能體現結構化程序的內部結構。將偽代碼變成C++代碼時,C++編譯器忽略空格、制表符、換行符等用于縮排和垂直分隔的空白字符。

    編程技巧 2.1
    在整個程序中堅持用合理縮排規則能大大提高程序可讀性。建議用固定制表長度即1/4英寸或三個空格的縮排量。
上述偽代碼的if語句可以寫成如下C++語句:
    if(grade>=60)
        cout<<"Passed";
    cout<<"Passed";
注意C++代碼與偽代碼密切對應,這是偽代碼的一個屬性,使得其成為有用的程序開發工具。

    編程技巧 2.2
    偽代碼常用于程存設計期間“構思”程序,然后再將偽代碼程序轉換為C++程序。

    圖2.3的流程圖演示了單項選擇if結構。這個流程圖包含流程圖中最重要的菱形框、也稱判斷框,表示要進行判斷。判斷框包含一個表達式(如條件),可取true或false值。判斷框產生兩條流程,一條指向表達式為true時的走向,一條指向表達式為false時的走向。第1章曾介紹過,可以根據包含關系或相等運算待的條件作出判斷。實際上,可以針對任何表達式作出判斷,如果表達式求值為0,則當作false,如果表達式求值非0,則當作true。C++草案標準提供bool數據類型,表示true和false。關鍵字true和false表示bool數據類型的值。
    注意,if結構也是單入/單出結構。稍后將會介紹,其余控制結構的流程圖(除了小圓框和流程之外)也只能包含表示所要操作的矩形框和表示所要判斷的菱形框。這是我們強調的操作/判斷編程模型(action/decision model of progamming)。
    可以想像有七個框,各包含七種控制結構中的一種控制結構,這些控制結構是空的,矩形框和菱形框中什么也沒有。程序員的任務就是根據算法需要用堆棧和嵌套兩種方法組合這幾種控制結構,然后在這些框中填入算法所要的操作和判斷,從而生成程序。下面介紹編寫操作和判斷的各種方式。








2.6 if/else選擇結構
    if選擇結構只在條件為true時采取操作,條件為false時則忽略這個操作。利用if/else選擇結構則可以在條件為true時和條件為false時采取不同操作。例如,下列偽代碼:
    if student's grade is greater than or equal to 60
        print "Passed"
    else
        print "Failed"
在學生成績大于或等于60時打印“Passed”,否則打印"Failed"。打印之后,都“執行”下一條偽代碼語句。注意else的語句體也縮排。
    
    編程技巧 2.3
    if/eIse選擇結構的兩個語句體都縮排。
    選擇的縮徘規則應當在整個程序中認真貫徹執行。不按統一縮排規則編寫的程序很難閱讀。
    編程技巧 2.4
    如果有多層縮排,則每一層應縮排相同的空間量。
    上述偽代碼if/else結構可以寫成如下的C++代碼:
     if(grade>=60)
        cout<<"Passed";
     else
        cout<<"Failed";
    圖2.4的流程圖很好地演示了if/else結構的控制流程。注意,這個流程圖(除了小圓框和流程之外)也只能包含表示所要操作的矩形框和表示所要判斷的菱形框。這里我們繼續強調操作/判斷模型計算,假設框中包含建立C++程序所需的空白雙項選擇結構。程序員的任務就是根據算法需要用堆棧和嵌套兩種方法組合各種控制結構,然后在這些框中填人算法所要的操作和判斷,從而生成程序。
    C++提供條件運算符(?:),與if/else結構密切相關。條件運算符是C++中惟一的三元運算符(thrnary operator),即取三個操作數的運算符。操作數和條件運算符一起形成條件表達式(conditional expression)。第一個操作數是條件,第二個操作數是條件為true時整個條件表達式的值.第三個操作數是條件為false時整個條件表達式的值。例如,下列輸出語句:
    cout<<(grade>=60? "Passed":"Failed");
包含的條件表達式在grade=60取值為true時,求值為字符串“Passed”;在grade>=60取值為false時,求值為字符串"Failed"。這樣,帶條件表達式的語句實際上與上述if/else語句相同。可以看出,條件運算符的優先級較低,因此上述表達式中的話號是必需的。








條件表達式酌值也可以是要執行的操作。例如.下列條件表達式:
    grade >=60? cout<<"Passed": cout<<"Failed";
表示如果grade大于或等于60,則執行cout<<"Passed",否則執行cout<<"Failed"。這與前面的if/else結構也是相似的。條件運算符可以在一些無法使用if/else語句的情況中使用。
    嵌套if/else結構(nested if/else structure)測試多個選擇,將一個if/else選擇放在另一個if/else選擇中。例如,下列偽代碼語句在考試成績大于或等于90分時打印A.在80到89分之間時打印B,在70到79分之間時打印C,在60到69分之間時打印D,否則打印F。



    if studen's grade is greater than or equal to 90

        print "A"
    else
        If student's grade is greater than or equal to 80
            print "B"
    else
        If student's grade is greater than or equal to 70
            print "C"
    else
        If student's grade is greater than or equal to 60
            print "D"
    else
        print "F"
這個偽代碼對應下列C++代碼:
    if(grade>=90)
        cout<<"A";
    else
        if(grade>=80)
            cout<<"B";
            else
                if(grade>=70)
                    cout<<"C";
                    else
                        if(grade>=60)
                            cout<<"D";
                            else
                                cout<<"F";
如果考試成績大于或等于90分,則前4個條件都為true,但只執行第一個測試之后的cout語句。執行這個cout語句之后,跳過外層if/else語句的else部分。許多C++程序員喜歡將上述if結構寫成:
  
    if(grade>=90)
        cout<<"A";
    else if(grade>=80)
        cout<<"B";
    else if(grade>=70)
        cout<<"C";
    else if(grade>=60)
        cout<<"D";
    else
        cout<<"F";
兩者形式是等價的。后者更常用,可以避免深層縮排便代碼移到右端。深層縮排會使一行的空間太小,不長的行也要斷行,從而影響可讀性。
 編程提示2.1
    嵌套if/else結構比一系列單項選擇if結構運行速度快得多,因為它能在滿足其中一個條件之后即退出。
    
    性能提示2.2
    在嵌套if/else結構中,測試條件中true可能性較大的應放在嵌套if/else結構開頭.從而使嵌套if/else結構運行更快,比測試不常發生的情況能更早退出。
    if選擇結構體中只能有一條語句。要在if選擇結構體中包括多條語句,就要把這些語句放在花括號({ })中。放在花括號中的一組語句稱為復合語句(compund statement)。
  
    軟件工程視點2.2
    復合語句可以放在程序中出現單句語句的任何地方。
    下例在if/else結構的else部分包括復合語句:
    if(grade>=60)
        cout<<"Passed.\n";
    else{
        cout<<"Failed.\n";
        cout<<"You must take this course again.\n";
    }
如果grade小于60,則程序執行else程序體中的兩條語句并打印:
    Failed.
    You must take this course again.
注意else從句中的兩條語句放在花括號中。這些花括號很重要,如果沒有這些花括號,則下列語句:
    cout<<"You must take this cours again.\n";
在if語句else部分之外,不管成績是否小于60都執行。

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人免费高清| 成人听书哪个软件好| 日韩理论片一区二区| 国产精品久久久久久亚洲伦| 久久精品男人天堂av| 国产日本欧美一区二区| 国产日产欧美精品一区二区三区| 久久免费视频色| 亚洲国产精品黑人久久久| 国产精品看片你懂得| 亚洲另类在线一区| 日韩精品一区第一页| 青青草视频一区| 狠狠狠色丁香婷婷综合激情| 国产成人超碰人人澡人人澡| 粉嫩av亚洲一区二区图片| 色婷婷一区二区三区四区| 欧美主播一区二区三区| 日韩女同互慰一区二区| 国产色综合久久| 亚洲女性喷水在线观看一区| 日韩黄色小视频| 国产成人在线免费观看| 在线精品视频免费观看| 日韩亚洲电影在线| 国产女人水真多18毛片18精品视频| 国产精品久久久久久福利一牛影视| 亚洲小少妇裸体bbw| 久久国产三级精品| 99久久精品免费看| 精品免费99久久| 中文字幕亚洲电影| 紧缚捆绑精品一区二区| 色妞www精品视频| 久久久久久日产精品| 亚洲综合一区在线| 国产成人亚洲精品青草天美| 欧美伦理电影网| 国产精品视频一二三区| 免费欧美在线视频| 色94色欧美sute亚洲线路一久| 精品乱人伦小说| 一区二区三区欧美亚洲| 国产传媒欧美日韩成人| 欧美一区日韩一区| 亚洲伦在线观看| 成人小视频在线| 欧美va亚洲va国产综合| 亚洲图片欧美色图| 一本大道av一区二区在线播放| 日韩免费视频一区二区| 亚洲一区二区五区| 99re免费视频精品全部| 久久久久久一二三区| 麻豆精品一区二区三区| 欧美午夜在线一二页| 亚洲欧美国产高清| av成人免费在线| 国产精品网站一区| 国产黄色91视频| 亚洲精品一区二区三区在线观看| 同产精品九九九| 91久久免费观看| 亚洲色图.com| 91网上在线视频| 中文字幕一区二区三区不卡在线| 国产99久久精品| 国产情人综合久久777777| 国产精品国产三级国产普通话三级 | 亚洲国产婷婷综合在线精品| 成人爱爱电影网址| 午夜婷婷国产麻豆精品| 日本一区免费视频| 欧美一区二区三区四区五区| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产白丝网站精品污在线入口| 亚洲欧美综合色| 日韩欧美三级在线| 日本乱人伦一区| 国产黄色成人av| 免费看欧美美女黄的网站| 日韩毛片一二三区| www久久久久| 这里只有精品99re| 色狠狠色狠狠综合| 国产大陆a不卡| 久久 天天综合| 亚洲成a人v欧美综合天堂下载 | 成人晚上爱看视频| 国产综合色在线| 午夜精品123| 亚洲视频小说图片| 国产精品久久久久久久久图文区 | 欧美性三三影院| 99re在线精品| 不卡一区在线观看| 国产一区二区三区免费在线观看| 婷婷丁香久久五月婷婷| 一区2区3区在线看| 亚洲精品乱码久久久久久黑人| 日本一区二区三区四区在线视频 | 欧美一区二区三区性视频| 在线观看不卡一区| 99久久精品免费| 97久久精品人人澡人人爽| 国产九色sp调教91| 国产不卡视频在线播放| 国产一区二区在线观看免费| 麻豆精品在线视频| 精品一区二区久久久| 久久99热99| 美女久久久精品| 久久激情五月婷婷| 精品在线你懂的| 精品亚洲国产成人av制服丝袜| 免费成人在线影院| 久久黄色级2电影| 国产白丝精品91爽爽久久| 国产精品一区二区久激情瑜伽| 国产成人av福利| 成人免费毛片嘿嘿连载视频| 成人免费高清视频| 色一情一乱一乱一91av| 精品久久久久久久一区二区蜜臀| 69堂国产成人免费视频| 欧美日韩国产另类一区| 欧美日本一区二区三区| 欧美一区二区三区日韩视频| 日韩视频中午一区| 国产日韩精品一区二区三区在线| 国产精品拍天天在线| 中文字幕在线视频一区| 亚洲精品国产a久久久久久 | 555夜色666亚洲国产免| 日韩欧美成人一区二区| 国产色综合久久| 亚洲一区二区三区四区在线免费观看 | 丁香啪啪综合成人亚洲小说| 99精品视频一区| 4438成人网| 国产精品人妖ts系列视频| 一区二区三区四区激情| 日本三级亚洲精品| 豆国产96在线|亚洲| 欧美日韩中文字幕一区二区| 日韩欧美一二三四区| 中文字幕制服丝袜成人av | 亚洲成人精品一区二区| 国模一区二区三区白浆| 99精品热视频| 欧美成人a∨高清免费观看| 国产精品大尺度| 麻豆高清免费国产一区| 97久久久精品综合88久久| 日韩一级完整毛片| 亚洲人妖av一区二区| 美女视频黄 久久| 色噜噜狠狠色综合中国| 久久久久久久久岛国免费| 亚洲成人激情综合网| 成人丝袜高跟foot| 欧美成人在线直播| 亚洲精品国产一区二区精华液 | 久久蜜桃av一区二区天堂| 亚洲美女电影在线| 国产成人自拍在线| 欧美一级精品在线| 亚洲自拍偷拍欧美| 成人毛片在线观看| 精品少妇一区二区三区免费观看 | 欧美一级片免费看| 亚洲特黄一级片| 国产精品1区二区.| 日韩一级免费一区| 午夜视频一区在线观看| av亚洲精华国产精华精| 久久综合色综合88| 秋霞成人午夜伦在线观看| 972aa.com艺术欧美| 中文字幕精品一区二区精品绿巨人| 免费视频一区二区| 91精品国产综合久久精品图片| 一区二区三区欧美日韩| 成人av电影观看| 国产精品久久看| 成人丝袜视频网| 国产日韩视频一区二区三区| 麻豆精品精品国产自在97香蕉| 欧美久久久一区| 午夜视频在线观看一区| 欧美猛男gaygay网站| 亚洲成人av福利| 7799精品视频| 免费成人深夜小野草| 4438成人网| 久久99国内精品| 精品福利一二区| 91老师国产黑色丝袜在线| 国产精品视频一区二区三区不卡| 国产精品一二三四|