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

デジタル表現論・第4回

N/A
N/A
Protected

Academic year: 2021

シェア "デジタル表現論・第4回"

Copied!
15
0
0

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

全文

(1)

... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . ... . .... . .... .

デジタル表現論・第4回

劉 雪峰(リュウ シュウフォン)

2016 年 5 月 2 日

劉 雪峰(リュウ シュウフォン)

デジタル表現論・第4回

(2)

... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . ... . .... . .... .

本日の目標

Java プログラミングの基礎

出力の復習

メソッドの定義と使用

(3)

... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . ... . .... . .... .

出力

.

...

System.out.print() と System.out.println() は文字列を端末に出力するためによ

く使用されるメソッドである。

変数 s を文字列とする。

1) System.out.println(s) は文字列 s の最後に自動的に改行 (”\n”=”¥n”) を

加える。

2) System.out.print(s) は改行なし、文字列 s を端末に出力する。

3) System.out.println(s) = System.out.print(s+”\n”)

例:

.

print

..

...

s = " A "

System.out.print(s);

System.out.print(s);

出力:

  A A

 

.

println

..

...

s = " A "

System.out.println(s);

System.out.println(s);

出力:

  A

  A

劉 雪峰(リュウ シュウフォン)

デジタル表現論・第4回

(4)

... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . ... . .... . .... .

.

...

メソッドの使用

(5)

... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . ... . .... . .... .

メソッドを使ってみる

前回の授業の演習では、標準体重の計算をメソッドとしてまとめるこ

とができる。

import

java.util. Scanner ;

public class

Code4_1 {

public static double

Weight (

double

h){

return

h*h*22;

}

public static void

main( String args []){

double

height ;

Scanner scan =

new

Scanner ( System .in );

System .out.print(

" Input height (m) : "

);

height = scan. nextDouble ();

System .out. println (

" Standard weight :"

+ Weight ( height ) +

"kg"

);

}

}

(6)

... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . ... . .... . .... .

メソッドの定義

[ 修 飾 子 ] 戻 り 値 の デ ー タ 型

メソッド名

( 引 数 1, 引 数 2, ...){

// メ ソ ッ ド の 中 身

}

説明:

1) 修飾子は public static などを使用する。修飾子はそのメソッドが

どこからアクセス可能なのかなどを示している。

2) 戻り値のデータ型は int, double, String など。戻り値がない場合、

void を使用すること。

3) メソッド名は

アルファベット

または

アンダーライン

から始まる。

(7)

... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . ... . .... . .... .

メソッドの呼び出し

メソッドの呼び出しは以下の形で行う。

// 戻 り 値 の あ る 場 合

変 数 = メ ソ ッ ド 名 ( 引 数 1, 引 数 2, ...);

// 戻 り 値 の な い 場 合

メ ソ ッ ド 名 ( 引 数 1, 引 数 2, ...);

注意:メソッドの呼び出し元の変数とメソッド内の変数は互いに独立

である。メソッド内の処理によって外部の変数を直接に修正すること

のはできない。

劉 雪峰(リュウ シュウフォン)

デジタル表現論・第4回

(8)

... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . ... . .... . .... .

メソッドの使用例

public class

Code4_2 {

public static void

func1 (){

System .out. println (

"This is method 1."

);

System .out. println (

"No input and no output ."

);

}

public static int

func2(

int

n){

return

2*n;

}

public static void

main ( String [] args) {

func1 ();

int

x= func2 (10);

System .out. println (

"The return value of func2 is:"

);

System .out. println (x);

}

// main

}

// Code4_2

(9)

... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . ... . .... . .... .

変数の有効範囲

.

...

メソッドの呼び出し元の変数とメソッド内の変数は互い独立である。

メソッド内の変数の有効範囲はメソッドの内部に限る。

以下の例の結果を確認しましょう。

public class

Code4_3 {

public static void

get_half (

int

n){

n = n/2;

System .out. println (

"In method get_half , n is "

+n);

}

public static void

main ( String [] args) {

int

n=100;

System .out. println (

" Befor calling , n is "

+n);

get_half (n);

System .out. println (

" After calling , n is "

+n);

}

// main

}

// Code4_3

(10)

... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . ... . .... . .... .

演習

1) ここまでのサンプルコード 4_1, 4_2 ,4_3 を試してみて、メソッド

の使用方法を理解してください。

2) 素数判定のコードにメソッドを導入する。

public class

