top
課題のソース・実行結果(コンパイラは全てjavac)と考察
Sorce of a Sorce of b Sorce of c Sorce of d
Sorce of e Sorce of f Sorce of g



                提出期限 ~2003年10月20日
                学籍番号 035735k
                学部学科 工学部情報工学科
                氏名   仲松 義嗣 




Sorce of a

File name: rep_a.java

01:public class rep_a { 02: public static void main(String[] args){ 03: System.out.println("Hello, Y.N's Home Page!"); ----- (1) 04: } 05:}

*rep_aの実行結果 % java rep_a Hello, Java World! % *Considerations  出力させるメッセージを"Hello Java World!"以外の文字にするプログラムです。 (1)の行は文字列 Hello, Y.N's Home Page を表示するメソッドです。

Sorce of b

File name: rep_b.java

01:public class rep_b { 02: public static void main(String[] args){ 03: int i; 04: for( i = 0; i <= 2; i++ ){ 05: System.out.println("Hello, Java World!"); 06: } 07: } 08:}

*rep_bの実行結果 % java rep_b Hello, Java World! Hello, Java World! Hello, Java World! % *Considerations 同じメッセージを3回、別々の行に出力させるプログラムです。 繰り返し同じ操作を行うので、for文を使ってみました。何となくCとにています。

Sorce of c

File name: rep_c.java

01:public class rep_c { 02: public static void main(String[] args) { 03: System.out.println("Hello,"); 04: System.out.println("Java World!"); 05: } 06:}

*rep_cの実行結果 % java rep_c Hello, Java World! % *Considerations 「Hello,」と「Java World!」を別々の行に出力させるプログラムです。 Cでは改行するために、\n が必要だったが、System.out.printlnでは改行する 操作を含んでいることが分かる。

Sorce of d

File name:rep_d.java

01:public class rep_d { 02: public static void main(String[] args) { 03: System.out.println("Hello,"); ----- (1) 04: System.out.println("Java World!"); ----- (2) 05: 06: System.out.print("Hello,"); ----- (3) 07: System.out.print("Java World!"); ----- (4) 08: } 09:}

*rep_dの実行結果 % java rep_d Hello, Java World! Hello,Java World!% *Considerations System.out.println(...)とSystem.out.print(...)の違いを調べるプログラムです。 (1)行と(2)行は rep_c.java と同じ操作を行っています。 (3)行と(4)行は(1)行と(2)行の System.out.println を System.out.print に変えています。実行結果より、 System.out.println は改行操作を含んでいるが、 System.out.print は含んでいないことが分かります。

Sorce of e

File name:rep_e.java

01:public class rep_e { 02: public static void main(String[] args) { 03: int i; 04: for( i = 0; i <= 2; i++ ){ 05: System.out.print("Hello, Java World!: "); 06: } 07: } 08:}

*rep_eの実行結果 % java rep_e Hello, Java World!: Hello, Java World!: Hello, Java World!: % *Considerations 同じメッセージを3回、同一行に出力させるプログラムです。 rep_b.javaとrep_d.javaを組み合わせることで実現できると考えました。 つまり、for文の中で System.out.printメソッドを使っています。

Sorce of f

File name:rep_f.java

01:public class rep_f { 02: public static void main(String[] args) { 03: System.out.println(" * "); 04: System.out.println(" *** "); 05: System.out.println("*****"); 06: System.out.println(" *** "); 07: System.out.println(" * "); 08: } 09:}

*rep_fの実行結果 % java rep_f * *** ***** *** * % *Considerations 菱形模様(「*」を用いる)を出力させるプログラムです。 まず初めは、単純に改行操作を含む System.out.printlnメソッドを使って プログラムを書いてみました。rep_gではこれをfor文を使って書いてみました。

Sorce of g

File name:rep_g.java

01:public class rep_g { 02: public static void main(String[] args) { 03: int n, i, j, k; 04: n = 5; 05: 06: for(i = 1; i <= n; i++){ ----- (1) 07: for(k = n-1; k >= i-1 ; k--){ ----- (2) 08: System.out.print(" "); 09: } 10: for(j = 1; j <= 2*i-1; j++){ ----- (3) 11: System.out.print("*"); 12: } 13: System.out.println(" "); 14: } 15: } 16:}

*rep_gの実行結果 % java rep_g * *** ***** ******* ********* % *Considerations (1)のfor文が行を制御します。さらに、(2)のfor文が空白を(3)のfor文が*を 制御するものです。 (1):1行目から始まりn行目まで行数をインクリメントしています。 (2):-の数{ fig-1参照 }をkを制御変数として表しました。 (3):*の数をiを制御変数として 2*i-1 として表しました。 {fig-1} ----*---- ---***--- --*****-- -*******- *********

Considertions of compiler and interpreter

 "高級言語(C,Java...)で書かれたコンピュータへの指示を、文法を含めて機 械語に翻訳するプログラム"にコンパイラとインタプリタがあるそうです。  では、コンパイラとインタプリタの違いは何でしょう。  コンパイラはソースコードを「まとめて」翻訳し、その後「一気に」実行します(C,C++...)。 また、インタプリタはソースコードを「少しずつ」翻訳し、「少しずつ」実行します(BASIC...)。  といった違いがあるそうです。すると、それぞれ次のような長所と短所が考えられます。            コンパイラ        インタプリタ --------------------------------------------------------------------------- 長所          実行が速い         実行が遅い --------------------------------------------------------------------------- 短所    間違いの箇所を見つけにくい  間違いの箇所を見つけやすい       ----------------------------------------------------------------------------  ここでJavaはどちらの方式を採用しているのかというと、両方採用している そうです(!!!)。Java言語は、まずコンパイラにより中間的な言語(byte code) に変換され、その言語がインタプリタにより機械語に変換されて実行されます。 この2段階の変換により、Javaのいろいろな機能が実現されているそうです。 たぶんきっと、その機能の1つにエラーのときの詳しい指摘があるのだと思い ます。




Comments

 後期最初のプログラミングのレポートは、それなりに難しかったです。 rep_g.javaのアルゴリズムなんかはC言語のときに勉強したパスカルの三角形 を参考にしました。つまり、アルゴリズムは文法と違って他の言語を参考に できるということを実感しました。  プログラミング2の講義では、Javaの文法や典型的なアルゴリズムの表し方 を勉強できたらいいなと思っています。よろしくお願いします。

Reference of books

基礎Java Java 重要クラス・リファレンス

top
mail