PowerPoint プレゼンテーション

Similar documents
Microsoft PowerPoint - Pro110111

ガイダンス

Microsoft PowerPoint - OOP.pptx

ガイダンス

PowerPoint Presentation

ガイダンス

Microsoft PowerPoint - lec06 [互換モード]

JavaプログラミングⅠ

< F2D B838A835882CC8CF68EAE2E6A7464>

人工知能入門

< F2D834F838C A815B A CC>

Java言語 第1回

第 3 回 Java 講座 今回の内容 今週の Java 講座はコレクション 拡張 for 文, ガベージコレクションについて扱う. 今週の Java 講座は一番内容が薄いも のになるだろう. コレクション コレクションとは大きさが決まっていない配列だと考えればよい. コレクションには List 先

< F2D F B834E2E6A7464>

Java 2 - Lesson01

Prog1_15th

< F2D B825082CC96E291E82E6A7464>

< F2D E E6A7464>

< F2D89BA8EE882C E6A7464>

< F2D82518CC282CC D2E6A7464>

< F2D825282CC947B909482CC A815B83682E6A>

< F2D82518E9F8AD CC834F CC8CFC82AB82C68D4C>

Microsoft PowerPoint ppt

Assignment_.java /////////////////////////////////////////////////////////////////////// // 課題 星の画像がマウスカーソルを追従するコードを作成しなさい 次 ///////////////////

Java言語 第1回

< F2D82518E9F8AD CC95BD8D7388DA93AE2E6A7464>

< F2D82B682E182F182AF82F12E6A7464>

JAVA とテンプレート


プログラミング基礎I(再)

Vector Vector Vector Vector() Vector(int n) n Vector(int n,int delta) n delta

解答上の注意 1 解答は 解答 紙の問題番号に対応した解答欄にマークしなさい 2 選択肢は 問ごとに 意されています 問 1の選択肢は 問 2で使 しません 3 選択肢は量が多いため 探しやすさの観点よりグループ分けされています グループ分けに合わせて解答欄が区切られていますが 横 1 列で問題 1

ガイダンス

< F2D A838B838D96402E6A7464>

< F2D8EA CE909482CC92EA82852E6A7464>

ガイダンス

HCI プログラミング 10 回目テキストフィールドとキーイベント 今日の講義で学ぶ内容 テキストフィールドの利用 キーイベントの処理 テキストフィールドの利用 1 テキストフィールドを配置してみましょう テキストフィールドを用いることにより 数値や文字列などのデータ入力が可能になります ソースファ

ガイダンス

< F2D A839382CC906A2E6A7464>

第1章 ビジュアルプログラミング入門

大容量情報検索論

Java言語 第1回

Microsoft PowerPoint prog1_doc2x.pptx

Microsoft PowerPoint - OOP.pptx

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

PowerPoint プレゼンテーション

< F2D92DE82E8914B82CC977088D32E6A7464>

HCI プログラミング 8 回目ボタン チェックボックス ラジオボタン 今日の講義で学ぶ内容 ボタンとアクションイベント ボタンのカスタマイズ チェックボックスとラジオボタン ボタンとアクションイベント 1 ボタンを配置してみましょう ボタンは ラベルと同じようにフォントやその色 画像の貼り付けなど

文字列操作と正規表現

10/31 Java AWTの基本構造(Frameクラスの継承) 演習課題資料

Microsoft PowerPoint - prog03.ppt

JAVA入門

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

Microsoft PowerPoint ppt


JAVA入門

問題1 以下に示すプログラムは、次の処理をするプログラムである

Microsoft Word - NonGenList.doc

JavaプログラミングⅠ

プログラミング入門1

Microsoft PowerPoint ppt

PowerPoint プレゼンテーション

できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 3 回コレクションと例外処理 テクノロジックアート 瀬嘉秀

Java講座

PowerPoint Presentation

Microsoft PowerPoint - prog12.ppt

目 次 Java GUI 3 1 概要 クラス構成 ソースコード例 課題...7 i

Microsoft PowerPoint - prog11.ppt

リファレンス,配列 例外処理

<4D F736F F F696E74202D AC C8899E D834F E >

PowerPoint Presentation

PowerPoint プレゼンテーション

表示の更新もそういた作業のひとつに当たる スレッドの使用アニメーション アニメーションやシミュレーションなどは画面の更新が一定のタイミングで行われていく この連続した画面の更新をスレッドを利用して行う しかし paint() メソッドを直接呼び出して表示を更新することはできない その理由

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

PowerPoint プレゼンテーション

Microsoft PowerPoint prog1_doc2.pptx

108 頁通過テスト 2. の本文 111 頁紹介文 136 頁練習 5-1 プログラム 136 頁練習 5-1 問 2 末尾に句点追加 158 頁練習問題文 161 頁練習 2-2 コメント文 166 頁練習 3-1 問 1 クラス名を挿入 178 頁通過テスト 3 文字 s を削除 180 頁コ

2

C#の基本2 ~プログラムの制御構造~

Javaプログラムの実行手順

Prog2_12th

PowerPoint Presentation

