progI-02

計算機プログラミング I
第2回 2005-10-24
担当: 立堀道昭
本日の講義内容
前回の復習
プログラミング言語の文法と意味
プログラミングモデルとオブジェクト指向
メソッド呼び出しと制御構造
演習
前回の復習
ロボコードのインストールと実行

robocode-setup.jar、robocode.jar
マイロボットの作成・コンパイル・実行
プログラミングとは





プログラム、プログラミング、プログラミング言語
機械語、高級言語
インタープリタ、コンパイラ、仮想機械
Java言語、仮想機械語プログラム、仮想機械プログラム
.javaファイル、javacコマンド、.classファイル、javaコマンド
Hello Worldプログラム


ターミナルからのファイル作成・修正、コンパイル、実行
javac/java
課題:わざと間違ってみる
プログラミング言語の
文法と意味
コメント文
プログラムの動作上意味をもたない要素

ソースプログラム中には、プログラムの動作に影響を及ぼさないコメント(メモ
書き)を入れることができる
2種類


// 以降行末まで
/* から */ まで (複数行にわたってよい)
例:


// 直角に右を向く
turnRight(90);
/**
* This is my robot definition.
*/
public class MyFirstRobot extends …
プログラムをわかりやすくするために適宜入れる
プログラミング・モデルと
オブジェクト指向
プログラミング・モデル
プログラムの仕方の考え方や決まりごと


プログラミングの規範
何か理解しやすいものに例える(メタファ)
様々なプログラミング・モデルが存在する


プログラミング言語は、何らかのプログラミング・モデルを
規定・実現している
機械語
レジスタ、メモリ、足し算引き算

Java – オブジェクト指向
オブジェクト - 「もの」を計算機上であらわしたもの
メソッド呼び出し – オブジェクトに対する指令
オブジェクト
オブジェクトには種類がある = 「クラス」

種類の例: 「ロボット」「色」「出来事(イベント)」
オブジェクトは作ることができる
個々のオブジェクト = 「インスタンス」
 それぞれ違う「もの」

個々のインスタンスに対して指令を
出すことができる = 「メソッド呼び出し」
指令 = 「メソッド」
 指令の種類 = 「メソッド名」(例: 前進・後退・・・)
 指令の「パラメータ」(例: 前進する距離・回転する角度)

ソースコードを読み解こう
package cp1;
import robocode.*;
public class MyFirstRobot extends Robot {
public void run() {
while(true) {
ahead(100);
turnGunRight(360);
back(100);
turnGunRight(-360);
}
}
public void onScannedRobot(ScannedRobotEvent e) {
fire(1);
}
public void onHitByBullet(HitByBulletEvent e) {
turnLeft(90 - e.getBearing());
}
}
簡易化したもの
class MyFirstRobot {
void run() {
while(true) {
ahead(100);
turnGunRight(360);
back(100);
turnGunRight(360);
}
}
}
クラスの定義
メソッドの定義
繰り返す
100進む
360度右に銃座を回転
100さがる
360度右に銃座を回転
メソッド定義とメソッド呼び出し
メソッド: 1連の動作手続きを定めたもの
class MyFirstRobot {
void run() {
while(true) {
ahead(100);
turnGunRight(360);
back(100);
turnGunRight(360);
}
}
}
MyFirstRobotという名のクラスの定義
runという名のメソッドを定義(ロボコードの決まり)
aheadというメソッドを呼び出す
turnGunRightというメソッドを呼び出す
backというメソッドを呼び出す
turnGunRightというメソッドを呼び出す
決まりごとの例
Robocodeプログラム

public void run() {
…
}
Hello Worldプログラム

public static void main(String[] args) {
…
}
演習: 8の字で動こう
カクカクしてよいので8の字でロボットを動か
そう

SittingDuckを相手に練習
その他の動きも自分で考えてみよう
変数
何の計算でしょうか?
2×3.8765×2×3.8765
– 3.1415×3.8765×3.8765
= 12.901
2×3.8765×2×3.8765×2×3.8765
– 1.3333×3.1415×3.8765×3.8765×3.8765
= 222.03
半径 = 3.8765 とする
辺の長さ = 2×半径とする
辺の長さ2 – π×半径2 = 12.901
辺の長さ3 – 4/3×π×半径3 = 222.03
プログラミング・モデル: 変数
箱を作ること = 変数宣言
入れてよい値の種類 = 「型」
 名前 = 「変数名」
 最初にしまわれる値 = 「初期値」
※先に宣言しないと使えない ・ 同じ名前を2回宣言できない

箱に値をしまうこと = 代入


1つの箱には何回でも代入できる
参照されるのは最後に代入された値
箱から値をとり出すこと = 参照
箱にしまうことのできる値:


オブジェクトへの参照 ―― オブジェクトに対するリモコンのようなもの
整数・実数などなど
変数宣言と変数利用の例
整数型の変数宣言:

int num = 3;
変数への代入


変数の値を書き換える
num = num + 2;
Color型の変数宣言:



Color color = …;
Color color = new Color(10, 200, 255);
int r = color.getRed();
演習: java.awt.Colorオブジェクト
ColorオブジェクトのAPI(プログラミング上の
規約、何を指令できるか書いてある)をみて
みよう。
課題・自習
色を変えながら動くロボットを作ってみよう
Preferencesでこれを許可する設定が必要
謝辞
この資料は、増原英彦先生のものを部分的
にいただいて編集しました