if(class==5 || class==6){
printf("機械工学科の学生です.");
if(class==5)
printf("教室は0609です.");
else if(class==6)
printf("教室は0603です.");
}
if(式) 文;
else
if(式) 文;
else
if(式) 文;
....
else 文;
このように,if...elseのはしごか階段のようになっているので,if-else-if ladderとか,if-else-if staircaseなどと呼ばれる.式は上から下に順に実行(評価)されていく. if(式) 文;
else if(式) 文;
else if(式) 文;
else if(式) 文;
...
else 文;
for(初期設定部; 条件判定部; インクリメント部)文;であったが,それぞれの部分には対応する式を書いてもいいし,じつは何も書かなくてもエラーにならない.各部は自由に使うことができる.
int i=0; // 初期化を外でしても良い.
for( ; ; ){ // 各部に何も書かなくてもエラーにはならない.
if(i++>10) ...; // 別の場所で判定やインクリメントをしても良い.
}
この様に書式に大きな柔軟性のある forループであるが,forのカッコの中にまとめて書くことで諸条件がわかりやすく,見通しやすくなるという面もあるため,後々のデバッグの便を考えて慣例に則った(for(int i=0; i<n; i++){ のような)書き方をすることを勧める.while(式) 文;whileループは,式が真である間,文の実行が繰り返され,式が偽になると終了する.式の値は,文が実行される前に評価される. つまり,最初から式が偽であれば,文は一度も実行されないことになる.
do {
文;
} while(式);
for(int line=0; line<10; line++){
for(int column=0; column<line+1; column++){
printf("@");
}
printf("\n");
}
for(int i=0; i<1000000; i++){
printf("%d\n",i);
if(i>10) break; // i が 10より大きくなると,
}
// ループを抜けだしてここまでジャンプ.
for(int i=0; i<=100; i++){
if(i%10) continue; // 10で割り切れない時に真となり,
printf("%d\n",i);
} // } の内側までスキップしてきて,またforの次の回に続く.
switch(変数){ // この変数に置けるのは整数(int, char)のみ.
case 定数1:// 変数が定数1なら,ここから次のbreakまで実行される.
文;
break;
case 定数2:// 変数が定数2なら,ここから次のbreakまで実行される.
文;
break;
case ...: // caseは何個でも入れることができる.
...
default: // 上の条件にどれも当てはまらない場合,ここが実行される.
文;
break;
}
switch(x){
case 1:
case 2:
case 3:
文1; // x=1,2,3の時に実行される
break;
case 4:
文a; // x=4の時のみ実行される
case 5:
文b; // x=4,5の時に実行される
case 6:
文2; // x=4,5,6の時に実行される
break;
}
以下の問それぞれに対応するプログラムを作成しなさい.
10(A+3)-(7-3A) = 1622
【ヒント】式変形をせずにそのままプログラムします. Aの値を変えながら計算し,右辺の数値と等しいかどうかを調べます(=力技)
【ヒント】Aの範囲は±10,000にあるとして計算して良いです.
【ヒント】手計算でAを求めて,プログラムが合っているかどうか確認しよう.
【ヒント】数値が入力される度に0かどうか調べる.
【ヒント】0でなければ①合計を求め,②入力回数を数える.
【ヒント】0だったら,①/②を計算し,表示して終わる.
【ヒント】3の倍数とは「3で割った余りが0になる数字」です。



【ヒント】Scratchにはbreak文に相当するコマンドが無いようなので、 ここでは「このスクリプトを止める」というコマンドを用いています。 C言語の場合は、break文を用いてループから脱出してから、ループの外で処理をした方が良いと思います。


【ヒント】コンパイル時に,bcc32 (g++) -DDEBUG q4-2.cpp などとするとデバッグオプションが生きます.

