練習1の解答例

編集:松田
練習1(プリントより)
練習1-1 複数のメッセージ
プログラムの中に、メッセージを表示させる命令
(System.out.println("...");)を追加せよ。
どこに追加すると正しくコンパイルできるか? 
実行した場合、メッセージはどのように表示されるか?

練習1-2 printlnとprint
上で変更したプログラムの中の、
System.out.println と書かれているものを
System.out.print に変更せよ。(lnがないことに注意!)
実行した場合、メッセージはどのように表示されるか?
System.out.println  と System.out.print の
働きの違いを説明せよ。

練習1-3 空のprintln
さらにSystem.out.println( );という行を追加してみよ。
実行した場合、メッセージはどのように表示されるか?

練習1-4 メッセージと計算
System.out.println(2+4); という行と
System.out.println("2+4");を追加して、実行せよ。
表示の違いから記号「"」(ダブルクオーテーション)の働きを
推測し、説明せよ。

練習1-5 改行・空白
プログラムにとって、改行や空白はどうような意味を持っているの
だろうか?  上の練習で作ったプログラムの適当な場所に改行や空白を
入れてコンパイル・実行し、どのような変化があるかを見てみよ。
特に、(1)単語の途中 (2) 単語と単語の間 (3) メッセージの途中
に改行や空白を入れた場合、取り除いた場合にどうなるか?

佐々木俊也さんによる解答例(ニュースグループより)
10月10日の練習問題をやってみました。

練習1-1
public static void main(String[] args) {
と(一つ目の)}の間ならば、
//のある行と同じ行をのぞいて正しく表示される。
順序はソースコードの順序と同じ。

練習1-2
Sysyem.out.printlnをSystem.out.printに変えると、改行されない。
表示が終わったあとのプロンプトも同じ行に表示される。
つまり、Sysyem.out.printlnは()内の表示を終えたあとに改行するが、
System.out.printは改行しない。

練習1-3
追加したところで改行される。

練習1-4
(2+4)では、計算結果の6が表示される。
("2+4")では、2+4がそのまま表示される。
ダブルクォーテーションで囲んだ部分は文字として扱われるが、
囲まない部分は数式として扱われる。
(応用)
日本語の文字列のダブルクォーテーションをはずすと、
エラーが起こる。
2+4を全角文字(2+4)に変えても同じようなエラーが起こる。

練習1-5
(1)単語の途中に改行や空白を入れると、別の単語として扱われる。
(2)単語と単語の間(もともと空白がはいっている部分)
に改行や空白を入れても、実行結果は変わらない。
ピリオドが入っているところでも同様である。
(3)メッセージの途中に改行を入れるとエラーが起こるが、
空白を入れると空白も含めて表示される。
(応用)
本来空白を入れるべきところを改行にしても実行結果は変わらない。
空白を削除するとエラーが起こる。
改行は削除しても変わらない。
また、かっこの前後に空白や改行を入れても実行結果は変わらない。
以上のことをまとめると、
1 単語の途中には改行や空白は含められない。
2 単語と単語の間には空白または改行一つが必要。
(それ以外の区切りもある。例えばピリオド。)
3 メッセージも単語に含まれる。ただし、空白を入れるとそのまま表示される。
4 //の後は改行までがコメント。
5 それ以外のところはどこに改行や空白を入れても自由。


-- 
==============================================
東京大学理科1類27組 1年 佐々木俊也
g041080@mail.ecc.u-tokyo.ac.jp
==============================================

増原先生のコメント(ニュースグループより)
In article 
	佐々木くん writes: 

 > 10月10日の練習問題をやってみました。

おお、素晴しい!  よくまとまっているので、ほとんど付け加える
ことがありませんね。

 > 練習1-1
 > public static void main(String[] args) {
 > と(一つ目の)}の間ならば、
 > //のある行と同じ行をのぞいて正しく表示される。
 > 順序はソースコードの順序と同じ。

その通りです。つまり、
 ・文はメソッドの中に書くもの
 ・メソッドの中の文は、上から順に実行される
ということですね。

 > 練習1-4
	:
 > 日本語の文字列のダブルクォーテーションをはずすと、
 > エラーが起こる。
 > 2+4を全角文字(2+4)に変えても同じようなエラーが起こる。

日本語について触れるのを忘れていました。Java 言語では、いわ
ゆる全角文字はコメントと文字列の中(「"」の内側)だけしか使え
ないと思っておくとよいみたいです。

 > 練習1-5
	:
 > (3)メッセージの途中に改行を入れるとエラーが起こるが、
 > 空白を入れると空白も含めて表示される。

因みに、Java言語で、メッセージ(文字列)の中に改行を含めたいと
きは、
	"こんにちは\nこんにちは\n\n世界の\n国から"
のように、「\n」を入れておきます。

 > 以上のことをまとめると、
 > 1 単語の途中には改行や空白は含められない。
 > 2 単語と単語の間には空白または改行一つが必要。
 > (それ以外の区切りもある。例えばピリオド。)
 > 3 メッセージも単語に含まれる。ただし、空白を入れるとそのまま表示される。
 > 4 //の後は改行までがコメント。
 > 5 それ以外のところはどこに改行や空白を入れても自由。

とても good なまとめ方です。
--
増原英彦 (masuhara@mail.ecc.u-tokyo.ac.jp)