■Report3

■課題

 サンプルプログラム
 

 ・ コメント cmnt()
 ・文字列出力 smp1()
 ・ 変数宣言と数値出力 smp2()
 ・繰り返し処理 smp3()
 ・ 条件処理 smp4()

●ソースプログラムー1

public /*これもコメントです*/ class repo3_1 { // Test01.java
	public static void main(String args[]) { // mainの記述
		System.out.println("コメント");
		cmnt(); // cmntスレッドの呼び出し
		System.out.println("\n\n文字列出力");
		smp1();
		System.out.println("\n\n変数宣言と数値出力");
		smp2();
		System.out.println("\n\n繰り返し処理");
		smp3();
		System.out.println("\n\n条件処理");
		smp4();
	}
 
 public static void cmnt() { // mainの記述 		
 		System.out.println("My first Java."); // 文字列出力する   	
	}  
 public static void smp1() {   		
		System.out.print("AAAAA");   		
		System.out.print("BBBBB\nCCCCC\n");   		
		System.out.println("DDDDD");   		
		System.out.println("EEEEE\nFFFFF\n\nGGGGG");   	
	}
 
 
 public static void smp2() {   		
		int a, b, sum;      		
		a = 100;   		
		b = 200;   		
		sum = a + b;   		
		System.out.print("a="); // 文字列だけ出力   		
		System.out.println(a); // 数値だけ出力   		
		System.out.println("b=" + b); // 文字列と数値を出力   		
		System.out.println("a+b=" + sum); // 結果を出力   		
		System.out.println("a+b=" + (a+b)); // 直接計算させる   	
	}
 
 
 public static void smp3() {   		
		int i, sum;      		
		for (i=1; i<=5; i++)   			
			System.out.println("i=" + i);
		sum = 0;
		for (i=1; i<=5; i++) {
			sum = sum + i;
		System.out.println("sum=" + sum);
		}
	}
 
 public static void smp4() {   		
		int i;
		for (i=1; i<=5; i++) {
 			System.out.print("i=" + i);
  		if (i < 3)
  			System.out.println(" 3未満です");
  		else
  			System.out.println(" 3以上です");
		}
 }
 
}

実行結果


コメント
My first Java.

文字列出力
AAAAABBBBB
CCCCC
DDDDD
EEEEE
FFFFF

GGGGG

変数宣言と数値出力
a=100
b=200
a+b=300
a+b=300

繰り返し処理
i=1
i=2
i=3
i=4
i=5
sum=1
sum=3
sum=6
sum=10
sum=15

条件処理
i=1 3未満です
i=2 3未満です
i=3 3以上です
i=4 3以上です
i=5 3以上です

●上記プログラムの考察

◎コメントについて   教:P28

 1. 単一行コメント
  これは「//」で始まり、行末尾までをコメントとして解釈される。

 2. 複数行コメント
  これはC言語と同じように「/*」で始まり「*/」で終わる。

 3.ドキュメンテーションコメント
  これは「/**」で始まり「*/」で終わる。このコメントはツールを使って
  ソースファイルからコメントを抜き出し、そのプログラムのマニュアルを自動的に
  作成できるという利点がある。
 

繰り返し処理  教:P90
 for文は変数が1から(i=1)、1ずつ増加して(i++)、5以下になるまで(i<=5)
 System.out.printlnを繰り返し実行。

◎条件処理  教:P84
 もしiの値が3未満なら(if (i < 3))System.out.println(" 3未満です");を実行。
 そうでないときは(else) System.out.println(" 3以上です");を実行する。

◎よくあるエラー

 1. '{' と '}' の対応
 2. '(' と ')' の対応
 3. "(2重引用符) の対応
 4. /* と */ の対応
 5. 文末の ';' を忘れている
 6. 大文字と小文字の違い
 7. メインクラス名とファイル名が不一致

●ソースプログラム−2

public class repo3_2 { // Test02.java
	public static void main(String args[]) {
		char ch;
		boolean bdt;
		int idt;
		long ldt;
		float fdt;
		double ddt;
		String ss;
		final int CNST1 = 1234; // final定数

ch = 'A'; // 半角文字 System.out.println("文字=" + ch + " code=" + (int)ch); ch = '亜'; // 全角文字 System.out.println("文字=" + ch + " code=" + (int)ch);

bdt = true; System.out.println("bdt = " + bdt);

idt = 1234567890; System.out.println("idt = " + idt);

ldt = 1234567890123456789L; // Lはlong値を示す System.out.println("ldt = " + ldt);

fdt = 123.456F; // Fはfloat値を示す System.out.println("fdt = " + fdt);

ddt = 123.456789012345; System.out.println("ddt = " + ddt);

idt = 022; // 8進数の22 System.out.println("8進22 = " + idt);

idt = 0x22; // 16進数の22 System.out.println("16進22 = " + idt);

ddt = 5.67e4; // 指数表現の56700 System.out.println("指数 = " + ddt);

 ch = '\n'; // エスケープ文字
 System.out.println("改行文字コード = " + (int)ch);
 ss = "AAAA\tBBBB"; // 文字列定数(エスケープ文字を含む)
 System.out.println("ss = " + ss);
	System.out.println("CNST1 = " + CNST1);
	}
}

実行結果

文字=A code=65
文字=亜 code=20124
bdt = true
idt = 1234567890
ldt = 1234567890123456789
fdt = 123.456
ddt = 123.456789012345
8進22 = 18
16進22 = 34
指数 = 56700.0
改行文字コード = 10
ss = AAAA BBBB
CNST1 = 1234

