4日目 配列の復習 後半
難しい...
演習<1から100までの3の倍数と、3のつく数字を要素とするリストを返す関数を作成せよ。>
①作成するにあたって、関数の配置と中身をどのように配置するかを考える。
関数を受け取るvoid Startでは、
List<int> ListA = ThreeFunction(); //下の関数を受け取り、あとは表示する仕組みを記述するだけのところ
関数の作成では、
List<int> ThreeFunction(); //void Updateなどにあたる部分で、リストの仕組みを記述するところ
②表示方法について考える。
void Start()で関数を受け取った後、forやforeach(こちらの方が簡単だから覚える)でデバッグする。
foreach(int number in ListA)
{
Debug.Log(number);
}
③リストを作る関数の仕組みについて考える。
3の倍数の場合は、if(i%3 == 0)と簡単に表せる。しかし、3がつく数字をどのように表すかが難しかった...。
Ex.1桁目が3の時
43は10で割ったときに3余る→if (i%10 == 3)
543は10で割ると3余る→上と同じ
Ex.2桁目が3の時
432は10で割ると43余り2→43を10で割ると余りが3
このように、予め10で割ったものをもう一度10で割ると、2桁目の3にも対応できる。
ではこれらをどのように記述するのか...新しい(2つ目の)関数を設定(Void Updateなどにあたるところ)
bool IsThreeNumber(int number) //3の倍数かどうかをBool型で判定(True or False)
{
if(number%3 == 0) // 3の倍数の判定
{
return true;
}
while(number != 0) // numberが0になるまで以下の処理を行う
{
if(number%10 == 3) // 1桁目が3かどうかの判定
{ return true;
}
number = number / 10; // 1桁目になければ、2桁目に3があるかどうかの判定
}
return false; // 当てはまらなかったらfalseを返す
}
④3の倍数もしくは3のつく数字をリストに入れる処理
1つ目の関数を作成するfor文の中で、
if(IsThreeNumber(i))
{
ListA..Add(i);
}
return ListA;
これは、③のBoolで判定してTrueだったものをリストに追加し、void Startに返す処理
⑤全体の流れを復習する。
1) void Start() 2)を受け取ってデバッグする部分
2) List<int> ThreeFunction(); リストを作成し、3)をもとに要素の追加、それを1)に返す部分
3)bool IsThreeNumber(int number) 3の倍数 or 3がつく数字かどうかを判定し、2)に返す部分
感想
関数と引数に関して、学んだ直後にであれば演習問題もだんだん解けるようになってきました。C#の基礎に関しては残り2項目と少しずつだけど進んできました。
この辺りは今後他のレッスンを受ける時にも基本となるところであるため、何度も復習してこの範囲のコードを自分で考えて書けるようになりたいですね( ´∀` )
勉強時間合計:9.5h