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

10/8 Finder,, 1 1. Finder MAC OS X 2. ( ) MAC OS X Java ( ) 3. MAC OS X Java ( ) / 10

N/A
N/A
Protected

Academic year: 2021

シェア "10/8 Finder,, 1 1. Finder MAC OS X 2. ( ) MAC OS X Java ( ) 3. MAC OS X Java ( ) / 10"

Copied!
72
0
0

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

全文

(1)

計算機数学概論

脇 隼人 九州大学 マス・フォア・インダストリ研究所

2015-10-08

URL : http://webct.kyushu-u.ac.jp

上記から

,

「計算機数学概論」を選択 「コンテンツ」

10/8

の講義・演習」にこの資料を掲載

(2)

今日の目標

Finder,

テキストエディット

,

ターミナルの使い方を学ぶ1

1. Finder

ファイルやフォルダを管理する

MAC OS X

のアプリケー ション フォルダを使って項目ごとにファイルを保存すること

2.

テキストエディット テキスト

(

文字を書く

)

のための

MAC OS X

のアプリケー ション この講義・演習では

Java

言語でプログラムを書くために使 います

(

重要

)

3.

ターミナル 計算機を管理するための

MAC OS X

のアプリケーション この講義・演習では

Java

言語で書いたプログラムをコンパ イル・実行するために使います

(

重要

)

1 といっても大したことはない. 30分くらいで終わるはず 2 / 10

(3)

Finder

の使い方

1 次をクリック

Figure : 出典 : Apple.com

2 左側にある

,

自分のアカウントが書いているところをクリッ

(4)

Finder

の使い方

(

続き

)

1 右クリックして

,

CS

」という名前のフォルダを作る 2 この「

CS

」の下にこの講義・演習で作るファイルをおきま しょう 注意

:

もし

Finder

の左側に自分のアカウントが出なければ

,

Finder

の環境設定を変更する

(4372277867

は私のアカウント

)

4 / 10

(5)

テキストエディットの使い方

Finder

の左側にある「アプリケーション」→「テキストエ ディット」で起動 「テキストエディット」の環境設定をみて

,

「フォーマット」 を「標準テキスト」する 課題

1 :

この講義・演習への自分なりの目標や希望を手短に 書いて

,

フォルダ

CS

に保存する

(6)

ターミナルの使い方

Finder

の左側にある「アプリケーション」

「ユーティリ ティー」

「ターミナル」を起動 ターミナルで

cd

とタイプする

.

次に

cd CS

とタイプする

.

これで

,

フォルダ

CS

にファイルを 作ることができる

touch test.txt

とすると

,

フォルダ

CS

の下に

text.txt

いうファイルができる

.

テキストエディットで

text.txt

を開く2

.

その際にフォルダ に注意する

.

2 もちろん何も書いてありません 6 / 10

(7)

寄り道

:

代表的なコマンドと意味

コマンド 意味

cd CS

フォルダ「

CS

」への移動

ls

そのフォルダにあるファイルやフォルダを表示

pwd

今いるフォルダを表示

mv fileA fileB

ファイル「

fileA

」を「

fileB

」と名前を変える

mv fileA FolderB

ファイル「

fileA

」をフォルダ「

FolderB

」へ移動

cp fileA fileB

ファイル「

fileA

」を「

fileB

」へコピー

cp fileA FolderB

ファイル「

fileA

」をフォルダ「

FolderB

」へコピー

mkdir FolderA

フォルダ「

FolderA

」を作る

(8)

Java

のコンパイルと実行

準備

講義・演習の

Web page

の「情報」から

quiz1.java

quiz2.java

をフォルダ

CS

にダウンロード ダウンロードの詳細は

webct

に記載 ターミナルを開いて

,

フォルダ

CS

に移る コンパイル コンパイルとは

, Java

言語で書いたプログラムを機械後に変 換する操作

ターミナルで

javac quiz1.java

と打ち込んで

return

キー を押す

(9)

実行

変換されたプログラムを実行する

ターミナルで

java quiz1

と打ち込んで

return

キーを押す

Input positive integer

とでるので

,

何か正の整数を

(

角文字で

)

入力する 課題

2 :

何回も実行することでこのプログラムが何をしてい るか予想しなさい3 課題

3 : quiz2.java

