こんちゃっす、ダイブツです。
今回はプログラミングで主要な内容となるif文について学習していきますね。
if文が使えるようになれば、あなたのプログラミングスキルは劇的に高まります。
さぁ、それでは早速あなたのプログラミングスキルをプログラマー並みに引き上げていきましょうか!
目次
if文でプログラミングを極められる理由って?
先ほども書きましたが、if文が身に付くだけでプログラミングスキルは大幅に向上します。
というのも、if文ができるようになることで作成できるプログラムの種類がとっっっても増えるからです。
世の中に出回っているプログラムも99%はif文を使っているってぐらい必須なものなんですね。
正直今までの講座で作成していた問題も、if文が使えたらもっと良い問題にできるのにな~とムズムズしてましたw。
そして、今回取り扱うif文ですが、以前のプログラミング講座(迷路編)でチラッと紹介していたのを覚えてますか?
↓このブロックで判断していた処理がif文のものですよ。
でもif文で判断できるのは、このブロックの条件だけじゃありません!
他に判断できる条件とは・・・?
if文で判断できる7つの条件
if文で判断できる条件は大きく分けると3つあります。
それは
・等しいか、等しくないか
・大きいか、小さいか
・trueか、falseか(boolean型のこと)
の3つです。
この3つをさらに細かく分けてif文での書き方を表にしてみました。
自分で使いたい条件が出てきた時に参考にしてください。
判断できる内容 | if文での書き方 |
---|---|
= | == |
≠ | != |
< | < |
≦ | <= |
< | < |
≧ | >= |
true or false | boolean型の変数のみ書く |
ただ、実は条件って1つだけで使う訳じゃなくて、複数の条件を組み合わせて使うこともあります。
例えば、「赤くて丸い形」のことを条件にするなら、「赤い」と「丸い」の2つが条件になりますよね?
こんな風に条件を組み合わせて使う時は次の表のような書き方をします。
この条件の組合せ例については、また下で説明しますね。
組合せ可能な条件 | if文での書き方 |
---|---|
条件1かつ条件2 | && |
条件1もしくは条件2 | || |
実はこのif文で判断できる条件というのは、while文で使っている条件と全く同じです。
なので、while文もある意味if文の一種と言っても過言ではないんですわ。
この記事でif文を身に付けることでwhile文のスキルも向上するという、まさに一石二鳥な内容!
絶対におさえておきたいif文の書き方4パターン
上で説明したif文で判断できる条件を使ってif文を書いていくんですが、if文と言っても色々な書き方があります。
これだけ覚えておけば大丈夫!というパターンを4つ厳選したので、このif文は書けるようになりましょう。
というかこのif文を使う機会はクソほど出てくるので、心配しなくても自然と使えるようになりますよw
パターン1:ifの条件が1つだけの場合
if(条件){
処理
}
パターン2:2つの条件を組み合わせたifが1つだけの場合
if(条件1 && 条件2){
処理
}
パターン3:ifの条件が1つだけ+それ以外を処理する場合
if(条件){
処理
}else{
処理
}
パターン4:ifの条件が2つ+それ以外を処理する場合
if(条件1){
処理
}else if(条件2){
処理
}else{
処理
}
プログラミングの幅が広がったことが分かるif文の例
if文の書き方が何となく分かった所で、実際にif文を使ったらどんなプログラムが作れるか例を作りました。
それがこれです。
これは、円を段々大きくしていって、円が画面の最大サイズになったら、最小サイズからやり直すというプログラムにしています。
この実行結果はGIF画像だからループしている訳じゃないですよ。
実際にプログラムを実行しても、同じようにループして円が動きます。
このプログラムの内容は↓の通りですね。
int iCircleSize = 20;
void setup(){
size(600,400);
}
void draw(){
final int WINDOW_SIZE_X = 600;
final int WINDOW_SIZE_Y = 400;
final int CIRCLE_SIZE_MIN = 20;
background(209.209,209);
ellipse(WINDOW_SIZE_X / 2,WINDOW_SIZE_Y / 2,iCircleSize,iCircleSize);
iCircleSize = iCircleSize + 2;
if(WINDOW_SIZE_X < iCircleSize){
iCircleSize = CIRCLE_SIZE_MIN;
}
}
どうですか?意外とすごい単純なプログラムじゃないですか?
たったこれだけのプログラムでも、if文があることでループする処理を作ることができました。
もし、if文が無かったら、円が1回大きくなってそれで終わりですからね。
この例ではif文でループができるようになりましたが、ループ以外にも不規則な動きを表現するのに必要だったり、色んなタイミングで必須になってきます。
このプログラムを自由自在に変更できるのが、if文の凄さなんです。
switchとは「どちらにしようかな」のこと
条件を判断できる文として、if文の他にswitchというものがあります。
このswitch文はイメージでいうと、まさに「どーちーらーにーしーよーうーかーな」です。(地域によって言い方が違うらしいですが、伝わるかな?)
複数ある内の値から、「これっ!」と狙い撃ちして条件を見極めていく書き方なんですね。
これだけだと伝わりにくいと思うので、実際にswitchの書き方を説明していきます。
switchの書き方1+1パターン
switchでは、1つの変数が何の値か?ということを判断して処理していきます。
この「何の値か?」を判断するのがcaseですね。
このcaseで、変数が1の時はこの処理、2の時はこの処理、といった具合に分けていきます。
それじゃあ具体的な書き方を見ていきましょう。
基本的な書き方
switch( 変数名 ){
case 値1:
処理
break;
case 値2:
処理
break;
default:
処理
break;
}
このdefaultというのが、if文でいうelseと同じ意味になります。
caseに書かれていない値だったら、defaultの処理をするということですね。
そして、実はcaseには値ではなく、計算式を書くことも可能ではあります。
可能ではあるんですが、一般的にはcaseには値だけで条件を指定するので、caseは値のみ書くと覚えておいた方がいいです。
計算式もできるということだけ参考にしてくださいね。
少し変則的だけど、よく使う書き方
switch( 変数名 ){
case 値1:
case 値2:
case 値3:
処理
break;
default:
処理
break;
}
switchでは処理の後にbreakを書かなくちゃいけないんですが、それぞれのcaseに同じ処理とbreakを何回も書くのは嫌ですよね。
なので、色んなcaseの処理をまとめたい時に↑のように書きます。
こうすることでどの値の時に何の処理を行うかも整理できて、他人が見ても分かりやすいプログラムになりますよ。
switchを一発で理解できる例
それじゃあ実際にswitchを使った例を見ていきましょう。
これが例となるプログラムを実行した結果です。
このプログラムは、if文の例で使っていた段々大きくなる円の処理を流用しています。
ただ、円のサイズを小さくしている代わりに、円の数を6個にしているんですね。
で、ここからがswitchの見所!
大きくなる円が6個あるうち、左から1番目、3番目、6番目の円だけ選んで緑色に変えています。
この色を塗る円を指定していくのが、まさにswitch!という処理ですね。
今回の1番目、3番目、6番目のように、不規則な指定をする時にswitchはとても便利ですよ。
プログラムを見ても、たったこれだけの処理なんです。
int iCircleSize = 20;
void setup(){
size(600,400);
}
void draw(){
final int WINDOW_SIZE_X = 600;
final int WINDOW_SIZE_Y = 400;
final int CIRCLE_SIZE_MAX = 100;
final int CIRCLE_SIZE_MIN = 20;
final int CIRCLE_NUM = 6;
int iCirclePosX;
background(209.209,209);
for(int i = 1; i <= CIRCLE_NUM; i++){
iCirclePosX = i * (WINDOW_SIZE_X / CIRCLE_NUM) - 50;
switch( i ){
case 1:
case 3:
case 6:
fill(0,255,0);
break;
default:
fill(255,255,255);
break;
}
ellipse(iCirclePosX,WINDOW_SIZE_Y / 2,iCircleSize,iCircleSize);
}
if(CIRCLE_SIZE_MAX < iCircleSize){
iCircleSize = CIRCLE_SIZE_MIN;
}else{
iCircleSize = iCircleSize + 1;
}
}
「ifとswitchはどう使い分けたらいいの?」
さて、ここまででifとswitchを紹介してきましたが、それぞれをどう使い分けたらいいか疑問に思っているんじゃないでしょうか?
正直に言うと、ifとswitchはどちらを使っても問題ありません。
ただ、個人的な意見があります。
「こう使ったらプログラム読みやすいよね?」っていう僕の意見です。
その僕の意見としては、変数をイコールで判断する条件文(1 == iTestのような条件)が複数あるなら、switchを使った方がいいと思います。
switchを使った方が文字数が少なく書けてスッキリするんですよね。
だからプログラム自体も読みやすくなる。という意見です。
なので、あなたがどちらで書いても気にしないというなら、この基準でifとswitchを使い分けてみてくださいね。
問題:以下のように、ウィンドウのギリギリを動き回る四角形を作れ
さぁ、if文の書き方を覚えた所で、今回のプログラムを作成してみましょうか!
if文が使えるようになったので、動きのあるプログラムを作れますよ~。
どうでしたか?
if文が使えるようになってプログラミングスキルが向上したことを感じましたか?
もし、あなた自身に実感が無かったとしても、今回の問題が解けるようになったのなら確実にプログラミングスキルが向上しています。
プログラム風に書くとこうですねw
if( true == if文が使えるようになった ){
プログラミングスキルが向上する
}
プログラミングを続けていく上で、if文は切っても切れないものになるので、体に使い方を染み込ませるぐらい使っていきましょうね!
次回のプログラミング講座では、プログラミングスクールでは教えてくれないコメントの使い方について書いていきます。
実はこの内容が、この講座で僕が一番伝えたかったことでもあります。
物凄く大事なことを書いているので、是非読んでくださいね。
⇒第8回:プログラミングスクールでは絶対に教えてくれないコメントの書き方
気軽にコメントどうぞ!