Skip to main content

繰り返し

決まられた回数を繰り返す命令「for」

記入できるファイルをダウンロード

練習課題

C#を読みましょう

以下の表は、C#で書いた命令とその日本語の意味が書いてある。空枠を完成してください。

C#

日本語

for(int i = 0; i < 10; i++)
「i」という変数は 0から9までの値を変えながら、10回繰り返す
for(int i = 1; i <= 10; i++)
答え

SPOILER「i」という変数は 1から10までの値を変えながら、10回繰り返す

for(int i = 10; i > 0; i--)

答え

「i」という変数は 10から1までの値を変えながら、10回繰り返す

for(int i = 0; i < 20;15; i+=2)

答え

「i」という変数は

0, 2, 4, 6, 8, 10, 12, 14

の値を変えながら、8回繰り返す

Unityで練習

1〜100の整数を繰り返し、表示してください。ただし…
「3」で割れる整数の代わりに「ho」を表示
「5」で割れる整数の代わりに「ge」を表示
「3」と「5」両方で割れる整数の代わりに「hoge」を表示

例:
 1, 2, ho, 4, ge, ho, 7, 8, ho, ge, 11, ho, 13, 14, hoge, 16, 17, ho …

ヒント

「余り」演算子(モジュロ、剰余演算子)を使ってください。余りの演算子は整数の割り算の余りを返す:

int a = 4 % 3;   // a は 1 になる 
int b = 6 % 3;   // b は 0 になる
int c = 12 % 5;  // c は 2 になる 
答え
// 1~100繰り返す
for(int i = 1; i <= 100; i++)
{
    // 3 と 5 のあまりを計算し、0 である場合は、
    // その数値で割れることである。
    bool div3 = i % 3 == 0;
    bool div5 = i % 5 == 0;

    // 両方で割れる?
    if (div3 && div5)
    {
        Debug.Log("hoge");
    }
    // 3で割れる?
    else if (div3)
    {
        Debug.Log("ho");
    }  
    // 5で割れる?
    else if (div5)
    {
        Debug.Log("ge");
    }  
    // その他
    else
    {
        Debug.Log($"{i}");
    }
}

回数が決まっていない繰り返す命令「while」

for文は決まった回数(例:0~10)を繰り返す命令であるが、場合により、回数が決まっていなく、何かの条件を満たしている間には繰り返す場合もある:

 例:体力残っていたら→遊び続ける
 例:時間切れになっていなければ→遊び続ける
 例:敵がプレーヤーを捕まっていなければ→追いかける

書式:

while(繰り返し条件)
{
    繰り返したい処理
}

例えば、サイコロは「6」になるまで繰り返すを書くとしたら:

int dice = 0;
while (dice != 6)
{
    // Random.RangeはUnityの機能であり、乱数を生成する
    dice = Random.Range(1, 7);  // 1〜6の間の乱数を生成(7未満)
    Debug.Log($"サイコロの値:{dice}");
}
Debug.Log("終了");

上記の例で、回数が決まっていなくて、サイコロは6以外だったら繰り返す処理である。

練習課題

以下のスクリプトでwhileを使い、完成してください(UnityでもOK)

// 体力
int playerHP = 100;

// プレーヤーが生きていたら、繰り返す
________________________
{
    Debug.Log($"現在の体力 {playerHP}");
    int damage = 30;      
    playerHP -= damage;  // 体力を減らす
}

Debug.Log("ゲームオーバー");
答え
// 体力
int playerHP = 100;

// プレーヤーが生きていたら、繰り返す
while(playerHP > 0)
{
    Debug.Log($"現在の体力 {playerHP}");
    int damage = 30;      
    playerHP -= damage;  // 体力を減らす
}

Debug.Log("ゲームオーバー");

このプログラムはコンソールで何を表示するか?その出力を書いてください:

答え


現在の体力 100

現在の体力 70

現在の体力 40

現在の体力 10