Java開発の基本~プログラムの書き方(フローと条件分岐)~
前回の記事Java開発の基本~プログラムの書き方(変数と型)~
の続きです。
1から10までを足していくプログラムを引き続き使います。
package lessons;
public class L1 {
public static void main(String[] args) {
int startNum=1;
int endNum=10;
int resultNum=0;
int count=0;
while(startNum<=endNum) {
resultNum=startNum+resultNum;
startNum=++startNum;
++count;
}
startNum=startNum-count;
System.out.println(startNum+"から"+endNum+"まで足した結果は"+resultNum);
}
}
アルゴリズムとフローチャート
ちょっと脇道にそれますが、フローチャートがどのようなものか説明します。
プログラムとは水のように上から流れていくものです。水と同じように色々な道を通っていきます。プログラミングをする前にどんな道を通るべきかあらかじめ考えます。
その考えられた道筋のことをアルグリズムと言います。アルゴリズムを他人と共有するときに利用するのがフローチャートです。
フローチャートについてはこれを参考にしてください。
今回の1から10まで足すプログラムのフローチャートを起こしてみます。
プログラミングをするときには、これをそのまま言語のルールに当てはめていくだけです!!
実際の開発ではあまり綺麗にフロー図を書くことはないかもしれませんが、この考え方がないとプログラミングすることができません。できても穴だらけのものになってしまうので、最初のうちは特に意識しておきましょう。
条件式
今回使った例ではwhile
という繰り返し処理の条件式を利用しています。
下記のような形式で使います。
while(<条件式>){
処理の内容
}
条件が一致するまで処理を行います。
なので例えば以下のような処理を行うと、いつまでたっても処理が終わらずパソコンが止まります。
int a = 1;
int b = 2;
while(a == b){
System.out.println("終わらないよー");
}
条件の判定は基本的に数学と同じです。ただ、上の例でもわかる通り、イコールの場合には==
と2個繋がります。
条件が正しい場合にはtrue、誤っている場合にはfalse1を返します。
数学と使い方が違うものがいくつかあるので、少し紹介しておきます。
オペレータ | 意味 |
---|---|
a == b | aとbが同じであればtrueを返す |
a != b | aとbが異なっていればtrueを返す |
a <> b | aとbが異なっていればtrueを返す |
感のいい人はすでに気づいていると思いますが、プログラムは trueか、 falseしか返せません。なので条件分岐は必ず YES NO 問題にしましょう。 |
ifというのもよく使う条件判定式なので紹介しておきます。
//ifによる条件分岐
if(<条件式>){
//tureの場合の処理
}
if elseによる条件分岐
if(<条件式1>){
//<条件式1>がtureの場合の処理
//ここの条件に一致したら、この先の条件判定は行われない
}else if(<条件式2>){
//<条件式2>がtureの場合の処理
//ここの条件に一致したら、この先の条件判定は行われない
}else{
//条件1,2のいずれにも当てはまらない場合
}
複数の条件を扱うケースも紹介します。
いきなり例えますが、例えばお腹が空いていて、かつ、お金を持っているなら、コンビニに行く
という処理をプログラムに起こしてみましょう
今までの知識だとこの場合にはこんな風に書くことができます。
if(お腹が空いている){
if(お金を持っている){
コンビニに行く
}
}
これは一行で書くことができます。
if( お腹が空いている && お金を持っている ){
コンビニに行く
}
似たような形で、現代っ子的な思想ですが、お腹が空いている、もしくは喉が渇いている場合、コンビニ行く
というのは下記のように表せます。
if( お腹が空いている || 喉が渇いている ){
コンビニに行く
}
これを一覧にまとめると下記の通りになります。
これは論理式という話の一端なのですが、長くなってしまうので各自調べてみてください。
1 | 2 |
---|---|
a && b | aがture かつ bがture の場合tureを返す |
a |
確認チェック
-
3の倍数を小さい順から好きな回数だけ足すプログラムを書いてみよう(whileの代わりにforを使ってもいいです。むしろそっちの方が楽。。。)
(3+6+9+12+...+3n)
出力結果は「3の倍数をXからY回足すとZになる」(X、Y、Zは整数) -
次のプログラムが何をしようとしているものか考えて、かつ間違っているところを治してください。
執筆中