10/13 Java プログラミング入門(2)


前回までの補足


前回の課題について

課題1

class Test {
  public static void main(String[] argv){
    System.out.println("Hello World");
    System.out.println("Hello Again");
  }
}
上のプログラム Test.java をコンパイル,実行してうまくいくのを確認した 上で,以下のような変更をした時,どのようになるか(コンパイル時に○○○ というエラーが出た,実行時に○○○というエラーが出た,実行できてこうい う出力が得られた)を書きなさい.エラー出力,実行結果などは,カット & ペー ストで入れるのが望ましい.なお,変更内容は学生証番号の下1桁によって, 変える.

この問題は,以下のような目的で出題している.

なお,最後の問題にあるように,文字列定数(「"」で囲まれた部分)中の「\n」 は「\」,「n」という2文字ではなく,改行文字1文字を表現する(「\」とい う文字を表現したい時は,「\\」と書く必要がある).このあたりは, Java Language Specification, 3.10.6 Escape Sequences for Character and String Literalsに定義されているが,今のところ必要なのは「\n」位.

課題2

自分のイニシャルを大きく表示するプログラムを書きなさい.ファイル名は MyName.java とすること.出力例は以下に示しますが,字の大きさ等は変更し て構いません.
TTTTTTT   TTTTTTT
   T         T
   T         T
   T         T
   T    ..   T
   T    ..   T

解答例

class MyName {
  public static void main(String[] args){
    System.out.println("TTTTTTT   TTTTTTT");
    System.out.println("   T         T");
    System.out.println("   T         T");
    System.out.println("   T         T");
    System.out.println("   T    ..   T");
    System.out.println("   T    ..   T");
  }
}

講評
大部分の人が正解していた.繰り返しなどを利用すればもっときれいに書け るのにという感想を持った人が多かった.たしかに,イニシャルによっては,

class MyName {
  public static void main(String[] args){
    int i;
    System.out.println("TTTTTTT   TTTTTTT");
    for(i=0;i<3;i++)
      System.out.println("   T         T");
    for(i=0;i<2;i++)
      System.out.println("   T    ..   T");
  }
}
のように書けることはあるが(行数は変わっていない),プログラムの読みやす さを考えると,元のものより劣る(なお上のプログラムの意味は今日の授業中 で説明する).

なお,Unixにはbannerコマンドというものがあって,

ktanaka@ux019> banner "T.T"
#######         #######
   #               #
   #               #
   #               #
   #      ###      #
   #      ###      #
   #      ###      #

のようになるが,このようなプログラムはより難しい問題である.

全体の講評


今回は課題が1つある.課題をこなしたら, lectures.g99.cp1-ktanaka-W-Wed-5 のニュースグループに投稿すること.
次へ進む