【プログラミング】Python使いのためのC言語:繰り返し文 while編

  • URLをコピーしました!
目次

C言語

前回、C言語での繰り返し関数のうちfor文を学びました。

今回は同じく繰り返し文である「while文」を勉強していきましょう。

「for文」では最初に繰り返し回数を指定するのに対し、「while文」では繰り返し回数を指定せずに繰り返す方法です。

特にゲームなんかでキー入力の待機などでずっと繰り返し待っている状態を作り出すのに使ったりします。

それでは始めていきましょう。

Pythonでのwhile文

まずはPythonでのwhile文を見ていきましょう、

while文の基本形としては「while 繰り返しをする条件:」です。

i = 0
while i < 5:
    print(i)
    i = i + 1

実行結果
0
1
2
3
4

上記の例では「i < 5」の場合はずっと繰り返すということになります。

一回繰り返される毎に「i = i + 1」で変数iを一つずつ繰り上げていっています。

ここで注意なのは、この繰り上げを忘れるとずっと繰り返されることになります(もちろんそれが必要な場合もあります)。

i = 0
while i < 5:
    print(i)

実行結果
0
0
0
0
0
(以下略)

また最初に書く「繰り返しをする条件」以外にもfor文で用いた「continue」や「break」も使用可能です。

i = 0
while i < 5:
    if i == 2:
        i = i + 1
        continue
    elif i == 4:
        break
    print(i)
    i = i + 1

実行結果
0
1
3

C言語でのwhile文

それではC言語でのwhile文を見ていきましょう。

基本形としてはPythonとほぼ同じで「while(繰り返しをする条件){}」です。

#include <stdio.h>

int main(void)
{
    int i = 0;

    while(i < 5){
        printf("%d\n", i);
        i = i + 1;
    }
}

実行結果
0
1
2
3
4

また「continue」や「break」も同じように使うことができます。

#include <stdio.h>

int main(void)
{
    int i = 0;

    while(i < 5){
        if(i == 2){
            i = i + 1;
            continue;
        }
        else if(i == 4){
            break;
        }
        printf("%d\n", i);
        i = i + 1;
    }
}

実行結果
0
1
3

ということで特に苦労なくwhile文も使うことができそうです。

do{処理}while(繰り返しをする条件)

C言語のwhile文にはPythonにはない「do{処理}while(繰り返しをする条件)」というものがあります。

これは最初の一回は必ず処理をするという書き方です。

次の2つのプログラムを見比べてみてください。

#include <stdio.h>

int main(void)
{
    int i = 0;

    while(i < 0){
        printf("%d", i);
        i = i + 1;
    }
}

実行結果
#include <stdio.h>

int main(void)
{
    int i = 0;

    do{
        printf("%d", i);
        i = i + 1;
    }
    while(i < 0);
}

実行結果
0

どちらも「i < 0」で繰り返されるwhile文ですが、前者は通常のwhile、後者はdo…whileになっています。

iの初期値が0なのでどちらも繰り返されません。

そのため前者では一度も処理されず、whileの繰り返しを抜けています。

しかし後者ではdo…whileのため、一度は処理をされているため、「0」が表示されます。

Pythonにはない書き方なので、なかなか新鮮でした。

次回は今までも何回か出てきましたが、条件分岐のif文をC言語ではどう書くのか勉強していきたいと思います。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次