Создаем исходный код программы-калькулятора в Windows Forms на языке программирования C#.
Также имеется разбор более усовершенствованного калькулятора здесь и простой консольный калькулятор вот здесь.
Для начала нам надо расположить все нужные элементы на форме. Нам понадобятся три TextBox’a и 6 кнопок-Button. Устанавливаем их вот таким образом и переименовываем кнопки в свойствах:
Наш калькулятор основан на взаимодействии двух чисел, поэтому математические операции будут следующие:
- Сложение
- Вычитание
- Умножение
- Деление
- Возведение первого числа в степень второго
- Взятие корня первого числа степени второго числа.
Итак, после того, как с графическим оформлением закончено, приступаем к самому коду.
Для всех вышеописанных операций мы создадим отдельные функции. Функции — это, так сказать, подпрограммы в самой программе, выполняющие отдельные задачи. Они помогают сократить и облегчить код.
Вот так у нас будет выглядеть функция сложения:
1 2 3 4 |
public static double sum(double a, double b) { return a + b; } |
Разберем этот код по частям:
Для начала мы объявляем программе, что создаем функцию (пишем public static), затем определяем тип функции(double — числовой тип повышенной точности с плавающей запятой, лучший вариант), после даём имя функции(sum) и в скобках записываем то, что, так сказать, получает функция от программы( double a и double b — первое и второе числа, которые мы запишем в первые два TextBox’a). Выражение return возвращает в функцию результат сложения a и b. То есть наша функция получает два числа от пользователя, который введет их в форме и, при помощи return’a, в неё же заносится результат вычисления.
Точно так же создаём функции остальных математических выражений:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
public static double razn(double a, double b) { return a - b; } public static double umnog(double a, double b) { return a * b; } public static double del(double a, double b) { return a / b; } public static double step(double a, double b) { return Math.Pow(a, b); } public static double koren(double a, double b) { return Math.Pow(a, 1/b); } |
Функции созданы, сталось лишь привязать их к кнопкам в форме. Дважды щёлкаем мышью в форме на первую кнопку. Нас переносит в часть кода, которая отвечает за событие, которое произойдет, когда пользователь кликнет на данную кнопку. В теле этого события мы пишем:
1 2 3 4 |
private void button1_Click(object sender, EventArgs e) { textBox3.Text = Convert.ToString(sum(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text))); } |
Разбор кода начнём, как ни странно, с конца. Мы помним, что при объявлении функции мы писали вот такую часть кода: sum(double a, double b). То есть функция может получить только значения типа double. Также мы помним, что эти значения мы получаем от пользователя, который, в свою очередь, вводит их в первый и второй TextBox’ы. Однако проблема в том, что значения из TextBox’ов воспринимаются программой как строки, то есть типом string. Поэтому их надо конвертировать в нужный нам double, что мы и делаем: sum(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text))
Значения переведены, сумма посчитана. Осталось вывести её в TextBox3. Однако, у нас опять проблемы с типами. Наша посчитанная сумма принадлежит типу double, а TextBox принимает только string. Конвертируем sum в string и записываем её в TextBox3 как строку.
То же самое проделываем с остальными кнопками и функциями:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
private void button2_Click(object sender, EventArgs e) { textBox3.Text = Convert.ToString(razn(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text))); } private void button3_Click(object sender, EventArgs e) { textBox3.Text = Convert.ToString(umnog(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text))); } private void button4_Click(object sender, EventArgs e) { textBox3.Text = Convert.ToString(del(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text))); } private void button5_Click(object sender, EventArgs e) { textBox3.Text = Convert.ToString(step(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text))); } private void button6_Click(object sender, EventArgs e) { textBox3.Text = Convert.ToString(koren(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox2.Text))); } |
Вот и всё. Наш калькулятор готов!
Исходный код калькулятора:
Скачать исходник
Поделиться в соц. сетях:
А обработчик исключений?
мне выдаёт ошибку на строке private void Form1_load(object , EventArgs e). Говорит, нужен идентификатор. Что мне после object следует написать? MS visual studio express 2012