【初心者向け】プログラムを設計するための3つの基本構造!【構造化プログラミング】

structured-programming eye catching IT

どうも、現役SEのゆとです!

当ブログでは以前、プログラミングの仕組みや流れについてお話ししました。

今回はその続編ということで、プログラミングにおける基本的な構造についてお話しします。プログラムを作成する際、何百何千行ものコードを書くことがありますが、細部まで確認するとその構造は必ず3つのパターンに分類されます。この考え方を、構造化プログラミングといいます。

今回の記事ではそんな構造化プログラミングについて、初心者の方でも理解しやすいよう、わかりやすく解説していきます。それではご覧ください!

構造化プログラミングとは

code

構造化プログラミング(Structured programming)とは、プログラムを設計するための手法です。

構造化プログラミングは、1969年にオランダのアイントホーフェン工科大学のダイクストラ(Dijkstra)教授によって提唱されました。本手法はプログラムを構造的に設計し、制御構造を明確にするための手法であり、アルゴリズム(プログラムの処理の流れ)の理解のしやすさや保守の容易さを目的としています。

特にそれまで多用されていたgoto文が排除されたことの影響は大きいと言われています。goto文は、プログラム内で指定した任意の位置に無条件に移動する構文であり、これが排除されたことで処理の流れがより理解しやすい形で示されるようになりました。

また構造化プログラミングは3つの基本構造で成り立っています。それが、「順次構造」、「分岐構造」、「反復構造」です。つまり本手法によると、全てのプログラムはこの3つの構造を組み合わせることで表現可能である、ということになります。

3つの基本構造について

code

それではこれより、各基本構造の解説に入ります。

順次構造

順次構造は、プログラム内の複数の処理を順番に実行するものであり、最も単純な構造となります。
また、一つの処理が完了する前に、次の処理に進むことはありません。

例えば、処理A,B,Cというものが順番に並んでいた場合、まず最初に処理Aが実行され、次に処理B、最後に処理Cが実行されます。

flow1
順次構造

分岐構造

分岐構造は、条件によって処理の実行を分岐させる構造です。
プログラム内で条件が成り立つ場合(True)成り立たない場合(False)で別々の処理が続行されるよう指定できます。

例えば下記のように、ある条件によって処理AとBが分岐されていることを考えます。この場合、条件が成り立つ場合(True)は処理Aが実行され、成り立たない場合(False)は処理Bが実行されます。

flow2
分岐構造

また分岐後に必ず何かしらの処理を挟まなければならない、というわけではありません。下記の例では、条件が成り立つ場合は何もしませんが、成り立たない場合は処理Aを実行します。

flow3
何もしない場合の分岐構造

さらに、分岐先を2つに限る必要もありません。分岐先が3つ以上ある場合、多分岐型と呼ばれる分岐となります。この場合、条件に当てはまるどれかしらの分岐の処理が実行されます。

flow4
多分岐

分岐構造をプログラミングで用いる場合は、if文やswitch文が主に用いられます。

反復構造

反復構造は、一連の処理を複数回繰り返し実行する構造です。そのため、繰り返しやループとも呼ばれます。

同じ処理を何度も繰り返し実行したい場合、全て順次構造を用いて作ろうとすると、プログラムが冗長化し理解しづらいものとなってしまいます。そんな時に反復構造を用いることで、プログラムを簡潔に表現することができます。

また実際にプログラムを作る際は、「何回繰り返して実行するか」ということを条件で判断します。この時に用いられる条件のことを、終了条件といいます。つまり、この終了条件を満たすまで、処理を繰り返し実行するということになります。

例えば下記の場合、xが6以上になるまで処理を繰り返しています。そのため、画面には1から5までの数字が表示されることになります。

flow5
反復構造

さらに終了条件を指定する位置によって、前判定ループか後判定ループかを分けることができます。

  • 前判定ループ
     繰り返し処理が実行される前に終了条件の判定が行われる。
     繰り返し処理が実行される前から終了条件を満たしていた場合は、一度も処理が実行されない。
  • 後判定ループ
     繰り返し処理が実行された後に終了条件の判定が行われる。
     繰り返し処理が実行される前から終了条件を満たしていても、必ず一度は処理が実行される。
flow6
前判定ループと後判定ループ
ゆと
ゆと

私個人の感覚ですが、実際に使われるのは前判定ループの方が多い気がします。

ただ時と場合によって適した方を使いましょう!

反復構造をプログラミングで用いる場合は、for文、while文が主に用いられます。

まとめ

今回は構造化プログラミングの概要と、その基本構造について解説しました。

今回の内容はプログラムを設計する上でとても重要な基礎となる内容だと思いますので、興味のある方はぜひ勉強してみてください。

このブログでは他にもプログラミングに関する内容の解説記事を発信しています。これらもぜひご覧ください!

最後まで読んでいただきありがとうございました。それではまた!

コメント

タイトルとURLをコピーしました