文字列を入力し、その文字列を逆順に表示するプログラムを作ろう

スキルアップの練習
Scratch星人
Scratch星人

タイトルにある問題は、話題のチャットGPTに「小学生向けのスクラッチプログラミングの練習問題を10問考えてください。」と伝えて作成してもらった問題のひとつです。

頭の体操にちょうどいいので、ぜひ一緒に考えながらプログラムを作成してみましょう。

問題の意味を理解する

例えば「こんにちは」と入力された場合、それを反対から読むと「はちにんこ」となります。

スクラッチで作成したいプログラムを簡単に表すと、上の画像のようになります。

4つめのブロックの「xxxxxxxxx」の部分で「はちにんこ」とすることが出来ればいいという事になります。

Scratch星人
Scratch星人

ここで大切なことを伝えますね!

プログラムを作成する場合、いきなり正解のコードを完成させるのは、どんなにプログラミングが上達した人でも難しいです。

そのため、まずは、問題の意味を理解したら、なるべくシンプルなコードを作成してみます。
(今回で言うと上の画像ですね)

これが出来れば、完成イメージが頭の中に出来るはずなので、イメージに向かってコードをひとつずつ組み立てていくことになります。

少ない文字数から作成していく

「こんにちは」は5文字と長いので、まずは2~3文字と短い文字数を対象にしたコードを作成してみます。

上の画像は、3文字専用のコードです。

「あした」と入力した場合、逆順は「たしあ」ですね。
そして、「答えの~番めの文字」とすることで、それぞれの文字を取得することが出来るようになります。

「答えの3番目の文字」は「た」です。

Scratch星人
Scratch星人

ここまで作ることが出来れば、問題の答えとしては、とりあえず正解です。

5文字であれば「5番目の文字」まで作成すればいいわけです。

・・・しかし、100文字や1000文字の場合、コードを作るとなると、とても大変ですし、プログラミングの良いところを活かしておらず、チカラワザになっているのが残念です。

変数を使って「~番目」を管理する

「1番目、2番目、3番目・・・」というように、数字が続く状況の時は、変数を使うチャンスです。

「文字の長さ」という変数を作り「3を代入して、-1ずつ変えるのを3回繰り返す」ことで、3文字専用のコードが完成します。

Scratch星人
Scratch星人

ここで何か気が付きませんか?

「文字の長さ」と「繰り返しの回数」も変数にしてしまえば、何文字であっても対応出来そうです。

ただし、このままでは、1文字ずつしか喋ってくれないため、もうひとつ空の変数を用意して文字を格納していく必要があります。

最初は空の「文字」変数の中身がどうのようになっているかを見てみましょう。

上で作成したコードを少しバラします。

実行後「こんにちは」などと入力してみましょう。
変数の中身は以下の通りです。

  • 文字の長さ:5
  • 文字:空(から)


次にコメントを追加したブロックをクリックしてみましょう。
「は」→「はち」→「はちに」→「はちにん」→「はちにんこ」の順で「文字」変数の中身が変化していきます。

Scratch星人
Scratch星人

繰り返し処理の中で、変数の中身が変化していく流れをしっかり理解できるようになれば、プログラミングスキルはかなり上達したと言っていいと思います!

これで、コードが完成しました。
文字数が多くても正しく実行されるか試してみて下さい。

リストを使ってみる

このコードはおまけです。
リストを使うことでも同じようなプログラムを作成することが出来ます。

この問題に関しては、リストを使った方が、分かりやすいかもしれません。

あえて、解説はしませんので、同じように作って、理解を深めてみて下さい。

まとめ

逆順プログラムはどうでしたか?
頭の体操になりましたね!

スクラッチをしていると、大作ゲームを作ることに目が行きがちですが、今回のようなプログラムをひとつずつ理解していくことがとても大切で、結果的に成長に繋がります。

これからも楽しんでスキルアップしていきましょう(*^▽^*)

コメント

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