プログラムの制御構造 選択・繰り返し

プログラムの制御構造
選択・繰り返し
変数と代入演算子
int a;
①
a=10;
②
a
?
①
a
10
②
式の定義・変数の利用(注意)
• 文は必ず‘;’で終わる
• 文の評価(計算)は上から下、左から右
• 式の中(代入文の左辺以外)に変数が現れると保
持値に置き換わる
– 複代入文について
• 代入‘=’は代入演算であって等号を意味しない
int a,b;
a=10;
b=a;
b=3;
/* aの値は変化しない!*/
変わった演算子
• 前置増・減演算子 ++,--
• 後置増・減演算子 ++,--
• 複代入演算子 +=,/=,*=,-=など
• 条件演算子 式1? 式2 : 式3
– 式1がゼロでなければ式2の値、そうでなければ
式3の値
C言語での論理演算
A N D (  ) &&

O R (  ) ||  結果は常に 0 か 1

NOT ( )  ! 
真理値表 T ( 真) F ( 偽)
A && B
A || B
A\B T
F
A\B T
F
T
T
F
T
T
T
F
F
F
F
T
F
プログラムの制御構造
• 選択
– if文
条件によって変わる変数の値が実数区間のよう
に無限にある場合
b
a
x
– switch文
条件によって変わる変数の値が高々有限個の場
合
x
if文
if文
if( 制御式)
文1
 el s e



 文2 
制御式の値が0以外の値なら文1
を実行。else 文2がある場合は、
制御式の値が0以外なら文1を
実行。そうでなければ、文2を実行
制御式は整数の値になる式であれば
なんでもよいが、一般には関係演算子
と論理式の組み合わせからなる。
関係演算子
関係演算子
式1  式2  式1 >= 式2


式1  式2  式1 <= 式2 

式1 < 式2  式1 < 式2
 結果は全て0 か1
式1  式2  式1 > 式2


式1  式2  式1 == 式2

NOT( 式1  式2 )  式1 ! = 式2

文の定義
文=式; {|| 式1 ; ・ ・ ・ ; 式n}
複合文( ブロ ッ ク )
ブロ ッ ク を 使う 場合は字下げ
( イ ン デン テーショ ン ) を し て、
機能ブロ ッ ク の範囲を 明確に!
switch文
switch文
swtch(式 ) {
式nと 式n+1と も に
case 定数式1 : 文1
br eak;
文nを 実行し たい場合には
case 定数式2 : 文2
br eak;
case 式n
:
case 式n+1 : 文n
br eak;
case 定数式n : 文n
br e a k;
def aul t : 文
}
簡単な電卓:if文を使った場合
#include <stdio.h>
int main(void){
int x, y, ans;
char op;
scanf("%d%c%d",&x,&op,&y);
if(op=='+'){
ans = x+y;
}
else {
if(op=='-'){
ans = x-y;
}
else {
if(op=='*') {
ans = x*y;
}
else {
if(op=='/') {
ans = x/y;
}
else {
printf(“The operator is not
defined !\n");
return(0);
}
}
}
}
printf(“=%d\n”,ans);
}
簡単な電卓:switch文を使った例
#include <stdio.h>
int main(void){
int x, y, ans;
char op;
scanf("%d%c%d",&x,&op,&y);
switch(op) {
case '+': ans = x+y;
break;
case '-': ans = x-y;
break;
case '*': ans = x*y;
break;
case '/': ans = x/y;
break;
default: printf("The operator is not defined !\n");
return(0);
}
printf(“=%d\n”,ans);
}