プログラミング実習

Javaプログラミング
・If文とfor文を思い出そう
・電気料金を求めるプログラム
・並べ替えのプログラム
家庭の電気料金を計算する

大事な点は,次の点です。
– 何が入力されるべき数値で,何が出力されるべき数
値か?


「契約A」,「使用量」,「燃料費調整単価」の3つが入力され
る変数。
出力は,電気料金。
– 契約Aが変わると,基本料金が変わる。
– 電力料金単価は,3段階に変化する。
– 少数(実数)での計算だが,最後に円未満切り捨て
で整数の答えとする。
家庭の電気料金を計算する

まずは,「契約A」,「使用量」,「燃料費調整単
価」の3つを入力する部分を作ろう。
– 利用する変数はこれら3つだけですか?使う変数は
最初に宣言しておくと分かり易いです。
– 「契約A」が変わると,基本料金が変わります。よっ
て,「基本料金」も変数となります。
– もちろん,最後の計算結果を保存するための変数
が必要です。
– これら5変数は,整数ですか?それとも実数です
か?
家庭の電気料金を計算する

次に,入力された「契約A」を基に,基本
料金を決定する部分を作ろう。
– 契約Aごとにif文を作ってみましょう。
– これを1つのif文で表すとどのようになるで
しょう?
– 上の二つの方法は,どちらが良い方法とい
えるでしょう?
– もし「契約A」の入力ミスで,どのif文にも当て
はまらない時はどうしますか?
家庭の電気料金を計算する

電力料金単価は3段階に分かれている
ので,使用量を基に3つの計算式に分類
して料金を計算し,出力します。
– 使用量が120kWh以下の場合
– 使用量が120kWhを越えて300kWh以下
の場合
– 使用量が300kWhを越えた場合
– 最後の円未満切り捨てはどのようにします
か?
並べ替えのプログラム




前回のIf8a.javaを見てみましょう。
どのような処理をしているでしょうか?
ループが二重になっているのはなぜで
しょうか?
入力の部分もforを使って書いてみましょ
う
並べ替えのプログラム
data[0] data[1] data[2] data[3]
最初の状態
(例)
10
20
30
40
data[4]
50
小さい順に並んでいるものを大きい順に並べ変えることが
一番手間がかかるので,これを例に考えてみましょう。
j=0, i=0
20
10
30
40
50
j=0, i=1
20
30
10
40
50
並べ替えのプログラム
data[0] data[1] data[2] data[3]
data[4]
j=0, i=2
20
30
40
10
50
j=0, i=3
20
30
40
50
10
j=0におけるiに関するループ処理が終了して,ようやく
最も大きい数値が一つだけ左に移動しました。
この数値をdata[0]の位置まで移動させるには,あと三つ
左に移動しなければなりません。つまり,jに関してあと三
回,同様の処理を繰り返す必要があると言うことです。
よって,j=0~3,それぞれのjについてi=0~3の,計16回
のループ処理が必要になります。
徐々に数値が
移動していく様
子が,「泡が水
面に上がってく
る様子と似てい
る」ことから,
「バブルソート」
と呼ばれます。
来週の予定





構造化プログラミング
「流れ図」の書き方
「アルゴリズム」の考え方
「検索」のプログラム
「オブジェクト指向」とは
これからのテーマについて

動くwebページを作ろう(普通)
– Javaアプレット

画像処理をしてみよう(中難度)
– Java2D, Java3D

音声処理をやってみよう(高難度)
– 音の周波数解析

最後は,画像や音のプログラム結果などをweb
ページの上から発表するようにします。