計算機プログラミングI 第3回 •プリミティブ値 •クラスメソッド •クラス変数 •式と演算 •変数の利用 1 計算機プログラミングI (増原) 2003年度 プリミティブ値 (3.1-2) 値には2種類ある • オブジェクト値 ― 亀・ウィンドウ・色・・・ • プリミティブ値 (p.23の表) –primitive = 原始的~はじめから用意されている値 (cf. オブジェクトは「定義」して「作る」値) –用意されているもの: 整数・小数・真偽値・文字 (cf. 文字列はプリミィブでない) –型 (値の種類) も予め決っている: int, double, boolean, char, … 2 計算機プログラミングI (増原) 2003年度 値と変数 「変数は値をしまう箱」である • int x = 100; int y = y; x = 200; • Turtle m = new Turtle(200,200,0); Turtle m1 = m; m.moveTo(100,100,0); このときのxとyの値は? このときの m.getY() と m1.getY() の値は? 3 計算機プログラミングI (増原) 2003年度 値と変数 「変数は値をしまう箱」である • int x = 100; int y = y; x = 200; • Turtle m = new Turtle(200,200,0); Turtle m1 = m; m.moveTo(100,100,0); このときのxとyの値は? 200 100 x このときの m.getY() と m1.getY() の値は? 100 y m m1 x y angle color 4 計算機プログラミングI (増原) 2003年度 値と変数 「変数は値をしまう箱」である オブジェクト値の 場合、変数に しまわれるのは 「オブジェクトの 居場所」である 「参照」という • Turtle m = new Turtle(200,200,0); Turtle m1 = m; m.moveTo(100,100,0); このときの m.getY() と m1.getY() の値は? m m1 x y angle color 5 計算機プログラミングI (増原) 2003年度 クラスメソッド (3.3) • メソッドは「オブジェクトに対する指令」 であった。では、指令を出す対象がいない 場合は? 例: –2の平方根 –xとyの大きい方 クラスメソッド ― 誰に対するでもない指令 6 計算機プログラミングI (増原) 2003年度 クラスメソッド (3.3) • クラスメソッドの呼び出しの例 Turtle.speedAll(1); // 全ての亀の速度を1にする System.exit(0); // プログラムを終了させる • オブジェクトに対するメソッド呼び出しとの区別 m1.fd(10); //オブジェクトのメソッド呼び出し Turtle.speedAll(1); //クラスメソッドの呼び出し 文法: 【式】.【メソッド名】(【式】,…) 【クラス名】. 【メソッド名】(【式】,…) (普通は)大文字で始まる名前 7 計算機プログラミングI (増原) 2003年度 クラスメソッド (3.3) • どうやってクラスメソッドを見つけるか? 仕様書を見る –“static” と先頭に書かれているものが クラスメソッド –例 • 教科書p.12 • Java言語標準ライブラリの仕様書 8 計算機プログラミングI (増原) 2003年度 クラス変数 • クラスに1つずつしかない変数 • インスタンス変数との区別 d = d / 2; //(ローカル)変数 m1.kameScale=1; //インスタンス変数 Turtle.withKameAll = false; //クラス変数 文法: 【変数名】 【式】.【変数名】 【クラス名】. 【変数名】 計算機プログラミングI (増原) 2003年度 9 クラス変数の使い途 • 数学定数の利用: Math.PI ―― 円周率 • 画面への出力 「“x=3”と インスタンスメソッドの呼び出し 表示せよ」 System.out.println(“x=” + x); ターミナルウィンドウを 表わすオブジェクトを しまうクラス変数 “x=”という文字列と x の値をつなげる (xが3のときは “x=3” になる等) System.out 10 計算機プログラミングI (増原) 2003年度 クラス変数の使い途 import java.awt.Color; public class T23withPrint { public static void main(String[] args){ int d = 100, x, y, a; TurtleFrame f = new TurtleFrame(); Turtle m = new Turtle(200,300,0); f.add(m); m.fd(d); x = m.getX() y = m.getY(); プログラムの意味に 関する誤りを見つける • 代入した前後で a = m.getAngle() - 45; System.out.println(“a= “ + a); 変数の値を表示する Turtle m1 = new Turtle(x, y, a); f.add(m1); m.kameColor = new Color(0,255,255); m.kameScale = m.kameScale * 2; m.rt(45); System.out.println(“d= “ + d); • 式の値を表示することも d = d / 2; System.out.println(“d= “ + d); できる m.fd(d); m1.fd(d); System.out.println(“m1.getX()= “ + m1.getX()); } } 11 計算機プログラミングI (増原) 2003年度 式 (3.7) 式の例 • 180 •x •d/2 • x*x + y*y • (x*x + y*y) / 2 • Math.PI • Math.random() • m.getX() • m.getX() / 2 • new Turtle() • (new Turtle()).getX() • m.fd(10) • “x =” • true • “x=” + x • “m=” + m • “x=” + x + “ m =” + m 12 計算機プログラミングI (増原) 2003年度 式 (3.8.1) 演算の例 • i=i+1 • i++ • x=10 • y = 3 + (x=10) • (int)3.14 •3/2 • (double) 3 / 2 • ((double) 3) / 2 • (double) (3 / 2) • Math.random()*100 • int x; • x = Math.random()*100; • x = (int)(Math.random() * 100); • m.fd(100) • m.fd(3.14) • m.fd((int)(3.14 * 100)) 13 計算機プログラミングI (増原) 2003年度 式 (3.8.3) • true • false • 1==0 •2<3 • 2 <= 2 • 1 != x • !(1 == x) • -3 <= x && x <= 3 • -3 <= x <= 3 • y % 4 == 0 • y % 3 == 0 || y % 4 == 0 • (y > 0 && y % 3 == 0) || y % 4 == 0 14 計算機プログラミングI (増原) 2003年度 変数の使い方 (例) int 長さ = 100, 角度 = 30; ・・・長さと角度を使って図形を描く・・・ 長さ = 80; 角度 = 40; ・・・長さと角度を使って図形を描く・・・ 長さ = 30; 角度 = 50; コ ピ ー ・・・長さと角度を使って図形を描く・・・ 15 計算機プログラミングI (増原) 2003年度
© Copyright 2024 ExpyDoc