Go言語で簡単な電卓を作ってみる
Go言語で簡単な電卓を作ってみる:
対話型のプログラムを作ってみたいなーと思いまして。
あと、型確認もできますし!
流れはこんな感じです。
1. 数字、および演算子の入力(逆ポーランド法で)
2. 数字および演算子を変数に格納
3. 演算子毎に違った計算を実施
4. 計算結果を出力
今回は、+, -, *, / 辺りを実装してみます。
フローチャートは割愛です!
とりあえずは、C言語でいうscanf的なものを調査しないと。
うーん……
結構いろんな種類があるみたい。
どれが適しているのだろう…分からぬ……
とりあえず、fmt.Scanf関数を使って…みますか……
…と思ってやってみたコードがこちら。
※ビルドできません!!!
おお!
いけました!
感覚でいけるもんですね。
というわけで、入力フォームおよび出力内容を作ってみます。
作ったコードはこちら!
コーディングしていて驚いたのは、Go言語にはchar型は無いんですね!
文字を扱えるのは、おそらくstring型のみ。
統一されていて、逆に使いやすいかもしれませんね!
ちなみに、上記のコード実行時の出力結果はこちらです。
出力結果、ちょっと見にくいですね。
以降で変更することにします。
では、if文を使った条件分岐をやっていこうと思います。
方針としては、+, -, *, / の4つを実装できれば良いかと。
というわけで、C言語のスキルを駆使して作ったプログラムがこちら!
このプログラムを作成する上で困った点は3つ!
1. 文字列の等式
2. else if文の場所
3. exitの方法
※編集中※
電卓作成
対話型のプログラムを作ってみたいなーと思いまして。あと、型確認もできますし!
流れはこんな感じです。
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); }
文字を扱えるのは、おそらく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); }
1. 文字列の等式
2. else if文の場所
3. exitの方法
※編集中※
コメント
コメントを投稿