Report1 {

public static boolean

prime_check (

int

n){

boolean

is_prime =

true

;

        ??

return

is_prime ;

}

// prime_check

public static void

main ( String [] args) {

for

(

int

n=2;n <100;n++){

if

( prime_check(n) ){

System .out. println (

" Prime number :n="

+n);

}

}

// for loop with n

}

// main

(11)

... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . ... . .... . .... .

メソッドの引数が配列の変数である場合

.

...

配列である変数は当該配列のアドレスを格納している。アドレスに対応する

配列の要素の値は変更できる。

public class

Code4_5 {

public static void

set_array_value (

int

[] x){

x [0]=1;

}

// set the first array element to 1

public static void

main ( String [] args) {

int

[] x =

new int

[5];

x [0]=10;

System .out. println (

" Before :

"

+ x [0]);

set_array_value (x);

System .out. println (

" After :

"

+ x [0]);

}

// main

}

// Code4_5

出力: Before: 10 After: 1

(12)

... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . ... . .... . .... .

メソッドの引数が配列の変数である場合

.

...

配列である変数は当該配列のアドレスを格納している。アドレスに対応する

配列の要素の値は変更できる。

public class

Code4_5 {

public static void

set_array_value (

int

[] x){

x [0]=1;

}

// set the first array element to 1

public static void

main ( String [] args) {

int

[] x =

new int

[5];

x [0]=10;

System .out. println (

" Before :

"

+ x [0]);

set_array_value (x);

System .out. println (

" After :

"

+ x [0]);

}

// main

}

// Code4_5

(13)

... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . ... . .... . .... .

レポート課題

以下のようなメソッドを定義しなさい。

1) メソッド名は find_max_min とする。

2) 引数は三つの整数である。

3) 三つの引数の中で、最大数と最小数を画面に出力する。

出力の例:

The maximum number is 30.

The minimum number is 10.

(14)

... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . ... . .... . .... .

ヒント

import

java.util.Scanner;

// 入 力 用

public class

Report2{

public static void

find_max_min(

int

x,

int

y,

int

z){

double

max_value , min_value;

// 最 大 値 の 計 算

// Step 1: x と y を 比 較 し て 、 大 き い 値 を max_value に 格 納 す る 。

// Step 2: max_value と z を 比 較 し て 、 大 き い 値 を max_value に 格 納 す る 。

// Step 3: max_value に は x,y,z の 最 大 値 が 格 納 さ れ て い る の で 、

// max_value を 出 力 す る 。

}

public static void

main (String [] args) {

Scanner input =

new

Scanner(System.in);

// 入 力 用 の 変 数

int

x,y,z;

System.out.println(

"Please input x,y,z:"

);

x = input.nextInt ();

// 整 数 を 入 力

y = input.nextInt ();

z = input.nextInt ();

find_max_min(x,y,z);

}

// main

}

// Report2

(15)

... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . .... . .... . ... . .... . ... . .... . .... .

レポート課題 [2](オプション)

以下のようなメソッドを定義しなさい。

1) メソッド名は sort_array とする。

2) メソッドの引数は整数型の配列である。

3) 引数である配列の要素をソートして、小さいものから大きいもの

までの順にする。

4) メソッドの戻り値はないようにする。

5) 配列の初期値は手動で設定するまたは端末から入力する。

出力の例:

Before sorting , the array is: 10 20 9 5 13;

After sorting , the array is: 5 9 10 13 20.

参照

関連したドキュメント

前章 / 節からの流れで、計算可能な関数のもつ性質を抽象的に捉えることから始めよう。話を 単純にするために、以下では次のような型のプログラム を考える。 は部分関数 (

が前スライドの (i)-(iii) を満たすとする.このとき,以下の3つの公理を 満たす整数を に対する degree ( 次数 ) といい, と書く..

これはつまり十進法ではなく、一進法を用いて自然数を表記するということである。とは いえ数が大きくなると見にくくなるので、.. 0, 1,

共通点が多い 2 。そのようなことを考えあわせ ると、リードの因果論は結局、・ヒュームの因果

ここで, C ijkl は弾性定数テンソルと呼ばれるものであり,以下の対称性を持つ.... (20)

貸借若しくは贈与に関する取引(第四項に規定するものを除く。)(以下「役務取引等」という。)が何らの

各新株予約権の目的である株式の数(以下、「付与株式数」という)は100株とします。ただし、新株予約

いてもらう権利﹂に関するものである︒また︑多数意見は本件の争点を歪曲した︒というのは︑第一に︑多数意見は