00-03 理解とは何か?

理解とはなんでしょうか?

例えばオレンジ色の果物があります。何かわかりますか?と聞かれた時に「みかん」と答えました。確かに「みかん」であり正解ですが、その果物について深く理解しているかどうかは別です。

例えば、「みかん」とはどういう果物なのか、どのように育つのか、なぜオレンジ色なのか、どんな栄養が含まれているのか――これらを知っている人と、ただ「みかん」と名前を知っているだけの人とでは、理解の深さが異なります。

プログラミングでも同じことが言えます。コードが動く結果だけを知っているのか、それともその仕組みや理由まで理解しているのか。この違いが本当の「理解」を生み出します。

私たちが目指すのは、ただ「知っている」だけでなく、「なぜそうなるのか」を説明できる力をつけることです。これから紹介するプログラムを使って、自分の理解がどのレベルにあるのかを確認してみましょう!

サンプルコード

次のコードについて、理解の段階を客観的に見ていきましょう。

for (let i = 0; i < 9; i++) {
  console.log("こんにちは");
}

理解度1

「こんにちは」を表示するプログラムかな?

理解度2

「こんにちは」を10回表示する。

理解度3

for ループを使って、10回「こんにちは」を繰り返し表示する。

理解度4

変数 i が0から始まり、条件 i < 9 を満たす間、1ずつ増加しながらループが進む。つまり、i の値が9になるとループが終了する。

理解度5

プログラムを応用して、例えば「1回目:こんにちは」「2回目:こんにちは」のように番号付きで表示することができる。

for (let i = 0; i < 9; i++) {
  console.log((i + 1) + "回目:こんにちは");
}

理解度6

セミコロン ; は、それぞれの命令や条件を区切るために使われていて、このコードでは、for の3つの部分(初期化、条件、更新)を区切っている。

理解度7

let は変数 i を宣言するためのキーワード。forの初期化で宣言した変数i のスコープ(有効範囲)はループの中だけに限定される。

理解度8

このコードを他のプログラムや概念(例えば、ネストされたループや条件分岐)と組み合わせて新しい機能を作り出すことができる。例:以下のコードは、1回目から3回目の間だけ特別なメッセージを表示します。

for (let i = 0; i < 9; i++) {
  if (i < 3) {
    console.log((i + 1) + "回目:特別なこんにちは");
  } else {
    console.log((i + 1) + "回目:こんにちは");
  }
}

理解度9

このコードを他の方法(例えば、while ループ)で書き換えることができる。
(ループの基本的な動作を深く理解している)

let i = 0;
while (i < 9) {
  console.log("こんにちは");
  i++;
}