連載
» 2013年06月18日 18時00分 公開

人生と同じ? プログラムの式と演算子、制御文を学ぶiOS SDKで始めるObjective-C入門(5)(4/4 ページ)

[平井祐樹,クラスメソッド]
前のページへ 1|2|3|4       

繰り返し文

 同じ処理を繰り返し実行したい、そんなときは繰り返し文を使いましょう。繰り返し文も選択文と同様、いくつか種類があります。ここでは、最もよく使用する代表的な繰り返し文の「while文」「for文」について解説します。

while文

 while文は条件式が真である間、任意の処理を繰り返して実行できます。

while (条件式) {
    文;
}

 当然ですが、条件式が最初から偽の場合は一度も実行されません。では5から1までの数字をコンソールに表示するサンプルを見てみましょう。

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    int count = 1;
    
    while (count <= 3) {
        NSLog(@"%d", count);
        count++; // countをインクリメント(countを+1する)
    }
    
    NSLog(@"だーーー!!");
}

 このプログラムを実行すると、コンソールに以下のように表示されます。

1
2
3
だーーー!!

 このように条件式が偽になると次の処理に移行し処理を継続します。

 ここで注意が必要なのが、条件式が常に真の場合、この繰り返し文を抜けることができなくなってしまいます。これを無限ループといい、指定された文が無限に実行される状態に陥ります。

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    int count = 1;
    
    while (count <= 3) {
        NSLog(@"%d", count);
        //count++; この行をコメントアウトすると永遠にcountは1であるため次の処理に移行できない!
    }
    
    NSLog(@"だーーー!!");
}

for文

 先ほどのサンプルのように基本的に繰り返し実行する回数が決まっている場合は、while文よりもfor文で書く方が分かりやすく書くことができます。

for (初期化式; 前実行式; 後実行式) {
    文;
}
  • 初期化式:for文で使用する変数の初期化を行う(この中で変数の宣言を行ってもよい)
  • 前実行式:各繰り返し処理が実行される前に評価される。この前実行式の値が0になるまで繰り返し処理が実行される
  • 後実行式:各繰り返し処理が実行された後に評価される。

 小難しくなってしまいましたが、実際に使ってみると、とても簡単です。それでは、先ほどのwhile文のサンプルをfor文で書き直してみましょう。

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    for (int count = 1; count <= 3; count++) {
        NSLog(@"%d", count);
    }
    
    NSLog(@"だーーー!!");
}

 いかがですか。非常に簡単に書けますね。

分岐文

 分岐文は処理を強制的に終了したり、処理をスキップしたりするのに使用します。実はswitch文で出てきた「break文」も分岐文の1つです。ここでは代表的な分岐分であるbreak文に加えて「continue文」の2つを解説します。

break文

 break文はswitch文や、while文やfor文などの繰り返し文から強制的に抜けるために使用します。switch文ではbreak文がないと、caseで指定した値と異なる場所まで実行しようとしてしまいます。そのため、このbreak文を用いてswitch文から強制的に抜けるようにしなければなりません。

 また、繰り返し文で使用すると条件式に関係なく繰り返し文から抜けることができます。

 例えば、以下のように書くと無限ループに陥らず、次の処理へ移行できます。

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    int count = 1;
    
    while (1) { // こうすると故意に無限ループを作ることができる
        NSLog(@"%d", count);
        count++;
        if (count > 3) { // countが4になったらwhile文から抜ける
            break;
        }
    }
    
    NSLog(@"だーーー!!");
}

continue文

 continue文は繰り返し文の処理を途中でスキップするために使用します。これは説明するよりサンプルを見た方が早いので、以下のプログラムを動かしてみましょう。

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    for (int num = 1; num <= 10; num++) {
        // numが偶数であれば処理をスキップ
        if (num % 2 == 0) {
            continue;
        }
        
        NSLog(@"%d", num); // 1,3,...,9が順に表示される
    }
}

 このように、通常continue文はif文などの条件文と併用されることがほとんで、なんらかの条件(上の例では変数「num」が偶数)の場合に処理をスキップする場合などによく使われます。

次回は、Objective-Cでのオブジェクト指向プログラミング

 今回は「式」「演算子」、そして「制御文」について解説しました。演算子はたくさんあるかもしれませんが、今はこんなものがあるということだけ頭に入れておけば大丈夫です。必要なときに「あっ、こんなのがあったな」と思い出せれば良いのです。

 また、制御文もif文とswitch文や、for文とwhile文というように似た動きをするものがあります。最初はどっちをどう使うか悩んでしまうと思いますが、プログラムも人生と同じで、答えは1つではありません(笑)。ですから、今のうちは「こういう書き方をすれば、こう動く」ということだけ頭に入れておいてください。

 次回は、Objective-Cの基本としては、よーーーーやく最後となります。ここまでついてきてくださった方、もう少しだけお付き合いください!! というわけで、次回はObjective-Cでのオブジェクト指向プログラミングを解説します。

前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。