プログラミング2 レポート3 055730H 新垣大志
[1]課題
講義資料を参考に、その範囲のJavaの基礎的な文法について教科書と対応させながら解説し、考察せよ。
[2]プログラムと実行結果
プログラム
public /*これもコメントです*/ class Test01 { // Test01.java public static void main(String args[]) { // mainの記述 System.out.println("コメント"); 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() { System.out.println("My first Java."); // 文字列出力する } public static void smp1() { System.out.print("AAAAA"); // printとprintlnのちがいのテスト、および System.out.print("BBBBB¥nCCCCC¥n"); // ¥nによる改行のテスト System.out.println("DDDDD"); System.out.println("EEEEE¥nFFFFF¥n¥nGGGGG"); } public static void smp2() { int a, b, sum; // 3つの整数型変数の宣言 a = 100; b = 200; sum = a + b; System.out.print("a="); // "で囲まれているので文字列a=として表示 System.out.println(a); // 数値だけ出力 System.out.println("b=" + b); // +は連結演算子、2つの文字列を連結する。 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++) // for文で5回ループする 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) // if文で条件をだす 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以上です
~考察~
コメント文について
コメントとは自分自身(またはほかのプログラマ)のためのソースコード内に書き込むメモのことである。
コメントとしてかかれた文章は、プログラムに影響をあたえず、コンパイラはコメントを無視してコンパイルする。
プログラマ自身がそのプログラムを理解しやすいようにコメントをかくとよい。
コメントには3つの種類がある。
「//」単一行コメント //で始まり、それから行末までをコメントとして認識する。
「/* */」複数行コメント /*で始まり、*/で終わる。中に書き込まれた文をコメントとして認識する。
「/**」「*/」
ドキュメンテーションコメント
/**で始まり、*/で終わる。このドキュメンテーションコメントはjavadocという
ツールをつかい、コメントを抜き出すことができる。
コメント文をつかうときに注意すること
コメントのなかにコメントをいれることはできない。
メソッドや変数名の間にコメントをいれることはできない。
for文とif文
forをつかって命令を繰り返し実行することができる。一般的な形式は
for(a;b;c) statement; となる。
statementにかかれた命令文を繰り返す。
複数の命令文からなる場合、ステートメントをブロックで囲む。
このときaにはいるのが初期値、bは目標値、cはインクリメントまたはデクリメントを指定する。
「a」初期値 forループが開始するときに1回のみ実行される。ループを制御する変数の初期値を設定する。
「b」目標値 ループが繰り返されるたびに実行される。ここで設定した目標値と制御変数を比較して、
その結果が「真」であったらループを続行する。「偽」であったらループを停止して、for文の次のコードに移る。
「c」インクリメント
ループを制御する変数を一定量ずつ増やす(インクリメント)または減らす(デクリメント)。
ループの最後に実行され、ループが繰り返されるたびに実行される。
プログラム
public class Test02 { // Test02.java public static void main(String args[]) { char ch; // 文字を格納する boolean bdt; // 真(true)または偽(false)のどちらかの値をもたせる int idt; // 整数値を格納する long ldt; // 整数値を格納する 最大範囲 float fdt; // 小数点数 double ddt; // 小数点数 最大精度 String ss; // 文字列を格納 final int CNST1 = 1234; // 上書きできない変数 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.4567F; // 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.4567 ddt = 123.456789012345 8進22 = 18 16進22 = 34 指数 = 56700.0 改行文字コード = 10 ss = AAAA BBBB CNST1 = 1234
~考察~
データ型
型 | 説明 | 範囲 |
---|---|---|
char | 16ビットのキャラクタデータ(文字) | 1つのUnicode文字 |
boolean | 真または偽 | |
byte | 8ビット符号付き整数 | -128~127 |
short | 16ビット符号付き整数 | -32768~32767 |
int | 32ビット符号付き整数 | -2147483648~2147483647 |
long | 64ビット符号付き整数 | -9223372036854775808~9223372036854775807 |
float | 32ビット符号付き小数点数 | |
double | 64ビット符号付き小数点数 |
public class Repo3_final { public static void main(String[] args) { int k = 8; // k = 3; // kの値を変更 System.out.println("k = " + k); // kの値を表示 } }このプログラムの実行結果は「k = 3」となるが、kをfinal定数とするつぎのプログラムは、
public class Repo3_final { public static void main(String[] args) { final int k = 8; // kをファイナル定数とする k = 3; System.out.println("k = "+ k); // kを表示 } }実行結果
Exception in thread "main" java.lang.Error: コンパイル問題が未解決です。 final のローカル変数 k を割り当てることができません。ブランクでなければならず、複合割り当てを使用することはできません。 at Repo3_final.main(Repo3_final.java:13)となってエラーになる。finalは1度設定した値を変更できない。
public class Test06 { // 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++) { //for文を用いたループ 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~考察~
演算子 | 説明 | 例 |
---|---|---|
+ | 加算 |
n+m= 7 |
- | 減算 |
n-m= 3 |
* | 乗算 |
n*m= 10 |
/ | 除算 |
n/m= 2 |
% | 剰余 |
n/m= 1 |
演算子 | 説明 | 例 |
---|---|---|
== | 等しい | i == i |
!= | 等しくない | i != i |
> | より大きい | i > j |
< | より小さい | i < j |
>= | より大きいか等しい | i >= j |
<= | より小さいか等しい | i <= j |
演算子 | 動作 | 説明 |
---|---|---|
& | 論理積 | 2つの項が真のときに結果が真になる |
| | 論理和 | 2つの項が偽のときに結果が偽になる |
^ | 排他的論理和 | 2つの項が異なるときに結果が真になる |
! | 否定 | 項の真偽が逆になる |
[3]反省と感想
今回のレポートでまとめたところは、C言語でもやった分野なので理解しやすかった。
htmlでのレポート作成も慣れてきたと感じた。しかし、他のひとのレポートは
もっと凝っている作りになっているので参考にしてよりいいレポートにしたい。
[4]参考文献
ジョゼフ・オニール 著 「独習Java 第3版」