JavaプログラミングⅠ

3 p.1 3 Java Java Java try catch C Java if for while C 3.1 boolean Java if C if ( ) 1 if ( ) 1 else , 2 { } boolean true false 2 boolean Gr

2. データ構造ヒープに保存するデータは 番号付けられて保存される 従って リスト L として保存することとする 3. アルゴリズム 3.1. 要素の追加新しい要素の追加は リストの終端に置くことで開始する つまり 最下層の一番右 または新たに最下層を生成してその一番左となる この後 この要素を正し

Microsoft PowerPoint - prog11.ppt

C#の基本

デジタル表現論・第6回

Prog2_6th

GUIプログラムⅣ

5 p Point int Java p Point Point p; p = new Point(); Point instance, p Point int 2 Point Point p = new Point(); p.x = 1; p.y = 2;

1. はじめに 二分木ヒープ 様々なアルゴリズムにおいて ある要素の集合またはリストから 最小 な要素を取り 出す必要がある そのような場合に使われる標準的データ構造が二分木ヒープ (binary heap) である あるオブジェクトO を考える そのオブジェクトは ラベル O. label と値

Microsoft Word - keisankigairon.ch doc

メソッドのまとめ

PowerPoint プレゼンテーション

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

教材ドットコムオリジナル教材 0から始めるiアフ リ リファレンス i アプリ簡易リファレンス ver i アプリ Java 独自のメソッド (1)iアプリの命令を使えるようにする import com.nttdocomo.ui.*; (2) 乱数を使う import java.u

GEC-Java

第1章 ビジュアルプログラミング入門

Java演習(2) -- 簡単なプログラム --

Transcription:

L2: Fundamentals of AI Programming in Java Javaアプレット ArrayList HashMap

AI 応用の例 探索問題

Java アプレット VS アプリケーション ava アプレットとは html に貼り付けられる java で作成した小規模のプログラムのことで サーバー側からクライアントマシンに送られ ブラウザ上に読み込まれて実行される ブラウザと HTML の機能と表現力の制約にしばられずに インタラクティブな動作や より高い表現を用いることができる

AppletTest.java (Applet の起動 ) //Applet を import しないと Applet を使えない import java.applet.applet; //Applet にするには Applet を継承する public class AppletTest extends Applet { パッケージは各自適当につけること } // Appletを起動した時に初めに実行されるメソッド public void init() { // Appletの大きさの設定 setsize(300, 500); } main メソッドが不要なことに注意 実行例

AddTest.java( コンポーネントの追加 ) これはプログラムの一部です 完全版はプロジェクトサイトにあります // ボタンの作成 Button b1 = new Button(" ボタン "); Button b2 = new Button(); // ラベルの作成 Label l1 = new Label(" ラベル "); Label l2 = new Label(); public void init() { setsize(100, 200); // 作成しても add() で Applet 上に追加しないと表示されない add(b1); add(b2); add(l1); add(l2); } 実行例

ActionTest.java( アクションの追加 ) // ボタンが押された時にイベントを発生させたい場合は // ActionListenerに登録する b1.addactionlistener(this); add(b1); add(b2); add(l1); add(l2); } // ボタンが押された時に実行されるメソッド public void actionperformed(actionevent arg0) { JOptionPane.showMessageDialog(null, " ボタンが押されました "); }

