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

プログラミング言語3

N/A
N/A
Protected

Academic year: 2021

シェア "プログラミング言語3"

Copied!
17
0
0

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

全文

(1)

プログラミング言語 3

第 02 回( 2007 年 10 月 01 日)

今日の配布物

片面の用紙 1 枚

アンケート

今日の最後に回収します。

出欠を兼ねているので、必ず提出すること。

(2)

今日やること

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

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

2007

10

01

日分と書いてある部分が、本日の教材です。

本日の内容

基本データ型

配列

制御構造

前回の課題の解答

(3)

プログラム(のソース)Hello.javaをコンパイル、実行しなさい。

レポートとして、

コンパイルの方法

実行の方法

実行結果

を報告しなさい。

前回の課題

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

コンパイルの方法 コンソール上で と入力する。

実行の方法

コンソール上で と入力する。

実行結果

コンソールに Hello と出力される。

回答例

javac Hello.java javac Hello.java

java Hello

java Hello

(4)

基本的なデータ型

Java で使用できるデータ型

Java で使用できるデータ型

boolean

型 :

true

または

faulse

char

型 :

16bit

Unicode

文字

byte

型 :

8bit

符号付き整数

short

型 :

16bit

符号付き整数

int

型 :

32bit

符号付き整数

long

型 :

64bit

符号付き整数

float

型 :

32bit

浮動小数点数

double

型 :

64bit

浮動小数点数

C

言語にあった符合無し整数の方はありません。

(5)

変数

値を保存しておく変数を使用することができる。

使うためには、あらかじめ宣言する必要がある。

のように宣言する。 C 言語と同様の形で宣言できる。

宣言の時に、値を代入することもできる。

値の代入は、 = で行う。

int i,j;

char ch1;

long lo1;

int i=1;

char ch1='A';

i=1;

演算 その 1

Java でも、色々な演算子が使用できる。

算術演算子 算術演算子 算術演算子 算術演算子::::

x + y

x

y

の和

x - y

x

y

の差

x * y

x

y

の積

x / y

x

y

で割った商

x % y

x

y

で割った余り 関係演算子

関係演算子 関係演算子 関係演算子::::

x < y

x < y

のとき真(

1

)、さもなければ偽

(0) x <= y

x <= y

のとき真(

1

)、さもなければ偽

(0) x > y

x < y

のとき真(

1

)、さもなければ偽

(0) x >= y

x > y

のとき真(

1

)、さもなければ偽

(0) x == y

x = y

のとき真(

1

)、さもなければ偽

(0) x != y

x != y

のとき真(

1

)、さもなければ偽

(0)

論理演算子 論理演算子 論理演算子 論理演算子::::

A && B

A

かつ

B A || B

  :

A

もしくは

B

!A

A

の否定

(6)

演算 その 2

その他にも、ビット演算を行う演算子とかがある。

x & y

x

y

のビットごとの

AND x | y

x

y

のビットごとの

OR x ^ y

x

y

のビットごとの

XOR x << y

x

y

ビットだけ左シフト

x >> y

x

y

ビットだけ算術右シフト

x >>> y

x

y

ビットだけ論理右シフト

演算 その 3

インクリメントとディクリメント インクリメント → 増加 ディクリメント → 減少

1

x++

x

の値を評価後、インクリメント

2

++x

x

の値をインクリメント後、評価

3

x--

x

の値を評価後、ディクリメント

4

--x

x

の値をディクリメント後、評価

上の意味

1

y=x++

y=x; x=x+1;

:値を渡してから、

x

1

を加える

2

y=++x

x=x+1; y=x;

x

1

を加えてから、値を渡す

3

y=x--

y=x; x=x-1;

:値を渡してから、

x

から

1

を引く

4

y=--x

x=x-1; y=x;

x

から

1

を引いてから、値を渡す

(7)

代入演算子

i+=2;

i+=2;

他にも、減算代入( -= )、乗算代入( *= )、除算代入

( /= )等、一通りあります。

加算代入:

整数型の変数 i に 2 を加えて i に代入したい i=i+2; とほとんど同じ意味。

配列

(8)

配列とは

配列とは、変数が沢山並んだようなもの。

使用する場合は、宣言しておく必要がある。

C

言語とは宣言の仕方が異なっているので注意!。

サイズが

10

の配列

t

を宣言した場合は、

t[0]

t[9]

までの

10

個 になる。

t[0] t[1] t[2] t[3] t[4] t[5] t[6] t[7] t[8] t[9]

1 1 1 1 1 1 1 1 1 1

配列の宣言の仕方 その 1

配列を使う際には、宣言と領域確保を行う必要がある。

宣言の仕方 : 領域確保の仕方:

例えば、サイズ 10 の整数型の配列 t を宣言するなら、

とする。これで、 t[0] ~ t[9] までを使用できるようになる。

配列の型[] 配列名;

配列の型[] 配列名;

配列名 = new 配列の型[要素数];

配列名 = new 配列の型[要素数];

int[] t;

t = new int[10];

int[] t;

t = new int[10];

(9)

配列の宣言の仕方 その 2

宣言と領域確保を 1 行で書くこともできる。

たとえば、サイズ 10 の整数型の配列 t を宣言するなら、

配列が領域確保されたとき、各要素には初期値が入る。

整数型や浮動小数点型なら 0 に初期化される。

boolean がたなら false に初期化される。

文字型なら、 null に初期化される。

配列の型[] 配列名 = new 配列の型[要素数];

