今日は、他の順番の文を学習する。
■制御構造■
文を実行させる順番のことを 制御構造(制御フロー) という。
フローというのは英語で Flow 流れ、という意味。
よく耳にする フローチャート というのは、処理の流れ を表している。
代表的な制御構文は三つ。
「順次」、「分岐」、「繰り返し」。
この三つを組み合わせると、どんな複雑なプログラムでも作成可能らしい。
(構造化定理)
今まで書いてきたものは、全て、「順次」の文。
上から下に一つずつ実行していく単純なもの。
■分岐■
条件によって結果が変わるのが分岐。
「もし、……だったら、……」
「でも、……なら、……しよう」
日本語で考えると、簡単です。
誰しもが一度は考える、「もし、宝くじが当たったら……」なんていうのも
分岐の一つですね。
if という命令を使う。
if は 「もしも」 という意味。
else は 「そうでなければ」 という意味。
package blog; public class Junction { public static void main(String[] args) { boolean money = true; System.out.println("お財布にお金が入ってたかなぁ……。"); // もし、 money が true だったら if (money == true) { System.out.println("本を買います。"); System.out.println("あとは、お菓子を買って帰ります。"); // そうでなければ } else { System.out.println("歩いて家に帰ります。"); } } }
実行結果の一つ目が、 money が true だった場合。
二つ目が、 money が false だった場合。
ここでは、
(money == true ) の部分が条件式。
■繰り返し■
条件によって、繰り返し(ループ)を続ける。
「……の間は……」
while という命令を使う。
while は 「~の間は」 という意味。
package blog; public class Loop { public static void main(String[] args) { System.out.println("新しいレアカードが発売されたらしいなぁ……。"); boolean desire = false; // desire が true の場合は 無限ループになる // false の場合は そのまま終了。 while (desire == true) { System.out.println("カードを引いてみよう"); System.out.println("もっと……。"); } System.out.println("興味ないな。"); } }
■ブロックと条件式■
ブロックとは、複数の文をひとまとまりとして扱うもの。
ブロック内で宣言した変数は、ブロックが終わると消える。
条件式とは、分岐や繰り返しの条件を表すもの。
式の中には 関係演算子 を使う。
!! 評価結果が 必ず true または false になる式にする必要がある !!
条件式で用いる演算子は、
条件が成立した場合に true
そうでない場合に false
に変化する。
条件式の中で用いられる演算子(==、>、<=など)には三種類ある。
ひとつめは、関係演算子。
条件が一つのときに使う。
![]() |
関係演算子 |
ふたつめは、論理演算子。
二つ以上の条件を組み合わせるときに使う。
業務では、三つ以上組み合わせると怒られる。(わかりづらい)
![]() |
論理演算子 |
みっつめは、否定演算子。
「もし~でないならば」という否定系の条件式に用いる。
"!"をつける。
if (! (size == 10)){ size が 10 に等しくないなら true
package blog; public class LogicalOperator { // 習った円周率によって、ざっくりと生まれた年代を表してみる public static void main(String[] args) { // circularConstant は 円周率 という意味 double circularConstant = 3.14; // もしも、円周率が 3.14 では なかったら!! if (!(circularConstant == 3.14)) { System.out.println("平成生まれ!!"); // そうでなければ } else { System.out.println("昭和生まれ!!!"); } System.out.println("実は、ゆとり世代が、円周率を 3 と習ったというのは"); System.out.println("デマらしいですよ!!"); } }
最後に、文字列を比較したい場合の注意点。
文字列は == で比較することができない。
代わりに
変数名 . equals ("文字列")
と書く。
変数の中身と文字列が一致した場合に true になる。
package blog; public class StringComparison { public static void main(String[] args) { String name = "ともみ"; // もしも name の中身が "ともみ" だったら if (name.equals("ともみ")) { System.out.println("ログインに成功しました"); // そうでなければ } else { System.out.println("ユーザーが違います"); } System.out.println("もう一度、試します"); // もしも name の中身が "さとし" だったら if (name.equals("さとし")) { System.out.println("ログインに成功しました"); // そうでなければ } else { System.out.println("ユーザーが違います"); } } }
name.equals("ともみ")の部分が
name == "ともみ"
でも、コンパイルエラーが起きずに、変な動作をするから
忘れないように注意しよう!
0 件のコメント:
コメントを投稿