...

ネットワークプログラミング演習 第1回 ~ガイダンス

by user

on
Category: Documents
37

views

Report

Comments

Transcript

ネットワークプログラミング演習 第1回 ~ガイダンス
スタッフ
ネットワークプログラミング演習
第1回 ~ガイダンス~
•  教員
–  屋代 [email protected]
–  須田先生
–  中川先生
9時00分に開始します.席は自由です.
前方に置いてあるシラバス原簿を各自1部ずつ
持っていってください.
本日の資料は(履修登録済みの人は)授業支援システム
から,または下記URLから入手可能です.
http://www.ysr.net.it-chiba.ac.jp/yashiro/enshu1/
•  TA(Teaching Assistant)
–  澤田真幸(八島研M1)
–  丹裕希(八島研M1)
–  溝口紗耶(中村研M1)
※わからないことはどんどん質問してください.
2016年4月12日(火)
屋代智之,須田宇宙,中川泰宏
0
ネットワークプログラミング演習について
•  前期(ネットワークプログラミング演習)と後期(ネット
ワークプログラミング応用演習)は連続した内容で開
講する.前期を修得しないで後期だけ履修すると,
単位取得が極めて困難になるので注意.
•  さらに,本演習の内容は3年前期の「Webシステム
基礎実験」,「Webアプリケーション構築実験」につ
ながるものであり,未修得のままだと3年次の実験
科目でもさまざまな困難が予想される.注意.
•  シラバスに記載した内容は予定であり,進度によっ
て若干前後したり,内容が変更になることがある.
2
ネットワークプログラミング演習の内容 (2)
•  前提知識
–  1年生で学習したC言語の知識
if/else,forは使いこなせること
–  演習室環境の利用技術(Linux / エディタ / 仮想
計算機 / 印刷方法 / ファイル転送 etc.)
•  関連科目
–  コンピュータネットワーク基礎(3S:八島先生)
【特に後期】
他
4
1
ネットワークプログラミング演習の内容
Java言語によるプログラミングを行う.
•  前期はさまざまな例題を用いてJava言語を
学習する.なお,本演習では,オブジェクト指
向を理解することは目標としていないが、概
念は必要となる.
•  いわゆるドローソフトと呼ばれるお絵かきプロ
グラムの簡単なものを作成する。
•  後期はsocketと呼ばれるものを用いてネット
ワーク上で通信を行うプログラムを作成し、例
題として,動画(のようなもの)の転送を行う.
3
参考書
宮坂雅輝 「エッセンシャルJava 2nd Edition」 ソフトバ
ンクパブリッシング・・・は入手困難.
演習中に必要最小限+αの資料は配布するが、
これ以外にJavaの解説書を購入すること.
自分にあった本を選ぶこと.例えば,
•  「やさしいJava第5版」 高橋 麻奈(\2808)
•  「Java言語プログラミングレッスン第3版」
結城 浩(上下各\2592)
•  「独習Java第4版」ジョゼフ・オニール(\3456)
•  「Head First Java 第2版 ―頭とからだで覚えるJava
の基本」 Kathy Sierra , Bert Bates(\4320)
5
1
注意事項(1)
評価方法
•  演習は9時00分開始.来週から,9時00分までにログ
イン,仮想計算機の起動などは済ませておくこと.
•  プリントを配布し,説明する時間と作業する時間があ
る.説明中は作業しないこと.私語厳禁.
•  遅刻・私語・寝ている場合などは適宜減点対象とする.
•  この部屋は飲食厳禁.特に飲み物などはかばんなど
の中にしまっておくこと.
•  調子の悪いマシンを見つけたときには,スタッフに伝
えること.
1.  来週から,毎回演習内レポートを提出.
授業支援システムを利用する.
2.  後半にレポートを2回程度提出.
授業支援システムを利用する。
3.  14週(予定)に実力確認試験を実施.
1: 10% 2: 40% 3: 50%で成績評価を行う.
ただし,実力確認試験で合格点を取らないと
単位は取得できない.
6
注意事項(2)
7
確認事項
•  早く出来ることは重要ではない.打ち込み訓練でもない.
プリントに書かれたプログラムリストをとにかく打ち込ん
で,それで満足する人が見受けられるが,「理解」しなけ
れば無意味.
•  こうやったら出来ますか?という質問の多くはやってみ
ればわかる.そのための演習環境である.
•  「なんかエラーっぽいのが出た」らそれを読もう.
•  ファイルはフォルダ分けするなど,整理して保存すること
が望ましい.(うまく行かなかった場合に,前の状態に戻
せる)
•  休んだら,その分は自分で努力して取り戻すこと.資料
は申し出れば配布する.
8
•  本講義では仮想計算機の利用を推奨する.
仮想計算機はUSB接続のメモリやHDD/SSD
でも,ESXサーバ上のものでも構わない.
•  USB接続の環境を利用する人は,来週以降,
必ずUSBメモリ/HDD/SSDを持参すること。
•  あれば昨年までの仮想計算機を利用しても
構わないが,来週新規に配布する予定。
•  iPad miniを持参すること。
本日の作業
HelloJava.java
•  まずはログインする.
•  エディタ(viまたはkateなどのテキストエディタ,ある
いはEclipseなど)を起動する.このとき,ファイル名
は “HelloJava.java”となるようにすること(大文字・
小文字の違いに注意!).
•  次のプログラムを各自打ち込み,実行しなさい.
※なお、今回打ち込んだプログラムは、ログアウトする
と消えてしまう。保存しておきたいデータはUSBメモ
リやUSB接続のHDD/SSDなどにコピーしておくこと。
10
9
class HelloJava {
public static void main(String args[ ]) {
System.out.println(”Hello World”);
}
※大文字,小文字は区別される.注意!
}
% javac HelloJava.java ←コンパイル
% java HelloJava ←実行(.javaなどはつけない)
※これが出来たら,自分の名前を表示するようにプログラ
ムを変更してから再度コンパイル・実行してみよう.
その際,1行目のHelloJavaを変更するとどうなるか確認せ
よ.
11
2
HelloJava3.java
HelloJava2.java
class HelloJava2 {
public static void main(String args[ ]) {
System.out.println(”Hello World”);
System.out.println(”Hello Java”);
}
}
※今回はファイル名はHelloJava2.java
前のプログラム同様にコンパイルし,実行してみよう.
% ls ←どんなファイルがあるか確認
% javac HelloJava2.java
←コンパイル
% ls ←どんなファイルができたか確認
% java HelloJava2 ←実行(.javaなどはつけない)
(System.out.println()という関数の使い方を理解しよう)
12
HelloJava4.java
13
HelloJava5.java
class HelloJava5 {
public static void main(String args[ ]) {
int i;
for(i = 0; i < 10; i++){
if( i % 2 == 0){
System.out.println(”Hello World : ” + i);
}
}
}
}
このプログラムは,まず,実行したらなにが表示されるか予想しよう.
続いて,コンパイルし,実行してみよう.
(if文,==,%演算子の使い方を思い出そう)
class HelloJava4 {
public static void main(String args[ ]) {
int i;
for(i = 0; i < 10; i++){
System.out.println(”Hello World : ” + i);
}
}
}
このプログラムもコンパイルし,実行してみよう.
(for文の使い方はCとほぼ同じ。()内の意味,書き方を
思い出そう) 5行目の"+"の意味を考えてみよう.
14
Java言語の特徴
15
オブジェクト指向プログラミング(OOP)
C言語と比べて…(今日の感想?)
•  mainを書くまでにいろいろと書かなければな
らない.大変そう.
•  実行するのに,プログラム名の前に”java ”が
必要.(java HelloJava) 毎回打つのは面倒.
•  printfの方が簡単だし,便利.
•  for文,if文,演算などはC言語とほぼ同じ.
それでも,Javaは便利である,ということ
で広く使われるようになってきている.
class HelloJava3 {
public static void main(String args[ ]) {
System.out.print(”Hello World”);
System.out.print(”Hello Java”);
}
}
前のプログラム同様にコンパイルし,実行してみよう.
% javac HelloJava3.java
←コンパイル
% java HelloJava3 ←実行(.javaなどはつけない)
(System.out.print()という関数の使い方を理解しよう.
System.out.println()との違いを理解しよう.)
16
Javaはオブジェクト指向言語である,といわれる.一方,
Cはオブジェクト指向言語ではない.
オブジェクト指向プログラミングとは?
オブジェクト指向プログラミングを構成する概念には、次のようなものが挙げ
られる。
• カプセル化
–  オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの
振る舞いを隠蔽したり、オブジェクトの実際の型を隠蔽したりすること
をいう。
• 継承
–  あるオブジェクトが他のオブジェクトの特性を引き継ぐ場合、両者の
間に「継承関係」があると言われる。
• ポリモーフィズム (多態性)
–  あるオブジェクトへの操作が呼び出し側(sender)ではなく、受け手の
オブジェクト(receiver)によって定まる特性。
17
3
HelloJava.javaの場合
Javaとオブジェクト指向
前述のようなプログラミングを容易に行うことができる
仕組みの用意されている言語が「オブジェクト指向言
語」と呼ばれるものである.
そのため,JavaはCに比べてさまざまな記法が導入さ
れている(詳細は今後).結果として,簡単なプログラム
を書こうとすると,余計なものをいろいろと書かなくて
はならなくなる.
大規模なプログラミングでは,この「余計なもの」があ
るおかげで開発が大幅に楽になる,といわれている.
class HelloJava {
public static void main(String args[ ]) {
System.out.println(”Hello World”);
}
}
これをCで書くと,以下の4行で済む(若干異なる).
int main() {
printf(”Hello World\n”);
return 0;
}
赤文字部分が,オブジェクト指向プログラミングを容易
にするため(?)に導入された部分である.
18
C言語との類似点
19
CとJavaのプログラムの構造
Cのプログラム
•  プログラムを書く上で、文法的に似ていると
ころは多い。
Javaのプログラム
データ(変数など)
–  for、if、while、switchなどの構造
–  変数を宣言してから使う
–  mainから実行を開始する
–  四則演算、%、代入、比較(==,<,>,!=など)
–  配列
関数
関数
関数
•  プログラムの枠組みが大きく異なる。
関数
20
今後に向けて
class HelloJava {
public static void main(String args[ ]) {
System.out.println(”Hello World”);
}
}
上記赤下線部分は,毎回書く決まり文句だと思って欲し
い.(イタリックの部分は適宜変わる).
この他,Javaの流儀はいろいろあるが,それらはこれか
ら慣れればよい.
22
データ
データ
データ
データ(変数など)
関数
関数
データ
データ
クラス
データ
クラス
21
余力のある人は・・・
(1) 下のような九九の表を表示するJavaプログ
ラムを作成しなさい.
[ 九九の表の表示例 ]
123456789
-------------------------------
1|123456789
2|24681012141618
3|369121518212427
...
9|91827364554637281
23
4
余力のある人は・・・
余力のある人は・・・
(2) 下記のような九九の表を表示するJavaプロ
グラムを作成しなさい(右上半分だけ表示).
[ 九九の表の表示例 ]
123456789
-------------------------------
1|123456789
2|4681012141618
3|9121518212427
...
8|6472
9|81
24
(3) 1から100までの3の倍数を全て表示するプ
ログラムをつくりなさい.
[ 表示例 ]
3 6 9 12 15 18 21 24 … 93 96 99
(4) 1から100までの素数(1とその数自身以外で
は割り切れない数)を順に求め,表示するプロ
グラムを作りなさい.
[ 素数の表示例 ]
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53
59 61 67 71 73 79 83 89 97
25
5
Fly UP