查看: 65496|回復: 26
打印 上一主題 下一主題

Arduino編程基礎(二)——C\C++語言基礎(下)

[復制鏈接]
  • TA的每日心情
    郁悶
    2018-12-6 22:21
  • 簽到天數: 48 天

    [LV.5]常住居民I

    跳轉到指定樓層
    樓主
    發表于 2017-4-12 20:23 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
    本教程節選自《Arduino程序設計基礎》

    Arduino編程基礎(一)——Arduino語言
    http://www.rogozt.live/thread-45048-1-1.html
    Arduino編程基礎(二)——C\C++語言基礎(上)
    http://www.rogozt.live/thread-45049-1-1.html
    Arduino編程基礎(二)——C\C++語言基礎(下)
    http://www.rogozt.live/thread-45050-1-1.html
    Arduino編程基礎(三)——常用電子元件和擴展模塊
    http://www.rogozt.live/thread-45117-1-1.html
    Arduino編程基礎(四)——Arduino擴展板的使用
    http://www.rogozt.live/thread-45152-1-1.html


    用流程圖來表示你的程序
           流程圖是用一些圖框來表示各種操作。用圖形表示算法,直觀形象,易于理解。特別是對于初學者來,使用流程圖能幫你更好的理清思路,從而順利編寫出相應的程序。ANSI規定了一些常用的流程圖符號,如圖所示:


    順序結構
           順序結構是三種基本結構之一,也是最基本、最簡單的程序組織結構。在順序結構中程序按語句先后順序依次執行。一個程序或者一個函數,整體上是一個順序結構,它是由一系列的語句或者控制結構組成,這些語句與結構都按先后順序運行。
    如圖所示,虛線框內是一個順序結構,其中A、B兩個框是順序執行的。即:在執行完A框中的操作后,接著會執行B框中的操作。



    選擇結構
    選擇結構又稱選取結構或分支結構。在編程中,我們經常需要根據當前數據做出判斷,決定下一步的操作。例如,Arduino可以通過溫度傳感器檢測出環境溫度,在程序中對溫度做出判斷,如果溫度過高,就發出警報信號,這時便會用到選擇結構。
    如圖所示,虛線框中是一個選擇結構。該結構中包含一個判斷框。根據判斷框中的條件p是否成立,而選擇執行A框或者B框。執行完A框或者B框操作后,都會經過b點,脫離該選擇結構。


    If語句
    if語句是最常用的選擇結構實現方式,當給定表達式為真時,就會運行其后的語句,其有三種結構:

    簡單分支結構


    雙分支結構
    雙分支結構增加了一個else語句,當給定表達式結果為假時,便運行else后的語句。

    kittenblock中小學創客名師推薦的圖形化編程軟件

    if(表達式)
    {
    語句1;
    }
    else
    {
    語句2;
    }


    多分支結構
    使用多個if語句,可以形成多分支結構,用以判斷多種不同的情況。

    kittenblock中小學創客名師推薦的圖形化編程軟件

    if(表達式1)
    {
    語句1;
    }
    else  if(表達式2)
    {
    語句2;
    }
    else  if(表達式3)
    {
    語句3;
    }
    else  if(表達式4)
    {
    語句4;
    }
    ……
    


    switch…case語句
    處理比較復雜的問題,可能會存在有很多選擇分支的情況,如果還使用if…else的結構編寫程序,會使程序顯得冗長,且可讀性差。
    此時我們可以使用switch,其一般形式為:

    kittenblock中小學創客名師推薦的圖形化編程軟件

    switch(表達式)
    {
    case 常量表達式1:
    語句1
             break;
    case 常量表達式2:
    語句2
             break;
    case 常量表達式3:
    語句3
             break;
    ……
    default :
    語句n
             break;
    }

    需要注意的是,Switch后的表達式結果只能是整形或字符型。如果要使用其他類型,則必須使用if語句。
    switch結構會將switch語句后的表達式與case后的常量表達式比較,如果符合就運行常量表達式所對應的語句;如果都不相符,則會運行default后的語句,如果不存在default部分,程序將直接退出switch結構。
    在進入case判斷,并執行完相應程序后,一般要使用break退出switch結構。如果沒有使用break語句,程序則會一直執行到有break的位置退出或運行完該switch結構退出。
            switch...case結構在流程圖中,表示方法如圖:



    循環結構
    循環結構又稱重復結構,即反復執行某一部分的操作。有兩類循環結構,當(while)循環和直到(until)循環。
    如圖2-5所示。當型循環結構會先判斷給定條件,當給定條件p1不成立時,即從b點退出該結構,當p1成立時,執行A框,執行完A框操作后,再次判斷條件 p1是否成立,如此反復;直到型循環結構會先執行A框,然后判斷給定的條件p2是否成立,成立即從b點退出循環,不成立則返回該結構起始位置a點,重新執行A框,如此反復。



    (1)循環語句
    while循環
    while循環是一種當型循環。當滿足一定條件后,才會執行循環體中的語句,其一般形式為:


    在某些Arduino應用中,你可能需要建立一個死循環(無限循環)。當while后的表達式永遠為真或者為1時,便是一個死循環。



    do…while循環
    do…while與while循環不同,是一種直到循環,它會一直循環到給定條件不成立時為止。它會先執行一次do語句后的循環體,再判斷是否進行下一次循環。



    for循環
    for循環比while循環更靈活,且應用廣泛,它不僅適用于循環次數確定的情況,也適用于循環次數不確定的情況。while和do…while都可以替換為for循環。
    一般形式為:

    kittenblock中小學創客名師推薦的圖形化編程軟件

    for(表達式1;表達式2;表達式3)
    {
    語句;
    }


    一般情況下,表達式1為for循環初始化語句,表達式2為判斷語句,表達式3為增量語句。如



    表示初始值i為0,當i小于5時運行循環體中的語句,每循環完一次,i自加1,因此這個循環會循環5次


    for循環流程圖表示圖所示:

    圖 2 6 for循環流程圖

    (2)循環控制語句
    在循環結構中,都有一個表達式用于判斷是否進入循環。通常情況下,當該表達式結果為false(假)時,會結束循環。有時候,需要提前結束循環,或是已經達到了一定條件,可以跳過本次循環余下的語句,那么可以使用循環控制語句break和continue。
    ?        break
    break語句只能用于switch多分支選擇結構和循環結構中,使用它可以終止當前的選擇結構或者循環結構,使程序轉到后續的語句運行。break一般會搭配if語句使用。
    一般形式為:
    if(表達式)
    {
      break;
    }

    continue
    continue語句用于跳過本次循環中剩下的語句,并判斷是否開始下一次循環。同樣,continue一般搭配if語句使用
    一般形式為:
    if(表達式)
    {
    continue;
    }

    在編寫程序前,你可以先畫出流程圖,幫助你理清思路。在上一章中,我們所看到的例程Blink,用流程圖可表示為圖2-7的形式:













  • TA的每日心情
    開心
    2017-8-11 16:08
  • 簽到天數: 6 天

    [LV.2]偶爾看看I

    推薦
    發表于 2017-6-8 23:55 | 只看該作者
    假如我用了ardublock,是不是就不用管這些了?
  • TA的每日心情
    開心
    2017-4-26 09:54
  • 簽到天數: 1 天

    [LV.1]初來乍到

    沙發
    發表于 2017-4-26 11:14 | 只看該作者
    初學者入門
  • TA的每日心情
    奮斗
    2019-2-28 09:14
  • 簽到天數: 17 天

    [LV.4]偶爾看看III

    板凳
    發表于 2017-5-16 09:45 | 只看該作者
    這個初學者應該看看,簡單易懂
  • TA的每日心情
    郁悶
    2018-6-1 11:56
  • 簽到天數: 10 天

    [LV.3]偶爾看看II

    8#
    發表于 2017-12-6 09:55 | 只看該作者
    萌新表示,看的很明白
  • TA的每日心情

    2019-12-4 12:05
  • 簽到天數: 9 天

    [LV.3]偶爾看看II

    9#
    發表于 2018-4-20 21:33 | 只看該作者
    看完了,淺顯易懂,謝謝分享
    您需要登錄后才可以回帖 登錄 | 立即注冊  

    本版積分規則

    熱門推薦

    Blynk與m5stack basic以及uiflow的交互玩法
    Blynk與m5stack basic以及
    Blynk與m5stack basic以及uiflow的交互玩法 [準備工作我們假設玩家已經熟悉下面的準備
    【原創】全球最小口袋3D打印機mini one直播教程貼
    【原創】全球最小口袋3D打
    最近閑得蛋疼,沒事搞個掌上3D打印機,先放效果圖吧。 搞了半天,終于能正常打印,
    交通燈在一定條件的亮起
    交通燈在一定條件的亮起
    交通燈問題 用到了 有限狀態機 求助求助
    【原創】 drawbot平面關節scara機械臂寫字機 畫畫機器人直播...
    【原創】 drawbot平面關節
    這個項目上個月就在做了,結構和代碼反反復復改了多次,加上自己又太忙,一直沒來得及
    教你用Arduino編寫FC馬戲團
    教你用Arduino編寫FC馬戲
    演示視頻 https://www.bilibili.com/video/av30637311/ 狀態 正常 游戲在文
    Copyright   ©2015-2016  Arduino中文社區  Powered by©Discuz!   
    快速回復 返回頂部 返回列表
    七星彩综合基本走势图