• 検索結果がありません。

Microsoft PowerPoint - prog03.ppt

N/A
N/A
Protected

Academic year: 2021

シェア "Microsoft PowerPoint - prog03.ppt"

Copied!
34
0
0

読み込み中.... (全文を見る)

全文

(1)

1

プログラミング言語

3

(2)

今日の配布物



片面の用紙

1



今日の課題が書かれています。

(3)

3/33

今日やること



http://www.tnlab.ice.uec.ac.jp/~s-okubo/class/java06/

にアクセスすると、教材があります。

 2007年10月08日分と書いてある部分が、本日の教材です。 

本日の内容



前回の課題の解答



オブジェクト指向プログラミング(その

1



画面への文字の出力

(4)
(5)

5/33

前回の課題

その1:講義資料の

pdf ファイルにあった、

  Sample02a.java をコンパイル、実行しなさい。

実行結果

何故、そのような値が出力されたか

を報告しなさい。

(6)

public class Sample02a{

public static void main(String[] args){ int[] t1 = new int[10];

int[] t2 = {0,1,2,3,4,5,6,7,8,9}; t1[1]=1; System.out.println(t1[0]); System.out.println(t1[1]); System.out.println(t2[3]); }

public class Sample02a{

public static void main(String[] args){

int[] t1 = new int[10];

int[] t2 = {0,1,2,3,4,5,6,7,8,9}; t1[1]=1; System.out.println(t1[0]); System.out.println(t1[1]); System.out.println(t2[3]); }

解説

実行結果

コンソールに と表示される。 0 1 3

(7)

7/33

public class Sample02a{

public static void main(String[] args){ int[] t1 = new int[10];

int[] t2 = {0,1,2,3,4,5,6,7,8,9}; t1[1]=1; System.out.println(t1[0]); System.out.println(t1[1]); System.out.println(t2[3]); } }

public class Sample02a{

public static void main(String[] args){

int[] t1 = new int[10];

int[] t2 = {0,1,2,3,4,5,6,7,8,9}; t1[1]=1; System.out.println(t1[0]); System.out.println(t1[1]); System.out.println(t2[3]); } }

解説

実行結果

整数型の配列 は、0に初期化 されるので、0 が出力される。 1を代入 したので、 1が出力 される。 t2宣言時に値を代入 しているので、 3が出力される。

(8)

前回の課題

その2:t2 の配列の要素をすべて画面に出力する

プログラムを書きなさい。

ここで、while, for,

do~while のうち、

(9)

9/33

public class Sample02a{

public static void main(String[] args){ int[] t1 = new int[10];

int[] t2 = {0,1,2,3,4,5,6,7,8,9}; int int int int i;i;i;i; for(i=0;i<=9;i++){ for(i=0;i<=9;i++){ for(i=0;i<=9;i++){ for(i=0;i<=9;i++){ System.out. System.out. System.out.

System.out.printlnprintlnprintlnprintln(t2[i]);(t2[i]);(t2[i]);(t2[i]); } } } } } }

public class Sample02a{

public static void main(String[] args){

int[] t1 = new int[10];

int[] t2 = {0,1,2,3,4,5,6,7,8,9}; int int int int i;i;i;i; for(i=0;i<=9;i++){ for(i=0;i<=9;i++){ for(i=0;i<=9;i++){ for(i=0;i<=9;i++){ System.out. System.out. System.out.

System.out.printlnprintlnprintlnprintln(t2[i]);(t2[i]);(t2[i]);(t2[i]); } } } } } }

解説

for

文を使った場合

配列のサイズは 10なので、0から 9まで繰り返す。 for文で 使う為に、 変数iを 宣言。 t2[i]の値を出力。 while や do~while を使った場合の例は webに挙がっています。

(10)

オブジェクト指向プログラミング

(11)

11/33

オブジェクト指向プログラミング



C

言語は、関数を駆使して記述する言語だった。



基本的に、全部の命令は関数。



Java

は、オブジェクトを駆使して記述する言語。



すべてオブジェクト。

関数的に利用できるモノもあるけど

… …



クラス、インスタンス、メソッド

次のページから解説



理解するのは、結構、面倒です。

(12)

オブジェクトって何?

直感編

概念とか設計図の世界 実物(オブジェクト)の世界 中身 = 水色の液体 できること • 中身を出す • 中身を入れる

B

中身 = オレンジ色の液体 できること • 中身を出す • 中身を入れる

A

中身 = ?? できること • 中身を出す • 中身を入れる 何も言われないと 空である

(13)

13/33

オブジェクトって何?

直感と

Java

概念とか設計図の世界 実物(オブジェクト)の世界 中身 = 水色の液体 できること • 中身を出す • 中身を入れる

B

中身 = オレンジ色の液体 できること • 中身を出す • 中身を入れる

A

中身 = ?? できること • 中身を出す • 中身を入れる 何も言われないと 空である Javaだと インスタンス と呼ぶ クラス 変数 コンストラクタ メソッド インスタンス インスタンス

(14)

オブジェクトって何?

Java

概念とか設計図の世界 実物(オブジェクト)の世界 contents = 20; メソッド • pushContents(); • popContests();

Data2

contents = 10; メソッド • pushContents(); • popContests();

Data1

Test

int contents;

メソッド • pushContents(); • popContests(); contests=0; Javaだと インスタンス と呼ぶ 変数 コンストラクタ

(15)

15/33

オブジェクト指向プログラミング

main

インスタンスA インスタンスB インスタンスC



インスタンス間で

データをやりとりする。



それぞれのインスタンス

が処理を行う。

関数のように 使えるクラス

(16)

例:



ここから先は、覚える事が一杯です。

(17)

17/33

Java

のプログラムの構造

 プログラムは、1つ以上のクラスを持 ちます。  クラスは、変数とコンストラクタ、メソッ ドを伴っています。 それぞれ、省略可能です。  メソッド main を持つクラスが、必ず 必要です。  プログラムのファイル名と、mainを持 つクラス名は、一致している必要が あります。  慣習として、クラス名は大文字から、 メソッド名は小文字から初めます。 クラス 変数の宣言 コンストラクタ メソッド クラス 変数の宣言 コンストラクタ メソッド プログラム

(18)

サンプル例1

public class Hello {

public static void main(String[] args) {

System.out.println("Hello, world!");

}

}

public class Hello {

public static void main(String[] args) { System.out.println("Hello, world!"); }

}



Hello.java

の場合:

mainを持っているクラス名がHello

なので、ファイル名はHello.java

クラスが持っている変数は無し

コンストラクタも無し

(19)

19/33

やりたいこと

1.

クラスを書く

2.

インスタンスを生成する

3.

実際に使ってみる

(20)

修飾子について

修飾子というのが、これから出てきます。



それぞれの変数やメソッドを、どこから利用でき

るかを指定します。

 public : すべてのクラスのメソッドからアクセス可能  private:同じクラスのメソッドからのみアクセス可能  省略したら、同じパッケージ内でpublicになる publicな変数 privateな変数 publicなメソッド private Data1 Data3 1. クラスを書く 2. インスタンスを生成する 3. 実際に使ってみる

(21)

21/33

クラスの書き方

class Test { } class Test { } 必要なら修飾子を書く(クラスの修飾子については次回以降) class名を書く int test01; コンストラクタを書くが、今回はなし。 次回以降に詳細。

public void push(int test03){

System.out.println(test01 + test03); } 変数を宣言する メソッドを書く。 書き方は 後のスライド。 classと書く 変数やメソッドを クラスのメンバと言います 1. クラスを書く 2. インスタンスを生成する 3. 実際に使ってみる

(22)

変数の宣言の書き方

int test01;

static int test02;

public int test04;

int test01;

static int test02; public int test04;

型を書く 変数名を書く 必要ならstaticと書く。 説明は次回以降。

修飾子と

static

以外は、

C

言語の書き方に似ています。

修飾子を書く 1. クラスを書く 2. インスタンスを生成する 3. 実際に使ってみる

(23)

23/33

メソッドの書き方

public void push(int test03){

System.out.println(test01 + test03);

}

public void push(int test03){

System.out.println(test01 + test03); } 返値の型を書く メソッド名を書く メソッドの中でのみ使用する 変数の定義を書く 引数を書く

修飾子以外は、

C

言語の関数の書き方に似ています。

必要ならstaticと書く。 修飾子を書く 返値が有る場合は、Cと同様、return で返す 1. クラスを書く 2. インスタンスを生成する 3. 実際に使ってみる

(24)

インスタンスの生成

その

1

1. クラスを書く 2. インスタンスを生成する 3. 実際に使ってみる 

宣言と生成を行う必要がある。



宣言の仕方:



生成の仕方:



例えば、クラス

Test

のインスタンス

dt

を生成するなら、

クラス名

インスタンス名;

クラス名

インスタンス名;

インスタンス名

= new クラス名();

インスタンス名

= new クラス名();

Test dt;

dt

= new Test();

Test dt;

dt

= new Test();

(25)

インスタンスの生成

その

2



宣言と生成を

1

行で書くこともできる。

たとえば、クラス

Test

のインスタンス

dt

を生成するなら、

クラス名

インスタンス名

= new クラス名();

クラス名

インスタンス名

= new クラス名();

Test dt

= new Test();

Test dt

= new Test();

1. クラスを書く

2. インスタンスを生成する

(26)

使い方



インスタンスのメンバにアクセスするには、

とする。



たとえば、クラス

Test

に整数型の変数

test01

という変数

があって、クラス

Test

のインスタンス

dt

を生成した場合、

としてアクセスできる。

インスタンス名

.

メンバ名

インスタンス名

.

メンバ名

1. クラスを書く 2. インスタンスを生成する 3. 実際に使ってみる

dt.test01

dt.test01

(27)

class Test{

int test01=2;

public void multiple(int test03){

System.out.println(test01 * test03); }

}

public class Sample03a{

public static void main(String[] args){ Test dt = new Test();

dt.multiple(100); dt.test01=5; dt.multiple(100); } } class Test{ int test01=2;

public void multiple(int test03){

System.out.println(test01 * test03); }

}

public class Sample03a{

public static void main(String[] args){ Test dt = new Test();

dt.multiple(100); dt.test01=5; dt.multiple(100); } }

サンプルプログラム

クラスTestの インスタンスdtを生成 test01=2; multiple(); dt メソッドを、引数100 を渡して実行 インスタンスdtの変数 test01に代入 test01=5; multiple(); dt test01=2; multiple(); Test クラスTestの詳細

(28)
(29)

29/33

println

メソッドと

print

メソッド



標準出力に文字を出力するメソッド



System.out.print()

出力した後、改行しない。



System.out.println()

出力した後、改行する。



改行する・しないの違いがあるだけで、他は一緒。

(30)

基本的な使い方

その

1



文字列

Test Data

を表示する例:

System.out.println("Test Data"); System.out.println("Test Data"); 

int

型の変数

t

の値を表示する例:

""で文字を囲む System.out.println(t); System.out.println(t); そのまま、変数名を書けば OK 

100

を表示する例:

System.out.println(100); System.out.println(100); C言語と違う。 Cの場合 printf("%u¥n",t);

(31)

31/33

基本的な使い方

その

2



文字列

Test Data

と整数型の変数

t

の値を表示する例:

System.out.println("Test Data " + t); System.out.println("Test Data " + t); + 記号で連結できる 

t+10

の値を表示する例:

System.out.println(t + 10); System.out.println(t + 10); + は演算と解釈される。 Test Data 10 出力結果(t=10の場合): 20 出力結果(t=10の場合):

(32)

色んな例



文字列と変数と値が

+

で並んでいる例:

System.out.println("Test Data " + t + 10); System.out.println("Test Data " + t + 10); Test Data 10 10 出力結果(t=10の場合): 2つの+は、どちらも 連結と解釈される 

文字列と変数と値が

+

で並んでいる例:

System.out.println("Test Data " + (t + 10)); System.out.println("Test Data " + (t + 10)); Test Data 20 出力結果(t=10の場合): 連結 括弧おかげで、

(33)

33/33

public class Sample03b{

public static void main(String[] args){ int t=10; System.out.println("Test Data"); System.out.println(t); System.out.println(t+10); System.out.println("Test Data" + t); System.out.println("Test Data " + t + 10); System.out.println("Test Data " + (t + 10)); } }

public class Sample03b{

public static void main(String[] args){

int t=10; System.out.println("Test Data"); System.out.println(t); System.out.println(t+10); System.out.println("Test Data" + t); System.out.println("Test Data " + t + 10); System.out.println("Test Data " + (t + 10)); } }

サンプルプログラム:

ファイル名は Sample03.java

(34)

誤植のおもひで

 21ページ目 上から2行目:

 誤: 必要ならstaticと書く

参照

関連したドキュメント

次に、第 2 部は、スキーマ療法による認知の修正を目指したプログラムとな

“〇~□までの数字を表示する”というプログラムを組み、micro:bit

※証明書のご利用は、証明書取得時に Windows ログオンを行っていた Windows アカウントでのみ 可能となります。それ以外の

荒天の際に係留する場合は、1つのビットに 2 本(可能であれば 3

・カメラには、日付 / 時刻などの設定を保持するためのリチ ウム充電池が内蔵されています。カメラにバッテリーを入

(1) 汚水の地下浸透を防止するため、 床面を鉄筋コンクリ-トで築 造することその他これと同等以上の効果を有する措置が講じら

1 つの Cin に接続できるタイルの数は、 Cin − Cdrv 間 静電量の,計~によって決9されます。1つのCin に許される Cdrv への静電量は最”で 8 pF

ƒ 、または Arduinoのリセットボタン”oƒ、2 }~x してか らコマンド @2 しま Q*した Arduino す。 プログラムを Arduino に…き:む Äsについては「