に対してもコンパイル・実行して

,

このプ ログラムが何をしているか予想しなさい4 3直接プログラムを読んで答えても構わない

(10)

課題の提出先

URL : http://webct.kyushu-u.ac.jp

上記から

,

「計算機数学概論」を選択 「コンテンツ」

10/8

の課題」をクリック 期限は

, 10/8 PM 11:59

です 10 / 10

(11)

計算機数学概論

脇 隼人 九州大学 マス・フォア・インダストリ研究所

2015-10-22

URL : http://webct.kyushu-u.ac.jp

上記から

,

「計算機数学概論」を選択 「コンテンツ」

10/22

の講義・演習」にこの資料を掲載

(12)

前回の課題

1

へのコメント

I

一年の頃に受けたプログラミングは途中から理解できなかったも のがあったので、この講義では最後までなんとか理解できるよう に努力することを目標としています。 理解することも大切ですが

,

「使えるようになる」というの が大切です

.

この講義では、あまりなじみのないプログラムについて、苦手意 識がなくなるようにする。 苦手意識をなくす事は大切です

.

一年のときにターミナルを使ったときは、よく分からずに打って いたので、ひとつひとつの意味を理解した上で使えるようになっ て、応用などがきくようにしたいと思います。

JAVA

だけでなく

,

ターミナルの使い方やスナップショットの 取り方など

, JAVA

以外の技術も身につけてください 2 / 16

(13)

前回の課題

1

へのコメント

II

人に頼ることなく、自分の力だけで授業についていけるようにな る。演習課題を毎回必ず出す。 無理をせずに

,

困った時は教員・

TA

だけでなく友達にも頼り ましょう 日常的にパソコンを使っていても触れることのできないプログラ ミングについてこの機会にしっかり学習して、将来的に自分の研 究に使えたらと考えている。 この講義では最低限の情報しか与えられません

.

プログラミ ング能力を高めるにはみなさんの興味・努力が必要です

.

目標は Java 言語をうまく使いこなせるようになることです!

JAVA

だけでなく

,

様々な言語を必要に応じて使えるようにな ることが大切です

.

パソコンを使うのは苦手ですが、がんばりたいと思います。

(14)

前回の課題

1

へのコメント

III

「文房具」ですので好き嫌いにかかわらず使えるようになっ てください

.

自分で Android のアプリケーションを作れるようになりたい。 この講義だけではそれは難しいです

.

4 / 16

(15)

JAVA

の初歩

目標

JAVA

のおまじないから

,

入出力

,

変数と型

,

代入

, if

, for

,

while

文が使えるようになる 間違い探し

(

デバッグ

)

ができるようになる 注意

資料のプログラムを

Copy & Paste

しても正常に動かない工

夫をしています

.

より簡単にプログラムが書けるような技術も紹介するので見 逃さないように

(16)

おまじない

Hello World!

を出力するプログラム

public class Hello

public static void main

String[] args

){

System.out.println

"Hello World!"

;

} } 注意

Hello.java

というファイルを作成しコンパイル

&

実行 javac Hello.java java Hello 入力文字は全て半角文字

1

行目の

Hello

3

行目以外はおまじない

.

1

行目の

Hello

とファイル名の

Hello.java

は同じものでな いといけない 6 / 16

(17)

Hello World!

を出力するプログラム

public class Hello

public static void main

String[] args

){

System.out.println

"Hello World!"

;

} } 注意

(

続き

1)

{”

}”

は対応する

1

行目の

{”

の冒頭の位置と対応する

}”

の位置を合わせる

2

行目の

{”

の冒頭の位置と対応する

}”

の位置を合わせる

2

行目と

4

行目は行頭で

tab

キーを

1

回押す

3

行目は

Hello World!

を出力する命令

(18)

出力

例 次の出力を表示するプログラム 3 + 4 = 7 5 * 6 = 30 7 / 8 = 0 7.0 / 8.0 = 0.875

public class keisan{

public static void main(String[] args){ System.out.println("3 + 4 = "+ (3+4)); System.out.println("5 * 6 = "+ (5*6)); System.out.println("7 / 8 = "+ (7/8)); System.out.println("7.0 / 8.0 = "+ (7.0/8.0)); } } 課題

1

上記のプログラムを作成

