日本語だからスイスイ作れる プログラミング入門教室クジラ飛行机 パート2

・なでしこ プログラミング言語 101ページまで読んだ感想 42%達成

Kindle で読んでいるが読みづらい。
それでも、日本語でプログラミング言語を記述しているので理解しやすい。

久しぶりにプログラミングの悪い所(理解しづらい)を見つけました。
プログラミング初心者狩りが行われているところです。
「N回繰り返す」です。
問題 
2から20までの数字の中で3と5の倍数を表示してください。
リンゴを3の倍数の時
みかんを5の倍数の時
を表示するプログラムを作る

 N=2
 19回繰り返す
  もし、N%3=0ならば「リンゴ{N}は3の倍数」と表示。
  もし、N%5=0ならば「みかん{N}は5の倍数」と表示。
  N=N+1
 ここまで

これが、「N回繰り返す」構文のなでしこのプログラムの記述です。
これはプログラミングを習った人ならわかると思いますが、
これが英文だと理解しずらいです。

ChatGPTに作成してもらったので、間違っているかもしれませんがC#のコードです
おそらく、int N ではなく int i にしないと代入されないかもしれません。 

どうですか?分かりますか?
日本語で翻訳すると、
変数 i には2が入ります。
intは整数を扱う時に使います。
forは()内の変数 i に一番下まで行ったら戻って、
繰り返すたび、変数 i に1ずつ足します(i++)。
if文はもし、変数 i が 3や5で割り切れたら、文字を表示します。
Console.WriteLine()はカッコ内の文字を表示します。
これを変数 i が20になるまで、繰り返します。

はい、私はこれが理解できませんでした。
変数 i と繰り返すたびに、1ずつ増えていく
謎の公式が理解できていませんでした。

なでしこの「N回繰り返す」構文に戻ります。
 N=2
 19回繰り返す
  もし、N%3=0ならば「リンゴ{N}は3の倍数」と表示。
  もし、N%5=0ならば「みかん{N}は5の倍数」と表示。
  N=N+1
 ここまで

実行結果
リンゴ3は3の倍数
みかん5は5の倍数
リンゴ6は3の倍数
リンゴ9は3の倍数
みかん10は5の倍数
リンゴ12は3の倍数
リンゴ15は3の倍数
みかん15は5の倍数
リンゴ18は3の倍数
みかん20は5の倍数

同じ内容ですが、なでしこは読みやすいと思いませんか?
N回繰り返すから
ここまでの間の中のプログラムを19回繰り返します。

しかし、N=N+1が曲者です。
なぜ、これが必要なのか?
いまなら分かります。
これがないと、N%3やN%5の計算が進みません。
だって、N=2のままだから。
最後にN=N+1にすることで
変数 i が 2+1になり、3になることで
計算ができるようになり、変数 i が20になるまで計算されることになります。 

・プログラミングを学習しているときに陥る罠


文章を書いていて思うのですが、
初心者の時は、
変数 i という主語がプログラミングを習っていると抜け落ちてしまっていることが分かります。
とにかく、コードを真似して、
先生や教科書のコードを丸写しで打って、実行する。
これでは、頭に何も残らず、何もできない人になります。
私がそうです。

なでしこの「(変数)を(開始)から(最後)まで繰り返す」構文を使うと

 Nを2から20まで繰り返す
#コメント  3の倍数か、5の倍数か確認
  もし、N%3=0ならば「リンゴ{N}3の倍数」と表示。
  もし、N%5=0ならば「みかん{N}5の倍数」と表示。
 ここまで

実行結果
リンゴ3は3の倍数
みかん5は5の倍数
リンゴ6は3の倍数
リンゴ9は3の倍数
みかん10は5の倍数
リンゴ12は3の倍数
リンゴ15は3の倍数
みかん15は5の倍数
リンゴ18は3の倍数
みかん20は5の倍数

Nを2から20まで繰り返すとは、Nは1ずつ足されていく(20になるまで)。N%3とN%5を計算して3の倍数や5の倍数で割り切れたら表示するを20まで繰り返す。

どちらも結果は同じではあるが、
「(変数)を(開始)から(最後)まで繰り返す」構文を使うと
曲者 N=N+1が無くなり、
より分かりやすくないだろうか?
もちろん、コードの意味を理解していないとダメだけど。

・プログラミングのキモ


そして、一番考えたくないのが、条件式を考えること。
これがプログラミングの「キモ」
ここで初心者は数学でいう公式を知らないため、
何も浮かんでこない。
アルゴリズムの簡単な仕組みすら知らないで生きてきました。
だって、ハノイの塔とか手順を頭の中だけで考えていると
頭の回路が爆発してしまう。
本当に理解したいなら、紙や図にして書いた方がいい。
そうしないと、わかったつもりで次へ進んでしまう。

・学校の授業と似ている


結局、数学と同じで授業が進むにつれて置いていかれる。
そして、どこが分からないのか分からなくなり、
ドラゴン桜のように小学生の問題から高校生までのどこで
つまづいたのかを把握しなければいけなくなる。

それがどれほど時間がかかることか分かりますか?

三角形の定理など、授業で習ったことはあると思いますが、
実生活ではあまり使えない知識ではあるけど、
数学を学習するなら、色々な公式などを理解しておかないと
難しい問題を解く方法すら出ていません。
図形の問題で補助線を引いて弧と角度の関係など様々なことを
覚えていて、初めて分かる問題など特に。
Youtubeや、NHKの番組で数学Aなどで詳しく教えてくれるし、
何回でも一時停止したり、巻き戻しをして聞き直せるが、
学校では、教師はノルマが第一であり、
教科書を何ページ進めるのが学習要綱であり
生徒の理解度など全然気にしない。
そして、聞き漏らしたらもう聞けない環境。
悪循環。

・だから自主学習が最も大事である

頭のいい人はこれらを何度もアウトプットしていつでも
使えるようするために問題を解いたり、コードを書いたりとにかく
アウトプットと行動力が半端じゃない。
それを当たり前にやれるから彼らは成功できる。

この記事が気に入ったらサポートをしてみませんか?