計算機ネットワーク工学 I・テスト問題用紙（ ’00 年 7 月 27 日・ 13:00 〜 14:30 ）解答上、その他の注意事項

I. 問題は、問 I 〜 V まである。
II. 解答用紙の右上の欄に学籍番号・名前を記入すること。
III. 解答欄を間違えないよう注意すること。
IV. 解答欄がマス目になっている場合は、1 字に 1 マスを用いること。特に空白にも必ず 1マスを用いること
V. 解答中の文字 (特に a と d) がはっきりと区別できるよう注意すること。
VI. ノート・プリント・参考書などは持ち込み可である。
VII. 合格は 100 点満点中 60 点以上とする。
(配点 — 期末テスト 70 点, レポート各 15 点)

1

I. 次の文章の空欄を埋めることばを下の選択肢から選べ。
• 「コンピュータが通信などを行なう時の約束事をプロトコルという。通信のためのプロトコ
ルは、OSI 参照モデルという枠組みでは 7 つの階層に分けられる。
物理層はハード ウェアの規約である。データリンク層は物理的に隣接しているシステムの間のデータ伝送のための規約である。ネットワーク層は物理的に隣接していないシステムの間でデータを転送するための経路制御を行なう。トランスポート層は、さらにエラーの制御や順序の保証、プロセス間の通信などを提供する。さらに上位の層に、セッション層、プレゼンテーション層、アプリケーション層などがある。この 3 つはひとまとめにして上位層と呼ばれる。

IP はこのうちある。」(1)

層の、TCP は(2)層の、プ ロトコルで(1), (2) の選択肢
(A) 物理層 (B) データリンク層 (C) ネットワーク層 (D) トランスポート層(E) セッション層 (F) プレゼンテーション層 (G) アプリケーション層• 「 Java は通常、中間言語方式と呼ばれる方式で実行される。Java のソースファイルを中間(3)言語にコンパイルするプログラムはは(4)であり、中間言語を含むファイルにという拡張子がつく。中間言語を解釈実行するプログラムは（アプレットでない通常のアプリケーションの場合）(5)である。」• 「 Java のアプレットでアニメーションを動かしたり、ネットワークプログラムで、複数の入出力に対処したりするためには、スレッドを用いる。Thread クラスのコンストラクタの引数は、(6)インターフェースを持たなければいけない。つまり、(7)と言うメソッドを持たなければいけない。スレッドで実際に実行されるのは、このメソッドである。

(8)

C 言語ではスレッドは標準的に用意されていないため、複数の入出力を監視して実行可能になるまで待ち受けるために、(9)という関数（システムコール）を用いる。」(3) 〜 (9) の選択肢
(A) ActionListener (B) class (C) init (D) java (E) javac (F) jdk(G) KeyListener (H) MouseListener (I) paint (J) Runnable (K) run(L) select (M) start (N) stop
II. Java 言語では真偽値の型として boolean という型を用意して、 int 型と区別している。x==0 やx<0 のような条件式の型は boolean 型である。C 言語のように真偽値を通常の int 型として扱うのと比べて、どのような得失があるかまとめよ。

1III. 右の図のように 2 つの点の集合{(10, 40i + 10) | i = 0, 1, 2, 3, 4, 5} と{(40j + 10, 10) | j = 0, 1, 2, 3, 4, 5}から、1 つずつ点を選ぶときの全ての点の組み合わせを結ぶ直線を描くアプレットを作成する。空欄を埋めてアプレットを完成させよ。
import java.awt.*;
import java.applet.*;public class Toi3 extends Applet {(1)(Graphics g) {public void
int i, j;for (i=0; i<6; i++) {(2)}}}IV. 下のプログラムは、右のような図形を描く。
import java.awt.*;
import java.applet.*;public class Toi4 extends Applet {Color[] cs = {Color.red, Color.orange,Color.green, Color.blue};
public void paint(Graphics g) {int i, j, k=0;
for (i=0; i<5; i++) {double theta_i = 2.0*Math.PI*i/5;
int x_i = (int)(120-Math.sin(theta_i)*100);
int y_i = (int)(120-Math.cos(theta_i)*100);g.setColor(Color.black);g.drawString(" "+i, x_i, y_i);for (j=i+1; j<5; j++) {double theta_j = 2.0*Math.PI*j/5;
int x_j = (int)(120-Math.sin(theta_j)*100);
int y_j = (int)(120-Math.cos(theta_j)*100);g.setColor(cs[k%4]);
g.drawLine(x_i, y_i, x_j, y_j);
k++;
}
}
}
}

2

(1) 点 1–4 を結ぶ線は何色になるか？
(2) 点 2–3 を結ぶ線は何色になるか？
それぞれ下の選択肢から選べ。
(A) red (B) orange(C) green (D) blue

V. 下のプログラムは、右のような出力をする。
import java.io.*;public class App5 {public static void main(String[] args) {String message = "The quick brown fox jumped over"+ "the lazy sleepy dog.
";
int i;
for(i=0; i<=message.length()-8; i++) {System.out.println(message.substring(i, i+8));}}}

TThTheTheThe q
The quThe qui
The quic
he quicke quick
quick bquick bruick bro
ick brow（ 以下略）

つまり、message という文字列から、8 文字の部分文字列を先頭から順番に取り出して標準出力に出力するプログラムである。
このプログラムを参考にして、いわゆる “電光掲示板” アプレット (Denko) を作成せよ。つまり、文字列の 8 文字の部分文字列を先頭から順番に取り出して次々に、drawString を用いて表示する。スレッドを用いて、100 ミリ秒間隔でアニメーションになるようにせよ。
✬✩✲✫

✲

初め頃

✲

途中✪

終り頃

解答は下のプログラムの空欄を埋めるものを、次のアイテムから適当なものを選んで書け。
1 extends Applet
2 for (i=0; i<=message.length()-8; i++)
3 g.drawString(message.substring(i, i+8), 10, 40);
4 implements Runnable
5 repaint();

6 thread = new Thread(this);7 thread = null;8 thread.start();
9 try {

Thread.sleep(100);} catch (InterruptedException e) {}{ {} }

ただし 、一つの解答欄に一つのアイテムとは限らず、複数のアイテムを並べて書く必要がある場合がある。

3

import java.awt.*;
import java.applet.*public class Denko
Thread thread=null;
String message = "(1){The quick brown fox jumped over"+ "the lazy sleepy dog.
";

int i=0;public void start() {if (thread==null) {(2)}}public void stop() {(3)}public void paint(Graphics g) {(4)}public void run() {while (true) {(5)}}}4計算機ネットワーク工学 I・テスト解答用紙 (’00 年 7 月 27 日)

学籍番号

氏名

(3 点 ×9)

I.
(1).

(2).

(3).

(4).

(6).

(7).

(8).

(9).

(5).

II.

(5 点)
...................................................................................
...................................................................................
...................................................................................
...................................................................................

III.

(3 点, 3 点, 4 点)
(1).
(2).
(3).

(4 点 ×2)

IV.
(1).

(2).
(4 点 ×5)

V.
(1).

(2).

(4).

(5).

(3).

授業・テストの感想を裏面に書け。

1授業・テストの感想............................................................................................
............................................................................................
............................................................................................
............................................................................................
............................................................................................
............................................................................................
............................................................................................
............................................................................................
............................................................................................
............................................................................................
............................................................................................
............................................................................................
............................................................................................
............................................................................................
............................................................................................
............................................................................................

2