&

実行しなさい

.

またそのプログラ ムを提出すること 8 / 16

(19)

補足

System.out.println("

文字列

");

は文字列と改行を出力

System.out.print("

文字列

");

は文字列だけを出力

: println

print

ではこんなに違う

?

public class keisan{

public static void main(String[] args){ System.out.print("3 + 4 = "+ (3+4)); System.out.print("5 * 6 = "+ (5*6)); System.out.print("7 / 8 = "+ (7/8)); System.out.print("7.0 / 8.0 = "+ (7.0/8.0)); } } 出力 3 + 4 = 75 + 6 = 307 / 8 = 07.0 / 8.0 = 0.875

(20)

おまじないと出力のまとめ

おまじないのまとめ

???.java

public class ???

public static void main

String[] args

){

(

以下プログラム

)

} } 出力のまとめ

System.out.println

文字列

(

と改行

)

を出力するには

, System.out.println("

文 字列

");

System.out.print("

文字列

");

は文字列だけ 文字列

A

文字列

B

を出力するには

, +

でつなげる 整数

/

整数 は商を出力することに注意

!

10 / 16

(21)

変数と型

変数

:

整数

,

有理数

,

文字などを保存する「箱」みたいな物 整数の場合

(

整数型の変数

x

を作って

4

を代入

int x;

x = 4;

あるいは

int x = 4;

注意

:

次のプログラムでは

,

変数

x

3

が代入される

int x = 4;

x = 3;

(22)

有理数の場合

(

有理数型の変数

x

を作って

4.0

を代入

double x;

x = 4.0;

あるいは

double x = 4.0;

注意

:

次のプログラムでは

,

変数

x

3.5

が代入される

double x = 4.0;

x = 3.5;

文字の場合

(

文字型の変数

x

を作って

c

を代入

char x;

x = ’c’;

あるいは

char x = ’c’;

12 / 16

(23)

課題

2 :

下の問いに答えるために

, x, y

を出力するプログラムを 作成しなさい

.

ファイル名を

sample.java

として提出すること

.

代入について

int x = 10

x = x

1

// (1)

左辺の

x

の値はなんでしょう

x = x*x

// (2)

左辺の

x

の値はなんでしょう

double y = 5.5

y = x*y

// (3)

左辺の

y

の値はなんでしょう

(24)

(

キーボードからの

)

入力

整数の場合

(

入力の型が整数の場合

import java.util.Scanner;// これは public class の前の行に書 くこと

(中略)

Scanner input = new Scanner(System.in); int N = input.nextInt();

キーボードでタイプした値を

,

整数型の変数

N

に代入

有理数の場合

(

入力の型が有理数の場合

import java.util.Scanner; // これは public class の前の行に書 くこと

(中略)

Scanner input = new Scanner(System.in); double x = input.nextDouble();

(25)

課題

3 : keisan3.java

というファイルを作成し下記の値を出力 するプログラムを作成して提出しなさい

.

キーボードから整数値

x

と有理数

y

1

つずつ入力して次を 出力させること

.

x =

y =

x + y =

x * y =

x / y =

(26)

課題の提出先

URL : http://webct.kyushu-u.ac.jp

上記から

,

「計算機数学概論」を選択 「コンテンツ」

10/22

の課題」をクリック 期限は

, 10/22 PM 11:59

です 16 / 16

(27)

計算機数学概論

脇 隼人 九州大学 マス・フォア・インダストリ研究所

2015-10-29

URL : http://webct.kyushu-u.ac.jp

上記から

,

「計算機数学概論」を選択 「コンテンツ」

10/29

の講義・演習」にこの資料を掲載

(28)

10/22

の課題の解説

注意 「

10/29

の課題」に

10/22

の課題を提出している人が

2

.

間違えないように 解答例を公開しているので

,

必ずダウンロードして眺める

or

読むこと コンパイルの通らないプログラムは評価しない 間違った答えを出すプログラムは評価しない 補足 ターミナルには補完機能があります

.

タブキーで

,

補完してくれます 上下キーを押すと

,

過去に入力したコマンドに遡れます 2 / 21

(29)

コメント

1 :

二重引用符のエラー

(30)

コメント

2 :

記述ミス

これは

, System.out.println

の二つ目のピリオドがない

ちゃんと入力する

(31)

JAVA

の初歩

2

目標

JAVA

のおまじないから

,

入出力

,

変数と型

,

代入

, if

, for

,

while

文が使えるようになる 間違い探し

(

デバッグ

)

ができるようになる 注意

資料のプログラムを

Copy & Paste

しても正常に動かない工

夫をしています

.

より簡単にプログラムが書けるような技術も紹介するので見 逃さないように

(32)

変数の型について

整数

(int)

計算機内部で整数を表現する際に

2

進法を使う

. 1bit

0

1

を表現

nbit

なら

(

−1)

s n−1

i =1

ai

2

i ただし

, s, a

1

, . . . , a

n−1

∈ {0, 1},

絶対値がとても大きい整数が表現できない

32bit

なら

,

−2

31から

2

31

− 1

まで可能

64bit

なら

,

−2

63から

2

63

− 1

まで可能 6 / 21

(33)

有理数

(double)

正確には有理数でなく浮動小数点数と呼ばれている 計算機内部での表現は

,

通常

64bit

利用する

.

s e e

· · · e e m m · · · m m m

符号

s,

指数部

e(11

),

仮数部

m(52

)

x = (

−1)

s

× 2

e−1023

×

(

1 +

52

i =1

d

i

2

−i

)

表現できない数が沢山ある

.

例えば

x = 0.1

(34)

異なる型を扱うには

:

次はコンパイルするとエラーになる

int x = 1;

x = x + 1.0;

x

int

だが

1.0

double

であるため 型変換

(

キャスト

) I

int x = 1;

x = x + (int)1.0; // x = 2

と出力

double

から

int

へ変換

= 1.0

から

1

へ変換

int x = 1;

x = x + (int)1.75; //

実は

2.75

ではなく

2

となる 8 / 21

(35)

型変換

(

キャスト

) II

x = 7/8; // x は 0 になる x = (double)7/(double)8; // x は 0.875 x = 7.0/8; // x は 0.875 x = 7.0/8.0; // x は 0.875 注意

: double

型を扱うときは

,

定数も

double

型を扱うと間違 えが少なくなる

.

例えば

,

double y = 1.0; // y = 1; と書いても良い y = 2.0 * Math.sin(Math.PI/2.0); // y = 2*Math.sin(Math.PI/2); と同じ

(36)

if

if

:

条件分岐 if (条件式) { 条件式が true の処理; } 条件式が正しければ

true,

間違っていれば

false

1 : p

を降水確率だと思うと

...

int p; ... if (p >= 50) {

System.out.println("It will rain today."); }

(37)

if

:

条件分岐 if (条件式) { 条件式が true の処理; }else{ 条件式が false の処理; } 例

2 : p

を降水確率だと思うと

...

int p; ... if (p >= 50) { System.out.println("Need an umbrella."); }else{

System.out.println("Not need an umbrella."); }

(38)

if

:

条件分岐 if (条件式 A) { 条件式 A が true の処理; }else if (条件式 B){ 条件式 B が true の処理; }else{ 条件式 A も条件式 B も false の処理; } 例

3 : p

を降水確率だと思うと

...

if (p >= 0 && p<=20) { System.out.println("Sunny!"); }else if(p > 20 && p <=50 ){

System.out.println("Cloudy."); }else{

System.out.println("Rainy."); }

(39)

if

:

条件式の書き方

Tabelle:if 文の条件式

Java

数学 意味

p == 50

p = 50

p

50

に等しければ

true,

それ以外なら

false

p != 50

p

̸= 50 p

50

に等しくなければ

true,

それ以外なら

false

p >= 50

p

≥ 50 p

50

以上ならば

true,

それ以外なら

false

p <= 50

p

≤ 50 p

50

以下ならば

true,

それ以外なら

false

p > 50

p > 50

p

50

より大きければ

true,

それ以外なら

false

p < 50

p < 50

p

50

より小さければ

true,

それ以外なら

false

p >= 0 && p <= 20

, 0

≤ p

かつ

p

≤ 20

p >= 40 || p <= 20

, p

≥ 40

または

p

≤ 20

(40)

10/8

の課題から

if(N % 3 == 0 && N % 5 == 0){

System.out.println("FizzBuzz");

}else if(N % 3 == 0){

System.out.println("Fizz");

}else if(N % 5 == 0){

System.out.println("Buzz");

}else{

System.out.println(N);

}

入力

N

に対して

, FizzBuzz

などを出力 注意

: N % 3

N

3

で割った余りを返す 14 / 21

(41)

数学クラス

https://docs.oracle.com/javase/8/

docs/api/java/lang/Math.html) I

擬似乱数

:

計算機で生成するデタラメな数

double x = Math.random(); // 0 以上 1 未満の浮動小数点数を返す int y = (int) (9*Math.random()); // 0 以上 8 以下の整数を返す double z = 2*Math.random()-1.0; // -1 以上 1 未満の浮動小数点数 を返す 絶対値 double x = Math.abs(-3.0); 平方根

,

立方根 double x = Math.sqrt(2.0); double y = Math.cbrt(2.0);

(42)

数学クラス

https://docs.oracle.com/javase/8/

docs/api/java/lang/Math.html) II

累乗

, log

e

double x = Math.pow(1.5, 6);// 1.5 の 6 乗 double y = Math.log(1.3);

sin(x ), cos(x ), tan(x )

double x = Math.sin(2.0);

double y = Math.cos(Math.PI/2.0); double z = Math.tan(-Math.PI);

arcsin(x ), arccos(x ), arctan(x )

double x = Math.asin(0.5); double y = Math.acos(0.5); double z = Math.atan(-10);

(43)

数学クラス

https://docs.oracle.com/javase/8/

docs/api/java/lang/Math.html) III

π, e

double x = Math.PI; double y = Math.E; 切り上げ

,

切り捨て double x = Math.ceil(1.5); double y = Math.floor(1.5);

(44)

課題

1 : double d = Math.random();

を使って

,

以下のプログ ラムを作成せよ

.

ファイル名は

Omikuji.java

とすること

.

d < 0.1

ならば

, Great blessing

と出力

0.1

≤ d < 0.3

ならば

, Small blessing

と出力

0.3

≤ d < 0.5

ならば

, Blessing

と出力

0.5

≤ d < 0.7

ならば

, Curse

と出力

0.7

≤ d < 0.9

ならば

, Small curse

と出力

0.9

≤ d < 1.0

ならば

, Great curse

と出力 最後に

d

の値も出力すること 18 / 21

(45)

課題

2 :

以下の公式を用いて求めた

π

の近似値と

Java

の数学ク ラスを使って

π

を出力するプログラムを書いて提出しなさい

.

ファイル名は

pi.java

にしなさい

.

(Machin の公式) π 4 = 4 arctan ( 1 5 ) − arctan ( 1 239 ) , (Euler の公式) π 4 = 5 arctan ( 1 7 ) + 2 arctan ( 3 79 ) , (Stormer の公式) π 4 = 6 arctan ( 1 8 ) + 2 arctan ( 1 57 ) + arctan ( 1 239 ) . 参考

double p1 = 4*Math.atan(1.0/5.0)-Math.atan(1.0/239.0); // Machin ...

System.out.println("Machin = "+ (p1*4)); ...

(46)

課題

3 :

入力を西暦

N(

正の整数で

, 2500

以下とする

)

として

,

グ レゴリオ暦で閏年かどうか判定するプログラムを書きなさい

.

leap.java

というファイル名にすること

.

閏年の定義は以下の通りである

(Wikipedia

より

):

N

4

で割り切れないならば

,

閏年でない (N が 4 で割り切れて) さらに N が 100 で割り切れないならば, 閏年である (Nが4と100で割り切れて)さらにNが400で割り切れるな らば,閏年である (Nが4と100で割り切れて)さらにNが400で割り切れない ならば,閏年でない 出力例

Input a positive integer :101 Not leap

Input a positive integer :204 Leap

Input a positive integer :100 Not leap

Input a positive integer :1200

(47)

課題の提出先

URL : http://webct.kyushu-u.ac.jp

上記から

,

「計算機数学概論」を選択

「コンテンツ」

10/29

の課題」をクリック

(48)

計算機数学概論

脇 隼人 九州大学 マス・フォア・インダストリ研究所

2015-11-05

URL : http://webct.kyushu-u.ac.jp

上記から

,

「計算機数学概論」を選択 「コンテンツ」

11/5

の講義・演習」にこの資料を掲載 1 / 13

(49)

10/29

の課題の解説

コメント よくできていました

.

できなかった人は

,

解答例を公開して いますので

,

参考にしてください

.

Omikuji.java

leap.java

での

if

文の使い方についてもう 少し工夫できます

.

Omikuji.java

if(d < 0.1){ System.out.println("Great blessing"); }else if(d < 0.3){ System.out.println("Small blessing"); ...(中略)... }else if(d < 1.0){ System.out.println("Great curse"); } System.out.println("d = "+d);

(50)

JAVA

の初歩

3

目標

JAVA

のおまじないから

,

入出力

,

変数と型

,

代入

, if

, for

,

while

文が使えるようになる 間違い探し

(

デバッグ

)

ができるようになる 注意

資料のプログラムを

Copy & Paste

しても正常に動かない工

夫をしています

.

より簡単にプログラムが書けるような技術も紹介するので見 逃さないように

(51)

for

例題

(

円周率の近似

)

π

4

=

n=0

(

−1)

n

2n + 1

無限回の演算は不可能なので

,

これを有限和で扱うと

, π/4

の近似 として扱える

:

pN

=

N

n=0

(

−1)

n

2n + 1

π

4

(N

→ ∞)

それでは

, N = 0

から

N = 6

までをもとめるプログラムを書いて みる

(52)

double p = 1.0; // N=0 System.out.println("p = "+p); p = p - 1.0/3.0; // N = 1 System.out.println("p = "+p); p = p + 1.0/5.0; // N = 2 System.out.println("p = "+p); p = p - 1.0/7.0; // N = 3 System.out.println("p = "+p); p = p + 1.0/9.0; // N = 4 System.out.println("p = "+p); p = p - 1.0/11.0; // N = 5 System.out.println("p = "+p); p = p + 1.0/13.0; // N = 6 System.out.println("p = "+p); 注意

p

(

−1)

n

/(2n + 1)

を追加してるだけ

N = 10

を計算するためにはこの繰り返しをもっと書かなけ ればいけない 5 / 13

(53)

for

文を使うと

...

double p = 1.0; // N = 0 int N = 10; // N=10 まで出力 for(int n=1; n < N+1; n++){ if(n % 2 == 0){ p = p + 1.0/(2*n+1); }else{ p = p - 1.0/(2*n+1); } System.out.println("p = "+p); }

(54)

for

for(初期化; 条件式; 次の一歩){ (繰り返す処理);

}

1 : 0

から

99

までの整数を出力する

for(int i=0; i<100; i++){

System.out.println("i = "+i); }

1

i=0

⇒ i<100

を判定

⇒ i=0

を出力

⇒ i=i+1

つまり

i=1

2

i=1

⇒ i<100

を判定

⇒ i=1

を出力

⇒ i=i+1

つまり

i=2

3 以下繰り返し

4

i=100

⇒ i<100

を判定

終わり

(55)

for

:

繰り返しの処理に便利 for(初期化; 条件式; 次の一歩){ (繰り返す処理); } 例

2 :

10k=1

k

を計算 int sum = 0; for(int k=1; k<=10; k++){ sum = sum + k; } 1

k=1

⇒ k<=10

を判定

⇒ sum = 1 ⇒ k=k+1

つまり

k=2

2

k=2

⇒ k<=10

を判定

⇒ sum = 3 ⇒ k=k+1

つまり

k=3

3 以下繰り返し 4

k=11

⇒ k<=10

を判定

終わり

(56)

二重の

for

3 : DrawGraph1.java

public class DrawGraph1{

public static void main(String[] args){ for(int i=0; i<10; i++){

System.out.print(i +":"); for(int j=0; j<i; j++){ System.out.print("*"); } System.out.println(""); } } } 外側の

for

文は前と同じ 内側の

for

文の条件式は

j < i

内側の

for

文が何をするのか

, i

を固定して考えてみよう

i

の有効範囲

, j

の有効範囲に注意すること 9 / 13

(57)

課題

1 : (

階乗の計算

) 1

以上の整数

N

を入力して

, N!

を出力す るプログラムを提出しなさい

.

ファイル名は

factorial.java

と しなさい

.

N! := N

× (N − 1) × · · · × 3 × 2 × 1.

課題

2 : 2

以上の整数

N

を入力して

, N

の約数を全て出力するプ ログラムを提出しなさい

.

ファイル名は

divisor.java

としな さい

.

参考

Input a positive integer :10 1

2 5 10

Input a positive integer :5 1

(58)

課題

3 : (

二重

for

I)

次のような九九の表を出力するプログラ ムを提出しなさい

.

ファイル名は

Kuku.java

としなさい

.

課題

3

の出力 1*1=1, 1*2=2, 1*3=3, 1*4=4, 1*5=5, 1*6=6, 1*7=7, 1*8=8, 1*9=9, 2*1=2, 2*2=4, 2*3=6, 2*4=8, 2*5=10, 2*6=12, 2*7=14, 2*8=16, 2*9=18, 3*1=3, 3*2=6, 3*3=9, 3*4=12, 3*5=15, 3*6=18, 3*7=21, 3*8=24, 3*9=27, 4*1=4, 4*2=8, 4*3=12, 4*4=16, 4*5=20, 4*6=24, 4*7=28, 4*8=32, 4*9=36, 5*1=5, 5*2=10, 5*3=15, 5*4=20, 5*5=25, 5*6=30, 5*7=35, 5*8=40, 5*9=45, 6*1=6, 6*2=12, 6*3=18, 6*4=24, 6*5=30, 6*6=36, 6*7=42, 6*8=48, 6*9=54, 7*1=7, 7*2=14, 7*3=21, 7*4=28, 7*5=35, 7*6=42, 7*7=49, 7*8=56, 7*9=63, 8*1=8, 8*2=16, 8*3=24, 8*4=32, 8*5=40, 8*6=48, 8*7=56, 8*8=64, 8*9=72, 9*1=9, 9*2=18, 9*3=27, 9*4=36, 9*5=45, 9*6=54, 9*7=63, 9*8=72, 9*9=81, 11 / 13

(59)

課題

3

のヒント

:

以下の

???

を埋めれば良い for(int i=0; ???; i++){

for(int j=0; ???; j++){ ???; } ???; } また

,

出力のためには

System.out.println

System.out.print

を使うと良い

(60)

課題の提出先

URL : http://webct.kyushu-u.ac.jp

上記から

,

「計算機数学概論」を選択 「コンテンツ」

11/5

の課題」をクリック 期限は

, 11/5 PM 11:59

です 13 / 13

(61)

計算機数学概論

脇 隼人 九州大学 マス・フォア・インダストリ研究所

2015-11-12

URL : http://webct.kyushu-u.ac.jp

上記から

,

「計算機数学概論」を選択 「コンテンツ」

11/12

の講義・演習」にこの資料を掲載

(62)

前回の課題について

総評

よくできていました

.

次のプログラムはどこが間違っているでしょう

public class divisor {

public static void main (String[] args){ int n = 1; for(int a = 1; a<=n; n++){ if(n%a==0){ System.out.println(a); } } } } 2 / 11

(63)

コメント

実際に実行してみるとどうなるでしょう こういうのを「無限ループ」という

Control

キーを押しながら

c

を押すと強制的に終了します

(64)

JAVA

の初歩

4

目標

JAVA

のおまじないから

,

入出力

,

変数と型

,

代入

, if

, for

,

while

文が使えるようになる 間違い探し

(

デバッグ

)

ができるようになる 注意

資料のプログラムを

Copy & Paste

しても正常に動かない工

夫をしています

.

より簡単にプログラムが書けるような技術も紹介するので見 逃さないように

(65)

while

while

:

繰り返しの処理 while(条件式){ (繰り返す処理); } 例

1 : i=0, . . ., 99

を出力する int i = 0; while(i < 100){ System.out.println("i = "+i); i = i + 1; } 1

i = 0

⇒while

文の条件式

⇒ i = 0

を出力

⇒ i=1

2

i = 1

⇒while

文の条件式

⇒ i = 1

を出力

⇒ i=2

3 繰り返す

(66)

2 : x = 100

1.08

を何回かけ算すると

200

を超えるか double x = 100.0; int c = 0; while(x <= 200){ x = x * 1.08; c = c + 1; } System.out.println("c = "+c); 1

x = 100.0

⇒while

文の条件式

⇒ x = 108.0, c = 1

2

x = 108.0

⇒while

文の条件式

⇒ x = 116.64, c = 2

3 繰り返す 4

x = 215.89...

⇒ while

文の条件式

⇒ while

終了 5

c = 10

を出力 6 / 11

(67)

while

:

繰り返しの処理 while(条件式){ (繰り返す処理); }

do while

:

繰り返しの処理 do{ (繰り返す処理); }while(条件式); 違いは条件式が後ろにある

,

ということ 無限ループ while(true){ ... }

break

を入れると

,

無限ループから抜け出すことができる

.

(68)

for, while

使い分け

for

while

は似ています

. for

でも

while

でも書ける場合はあ

ります

.

どちらを使うべきかは

,

明確な基準は無く状況によります

for

で書いた方が良い場合 繰り返し処理の回数があらかじめ分かっている 繰り返し処理のための条件式や

,

次の一歩が簡単 など

while

で書いた方が良い場合 繰り返しの回数があらかじめ分かっていない 繰り返し処理のための条件式が複雑 など 8 / 11

(69)

課題

1 :

ユーザが整数値

0

を入力するまで

,

繰り返し整数の入力 を求めて

,

ユーザが

0

を入力するとそれまでに入力された数値の 総和を出力するプログラムを提出しなさい

.

ファイル名は

inputintsum.java

としなさい

.

参考 import java.util.Scanner; ... while(条件式){

scanner input = new Scanner(System.in); System.out.print("Input an integer :"); N = input.nextInt(); (手続き); } 上記の

,

条件式と手続きを考えなさい

.

N

int

であることは

while

の外で記述した方が良い

. do-while

の方が書きやすい

?

(70)

課題

1

の出力例

Input a positive integer :10 Input a positive integer :20 Input a positive integer :1 Input a positive integer :0 sum = 31

Input a positive integer :13 Input a positive integer :-2 Input a positive integer :4 Input a positive integer :0 sum = 15

(71)

課題

2 : (

オイラーの定数の計算

)

オイラー定数

γ

の近似値とし て

γ

N を計算したい

(

ただし

, N

は正の整数

):

γN

:=

N

k=1

1

k

− log(N).

while

文を使って

,

初めて

|γN

− γN

−1

| ≤ ϵ

となる

N

を出力するプ ログラムを提出しなさい

.

提出するプログラムは

,

例えば

,

ϵ = 10

−6として計算しなさい

.

ϵ = 10

−6

double eps = 1.0e-6;

と書けばよい

.

ファイル名は

eulersconst.java

としなさい

.

ちなみに

, lim

N→∞

γ

N

= 0.5772156649

であまり精度の良い

(72)

課題の提出先

URL : http://webct.kyushu-u.ac.jp

上記から

,

「計算機数学概論」を選択 「コンテンツ」

11/12

の課題」をクリック 期限は

, 11/12 PM 11:59

です 12 / 11

Figure : 出典 : Apple.com

参照

関連したドキュメント

デスクトップまたはスタートボタンの“プログラム”に 標準宅地鑑定評価システム 2023 のショートカ

HDMI 3 eARC/ARC(Enhanced Audio Return Channel/Audio Return Channel). eARC/ARCに対応したオーディオシステムと接続

※年 1 回の認証ができていれば、次回認証の時期まで Trend Micro Apex One (Mac) サーバーと 通信する必要はありません。学内ネットワークに接続しなくても Trend Micro Apex

WAV/AIFF ファイルから BR シリーズのデータへの変換(Import)において、サンプリング周波 数が 44.1kHz 以外の WAV ファイルが選択されました。.

本資料は Linux サーバー OS 向けプログラム「 ESET Server Security for Linux V8.1 」の機能を紹介した資料です。.. ・ESET File Security

本装置は OS のブート方法として、Secure Boot をサポートしています。 Secure Boot とは、UEFI Boot

(1) テンプレート編集画面で、 Radius サーバ及び group server に関する設定をコマンドで追加して「保存」を選択..

ESMPRO/ServerAgent for GuestOS Ver1.3(Windows/Linux) 1 ライセンス Windows / Linux のゲスト OS 上で動作するゲスト OS 監視 Agent ソフトウェア製品. UL1657-302