導入
今回から4回程度を用いて構造化プログラミングを学習します。コードの構造を整理し、
今回は構造化プログラミングの第一歩として、
展開
制御構造とは
制御構造とは、
名称 | 働き | 命令 |
---|---|---|
順次 | 上から下へ順番にコードブロックを実行する | ありません |
分岐 | 条件に応じて実行するコードブロックを選ぶ | if , switch |
反復 | 条件が成り立つ間コードブロックを繰り返し実行する | while , for |
勘違いを防止するために一言述べておくと、
これらの制御構造が考案されるまでは、goto
文など)
まずは取り組んでいる問題をしっかり分析しましょう。その次に制御構造をあてはめます。すると、
順次
順次実行構造は、
意味ごとにまとまりよくコードを書きましょう。意味が異なる、{}
でコードを囲めばコードブロックが明確になります。
流れ図で示すと次のようになります
典型的な順次実行の例として、
画面の設定から描画まで、
ごく当たり前のことのようですが、
サンプルコードEx_
でもこの要点がさりげなく示されています。
- 画面の設定
- 線の太さの設定
- 線端の設定
- 図形を描く
あとはステップ3と4がリズミカルに繰り返されます。この例の仕事ではこうしか書きようがないのですが、
一度書いたコードを見直して、
Ex_
にコードを書き加えて、fill
メソッド、stroke
メソッドで設定します。詳しい使い方はリファレンスを参照しましょう。
分岐
条件に従って実行するコードブロックを切り替える仕組みは大変便利です。図5.if
文の流れ図です。論理式が成り立つ場合、
基本的に、
この制御構造が連続する場合、Greeks.
のようにswitch
文が便利です。
Greeks.
をif
文で書き直しましょう。
switch
文の構造を多重分岐と呼びます。switch
文は便利ですが、Greeks.
はaChar
にa
やb
などが代入されていれば正しく動作するのですが、c
やC
が代入されたときには正しく動かないのです。break
文が抜けているからです。
break
文を上手に几帳面に使用しないとswitch
文はたちまちおかしくなってしまいます。この仕組みを上手く利用することもできますが、if
文を上手に使うことをお勧めします。
Greeks.
をif
文を使って、
反復
同じような仕事を繰り返すことがあります。コンピュータは、
図5.while
文の流れ図です。
while
文による繰り返し構造の流れ図は次のように読みます。
- 論理式
(条件式とも呼びます) が成り立てば、 すぐ下のコードブロックへ実行が移ります。 - コードブロックの実行が終わると、
論理式の直前に実行が戻ります。 - 論理式が成り立つ限り、
コードブロックを繰り返し実行します。 - 論理式が成り立たない場合、
実行は右側へ移り、 コードブロックを実行せず while
文の構造を終了します。
for
文の流れ図は、while
文の応用です。
- 初期条件を設定します。
- 次に条件が成り立つか確認する論理式を置きます。
- この論理式が成り立てば、
続くコードブロックを実行します。 - 論理式が成り立たなければ、
コードブロックも条件の更新も飛び越し、 for
文の構造を終了します。 - コードブロックの実行が終了したら、
条件の更新を行います。 - 論理式の直前、
初期条件設定の直後へ実行を戻します。
プログラミングの入門書で学習しただけの方は、while
文を知らないかも知れません。while
文の形はfor
文でも書けるので、while
文を紹介しないこともあるからです。問題をよく分析して、
演習ではfor
文の流れ図を描いてみましょう。
Sigma10.
を書きましょう。while
, for
それぞれの構文を使って書いてください。どちらがより分かりやすく問題を記述できるでしょうか。
演習
演習1(難易度:middle)
キーボードから入力されたアルファベットによって動作するようにGreeks.
を作り直してください。作成にあたっては、GreeksWithKey.
とします。
演習2(難易度:middle)
for
文の流れ図を描いてください。
演習3(難易度:middle)
1+2+3+...と数を合計していき、while
, for
それぞれの構文を使って書いてください。sketch名はSumTil10.
とします。
まとめ
- 制御構造の種類と仕組み、
使い方を学習しました。
学習の確認
それぞれの項目で、
- 3種類の制御構造を理解できましたか?
- 理解できた。十分に使えるようになった。
- 理解できた。しかし、演習問題が自力で解けなかった。
- 理解できない。
参考文献
- 『Javaルールブック ~読みやすく効率的なコードの原則』
(電通国際情報サービス 監修、 大谷晋平、 米林正明、 片山暁雄、 横田健彦 著、 技術評論社) - Javaのコードを書く人は必携。ほぼ見開きでコンパクトながら意を尽くした解説がある。
- 『Java言語プログラミングレッスン 第3版
(上)』(結城浩 著、 SBクリエイティブ) - Java言語の入門書として最高の一冊。
演習解答
GreeksWithKey.
pde for
文の流れ図for
文の場合に軍配でしょうか。微妙な差です。SumTil10.
pde