【カレー作りで学ぼう】構造化プログラミング~3つの要素ですべてを作る

structured-programming

構造化プログラミングは、プログラミングのなかでも重要なテーマ。

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

目次

構造化プログラミングの3つの要素

プログラミングは、以下の3つの要素ですべて組み立てられる、というものです。

構造化プログラミング3つの要素
  • 順次 順番に実行する。
  • 選択 条件により分岐する。
  • 反復 条件により繰り返す。

まずは、この3つの組み合わせでプログラムができるとだけ、覚えてください。

カレーを作ろう

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

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

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

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

これを、構造化プログラミングしてみます。

カレー作りで構造化プログラミング

プログラミング言語 “スクラッチ”

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

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

Scratch
スクラッチ

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

「順次処理」まずは順番に並べよう

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

このブロック1つ1つが、順次処理です。単純に、順番に処理するということですね。

カレーを作る
順次処理

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

順次処理は、その名のごとく、順番通りに並べないといけません。

カレーを作る
順次処理見直し

「選択処理」条件によってやることを変えよう

はちみつは、あればカレーがおいしくなりますが、なくてもできます。ここをもうすこし細かくしましょう。

「はちみつがあるか」という条件によって分岐します。これが選択処理です。

カレーを作る
選択処理

「反復処理」同じことを繰り返そう

水を入れ煮込む、も、もう少し細かくしましょう。あくを取る、を表現します。

あくって、どんなタイミングで取ればいいのでしょう?1分ごとに取ることにしましょうか(やりすぎ?)。

あくを取る→1分待つ→あくを取る→1分待つ→…という手順になりますね。

カレーを作る
反復処理

同じ手順が何回も出てきて、無駄な感じ。整理しましょう。

15分煮込むなら、あくを取る→1分待つ、を、15回繰り返せばよいですね

このように同じことを繰り返すのが、反復処理です。

カレーを作る
反復処理見直し

カレープログラム完成!

これで、カレーの構造化プログラミングが完成しました!

「順次」「選択」「反復」の組み合わせでプログラミングが出来ました。このプログラムを動かせば、我が家のカレーが、いつでも作れます。

モジュール化でさらにプログラミングしよう

カレー作りをモジュールにしよう

さて、カレープログラムができたわけですが、まだ続きがあります。

この「カレーを作る」は、1つの順次処理としてまとめることができます。

カレーを作る
カレー作りモジュール

このように、「順次」「選択」「反復」のかたまりを1ブロックにすることを、モジュール化するといいます。

この「カレーを作る」モジュールを使うと、「料理を作る」プログラムができます。

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

料理を作る
カレー作りモジュールを使う

さらに、うえで作った「料理を作る」もモジュール化できます。これを使うと「夜ごはんを食べる」プログラムもできるわけです。

夜ごはんを食べる
料理を作るモジュールを使う

モジュール化=抽象化

モジュール化する、ということは、中身を一言で言い換えること、とも言えます。「元気があれば料理、なければ外食」を、一言で「夜ご飯を食べる」と言い換えることです。

「順次」「選択」「反復」を、「一言で言うと〇〇」に置き換える、これを「抽象化する」といいます。

逆に、「ポトフを作る」の手順を、「順次」「選択」「反復」の組み合わせに分解することもできるわけです。

この抽象化と分解を考えていくことで、いろいろなプログラミングができます。

まとめ

構造化プログラミングの神髄は、こうなります。

構造化プログラミングとは
  • 「順次」「選択」「反復」の組み合わせで、処理を作る
  • その処理を、大きなかたまり(1つの順次処理)に抽象化する
  • それを組み合わせて、より大きな処理を作る

この考えかたを使えば、とても大規模なプログラミングを行うこともできるのです。

実際のプログラミングは、開発が進むたびにとても大きなものになっていきます。構造化プログラミングの考え方を身につけましょう。

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

コメント

コメントする

CAPTCHA


目次