●上記プログラムの考察

◎変数宣言と数値の出力について   教:P12

  javaでは、変数を使用する前に宣言しなければならない。 宣言をすることで、
  使用する変数の型をコンパイラにしらせている為。
  javaでは次のような8種類の基本的な型がサポートされている。

説明
char
16ビットUnicodeキャラクタデータ
boolean
真偽値
byte
8ビット符号付き整数
short
16ビット符号付き整数
int
32ビット符号付き整数
long
64ビット符号付き整数
float
32ビット符号付き浮動小数点
double
64ビット符号付き浮動小数点

 

●ソースプログラム−3

public class repo3_3 { // Test06.java
	public static void main(String args[]) {
		System.out.println("算術演算子");
		comp1();
		System.out.println("\n\n関係演算子");
		comp2();
		System.out.println("\n\n論理演算子");
		comp3();
		System.out.println("\n\nインクリメント/デクリメント演算子");
		comp4();
	}

public static void comp1() { int a, b, c; double f, g, h;

a = 100; System.out.println("a = " + a); b = 30; System.out.println("b = " + b); c = a + b; System.out.println("a+b = " + c); // 加算 c = a - b; System.out.println("a-b = " + c); // 減算 c = a * b; System.out.println("a*b = " + c); // 乗算 c = a / b; System.out.println("a/b = " + c); // 整数除算 c = a % b; System.out.println("a%b = " + c); // 整数剰余

f = 90.0; System.out.println("f = " + f); g = 40.0; System.out.println("g = " + g); h = f / g; System.out.println("f/g = " + f/g); // 浮動小数点数除算 }

public static void comp2() { int a; for (a=1; a<=5; a++) { System.out.println("--------" + a); if (a < 2) System.out.println("2未満"); if (a >= 4) System.out.println("4以上"); if (a == 3) System.out.println("3である"); if (a != 3) System.out.println("3ではない"); } }

public static void comp3() { int a;

for (a=1; a<=5; a++) { System.out.println("--------" + a); if (a>=2 && a<=4) System.out.println("2以上かつ4以下"); if (a<2 || a>4) System.out.println("2未満または4より大"); if (!(a==1 || a==3)) System.out.println("1または3、ではない"); } }

public static void comp4() { int dt[] = {100, 200, 300}; // 配列を確保 int n;

// ++演算子を使わないときの記述 n = 0; System.out.println(dt[n]); // dt[0]を表示 n = n +1; System.out.println(dt[n]); // dt[1]を表示 n = n +1; System.out.println(dt[n]); // dt[2]を表示

	// ++演算子を使ったときの記述
	n = 0;
	System.out.println(dt[n++]); // dt[0]を表示
	System.out.println(dt[n++]); // dt[1]を表示
	System.out.println(dt[n++]); // dt[2]を表示	 

      // --演算子を使う
		n = 5;
		while (--n >= 0) { // n回繰り返す
		System.out.println("n=" + n);
		}
	}

実行結果

算術演算子
a = 100
b = 30
a+b = 130
a-b = 70
a*b = 3000
a/b = 3
a%b = 10
f = 90.0
g = 40.0
f/g = 2.25

関係演算子
--------1
2未満
3ではない
--------2
3ではない
--------3
3である
--------4
4以上
3ではない
--------5
4以上
3ではない

論理演算子
--------1
2未満または4より大
--------2
2以上かつ4以下
1または3、ではない
--------3
2以上かつ4以下
--------4
2以上かつ4以下
1または3、ではない
--------5
2未満または4より大
1または3、ではない

インクリメント/デクリメント演算子
100
200
300
100
200
300
n=4
n=3
n=2
n=1
n=0


●上記プログラムの考察
 

◎算術演算子

演算子説明 演算子説明
 +加算 +=加算代入
 - 減算 -=減算代入
 *乗算 *=乗算代入
 /除算 /=除算代入
 %剰余 %=剰余代入

◎関係演算子
  
演算子意味
==等しい
!=等しくない
>より大きい
<より小さい
>=以上
<=以下

◎論理演算子

種類演算子意味説明
ビット論理演算子 &論理積AND。2つの項が真のときにだけ結果が真とな る論理演算
| 論理和OR。2つの項が偽のときにだけ結果が偽とな る論理演算
^ 排他的論理和XOR。2つの項が異なるときにだけ結果 が真となる論理演算
! 否定NOT。項の真偽が逆になる論理演算
~ 補数ビットごとの補数
ビットシフト演算子 >> 右シフト符号拡張子をつけて右にシフト
>>> 右シフト0を充填して右にシフト
<< 左シフト0を充填して左にシフト
ビット代入演算子 = 論理積(AND)と代入
|= 論理和(OR)と代入
^= 排他的論理和(XOR)と代入
>>= 符号拡張子付きの右シフトと代入
>>>= ゼロ充填ありの右シフトと代入
<<= ゼロ充填ありの左シフトと代入
ショートカット演算子 && 倫理積(ショートカット) &とは少し異なりまず左のオペランドが評価され、それで結果がわかるときには右辺は評価しない。
|| 論理和(ショートカット) |とは少し異なりまず左のオペラント(左辺)が評価され、それで結果がわかるときには右辺は評価しない。

■感想・反省

今回は、見やすいように表を中心に作りました。

全ての人に分かりやすく、理解しやすいように作ったつもりっす・・・

■参考文献

独習Java 第2版

しっかり学ぶ Java標準テキスト