今日やること
前回は入出力、変数などをやりました。今回は制御文について説明していきます。
if文
if文とはある条件を満たしている時のみ、中に書かれた処理を行うものです。「もし~なら、ーする」ということです。コードは下のように書きます。
if(条件式){
条件成立時に行う処理。
}
条件成立時に行う処理が1行の場合は下のように書くこともできます。
if(条件式)条件成立時に行う処理。
if文の中にif文を書くこともできます。
if(条件式A){
if(条件式B){
条件A,B両方とも成立時に行う処理。
}
}
このように制御分を何重にもできる使用はif文以外のものにも言えます。
また、条件を満たさなかった時、何かしらの処理を行いたいときはelseを使って以下のように書きます。
if(条件式){
条件成立時に行う処理。
}
else{
条件成立しなかった時に行う処理。
}
さらに、「条件Aを満たさなかった時、もし条件Bを満たすなら・・・」というコードを書きたいときはelse ifを使って下のように書くことができます。
if(条件式A){
条件成立時に行う処理。
}
else if(条件式B){
条件A成立しなかったかつ条件Bが成立した時に行う処理。
}
else if は複数個付けることができます。また、else if とelse は併用可能です。
条件文でよく使われる演算子
値の比較や、かつ、またはなどの演算を行うための記号を演算子といいます。+,-,*,/も演算子です。
演算子の種類によって、算術演算子や比較演算子などにグループ分けされています。
条件式で使用される演算子のうちいくつかを下に乗せます。もっと詳しく見たい人はネットで調べて下さい。
(比較演算子)
演算子 | 使用例 | 真となる条件 |
---|---|---|
== | a==b | aとbが同じなら |
< | a<b | aがbより小さいなら |
<= | a<=b | aがb以下なら |
> | a>b | aがbより大きいなら |
>= | a>=b | aがb以上なら |
(論理演算子)
演算子 | 使用例 | 真となる条件 |
---|---|---|
&& | A&&B | 条件Aと条件Bを満たしているなら |
|| | A||B | 条件Aまたは条件Bを満たしているなら |
! | !A | 条件Aを満たしていないなら |
switch文
任天堂スイッチを持っていますか?僕は持っています。
さて、switch文は「ある変数がこれなら~、あれなら~」というように変数の中身によって、処理を決める文です。
if(~),else if(~),else if(~).....のようなものです。下のように書きます。
switch(変数){
case a:
変数の中身がaの時の処理;
break;
case b:
変数の中身がaの時の処理;
break;
default:
aでもbでもないときの処理;
break;
}
caseはいくらでも書くことできます。
for文
for分を使うとN回のループ(繰り返し)が簡単に書けます。
int i;
for(i=0;i<N;i++){
何かしらの処理
}
cでは,c++のようにfor文の始めで変数を宣言できないことに注意が必要です。
上のコードを用いてfor文の使用を詳しく説明すると、まず「i=0」でiが初期化されます。その後、「i<N」でiがNより小さいなら中身の処理が実行されます。実行されたあと、「i++」でiの値が1増えます。その後、また「i<N」でiがNより小さいなら中身の処理が実行されます。このように繰り替えし、「i<N」の判定で偽すなわちiがN以上になればループが終了するようになっているのです。なので、[logN]回実行したい場合は「for(i=0;i<;Ni++)」を「for(i=2;i<=N;i*=2)」に変えるなど、必要に応じて式を変えることで様々な繰り返し処理行うことができます。
さて、このfor文を使うことで配列の扱いが楽になります。例えば、配列のi番目の要素を値iに書き換えたい場合、以下のように書けばいいのです。
int i;
int array[100];
for(i=0;i<100;i++){
array[i]=i;
}
また、ループを強制的抜け出したいときはbreakを、今回のループの処理を中断し、そのままループを続けたい場合はcontinueを使います。
while文
while文はある条件を満たしている間ずっと繰り返し行う文です。以下のように書きます。
while(条件式){
何かしらの処理
}
forと同様break,continueが使えます。
条件式を1とすることで、無限にループを行うことが可能です。無限ループを使う場合はどこかでbreakをすることを忘れ内容に気を付けましょう。
do-while文
do-while文は始めは条件に関係なく中の処理を行い、その後は条件を満たしている間ずっと繰り返し行う文です。以下のように書きます。
do{
何かしらの処理
}while(条件式);
forと同様break,continueが使えます。
練習しよう
練習として以下の問題を解きましょう。
1. 1つ整数を入力しその整数が、10以下ならLOW,11から20ならMIDDLE,21以上ならHIGHと出力するようなプログラムをif,else,else ifを使って書け。
2. 1つ整数を入力しその整数が、1ならLOW,2ならMIDDLE,3ならHIGHと出力するようなプログラムをswitch文を使って書け。
3. 1から100までの整数の総和をfor文を用いて求めよ。
4. 整数の値を入力しそれをaとする。1回のループでaを2倍し、aが10000を超えるまでループを続け,ループ後のaの値を出力せよ。while文を使うこと。
5. 整数の値を入力しそれをaとする。1回のループでaを2倍し、aが10000を超えるまでループを続け,ループ後のaの値を出力せよ。for文を使うこと。
ただし、for文の中(中括弧内)に処理を書いてはならない。
6. 第1項から題70項までのフィボナッチ数列を求めよ。
7. C - ////
最後に
お疲れ様でした。
途中から説明が雑で分かりにくかったかもしれませんが、大切なことなので、制御文は早めにがんばって覚えましょう。