【カレー作りで学ぼう】プログラミング的思考~5つの思考で考える

thought-programming

これからの時代、プログラミング的思考を身につけることが重要。

といっても難しそうなので、カレー作りを例として、わかりやすく学んでみましょう。

目次

プログラミング的思考の3つの要素

プログラミング的思考には、以下の5つの要素があると言われています。

プログラミング的思考5つの要素
  • 組み合わせ
  • 分解
  • 分析
  • 一般化
  • 抽象化

この5つの要素をみていきましょう。

カレーを作ろう

プログラミングと料理は似ている、と言われます。手順立てて行ったりするところですね。

みんな大好き、カレーを作りましょう。以下はバーモントカレーのレシピです。

バーモントカレー
バーモントカレー
  1. 炒める 鍋で具材を炒める
  2. 水を入れ煮込む あくを取り、具材が柔らかくなるまで煮込む
  3. ルウを入れる ルウを割り入れて溶かす
  4. 煮込む 時々かきまぜながら煮込む

はちみつを入れる場合、2.で入れる

これを、プログラミング的思考を使ってプログラミングしてみます。

以下、プログラミング言語として、初心者にもやさしい、スクラッチ を使います。

スクラッチは、子供も学びやすいビジュアルプログラミング言語です。

Scratch
スクラッチ

このように、ブロックを組み合わせてプログラミングします。

ではカレー作りプログラミングを考えましょう。

カレー作りで学ぶプログラミング的思考

組み合わせ」まずは順番を考えよう

レシピにそってプログラミングしましょう。まずレシピの内容を単純に並べてみます。

カレーを作る
カレーを作る

さて、おかしいですね。はちみつは煮込む前に入れないといけません。

順番を考えて並べていきましょう。これが組み合わせです。

カレーを作る
カレーを作る組み合わせ

「分解」やることを細かく分けよう

「はちみつを入れる」ですが、もうすこし細かくいうと「はちみつがあるなら入れる」となります。

「水を入れ煮込む」も、細かくしましょう。あくを取りながら煮込む、となりますね。あくはどれくらい取ればいいんでしょう?1分おきくらいに取るとしておきますか。

このように、やることを細かくしていくことが、分解です。

カレーを作る
カレー作りを分解

分析」つくったプログラムを振り返ろう

カレープログラミングができました!このプログラムで、さっそくカレーを作りましょう。

カレーはおいしかった?もしかして、もうすこしあくを取ったほうが良かったかな?

できたプログラムを振り返り、なおしたほうが良ければ改善していく。これが分析です。

「一般化」ほかのところにも活かそう

さあ、我が家のカレープログラムが完成です。

このプログラムは、ほかにも応用が効くかもしれません。たとえば、煮込むときのあく取りはこれくらい…は、シチュー作りでも使えるかも。

できたプログラムを、他のプログラムでも使えるようにしていく。これが一般化です。

使えるようにするのは、そのプログラム自体でもよいし、そこでの考え方でもOKです。

「抽象化」やることをまとめて単純にしよう

さて、いくつかのブロックで組み合わせたこのカレープログラム、一言でいえば「カレーを作る」プログラム」ですね(当たり前ですが)

このように、「複雑な手順を、要は〇〇」に置き換え、単純にすること、これが抽象化です。

さて、抽象化ができると、なにがよいのでしょう?もう少し説明します。

この「カレーを作る」プログラムを抽象化すると、1つのブロックにすることができます。

カレーを作る
カレー作りを抽象化

そうすると、この「カレーを作る」ブロックを使って、さらに「料理を作る」プログラムもできます。

ルーがあったらカレーを作ろう、なければポトフにしようかな、というように。

料理を作る
カレー作りブロック

さらに、うえで作った「料理を作る」ブロックを使うと「夜ごはんを食べる」プログラムもできるわけです。

夜ごはんを食べる
料理を作るブロック

このように、抽象化したブロックを組み合わせると、どんどん大きなプログラムを作ることができるわけです。

まとめ

プログラミング的思考を単純にいうと、

あることを行う手順を、

  • 細かく分解したり
  • 並びの組み合わせを考えたり
  • 大きくまとめなおして抽象化したり
  • できた結果が良いかどうか分析したり
  • よさそうなら他でも使えるように一般化したり

といったこと。

プログラミングは、やることを小さく分けたり大きくまとめたり並べ替えたり…といった考えが大事になります。料理でなれるのも、ひとつの手ですね。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次