構造化プログラミング(structured programming)

分類
テクノロジ系 アルゴリズムとプログラミング
出る試験
基本情報応用情報
重要度
★★★☆☆

順次・選択・繰返しの3つだけで処理を組み立てる書き方。どこへでも飛べる書き方をやめる。

もう少し詳しい説明

構造化プログラミングは、処理の組み立て方を3つの形だけに限るという考え方です。この3つを基本構造と呼びます。

基本構造すること書くときに使うもの
順次上から順に実行する(とくに無い。並べて書くだけ)
選択条件によって、どちらかの道へ進むif 文、switch 文
繰返し条件を満たすあいだ、同じ処理をくり返すfor 文、while 文

この3つは、プログラムだけの話ではありません。料理のレシピも、同じ3つでできています。

プログラムで使う if(選択)や for(繰返し)も、やっていることはこれと同じです。新しい考え方を覚える話ではなく、もともとある3つの形に名前が付いているだけだと思ってください。

この3つだけで、どんな処理でも書けます。 言い換えると、ほかの書き方は要りません。

なぜ3つに限るのか

昔のプログラムには、どこへでも飛べる命令(goto文)がありました。飛び先を自由に書けるので、短く書こうとすると処理が行ったり来たりします。

困るのは、書いた後です。

3つの形に限ると、処理のまとまりが入口1つ・出口1つになります。中で何をしていても、外から見れば「上から入って下から出る」箱です。箱を並べただけの形になるので、上から下へ読めば順番が分かるようになります。

入口1つ・出口1つが効いてくる場面

まとまりが箱になっていると、その箱だけを取り替えられます。中を書き直しても、入口と出口が同じなら、外側に影響しません。

ホワイトボックステストでも効きます。通り道が限られているので、どこを通る場合を試せば足りるかを数えられます。どこへでも飛べる書き方では、通り道の数が膨れ上がって数え切れません。

構造化言語とは

3つの基本構造を書きやすいように文法として用意した言語を、構造化言語と呼ぶことがあります。if や while がそれにあたります。

いまの高級言語(人が読み書きしやすい形で書くプログラム言語。Java、Python、C言語など)は、ほぼすべてこの形を備えています。わざわざ構造化言語と呼ぶ必要がないほど当たり前になったので、言葉としては試験で見かける程度です。

goto文自体も、多くの言語に残ってはいます。禁じられているのではなく、使わずに書けるようになったため、使う理由がなくなりました。

分割して、独立させる

構造化プログラミングには、もう1つの柱があります。大きな処理を小さなまとまりに分けることです。モジュール(プログラムを機能ごとに分けた、ひとかたまりの部品)分割と呼びます。

分けるときに目指すのは、まとまりの中は結び付きが強く、まとまりどうしの結び付きは弱いという形です。

こうしておくと、1か所の修正が他へ波及しません。どこを直せばよいかが分かる状態こそが、構造化の狙いです。

オブジェクト指向との関係

構造化プログラミングは処理の分け方を整えました。しかし、データのほうは整理されないままでした。

どのまとまりからも触れるデータが残っていると、値がおかしくなったときに、どこが書き換えたのかを全部調べることになります。

ここに手を入れたのがオブジェクト指向です。データと、そのデータを扱う処理を1つにまとめ、外から直接触らせないようにしました。構造化を否定したのではなく、分け方の単位を変えたという関係です。

試験ではこう出る

科目A(旧・午前)で出ます。いちばん多いのは、基本構造の3つを選ばせる問題です。「順次・選択・繰返し」で確定します。

次に多いのが、モジュール分割の良し悪しを問う問題です。応用情報では、まとまりの中の結び付きの強さ(強度・凝集度)と、まとまりどうしの結び付きの弱さ(結合度)を、段階に分けて答えさせる形まで出ます。中は強く、外とは弱くが良い、という向きだけは取り違えないでください。

goto文については、「使うと保守が難しくなる」という向きで出ます。禁止されているから使わないのではなく、追えなくなるから使わないという理由のほうが問われます。

関連する用語

オブジェクト指向
データと処理をひとまとめにする考え方。構造化の次に出てきた、分け方の工夫
プログラム言語
機械語・アセンブリ言語・高級言語の段。3つの基本構造は高級言語に取り入れられていった
ホワイトボックステスト
プログラムの通り道を網羅するテスト。通り道が限られているほど、網羅しやすくなる
要件定義
何を作るかを決める工程。分け方の良し悪しは、ここで決めたまとまりに引きずられる

ミニクイズ

構造化プログラミングで用いる基本構造の組合せはどれか。

正解は 1番:順次・選択・繰返し

構造化プログラミングは、処理を上から順に行う順次、条件で道を分ける選択、同じ処理を繰り返す繰返しの3つだけで組み立てる書き方です。この3つがあれば、どんな処理でも書けることが分かっています。入力・処理・出力はプログラムの働きを大づかみに分けた言い方で、制御の組み立て方の話ではありません。カプセル化・継承・多相性はオブジェクト指向の3つの柱で、構造化プログラミングの次に出てきた別の考え方です。

間違えた用語の復習リストを見る →

この分野をまとめて解く → アルゴリズムとプログラミングのミニテスト(全44問)

最終更新:2026-10-09