你好,歡迎來到IOS教程網

 Ios教程網 >> IOS使用技巧 >> IOS技巧綜合 >> ObJC控制語句

ObJC控制語句

編輯:IOS技巧綜合
[摘要]本文是對ObJC控制語句的講解,對學習IOS蘋果軟件開發有所幫助,與大家分享。

在ObJC中,有若干方法可以重復執行一系列代碼,這些重復執行的功能稱之為循環功能,它們由以下幾部分構成:

    for語句 while語句 do語句

舉一個簡單的例子,如果想求10以內所有整數之和:(代碼如下)

只需要將十以內的整數進行相加運算就可以,甚至在大腦中進行運算就可以。但是如果是100以內的整數相加,那麼大部分人都會感到頭疼,這時候就可以通過一些特殊的方法來解決如下問題。

至此引入循環結構——計算機的基本屬性之一就是它可以重復執行一組語句。這種循環能力讓程序員能夠開發出包含重復過程的簡潔程序,這些過程能夠以不同的方式執行成百上千的程序語句。ObJC中包含3種用於編寫循環結構的程序語句。

------for語句

計算100以內所有整數之和。

打印結束後 結果為:5050.

從中我們可以看到,由於引用了for()循環語句,相當於計算機自動幫助我們疊加n的值,直到n<101(n=100),而計算機一邊幫我們疊加n的值,一邊幫我們計算sum的值。

那麼sum的值是如何計算的呢。首先先解釋for語句的一般格式:

                        for(init_expression;loop_condition;loop_expression)

                          program statement

圓括號中的三個表達式,建立了程序循環的“環境”。其後的program statement(要以分號結尾),可以是任何ObJC語句,但是必須是合法的。它們組成循環體。這條語句執行的次數由for語句中設置的參數決定。

for語句的第一部分標著init_expression用於再循環開始之前設置初始值;第二部分標著loop_condition用於指定繼續執行循環所需的條件(只要滿足既定的條件,那麼程序就會繼續執行),如果循環不在滿足既定的條件,那麼程序就會停止循環,跳出循環之後繼續執行循環體外的程序(在上個代碼中就會繼續執行NSlog(@"SUM=%d",sum);)。到這,關於sum的值是如何計算的,應該已經非常明確了,

        (sum+=n)等價於(sum=sum+n),循環滿足條件,n每次循環都會增加1(n++),那麼每一次新的循環後等待求和的sum就等於上次循環得到的sum值加上新n值。

直到滿足循環條件,循環結束。

總之,for語句將按以下步驟執行:

    先求初始表達式的值。這個表達式通常設置一個將在循環中使用的變量,對於某些初始值(例如0或1)來說,通常稱為索引變量。 求循環條件的值,這個表達式通常用於改變索引變量的值,最常見的情況是,將索引變量的值加1或減1。 執行組成循環體的程序語句。 求索引表達式的值。這個表達式通常用於改變所以變量的值,最常見的情況,就是將索引變量增加1或者減少1. 返回步驟(2)。

代碼:生成三角數表的程序

打印結果:

在上個代碼中,前三個NSlog語句的目的僅僅是提供總標題和輸出列的標題。在顯示適當的標題後,程序將計算前10個三角數,在你計算1-n的和時,使用變量n記錄當前的數字,使用變量sum存儲n的三角數值。(最後一行沒對齊,如果想對齊,可將最後的NSlog修改為:NSlog(@"%2i %i",n,sum);)

鍵盤輸入:如果我們不想計算前100個整數的和,改為計算前200,前500的整數之和,除了去代碼中修改,還有一個更簡單的方法,就是自己控制想要求多少以內的數的和,用鍵盤輸入。

打印結果為:

本人輸入的是59,那麼計算機將計算1-59的和=1770。

那麼問題又來了,如果我想要不斷的計算不同的數,該怎麼辦?我們引入嵌套循環。

  在循環中,考慮到需要人為終止循環,否則將會一直無休止的循環下去,所以我添加了變量stop並設置初值為1,也就是說循環開始只循環一次,然後在循環中加入stop++,這樣每次循環結束,都會開始新一輪循環直到你感到厭煩想要終止這一切,按照本人現在的水平,只能寫出按0退出的程度,不過也大體上符合了人道主義精神(我十分相信,如果我不加終止,那麼如果有人看到這個程序,並且嘗試了那麼肯定有那麼一個執著的人相信循環會有盡頭。。。)

言歸正傳,第一個for循環主要解決用戶要計算多少個整數之和的問題,而第二個for循環解決這個整數的和是多少的問題。

該程序的其他位置都沒有使用counter這個變量,它的作用僅僅是充當循環計數器,但是,因為它是一個變量,所以必須在程序中聲明。

如果將該程序轉變成我們都能看得懂的語言那麼就是:

    一共循環運行5次!{

      讓用戶輸入他想計算的整數,如果他不想輸入了就按0退出。

      得到他輸入的整數,並且計算出結果。

      將結果打印出來。

}

------while語句

while語句進一步擴展了ObJC語言中得循環功能指令系統。while語句經常使用的語句語法如下:

  while(expression)

    program statement

圓括號中得expression將被求值。如果表達式求值的結果為true,則執行隨後的語句(program statement),執行完這條語句(或位於花括號中得一組語句之後),將再次對表達式求值,若果求值結果為true,將再次執行循環語句。直到表達式的最終求值結果為false時,循環終止,然後執行program statement之後的語句。

試著用while語句求1-100的整數和:

打印結果為5050。

從以上程序中會發現,使用for語句同樣可以方便的完成該任務。事實上,for語句都可轉換成等價的while語句,反之亦然。比如說,下面的這個for語句語法結構可以轉換成while語句語法結構

                    for(init_expression;loop_condition;loop_expression)

                          program statement

改為while語句後:

init_expression;

  while(loop_condition){

    program statement

        loop_expression; 

        }

來一個求兩個數最大公約數(greatest common divisor)的代碼:

不說明最大公約數(簡稱為gcd)是什麼,只說明求出gcd的步驟:

首先我們需要兩個非負整數:c 和 d。
若c=0,結束,即gcd=u。
計算temp=c%d,c=d,d=temp,並回到步驟2.

搞定,運行結果是如圖所示。

繼續來一個,打印一個數字各位數的程序。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved