講義メモ

・p.130 continue01.csの補足から再開し、p.132「練習問題」に進みます

アレンジ演習:p.130 continue01.cs

・100までの固定になっているが、コンソールから、いくつまでか入力できるようにしよう

作成例

//アレンジ演習:p.130 continue01.cs --- 0から100未満の2の倍数の合計を求める
using System;
class continue01
{
    public static void Main()
    {
        int sum = 0;
        Console.Write("i : "); int limit = int.Parse(Console.ReadLine()); //【追加】
        for (int i = 0; i < limit; i++) { //【変更】
            if (i % 2 == 0) { //iを2で割って余りが0かどうか(偶数かどうか)
                sum += i;
            } 
            else { //iが奇数の場合
                continue;
            }
            //iが奇数の場合はcontinueされるので次の行は実行されない
            Console.WriteLine("i = {0, 2}, sum = {1, 4}", i, sum);
        }
        Console.WriteLine("合計は {0}です", sum);
    }
}

p.130 continue01.csの補足:continueの主な用途

・単純に繰返し内容の一部をスキップするだけであれば、if文を用いる方が理解しやすいことが多い
・しかし、繰返し内容や、スキップの条件が複雑な場合、continueを用いる事で可読性や保守性(改良しやすさ)を向上できることがある
・例:以下を繰返す場合
 ① 3の倍数であれば
  ・「3の倍数」と表示
  ・しかも、偶数であれば、これ以降をスキップする
 ② 何回目かを表示する
・この例は、contunueを用いる事で②を複数回記述したり、表現を大きく変えることを避けられる

ミニ演習 mini130a.cs

・上の例を、1から10までの繰返しにおいて実装して動作を確認しよう

作成例

//ミニ演習 mini130a.cs:continueの活用例
using System;
class mini130a
{
    public static void Main()
    {
        for (int i = 1; i <= 10; i++) {
            if (i % 3 == 0) { //3の倍数であれば
                Console.WriteLine("3の倍数");
                if (i % 2 == 0) { //しかも偶数であれば
                    continue; //これ以降をスキップする
                }
            } 
            Console.WriteLine("{0}回目", i); //3の倍数かつ偶数の時のみ非実行
        }
    }
}

p.130 continue01.csの補足:continueの主な用途(つづき)

・また、breakと組みわせることで、繰返し処理内容を制御する場合にも用いる
・例:
 ・身長と体重を入力するとBMIを表示することを無限に繰返す
 ・ただし、身長に0が入力されたら繰返しを抜ける
 ・そして、体重に0が入力されたら、それ以降をスキップすることで、身長の入力に戻る
 ・BMI=体重(kg)÷身長(m)÷身長(m)

ミニ演習 mini130b.cs

・上の例を、while(true)による無限ループにおいて実装して動作を確認しよう

作成例

//ミニ演習 mini130b.cs:continueの活用例
using System;
class mini130b
{
    public static void Main()
    {
        double height, weight; //身長、体重
        while (true) { //無限ループ
            Console.Write("身長(m):"); height = double.Parse(Console.ReadLine());
            if (height == 0) { //身長が0なら
                break; //繰返しを脱出
            }
            Console.Write("体重(kg):"); weight = double.Parse(Console.ReadLine());
            if (weight == 0) { //体重が0なら
                continue; //これ以降をスキップすることで身長の入力に戻る
            }
            Console.WriteLine("BMI={0}", weight / height / height); //BMIを表示
        }
    }
}

p.132 練習問題1 ヒント ex0501.cs

・BMI=体重÷(身長×身長) なので、これが22となる体重は 22×身長×身長 で得られる
・この身長はメートル単位なのでセンチメートル単位にすると、22×(身長cm÷100)×(身長cm÷100)
・この式を身長=160から、身長<=180である間、身長をインクリメントしながら繰り返し、
 その中で身長と体重を表示すれば良い

作成例

//p.132 練習問題1 ex0501.cs
using System;
class ex0501
{
    public static void Main()
    {
        for (int height = 160; height <= 180; height++) {
            double heightm = height / 100.0; //mに換算
            Console.WriteLine("身長:{0}cm 体重:{1}kg", height, 22 * heightm * heightm);
        }
    }
}

p.132 練習問題2 ヒント ex0502.cs

・合計用の変数sumを0で初期化しておく
・コンソールから整数nを入力することを、1以上の値が入力されるまで繰返す
・カウント用の変数iを1から、iがn以下である間、iを+1しながら、下記を繰返す
 ・sumにiの値を足しこむ
・sumの値を表示

作成例

//p.132 練習問題2 ex0502.cs
using System;
class ex0502
{
    public static void Main()
    {
        int sum = 0; //合計
        int n;
        do {
            Console.Write("n:"); n = int.Parse(Console.ReadLine());
        } while (!(n >= 1)); //1以上が入力されるまで先に進まない
        for (int i = 1; i <= n; i++) {
            sum += i; //合計に足しこむ
        }
        Console.WriteLine("合計:{0}", sum);
    }
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です