PROGRAMING2 report#3



課題 講義資料を参考にJavaの基礎的な文法について、教科書と対応させながら解説・考察せよ。


●ソースプログラム

/* Program : Test01.java Student_ID : 055767G Author : Kouyou Yoshida Date : 051114(Mon) Comments : report#3 */ public /*これもコメントです*/ class Test01 { // 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以上です


●考察



○1番目のサンプルプログラムの形を見たとき、C言語でやった分割してコンパイルする方法を思い出して、Javaでもそのようなプログラムにできないかと考えた。Javaにはパッケージという機能があるようなので、3番目のサンプルプログラムをパッケージを使ったプログラムにしてみた。


パッケージ:report3_c

package report3_c;

public class C_1 {
    public 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); 
      }

}
package report3_c;

public class C_2 {

public 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ではない");
        }
    }
}

package report3_c;

public class C_3 {

public 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、ではない");
        }
    }
}

package report3_c;

public class C_4 {

 public 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);
	            }
	        }
}



○上の4つのクラスを、report3_cというパッケージに格納した。クラスを格納するには、ソースプログラムの最初に、packege (パッケージ名);を入力すればよい。
○次に、このパッケージにアクセスして計算結果などを出力するメインプログラムを作る。


Test06.java

import report3_c.*; public class Test06 { // Test06.java public static void main(String args[]) { System.out.println("算術演算子"); C_1 A = new C_1(); A.comp1(); System.out.println("¥n¥n関係演算子"); C_2 B = new C_2(); B.comp2(); System.out.println("¥n¥n論理演算子"); C_3 C = new C_3(); C.comp3(); System.out.println("¥n¥nインクリメント/デクリメント演算子"); C_4 D = new C_4(); D.comp4(); } }



実行結果

算術演算子 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 ¥n¥n関係演算子 --------1 2未満 3ではない --------2 3ではない --------3 3である --------4 4以上 3ではない --------5 4以上 3ではない ¥n¥n論理演算子 --------1 2未満または4より大 --------2 2以上かつ4以下 1または3、ではない --------3 2以上かつ4以下 --------4 2以上かつ4以下 1または3、ではない --------5 2未満または4より大 1または3、ではない ¥n¥nインクリメント/デクリメント演算子 100 200 300 100 200 300 n=4 n=3 n=2 n=1 n=0


○パッケージについての考察

  • パッケージとは、クラスやインターフェイスの集まりのことである。Javaのクラスライブラリは、パッケージで体系化されている。その一部を下に示す。

  • パッケージ説明 java.appletアプレットを作成するためのクラス群 java.awtグラフィカルユーザーインターフェイスを作成するAWT(Abstract Window Toolkit)のクラス群。 java.awt.eventAWTコンポーネントからのイベントを処理するクラス群 java.io入出力動作を扱うクラス群 java.langjavaの中核的な機能を提供するクラス群 java.netネットワーク機能を提供するクラス群 java.utilユーティリティ機能を提供するクラス群

  • パッケージには、importステートメントを用いて、パッケージに含まれるクラスにアクセスすることができる。

  • Javaの最も重要なクラス群を格納した、java.langパッケージは、Javaコンパイラによって自動的にソースファイルに取り込まれ、importの必要が無い。

  • 今まで何も考えずに入力してきたpublic だが、これは修飾子といい、publicにはほかのクラスから変数にアクセスできるようにする機能がある。パッケージ内のクラスにこの修飾子を使わないとコンパイル時にエラーになる。


  • ○プログラムについての考察

  • Test06では、importでアクセスしたクラスをオブジェクトとして使うために、new演算子を使い、オブジェクトを作成している。

  • 基本データ型について
     型 
     説明 
     格納できるデータ 
     char 
    16ビット(2バイト)Unicodeキャラクタデータ1つのUnicode文字
     boolean 
    真偽値true(真)もしくはfalse(偽)
     byte 
    8ビット(1バイト)符号付き整数-2の7乗〜2の7乗-1(-128〜127)
     short 
    16ビット(2バイト)符号付き整数-2の15乗〜2の15乗-1(-32768〜32767)
     int 
    32ビット(4バイト)符号付き整数-2の31乗〜2の31乗-1(-2147483648〜2147483647)
     long 
    64ビット(8バイト)符号付き整数-2の63乗〜2の63乗-1(-9223372036854775808〜9223372036854775807)
     float 
    32ビット(4バイト)符号付き浮動小数点数
     double 
    64ビット(8バイト)符号付き浮動小数点数

  • javaでは、型の異なるデータ型を1つの式で組み合わせて使うことができる。

  • 基本的な演算は、C言語とあまり変わらない。



  • 反省、感想


     サンプルプログラムでいろいろわかりやすく説明などがされているので、逆に考察が難しかったです。C言語とはちがうことをやろうとしてパッケージなどについても触れましたが、課題の趣旨からずれていった気もします…
     前回よりはマシになったとは思いますがまだまだHTMLが使いこなせず、見にくい点もあるので、レポートごとに改善したいです。

    参考文献


    独習Java第3版