カウントダウン


繰り返し処理は、カウンタの更新でカウントアップするものだけではありません。

カウンタを減らしていくカウントダウンも存在します。ロケットや年明けの秒読みはなどはまさにカウントダウンですね。

1.カウントダウン


下記は「1~5までの整数を逆順に出力する」プログラムです。


カウントダウン1(C)

#include <stdio.h>
int main(void){
    int i;
    for(i=5; i>=1; i--){
        printf("%d", i);
    }
    printf("\n");
    return 0;
}

カウントダウン1(Java)

public class CountDown {
    public static void main(String[] args) {
        
        for(int i=5; i>=1; i--){
            System.out.print(i);
        }
        System.out.println();
    }
}


実行結果

54321

 

少し文法的な話を。

Javaではfor文内だけに有効な変数を定義できるので、for文内でカウンタ i を定義しています。

あらかじめカウンタを宣言しておく必要がないので、わりと便利です。

ただ、for文の外でもカウンタを使う場合は当然エラーになるので、その場合はfor文の前で宣言しましょう。

※Cでも可能な場合もありますが、バージョンによってはエラーになってしまうので、Cではループの外で定義した方が良いです。

2.カウントアップでカウントダウン


カウントダウンはカウントアップを利用して実現することも可能です。

繰り返す回数からカウンタの値を引くだけで、簡単にできます。

ですので、繰り返し部分4行分(4~7行目)を以下のように変えても、実行結果は同じになります。


カウントダウン2(C)

    for(i=0; i<5; i++){
        printf("%d", 5-i);
    }
    printf("\n");

カウントダウン2(Java)

        for(int i=0; i<5; i++){
            System.out.print(5-i);
        }
        System.out.println();


このカウントアップでカウントダウンを実現する考え方は、2重ループで図形を描くプログラムなど、様々な問題で必要になります。