4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Go言語で簡単な電卓を作ってみる

Posted at

電卓作成

対話型のプログラムを作ってみたいなーと思いまして。
あと、型確認もできますし!

流れはこんな感じです。

  1. 数字、および演算子の入力(逆ポーランド法で)
  2. 数字および演算子を変数に格納
  3. 演算子毎に違った計算を実施
  4. 計算結果を出力

今回は、+, -, *, / 辺りを実装してみます。
フローチャートは割愛です!

標準入出力

とりあえずは、C言語でいうscanf的なものを調査しないと。

うーん……
結構いろんな種類があるみたい。
どれが適しているのだろう…分からぬ……
とりあえず、fmt.Scanf関数を使って…みますか……

…と思ってやってみたコードがこちら。
※ビルドできません!!!

Calculation.go(失敗例)
package main

import "fmt"

func main() {
    var x int
    fmt.Scanf("%d", &x)
    fmt.Printf("%d\n", x)
}

おお!
いけました!
感覚でいけるもんですね。

というわけで、入力フォームおよび出力内容を作ってみます。
作ったコードはこちら!

Calculation.go
package main

import "fmt"

func main() {
	var a, b int
	var calc string
	
	fmt.Printf("Please enter the calculation formula.\n");
	fmt.Printf("ex) 1 + 1 = ? -> 1 1 +\n");
	fmt.Scanf("%d %d %s", &a, &b, &calc);
	
    fmt.Printf("%d %s %d = ", a, calc, b);
}

コーディングしていて驚いたのは、Go言語にはchar型は無いんですね!
文字を扱えるのは、おそらくstring型のみ。
統一されていて、逆に使いやすいかもしれませんね!

ちなみに、上記のコード実行時の出力結果はこちらです。

$ go run Calculation.go
Please enter the calculation formula.
ex) 1 + 1 = ? -> 1 1 +
2 3 +
2 + 3 =

出力結果、ちょっと見にくいですね。
以降で変更することにします。

条件分岐

では、if文を使った条件分岐をやっていこうと思います。
方針としては、+, -, *, / の4つを実装できれば良いかと。

というわけで、C言語のスキルを駆使して作ったプログラムがこちら!

Calculation.go
package main

import "fmt"
import "os"

func main() {
	var a, b, c int
	var calc string
	
	fmt.Printf("<Formula>\n");
	fmt.Printf("ex) 1 + 1 = ? -> 1 1 +\n");
	fmt.Scanf("%d %d %s", &a, &b, &calc);

	if(calc == "+") {
		c = a + b;
	} else if(calc == "-") {
		c = a - b;
	} else if(calc == "*") {
		c = a * b;
	} else if(calc == "/") {
		if(b == 0) {
			fmt.Printf("I cannot calculate this formula.\n");
			os.Exit(1);
		} else {
			c = a / b;
		}
	}
	
	fmt.Printf("<Answer>\n");
    fmt.Printf("%d %s %d = %d", a, calc, b, c);
}

このプログラムを作成する上で困った点は3つ!

  1. 文字列の等式
  2. else if文の場所
  3. exitの方法

※編集中※

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?