Tagbangers Blog

JS、Javaでサンプルプログラムを作ってみる

こんにちは、藤岡です。

今週も、先週に引き続きJavaとJavaScriptの勉強を進めました。

今週の課題として出していただいたのは、以下の3つです。

  • JSで四則演算を行うプログラムを作る
  • JSで電卓を作る
  • Javaで誕生日を入力し、年齢を算出させるプログラムを作る

それぞれ、説明していきます。


四則演算プログラム(JS)

このプログラムは、単純に「掛け算」、「足し算」、「引き算」、「割り算」を計算させるものです。

注意しなければならないのは、足し算を行う時です。というのも「+」を用いて計算させているため、数値が文字列として扱われてしまう危険性があるということです。そのため、「parseInt」を用いて無理やり数値に変換させています。

また、今回の場合は<form>を用いていますが、これは「name」をつけることによって、親要素としての役割を持たせています。なぜなら、これをつけておかないと、JSで「result」を指定する時に、どの「result」を指しているのかわからなくなってしまうからです。


電卓プログラム(JS)

このプログラムは、標準的な機能(四則演算)を搭載した電卓です。

「eval」という関数は悪意ある第三者に悪用される可能性があるため推奨されていませんが、今回は数値を入力する時に文字列として保持しておき、計算を後回しにしたかったので、使わざるを得ませんでした。

また、「myFlg」という変数を用いて数値か演算子かを区別する考え方もかなり論理的だと思いました。

上記のプログラムは、社員の方にご指摘をいただき改善したもので、最初に作ったものはこれでした。

前のバージョンでは、スコープについて考えられていなかったため、他の機能を追加しようとした時に問題が生じるという欠点がありました。

それを解決するために、クロージャを使って変数を隠蔽しました。クロージャの考え方や扱い方には多少クセがあり、難しいので非常に勉強になりました。

プログラムを改善していく上で見つかる問題に向き合うのはいい勉強法だと思ったので、今後もそのように学んでいきたいです。


年齢算出プログラム(Java)

このプログラムは、名前と誕生日を入力してもらい、そこから計算をさせて年齢を算出するというものです。

このプログラムは、「Person」クラスにおいて「フォーマットを変える」というものと、「年齢を算出させる」という機能を持たせた2つのメソッドにより成り立っています。

1つ目のメソッドでは「try catch」を用いています。なぜかというと、「SimpleDateFormat」は例外を発生させるからです。ここでつまずいたのが、「try catch」内はブロックであるということ。今回の場合、「formatDate」をあらかじめ定義しておき、「try」で代入という形にしないといけないという点です。ここでつまずくということは、グローバル、ローカルの考え方がまだ身についていないということなので、今後意識していきたいです。

2つ目のメソッドではこのプログラムの核である年齢計算を行なっています。しかし、今のままでは年齢計算するたびに型変換が実行され、パフォーマスが悪いそうなので改良していく必要があります。

また全体として、「static」を用いているため、変数をクラスに紐付けてしまっておりよろしくないので、そこも改善していきます。

まだ問題点は多く含んでいますが、「Scanner」で入力させる処理や、「new」することの意味や必要性など、プログラミングにおいて重要な概念を学ぶことができたので非常に勉強になりました。