複雑な処理とブロックの階層

第4回:条件分岐と繰り返し(2)
プログラミングII
2007年10月16日
本日の講義内容


条件分岐
複雑な判定条件と論理演算
ブロックの階層構造
if – else と switch - case
繰り返し
for, do – while, break, continue
多重ループ
制御構造
条件分岐
if else switch case default
 ループ処理
for while do break continue

復習) 論理演算 論理和 – ||






いずれかが true ならば true
true || true -- true
true || false – true
false || true – true
false || false – false
( 10 > 100 || 10 < 100 )
復習) 論理演算 論理積 -- &&






いずれの値も true の時のみ true
true && true – true
true && false – false
false && true – false
false && false – false
( 10 > 100 && 10 < 100 )
Javaのプログラムの処理の原則
特別な指定がなければ上から下へ順に
 条件分岐 – 2つ以上の処理から1つを選
択して実行する
 繰り返し – ある処理を何回か繰り返す
*以上の3つのルールを組み合わせて実現
(「構造化プログラミング」の考え方)

条件分岐 – if と else
if( x > 100 ) {
System.out.println( “Big” );
}
else {
System.out.println( “Small” );
}
// 実行されるのは2つのうちのどちらか
3つ以上の処理から選択
if( x > 100 ) {
System.out.println( “Too big” );
}
else if( 0 <= x ) {
System.out.println( “OK” );
}
else {
System.out.println( “Too small” );
}
else がない例
if( x > 100 ) {
System.out.println( “Too big” );
}
:
:
// x <=100 なら何もしないで次の処理へ
switch – case による判定
int x ;
switch( x ) {
case 1: word = “One”;
break;
case 2: word = “Two”;
break;
default: word = “”;
}
switch – case による判定




switch( x ) {
x は 整数値(int など)もしくは文字(char)
case 1 : -- 値が1の場合の処理
break ; -- 「switch のブロックを抜ける」
(各 case ごとの処理の終わり)
default : -- case に指定された以外の値
繰り返し – whileのループ(1)
while( x < 100 ) {
:
:
}
// 条件式が正しい限り同じ処理を繰り返す
繰り返し – whileのループ(2)
int count = 1;
while( count <= 10 ) {
System.out.println( count );
count ++;
}
// count の値を 1 から 10 まで10回表示
do – while のループ
int x;
do {
x = Math.random();
System.out.println( x );
} while( x < 0.5 ) ;
*判定の前に処理を置くことができる
乱数の利用と Math クラス


Mathクラス – Javaの標準クラスライブラリ
(System, Stringなどと同じ仲間)
Mathクラスの働き
数学の計算の機能を提供
円周率πの値、
平方根の計算、三角関数の計算
乱数の発生
Mathクラスの random()メソッド



0.0 ~ 0.999999… の間の乱数を発生
値は double 型のデータに
使用例)
double d = Math.random();
// d には乱数値が
if( d > 0.5 ) {
:
:
for のループ
for( int i=0; i<10; i++ ) {
:
}
同じ内容のループ(書き換え可能)
int i=0;
while( i<10 ) {
i++;
}
二重ループ
for( int i=1; i<=9; i++ ) {
for( int j=1; j<=9; j++) {
System.out.println( i+j );
}
}
*9X9で81回の処理!