Comments
Description
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