C#を使って何か作ろう~電卓~

文法のお勉強はやったが、「読めるけど書けない」状態に陥っている。

今日、エンジニアとして働いている友達ができたのだが、スキルをつけるために何をすればいいか聞いてみたら「なんでもいいから作ること。これが何より大事。簡単なものでいい、例えば電卓とか…」とのことだった。

確かに他のエンジニアをやっている知人もそんなことを言っていた。
というわけで、文法の勉強と並行してまずは電卓を作ってみようと思う。

 

作ってみました(2時間くらい)
とりあえずvisual studioで簡単な四則演算だけできるものを作ってみた。
苦労した点は以下。

1.「+」や「-」などの演算記号を複数使う計算式にどうすれば対応できるか
2.メソッドでどこまでの処理を共通化できるかの判断
3.恐ろしいことにtextboxに文字列を表示させる方法すら忘れていた

いやこんなんで転職とか言ってるのへそで茶が湧かせるなと自分でも思った。

まあ最初なんてこんなもんさ!!!そうさそうさ!!
ということで、もし僕以外の人が以下のコードを見てもどうか温かい目で見てやってほしい。発展途上なので・・・

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Calculator
{
    public partial class Form1 : Form
    {
        double val1 = 0;
        double val2 = 0;
        string tasu = "tasu";
        string hiku = "hiku";
        string kake = "kake";
        string wari = "wari";
        int calcflug = 0;
        public Form1()
        {
            InitializeComponent();
        }

        public void windowdel()
        {
            if(display.Text == "0")
            {
                display.Text = "";
            }
        }

        public void gettoval()
        {
            val2 = double.Parse(display.Text);
            calcnow(val2);
            display.Text = "0";
        }

        private void one_Click(object sender, EventArgs e)
        {
            windowdel();
            Console.WriteLine("1");
            display.Text += 1;
        }

        private void display_TextChanged(object sender, EventArgs e)
        {

        }

        private void two_Click(object sender, EventArgs e)
        {
            windowdel();
            display.Text += 2;
        }

        private void three_Click(object sender, EventArgs e)
        {
            windowdel();
            display.Text += 3;
        }

        private void four_Click(object sender, EventArgs e)
        {
            windowdel();
            display.Text += 4;
        }

        private void five_Click(object sender, EventArgs e)
        {
            windowdel();
            display.Text += 5;
        }

        private void six_Click(object sender, EventArgs e)
        {
            windowdel();
            display.Text += 6;
        }

        private void seven_Click(object sender, EventArgs e)
        {
            windowdel();
            display.Text += 7;
        }

        private void eight_Click(object sender, EventArgs e)
        {
            windowdel();
            display.Text += 8;
        }

        private void nine_Click(object sender, EventArgs e)
        {
            windowdel();
            display.Text += 9;
        }

        private void zero_Click(object sender, EventArgs e)
        {
            windowdel();
            display.Text += 0;
        }

        private void plusminus_Click(object sender, EventArgs e)
        {
            int num = int.Parse(display.Text) * -1;
            display.Text = num.ToString();
        }

        private void dot_Click(object sender, EventArgs e)
        {
            display.Text += ".";
        }

        private void plus_Click(object sender, EventArgs e)
        {
            gettoval();
            calcflug = 1;
        }

        private void minus_Click(object sender, EventArgs e)
        {
            gettoval();
            calcflug = 2;

        }

        private void kakeru_Click(object sender, EventArgs e)
        {
            gettoval();
            calcflug = 3;
        }

        private void waru_Click(object sender, EventArgs e)
        {
            gettoval();
            calcflug = 4;
        }

        private void equal_Click(object sender, EventArgs e)
        {
            gettoval();
            display.Text = val1.ToString();
        }

        private void allclear_Click(object sender, EventArgs e)
        {
            display.Text = "0";
        }

        public void calcnow(double val2)
        {
            switch (calcflug)
            {
                case 0:
                    val1 = val2;
                    break;
                case 1:
                    val1 += val2;
                    break;
                case 2:
                    val1 -= val2;
                    break;
                case 3:
                    val1 *= val2;
                    break;
                case 4:
                    val1 /= val2;
                    break;
            }
            val2 = 0;
            calcflug = 0;
        }


    }

}