Day19 ウォームアップ(10分)
※10分の使い方は、「進め方(10分の使い方)」を参照
※生成AIは使いません
※全部できなくてOK
※昨日より1行多く書けたら成功です
今日の準備(ウォームアップの前に)
- Day19.cs を追加する(ソリューションエクスプローラーで、ソリューションの下にある プロジェクト「MiniPractice」を右クリック → 追加 → クラス → 名前を Day19.cs)
- Program.cs を開き、Main 内の
Day18.Run()をDay19.Run()に書き換える
0) 開始30秒:骨格チェック(全員)
次の形になっているかだけ確認します。
internal class Day19
{
public static void Run()
{
// ここに書く
}
}
- 処理は必ず Run() の { } の中 に書きます
🔹 今日のルール
今日は Day19.cs を追加します。Day19.cs はソリューション内の 19番目のファイル(クラス) になります。 その Run メソッドの { } の中に、すべてのコードを書いてください。
- Run 以外のメソッドは作りません
- 今は「形を揃える」時間です。中身より形を優先します
🔹 Day18 の振り返り(1分)
||(または) … どちらか一方でも成り立てばifの中に入ります(Day17〜18)。&&(かつ) … 両方とも成り立つときだけifの中に入ります。問題2では 「以上」かつ「以下」 の範囲に使います。- for …
for (int i = 0; i < scores.Length; i++)の形を崩さない。配列名は問題文のscoresとそろえる(numsと取り違えない)。scores[i]で「今見ている1つの点数」を取ります。 - 問題3の
||… 「60未満 または 90以上」のように、両方の条件をifに書きます(片方だけにしない)。 - 発展の合計 … 値を足すときは
sum += n;です。sum++は「回数を1増やす」ので、合計の意味になりません。 - 発展 …
listに入れたあとの順は (1) foreach で各値 (2) 合計を1回 (3) 平均を1回。平均の分母はlist.Count。
進め方(10分の使い方)
- 最初の5分:教科書・ノート・これまで自分が書いたコードも見ずに、自分の力だけで書いてみましょう。止まっても構いません。思い出そうとする時間が大事です。
- 後半5分:教科書・ノート・これまで自分が書いたコードを見てOKです。「どこを見ればよいか」「どう直せばよいか」を考えながら、完成に近づけましょう。
提出ルール(重要)
- 提出A(最低ライン):問題1だけ動けばOK
- 提出B(標準):問題1・2まで
- 提出C(到達):問題1・2・3(余裕があれば発展)
※今日も「全部できる」より「動く形にそろえる」が目的です。
- 提出方法:GitHub Desktop で Commit → Push してください。1問解くごとにコミットすると講師が確認しやすいです(まとめて1回でもOK)。講師は GitHub でコードを確認します。
- Slack:「Day19 完了しました」と一言送ってください(講師が確認のタイミングを把握するため)。
■ 問題1(基礎)
次の配列があります。
int[] nums = { 2, 4, 6, 8, 10, 12 };
この配列の要素を、foreach を使って1つずつ表示してください。
■ 問題2(文字列+範囲+&&)
次の配列があります。
string[] words = { "x", "xx", "xxx", "xxxx", "xxxxx", "xxxxxx", "xxxxxxx" };
文字数が 3以上 かつ 6以下 のものだけを表示してください。
ヒント:「以上」かつ「以下」 のときは && でつなぎます。if (s.Length >= 3 && s.Length <= 6) のように書けます。foreach の変数名は s でも word でも構いません。
■ 問題3(点数の「または」で個数)
次の配列があります。
int[] scores = { 55, 62, 73, 90, 41, 88, 77, 91 };
60未満 または 90以上 の点数がいくつあるかを数え、個数だけを1行で表示してください。
ヒント:int count = 0; をループの前に置きます。for は for (int i = 0; i < scores.Length; i++) です。条件はif (scores[i] < 60 || scores[i] >= 90) のとき count++;
ループの後に Console.WriteLine(count); を1回書きます。scores の要素はすべてループで確認します(scores[0] だけ見ない)。Length は scores.Length です(問題1の nums と取り違えない)。
■ 発展(余裕がある人)
上の scores について、45未満 または 80以上 の値だけを Listに追加し、次の順序どおりに表示してください。
- 追加した各値を foreach で1行ずつ表示する
- それらの値の合計を1回だけ表示する(ループの外で
Console.WriteLine(sum);) - 続けて、平均を1回だけ表示する(整数のままでよいです。
Console.WriteLine(sum / list.Count);のように、合計 ÷ 個数 で求めます。今回のデータでは条件に合う値が1つ以上あるので、list.Countは 0 になりません)
ヒント:var list = new List<int>(); で初期化し、for で i を 0 から scores.Length 未満まで増やしながら、if (scores[i] < 45 || scores[i] >= 80) のとき list.Add(scores[i]); とします。格納するのは scores[i](点数)です。合計は foreach (int n in list) で sum += n;(sum++ ではない)、平均は 合計を出したあとに sum / list.Count で計算します。問題3と発展を1つの for で count・list を同時に処理してもOKです。
⚠️ よくある誤り(Day19 で想定)
||と&&… 「60未満 または 90以上」は||。問題2の「3以上 かつ 6以下」は&&。問題文の「または」「かつ」を確認します。- 90以上 …
>= 90です。> 90だとちょうど90点が含まれません。 - 80以上 … 発展では
>= 80です。 - 配列名 … 問題3・発展は
scoresとscores.Length。問題1のnumsと混同しない。 - count の表示 … ループの後に
Console.WriteLine(count);を必ず1回。 - 発展 … 各値 → 合計 → 平均の順。合計は
sum += n。合計や平均を foreach の中で何度もWriteLineしない。 - 発展の合計・平均 … 対象は
listに入れた点数だけ。scores.Lengthで割る平均と混同しない。 - 発展の Add …
scoresのすべての添字について条件を判定し、合うものだけAddします(先頭の点数だけを入れない)。
🎯 今日の目的
- Day18 と同じ型の問題を、別のデータ・別の閾値で書ける(スパイラル復習)
&&で 文字数の範囲(以上かつ以下)を書ける||で点数の「または」を書き、for・scores.Length・scores[i]を安定させる- List に入れた値の 合計(
+=)と平均 を、順序どおり・ループの外で表示できる





ディスカッション
コメント一覧
まだ、コメントがありません