PaintTest.java( 描画 ) public void actionperformed(actionevent arg0) { // 押されたら数を増やす i++; // 再描画 repaint(); } // 描画するメソッド public void paint(graphics g) { // 文字列の表示 g.drawstring(" ボタンを押した回数 " + i, 60, 50); // 直線の表示 g.drawline(50, 180, 70, 180); // 長方形の表示 g.drawrect(10, 70, 30, 30); }

ArrayList とは何か? ArrayList とは可変長配列クラスである 普通の配列と違い いくらでも要素を追加できる Int [] test = new int [5]; と書くと 5 つまでしか入れられないが ArrayList には制限がない キャパシティー という概念がある 可変長のため最終的にいくつの要素が追加されるかわからないので 動的にキャパシティー ( 要素を追加するためのメモリー上のスペース ) を確保する が この講義では無視 どんな型のオブジェクトでも追加することができる String, int,double, 自分で作った型 などどれでも追加可能

ArrayList の宣言 ArrayList の宣言には 3 つの種類がある ArrayList() キャパシティーが 10 の空の ArrayList を作る ArrayList(int capacity) キャパシティーが capacity の空の ArrayList を作る (capacity の大きさを自分で決められる ) ArrayList(Collection c) 初期値が c である ArrayList を作る (c は他の ArrayList 等 )

ArrayList で使えるメソッド public boolean add(object o) 指定したオブジェクトoを追加する 例 :al.add( 要素 1 ); public boolean remove(object o) 指定したオブジェクトを削除する public Object get(int index) index 番目の要素を返す

ArrayList で使えるメソッド public boolean contains(object o) 指定したオブジェクトoがリストにあるか判断する 例 :if(!al.contains( 要素 1 )) System.out.println( 要素 1はありません ); public boolean isempty() リストが空か判断する ( 要素数が 0 かどうか ) public int size() リストにある要素の数を返す

ArrayList で使えるメソッド public void clear() リストの要素を全て削除する public int indexof(object o) 指定した要素の位置を返す public void ensurecapacity(int min) キャパシティーを min 以上に設定する この他にもたくさんのメソッドがあります 詳しくは sun の HP を参照して下さい http://java.sun.com/javase/ja/6/docs/ja/api/java/util/arraylist.html

ジェネリック ArrayList には どんな型のオブジェクトでも要素として追加できる! 一見便利に見えるが 取り出す時に面倒なことがある import java.util.arraylist; public class ArrayListTest { public static void main(string[] args) { Int 型の値を保存してい ArrayList al = new ArrayList(); てもGetメソッドはObject al.add(0); 型を結果を返すので al.add(1); 足し算できない al.add(2); System.out.println(al.get(0)+al.get(1)); } } 実行するとエラーになります

ジェネリック 以下のようにすると格納できる型が Integer(int) に制限されるかわりにデータの取り出しが容易になる import java.util.arraylist; public class ArrayListTest { public static void main(string[] args) { ArrayList<Integer> al = new ArrayList<Integer>(); al.add(0); al.add(1); al.add(2); System.out.println(al.get(0) + al.get(1)); } } このような手法をジェネリックと呼ぶ

練習 ArrayTest.java のコメントを見ながらコードを書き加え 正しく実行できるようにしてみましょう 実行例

HashMap とは HashMap とはキーと値の組の集まりであるデータ構造 わかりやすくいうと可変長配列の index がなんでもいい版 イメージ キー値 学籍番号 10k0000 11k9999 09k0000 名前法政 法政 小金井 1 つの学籍番号に 1 つの名前が対応していて 学籍番号がわかれば学籍の名前がわかる

HashMap の宣言 宣言には 4 つの種類がある HashMap() 初期容量 (16) とデフォルトの負荷係数 (0.75) で空の HashMap を作成する HashMap(int initialcapacity) 指定された初期容量とデフォルトの負荷係数 (0.75) で空の HashMap を作成する HashMap(int initialcapacity, float loadfactor) 指定された初期容量と負荷係数で空の HashMap を作成する HashMap(Map<? extends K,? extends V> m) 指定された Map と同じマッピングで新規 HashMap を作成する

HashMap で使えるメソッド Public Object put(object key, Object value) 指定したキーと値を HashMap に追加する 例 :hm.put( 11k0000, 法政 ); Public Object get(object key) 指定したキーに対応する値を取得する Public Object remove(object key) 指定したキーと対応する値を削除する Public void clear() 要素を全て削除する

HashMap で使えるメソッド Public boolean isempty() 要素が空かどうか判断する Public boolean containskey(object Key) 指定したキーがあるかどうか判断する Public boolean containsvalue(object Value) 指定した値があるかどうか判断する この他にもたくさんのメソッドがあります 詳しくは sun の HP を参照して下さい http://java.sun.com/javase/ja/6/docs/ja/api/java/util/hashmap.html

ジェネリックについて ArrayList と同様に HashMap にもジェネリックが使えます HashMap<String,String>=new HashMap<String,String>(); キーと値 それぞれに設定する 警告のマークを左クリックすると のような項目が出るので総称型引数の推測を押せば適したジェネリックを設定してくれる

練習 HashMapTest.java のコメントを見ながらコードを書き加え 正しく実行できるようにしてみましょう

探索プログラム Applet,ArrayList,HashMap についてなんとなく理解できたら探索プログラムを作ってみましょう

Node の作成と表示 Node に必要なものを考えてみましょう ( 街の ) 名前ボタン X 座標 Y 座標経路情報隣接する街情報隣接する街に引く線 Node

Node.java クラスの実装例 import java.awt.button; import java.util.arraylist; import java.util.hashmap; // 都市クラス public class Node extends Button { // 街の名前 String name; // 座標 private int x, y; // 幅と高さ private int w = 80, h = 20; // 隣接都市 ArrayList<Node> children; // 経路 Node pointer; // 隣接都市への線 ( 隣接都市 / 隣接都市につなぐ線 ) HashMap<Node, Line> hm;

Node の表示, 隣接する Node ShowNode.java を書き加えていくつかの Node を Applet 上に表示し Node をクリックすると都市名をダイアログで表示するようにしてみましょう Line.java 隣接する Node に引く線

探索とは 探索とは人工知能の分野における基本的な要素技術であり 今ではカーナビやゲームの AI など 幅広い分野で応用されている おおまかに言うと ある入力に対しいくつもの解を評価して結果を返すこと この講義では 一般的な幅優先探索と深さ優先探索について学ぶ

宿題 (1) Read through lecture note (AI-2-L2.pptx); 今日の授業内容を復習しなさい (2) Run all example Java program source codes (L2-toStudent.zip); 例題を実行してみてください (3) Think about how to make a search algorithm to search for a solution from one city to another. ある街から別の街へ向かうルートを探索するプログラムの作成方法を考えてみてください