Day18 ウォームアップ(10分)

広告

※10分の使い方は、「進め方(10分の使い方)」を参照
※生成AIは使いません
※全部できなくてOK
※昨日より1行多く書けたら成功です


今日の準備(ウォームアップの前に)

  1. Day18.cs を追加する(ソリューションエクスプローラーで、ソリューションの下にある プロジェクト「MiniPractice」を右クリック → 追加 → クラス → 名前を Day18.cs
  2. Program.cs を開き、Main 内の Day17.Run() を Day18.Run() に書き換える

0) 開始30秒:骨格チェック(全員)

次の形になっているかだけ確認します。

internal class Day18
{
    public static void Run()
    {
        // ここに書く
    }
}
  • 処理は必ず Run() の { } の中 に書きます

🔹 今日のルール

今日は Day18.cs を追加します。Day18.cs はソリューション内の 18番目のファイル(クラス) になります。 その Run メソッドの { } の中に、すべてのコードを書いてください。

  • Run 以外のメソッドは作りません
  • 今は「形を揃える」時間です。中身より形を優先します

🔹 Day17 の振り返り(1分)

  • ||(または) … どちらか一方でも成り立てば if の中に入ります(Day17)。
  • &&(かつ) … 両方とも成り立つときだけ if の中に入ります。今日の問題2では 「以上」かつ「以下」範囲に使います。
  • for … for (int i = 0; i < 配列名.Length; i++) の形を崩さない。scores[i] で「今見ている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:「Day18 完了しました」と一言送ってください(講師が確認のタイミングを把握するため)。

■ 問題1(基礎)

次の配列があります。

int[] nums = { 3, 6, 9, 12, 15 };

この配列の要素を、foreach を使って1つずつ表示してください。


■ 問題2(文字列+範囲+&&

次の配列があります。

string[] words = { "a", "ab", "abc", "abcd", "abcde", "abcdef" };

文字数が 2以上 かつ 5以下 のものだけを表示してください。

ヒント:「以上」かつ「以下」 のときは && でつなぎます。
if (s.Length >= 2 && s.Length <= 5) のように書けます。foreach の変数名は s でも word でも構いません。


■ 問題3(点数の「または」で個数)

次の配列があります。

int[] scores = { 48, 72, 65, 95, 38, 88, 71 };

70未満 または 95以上 の点数がいくつあるかを数え、個数だけを1行で表示してください。

ヒント:int count = 0; をループのに置きます。for は for (int i = 0; i < scores.Length; i++) です。条件は
if (scores[i] < 70 || scores[i] >= 95) のとき count++;
ループのに Console.WriteLine(count); を1回書きます。scores の要素はすべてループで確認します(scores[0] だけ見ない)。


■ 発展(余裕がある人)

上の scores について、40未満 または 85以上 の値だけを Listに追加し、次の順序どおりに表示してください。

  1. 追加した各値を foreach で1行ずつ表示する
  2. それらの値の合計1回だけ表示する(ループの外で Console.WriteLine(sum);
  3. 続けて、平均1回だけ表示する(整数のままでよいです。Console.WriteLine(sum / list.Count); のように、合計 ÷ 個数 で求めます。今回のデータでは条件に合う値が1つ以上あるので、list.Count は 0 になりません)

ヒント:var list = new List<int>(); で初期化し、for で i を 0 から scores.Length 未満まで増やしながら、
if (scores[i] < 40 || scores[i] >= 85) のとき list.Add(scores[i]); とします。格納するのは scores[i](点数)です。合計は foreach (int n in list) で sum += n;、平均は 合計を出したあとに sum / list.Count で計算します。問題3と発展を1つの for で count・list を同時に処理してもOKです。


⚠️ よくある誤り(Day18 で想定)

  • || と && … 「70未満 または 95以上」は ||。問題2の「2以上 かつ 5以下」は &&。問題文の「または」「かつ」を確認します。
  • 95以上 … >= 95 です。> 95 だとちょうど95点が含まれません。
  • 85以上 … 発展では >= 85 です。
  • count の表示 … ループのに Console.WriteLine(count); を必ず1回。
  • 発展 … 各値 → 合計 → 平均の順。合計や平均を foreach の中で何度も WriteLine しない。
  • 発展の合計・平均 … 対象は list に入れた点数だけ。scores.Length で割る平均と混同しない。
  • 発展の Add … scores のすべての添字について条件を判定し、合うものだけ Add します(先頭の点数だけを入れない)。

🎯 今日の目的

  • Day17 と同じ型の問題を、別のデータで書ける(スパイラル復習)
  • && で 文字数の範囲(以上かつ以下)を書ける
  • || で点数の「または」を書き、for と scores[i] を安定させる
  • List に入れた値の 合計と平均 を、順序どおり・ループの外で表示できる

次へ

訪問数 18 回, 今日の訪問数 18回

広告

C#

Posted by hidepon