配列の型[] 配列名 = new 配列の型[要素数];

int[] t = new int[10];

int[] t = new int[10];

配列の宣言の仕方 その 3

領域確保したときに、初期値を与えることもできる。

この場合、サイズ n の配列になる。

たとえば、

とすると、サイズ 10 の配列が領域確保される。

配列名 = {値1,値2, … ,値n};

配列名 = {値1,値2, … ,値n};

int[] t = new int[10];

int[] t = new int[10];

(10)

配列の宣言 例

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]);

} }

配列を宣言

t1[1]

1

を代入 このプログラムを実行する場合、

ファイル名は

Sample02a.java

に して下さい。

t1[0]

の値を表示

t1[1]

の値を表示

t2[3]

の値を表示

System.out.println が何かは、次回以降にやります。

制御構造

(11)

制御

C 言語と同様に、 Java にも制御を行う命令がある。

分岐や繰り返しの処理を行いたい場合は、

if ~ else : 条件判定

while : 繰り返し

do ~ while : 繰り返し

for : 繰り返し

switch : 条件判定

 等を使用する。

if ~ else

if-else 文、 if-else if 文

• 式 1 を評価した結果が真(すなわち 0 でない値)である 場合、文 1 を実行し文 2 をスキップする。

• 式 1 を評価した結果が偽(すなわち 0 )である場合、文 1 をスキップし文 2 を実行する。

• else 以降は省略しても良い。

if( 式 1) 文 1 else 文 2

(12)

if ~ else 文の説明

int t;

(中略)

if(t==1){

文1 }else{

文2 }

t=1のとき t=2のとき

式を評価した結果が真である場合、

1

を実行し文

2

をスキップ

偽である場合、

1

をスキップして、文

2

を実行

while

while

• 式を評価した結果が真(すなわち 0 でない値)である間、

文の実行を繰り返す。

• break があると、そこから while の外までジャンプする。

while( 式 ) 文

(13)

do ~ while の説明

int t;

(中略)

t=1;

while(t<10){

文3 t++;

}

t<10を満たす間、

この部分が繰り返される

式を評価した結果が真である間、

文の実行を繰り返す。

このタイミングで、

式の評価が行われる。

do ~ while

while

• 式を評価した結果が真(すなわち 0 でない値)である間、

文の実行を繰り返す。

• while 文との違いは、式を評価するタイミング。

• break があると、そこから while の外までジャンプする。

do{

}while( 式 )

(14)

do ~ while の説明

int t;

(中略)

t=1;

do{

文3 t++;

}while(t<10)

t<10を満たす間、

この部分が繰り返される

式を評価した結果が真である間、

文の実行を繰り返す。

このタイミングで、

式の評価が行われる。

制御 その 4 for

for

• 最初に式 1 を評価する。

• 式 2 を評価した結果が真である間、

文の実行と式 3 の評価を繰り返す。

• break があると、そこから for の外までジャンプする。

for( 式 1; 式 2; 式 3) 文

(15)

do ~ while の説明

int t;

(中略)

for(t=1;t<10;t++){

} t<10を満たす間、

この部分が繰り返される

最初に式

1

を評価する。

2

を評価した結果が真である間、

文の実行と式

3

の評価を繰り返す。

t=1からスタート。

文を実行するたびに、t++する。

switch 文の説明

switch( 整数式 ){

case ラベル 1:

文 1

case ラベル 2 : 文 2

   default:

文 3 }

整数式を評価し、対応するラ ベルまでジャンプします。

対応するラベルが無い場合、

default にジャンプします。

ラベルの数は任意です。

default は省略可能です。

途中で抜けるときは、 berak

を用います。

(16)

switch 文の説明

int t;

(中略)

switch(t){

case 1: 文1

case 2: 文2; break;

case 3: 文3   default:文3 }

t=1のとき t=2のとき t=3のとき t=4のとき

対応するラベルまでジャンプ

対応するラベルがないと

default

にジャンプ

• break

switch

文の外に

課題のヒント

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]);

} }

最初の

2

行は 弄らなくて

OK

変数が必要なら ここら辺で宣言する このプログラムを実行する場合、

ファイル名は

Sample02a.java

に して下さい。

ここらへんを差し替えて

t[i]

の値を表示する。

(17)

誤植のおもひで

23

ページ目左側

5

行目:

誤:

else{

正:

} } } }else{

参照

関連したドキュメント

&#34;A matroid generalization of the stable matching polytope.&#34; International Conference on Integer Programming and Combinatorial Optimization (IPCO 2001). &#34;An extension of

In the case of the half space problem, it was shown in [8, 9] that not only the above mentioned behavior of the diffusion wave appears but also some difference to the Cauchy

Keywords.&#34; Dynamical system, Attractor, Hyperbolic attractors, Lorenz type attractors, Quasiattractors, Strange nonchaotic attractors, Nonstrange chaotic attractors..

This reflects the fact that T (2) with the exceptional tight contact structure contains two non Legendrian isotopic vertical Legendrian curves with twisting number 0, and negative

[r]

Rumsey, Jr, &#34;Alternating sign matrices and descending plane partitions,&#34; J. Rumsey, Jr, &#34;Self-complementary totally symmetric plane

Combining energy-derived CO 2 emissions (industrial, commercial, residential, and transport sectors) with non-energy-derived CO 2 emissions (others), trends and composition ratios

Figure 2-10 Composition ratios in final energy consumption by fuel type in the industrial sector ... Figure 2-11 IIP increases in manufacturing in