今回のレシピでは、「味見をして、薄ければめんつゆを5mL追加する」という条件分岐があります(図2)。
このように、「特定の条件によって処理を変える」という考え方は、プログラミングの「条件分岐」に対応します。例えば、人間が「味が薄いからめんつゆを足そう」と判断するように、「ある条件を満たせば、追加の処理を行う」という考え方に従って、コンピュータは処理を分岐するのです。
「全体に油がなじむまで炒める」「じゃがいもに箸が通るか確認し、抵抗なく通るまで煮る」といった作業は、「条件を満たすまで同じ動作を繰り返す」処理と言えます。これもプログラミングの「繰り返し処理(ループ)」とまったく同じ構造です(図3)。
図3のように、コンピュータも、「加熱して、じゃがいもに箸を刺す、加熱して、じゃがいもに箸を刺す」という動作を実行し続けます。ただし、ありがたい反面、間違った指示だと、プログラムが終了するまで間違い続けるという恐ろしいプログラムになるので注意が必要です。
皆さんのスマートフォンが動き続けているのも、どこかに「ユーザーの入力があるまで現在の画面を表示し続ける」という無限に続くループ処理を実行しているためです。ジュースの自動販売機でも、「料金が投入されるまで、ひたすら待つ」というループを実行しています。誰も何もしなくても、自動販売機の中ではプログラムが走っているのです。
「炊飯する」という独立してひとまとまりにできる手順は、別ページとすることで、見通しの良いレシピとなりますね。
レシピの例:「炊飯する(別紙参照)」
プログラミングでは、これを「関数」や「メソッド」と呼び、ひとまとめにして別の場所で書いておいてから呼び出します。こうすることで、「炊飯する」と1行書くだけで別の場所に書いてある処理を実行できます。肉じゃがのレシピの中に、炊飯の手順を書いても構いませんが、行数が増えますし、肉じゃがとは直接、関係のない「炊飯する」をレシピに入れると、2つが混じり、読んでいて混乱します。また、「炊飯する」は、他のレシピ、例えば、カレーやカツ丼にも出てきますので、みんなで共通的に使えるように「炊飯する」として外へ出しておくと便利ですね。
今回からは、詳細設計を行う前の前提知識として、料理レシピというトピックから、プログラミングの基本的な4つの基本的な構造と考え方を説明しました。
料理レシピを考えると、プログラミングの「上から順番に実行する」「分岐する」「繰り返す」「別ページ参照」という、基本的な4つの考え方をいろいろな形に変えて実践していることが分かります。
今回は料理を例にしましたが、もちろん、プログラミングは料理以外にもさまざまなものに例えて説明できます。プログラミングの勉強に行き詰ったら、身の回りの物事に置き換えてイメージを膨らませてみてはいかがでしょうか。
本連載で取り上げた「ソフトウェア技術者のためのバグ百科事典」を大幅に加筆、修正した山浦恒央先生の書籍「ソフトウェア技術者のためのバグ検出テキスト」が日科技連出版から好評発売中です。連載でも取り上げた、「要求仕様書のバグ」「実装抜けのバグ」「テスト業務のバグ」など、バグを36種類に分類して解説しています。囲碁や将棋であれば、「相掛かり」「矢倉」「四間飛車」「藤井システム」のような戦法を網羅した内容になっています。
前著「ソフトウェア技術者のためのバグ検出ドリル」(2019年11月刊行)も好評発売中です。実際にバグを含む要求仕様書、設計書、コーディング、デバッグ、保守を具体的に取り上げ、練習問題として31問を出題しました。同書は、囲碁や将棋における「次の一手」的な問題であり、ピンポイントの場面を取り上げ、実践力を鍛えることを目的としています。
両書とも興味のある方は、Amazon.comや書店でチェックしてください!
人間環境大学 環境情報学科 教授(工学博士)
イチから全部作ってみよう(36)技術者の「まぁ、いいか」が社会に与える重大影響
イチから全部作ってみよう(35)テーブル結合はリレーショナルデータベースの肝
イチから全部作ってみよう(34)マルチプログラミングとトランザクション
イチから全部作ってみよう(33)「排他制御」をトイレのアナロジーで理解する
イチから全部作ってみよう(32)PythonでSQLを実行してデータベースを操作するCopyright © ITmedia, Inc. All Rights Reserved.
組み込み開発の記事ランキング
コーナーリンク