5/12Scratch2024年5月12日i-learnプログラミング初心者の子供に何を教えたらいいの?とお悩みの保護者のためのScratch(スクラッチ)の入門講座。Scratchで猫の動かし方はわかったけど・・・次にどんなことをしたらいいの?という疑問にお答えするシリーズです。今回は「パタトクカシーー」問題のアルゴリズムを考えてみたいと思います。アルゴリズムって何?プログラミングといえば、アルゴリズムというぐらい切っても切り離せない関係のアルゴリズム。アルゴリズムってよくわかりませんよね。アルゴリズムとは?アルゴリズムとは問題を解くための手順です。今回は「パタトクカシーー問題」を解くための手順を考えます。問題のアルゴリズムを考えるのです。アルゴリズムは、問題を解くための手順なので一つの問題に対してたくさんのアルゴリズムがあります。アルゴリズムには「良いアルゴリズム」と「悪いアルゴリズム」があります。良いアルゴリズムの定義は人や時代によって様々ですが、多くの人が以下のような点を挙げています。「パタトクカシーー」って何?「パタトクカシーー」は、ピタゴラスイッチで「ひとつとびぶったいパタトクカシー」というコーナーで紹介されている言葉あそびです。2つの物体(?言葉)が一つ飛びにくっついています。今回は、「パタトクカシーー」をバラバラにして、何と何からできているかをプログラミングで解き明かしたいと思います。パタトクカシーの項目をご覧くださいピタゴラスイッチ-Wikipediaこの他にも「サスンリダッルパ」「ハペサンミチ」「ブシャラモシジ」という仲間がいます。「パタトクカシーー」を分解するではここからいよいよアルゴリズムを考えていきたいと思います。強引に問題を解いてみるいきなりアルゴリズムがひらめいてどんどん作ってしまう方もいるかもしれませんが、今回は泥臭く一つ一つのステップをやってみたいと思います。「パタトクカシーー」はひとつとびぶったいなので、言葉の中の文字を一つ飛びに拾っていきます。そのプログラムがこちら。プログラムの実行結果はこのような感じになりました。できましたが、再利用ができそうにないのであまり良いアルゴリズムとは言えませんね。ここから「わかりやすい」「再利用できる」プログラムを考えていきたいと思います。法則を見つける次のステップは「法則を見つける」です。わかりやすくするために、「●番目(パタトクカシーー)の文字」を取り出して並べてみました。いう数字だけが違っていて、あとは同じですね。7」という数字の並びにはどんな法則もしくは共通点があるのでしょうか?これらの数字には「奇数」という共通点があります。「ひとつとび」つまり「2づつ増える」という法則がありますね。今回は2つのアルゴリズムが考えられそうです。法則をスクラッチの演算ブロックで考えてみるまず最初に「1奇数を数式で表す」ということを考えてみたいと思います。奇数は2で割り切れない数=2で割ったときに余りが1になる数です。これをScratchの演算ブロックで表現できるか考えてみたいと思います。「割った余り」といえばこのブロックが使えそうですね。何かを2で割ったあまりが1のときに奇数となるので、この「何か」をとりあえず変数「x」としましょう。「何か(x)を2で割った余りが1」をScratchの演算ブロックで表現してみるとこんな感じになります。この「何か(x)」は何でしょうか?それは「パタトクカシーー」の文字の順番の●番目です。1番目はパ、2番目はタ、3番目はト・・・という風に数えたときの●番目が「何か」になります。「何か(x)」は1から順番に増えていって、8で終わる数ということになります。8で終わるのは「パタトクカシーー」の文字数が8文字だからです。これをScratchで表現すると、こんなプログラムのブロックを使いそうですね。最初はxは0からスタートして1づつ増えて、8で終わり=8より大きくなったらプログラムを止める(すべてを止める)、という意味です。文字をくっつけるプログラムを作る次に、文字をくっつけるプログラムを作っていきましょう。「もとの文字列」「ぶったい1」「ぶったい2」という変数を作ります。もとの文字列には、「パタトクカシーー」を入れます。「ぶったい1」「ぶったい2」は最初は空欄になるようにします。次に、●番目の文字をぶったい1にくっつけながら入れていくプログラムを作ります。奇数番目の文字だけが入るようにしたいので・・・「もし●●なら」というブロックを使ってこうします。このブロックを複製して、ぶったい2には偶数番目の文字が入るようにしましょう。あとは、これらのパーツをくっつけるだけ!くっつけた後のプログラムはこちらです。プログラムの結果はこちら。「ぶったい1」と「ぶったい2」に分解した言葉が入っていますね。いう考え方は小学生には少し難しいかもしれません。最初はこんな風に解くんだよ、という例を真似させるだけでいいと思います。一つのアルゴリズムで考える先ほどは、奇数を使ってアルゴリズムを考えました。今度はもう一つの考え方「22づつ増えるを使ったアルゴリズム」で今度はプログラムを作り直してみたいと思います。先ほどのプログラムを少し改造してxが2づつ増えるようにしてみました。8番目の文字がくっついて、ぶったい1には「タクシー」という文字が入りました。このアルゴリズムも使えそうですね。8番目の文字を抜き出すことができました。7は「-1から2づつ」増えればいいですね。xという変数はもう使ってしまったので、こんどはyというもう一つの変数を足して「yは-1から2づつ増える」を作ります。ぶったい2にはy番目の文字をくっつけながら入れるようにしました。こちらのプログラムを実行すると、ぶったい1とぶったい2に分解した言葉が入りました。他の”ひとつとびぶったい”も分解したいさて、「パタトクカシーー」には「サスンリダッルパ」「ハペサンミチ」「ブシャラモシジ」という仲間がいます。この仲間も分解できるようにしたいですね。最初に1奇数アルゴリズムの方を直していきたいと思います。変数「もとの文字列」に好きな言葉をいれられるようにします。変数xが「もとの文字列」の文字数を超えたタイミングでプログラムが終了するようにしたいので、下の部分もこのように直します。修正した後のプログラムがこちらです。このプログラムを実行してみましょう。分解したい言葉を聞いてくるので、「ハペサンミチ」と入れてみます。すると、変数「ぶったい1」と「ぶったい2」に「ハサミ」「ペンチ」という文字列が入りました。一つの「22づつ増えるを使ったアルゴリズム」アルゴリズムを使ったプログラムも直しておきましょう。こちらを直すとこんな感じです。他の人からみてわかりやすいかチェックする。ここまでで2種類のアルゴリズムはほぼ完成です。プログラムは他の人が見ることもあります。他の人が見てわかりやすいかちょっとチェックしてみましょう。こちらの「22づつ増えるを使ったアルゴリズム」のプログラムの変数yの初期値が「-1」となっています。7番目の数字を得るために無理やりそうしたのですが、突然「-1」という謎の数字がでてくると、他の人が見たときに混乱する元になりそうです。そこで、「2づつ変える」プログラムの場所を後ろの方にします。xとyには、1番目の「1」、2番目の2を最初に入れておきます。これで、少しはわかりやすくなったかなぁと思います。スプライトのセリフを作る最後に、スプライトが分解した文字を言うプログラムを追加して仕上げをしましょう。「22づつ増えるを使ったアルゴリズム」の方のプログラムにセリフを追加してみました。このプログラムを実行すると、下の図のようにスプライトがセリフを言います。まとめ今回は、パタトクカシー問題のアルゴリズムを2つ考えてみました。したら、これ以外にももっと良いアルゴリズムがあるかもしれません。アルゴリズムを考えるのは少し難しいと思いますが、次のようなことからまずはチャレンジして見てほしいと思います。・まずは無理やりでもいいから答えを出してみる・無理やり出した方法の中から、共通点を見つけ出すプログラミングには、答えを出す方法はたくさんあります。自分らしい考え方、解き方を考えて、良いアルゴリズムを自分で作ってみてくださいね。割り算は2種類あるって知っていますか?ー算数嫌いの子のための算数プログラミング初心者のためのScratch(スクラッチ)入門-四捨五入テクニックこのサイトについて。今、注目されている考えさせる教育、アクティブラーニング。AI時代に教えるべき教育とは何か。2020年に教育必修化するプログラミング教育を交えながら、これからの教育シーンに必要な情報をお届けします。