第十四回 『九九の表』を作る

プログラミング編

はじめに

マサト先生
マサト先生

やあ、こんにちは。今日の目標は『九九の表』を作ることだ。前回学んだ『ループの入れ子構造(ネスト)』の応用編だと思ってほしい。

ヒロト
ヒロト

はい、よろしくお願いします。

例題

マサト先生
マサト先生

前回の第13回で記号『*』を用いていろいろな図形を描いたが、『*』の代わりに数字を表示することを考えよう。まずは下のプログラムを実行するとどうなるかを考えてほしい

ヒロト
ヒロト

これは前回見た『2重ループ』になっていますね。3行目のfor文の回数が (1,tate+1) となっていますが、tate=9 よりこれは (1,10) ということですね。これは1以上10未満を意味するので i は1から9まで動きます。

マサト先生
マサト先生

うむ、for文の回数の定義についてしっかり覚えているな!

ヒロト
ヒロト

そして、j も同様に1から9まで動くので、4・5行目のfor文により1から9まで連続して表示され、6行目のprint関数によって改行される・・・

うん、わかったぞ!実行結果は『123456789』が9行表示されます。

マサト先生
マサト先生

正確な読み取りができていると思うぞ。答え合わせはいつも通り実行して確認してごらん。

ヒロト
ヒロト

はい、きょうは『file34』から書いていきます。

ヒロト
ヒロト

できました!予想通りの結果でした!

空白を入れる

マサト先生
マサト先生

プログラムを読み取る力が本当についてきたな!

今回の例ではすべての数が1桁なので問題ないが、九九の表を作成するためには2桁の数も表示したいため、数の間に空白を入れる必要がある。

ヒロト
ヒロト

なるほど。

マサト先生
マサト先生

ということで、次は上の表において数の間に空白を入れるためにはどうすればよいか考え、file34のプログラムに書き加えてほしい。ここで、空白は『 ‘ ’ 』を用いて表すぞ。つまり、シングルクォーテーションの間に空白を入れるのだ。

ヒロト
ヒロト

はい、数の間に空白を入れるには・・・ここに入れると良さそうだぞ。

ヒロト
ヒロト

できました!5行目のprint関数の『 j 』と 『end=’ ‘』の間に『 ‘ ’ 』を入れることにより、しっかり数の間に空白が入りました!

九九の表の作成

マサト先生
マサト先生

うむ、良さそうだな。では、いよいよ九九の表を作成してみよう!上のfile34のプログラムをコピーして、新しい『file35』に張り付けてから考えてみよう。

ヒロト
ヒロト

はい、file34を利用するとしたら、ここだけ変更すればいけるんじゃないかな?

ヒロト
ヒロト

できました!5行目のprint関数の『 j 』『 i*j 』に書き換えただけで完成です!

より美しくする

マサト先生
マサト先生

うむ、一応は完成したが縦の列がそろってなくて見た目がちょっとよろしくないだろう?ということで最後の問題を出そう。

問題

file35のプログラムにおいて数が10より小さいときは数の前に空白文字を表示するようにして、以下のように縦の列がそろうようにプログラムを改良しよう!

マサト先生
マサト先生

最後はヒントなしで自分で考えて書いてほしい。これまでに学んだこと何でも使っていいから頑張ってくれ。

ヒロト
ヒロト

はい、頑張ります!


格闘の末・・・


ヒロト
ヒロト

できました!数が1桁の場合と2桁の場合で処理が異なるので、『if-else文』を使いました。結果は次の通りです。

ヒロト
ヒロト

5行目のif文は『 i*j 』が10未満、つまり i*j が1桁のとき6行目のprint関数の中で、i*j の前にシングルクォーテーションの間にスペースを一つ入力した空白、『 ‘ ’ 』を入れました。そして、i*j が2桁のときは i*j の前にシングルクォーテーションの間にスペースを入れずに単に二つ並べただけ『 ‘ ‘ 』を入れるときれいに揃いました。

マサト先生
マサト先生

意外と大変だったろう?

ヒロト
ヒロト

はい、なかなかきれいに表示されず苦労しました。試行錯誤の結果、シングルクォーテーションの間に入力するスペースの数によって表示されるスペースの間隔が変化することに気づきました。それから色々試した結果できました。

マサト先生
マサト先生

うむ、その試行錯誤するということがとても大事だな。プログラムを書くとき、なかなかうまくいかないときは多々あるが、そういう時は試行錯誤するしかないのだ。それを経験してほしかったのだ。

ヒロト
ヒロト

試行錯誤の結果、きれいに表示されたときは本当に気持ち良かったです!

マサト先生
マサト先生

うむ、よく頑張ったな。

今回の書き方を応用すれば様々な数表が美しく書けるようになるぞ。

では今日はここまでにしよう。次回何をやるのかはこれから考えるので楽しみにしてくれ。

ヒロト
ヒロト

はい、ありがとうございました!

コメント

タイトルとURLをコピーしました