・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);
}
}