今日は、他の順番の文を学習する。
■制御構造■
文を実行させる順番のことを 制御構造(制御フロー) という。
フローというのは英語で 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 件のコメント:
コメントを投稿