Программирование на языке си ( с ) | C Sharp (Си шарп) с нуля. Сортировки | Массивы | Функции

Пример « калькулятор » на си шарп ( c sharp )

Изначально создадим макет нашего будущего калькулятора:

Пример « калькулятор » на си шарп ( c sharp )

Все кнопки реализуются с помощью элемента Button. Заголовок, оповещающий о том, что мы действительно создаем калькулятор, будет располагаться вместо слова Form1. Ну и наконец, вывод результатов будет осуществляться TextBox.

Конечно, теперь сразу можно начать программировать, но у нас все кнопки имеют одинаковые названия, поэтому сперва надо подписать каждую кнопку по ее функциональности и текст, который на ней выводится, так же должен выполнять эти функции. Ну и, конечно же, заменим слово "Form" на слово " Калькулятор ".

Для изменения имени кнопки и текста на ней нужно: правой кнопкой мыши щелкнуть по кнопке и выбрать из меню Свойства. Далее ищем параметр Text (то, что будет выводиться на кнопке) и вписываем нужное нам значение. Для кнопок с цифрами параметр Name должен быть: button_(номер кнопки). Например button_1. Операции назовите по собственному желанию. Ну и уберем иконку, поставив свойство ShowIcon равным False.

Пример « калькулятор » на си шарп ( c sharp )

Вот и настал этот чудный момент, когда мы уже закончили с макетом и приступаем к программированию калькулятора. Первым делом сделаем так, что б при нажатии на кнопку с цифрой, она выводилась на объект textBox1:

private void button_0_Click(object sender, EventArgs e)
{
   textBox1.Text += 0;
}

. . .

private void button_9_Click(object sender, EventArgs e)
{
   textBox1.Text += 9;
}

Теперь давайте продумаем, что будет происходить при нажатии на клавиши калькулятора с операциями. Хм... Думаю, давайте все введенное до нажатия сохраняем в глобальную переменную sum типа double (глобальную переменную создаем в конце Form1.Designer.cs).

public double sum = 0;

Далее обнулим textBox1, что бы убрать из памяти значения, которые мы уже занесли в sum и можно смело вводить вторую часть операции.

private void button_plus_Click(object sender, EventArgs e)
{
    // Если ничего не введено
    if (textBox1.Text == "")
       MessageBox.Show("Данные не введены");
    else
    {
       sum += Double.Parse(textBox1.Text);
       textBox1.Text = "";
    }
}

Кое-что в этом коде надо пояснить. У объекта textBox1 свойство Text является строковым. Поэтому для преобразования строки в тип double мы используем статический метод Parse. Да и размножаем на все другие операции этот код, но с небольшими отличиями:

  1. Для операции "-"
  2. sum -= Double.Parse(textBox1.Text);

  3. Для операции "*"
  4. sum *= Double.Parse(textBox1.Text);

  5. Для операции "/"
  6. sum /= Double.Parse(textBox1.Text);

В завершение нашего урока, давайте реализуем самую последнюю и, наверное, самую главную операци - вывод результата наших подсчетов на калькуляторе:

private void button_answ_Click(object sender, EventArgs e)
{
   textBox1.Text = sum.ToString() ;
}

Как мы уже знаем - свойство Text объекта textBox1 является строковым (string), поэтому и нам надо преобразовать наше значение типа double в строку. С этим отлично справляется функция ToString.

Запустили проект? Надеюсь, вы увидели, что выводится на экран калькулятора совсем не то, что мы хотели. Возникает три ошибки:

  1. При выводе результата операция не завершается. Т.е. нажимаем на 5, далее +, далее 15, далее = и в нашу глобальную переменную мы не заносим значение 15

  2. Попробуйте произвести операцию с вещественными числами. Возникнет ошибка в следствие того, что при преобразовании string в double наша функция Double.Parse жалуется на точку

  3. Ну и проблемы с начальным значением. Т.е. нам надо, при нажатии первый раз на любую из цифр, производить присвоение начального значения нашей глобальной переменной. Это лучше делать на этапе выполнения операций.

Для решения первой проблемы производим следующие действия:

  1. Создаем глобальную переменную ch типа char
  2. При выполнении любой из операций, присваиваем ch знак операции
  3. Ну и дополняем операцию вывода следующим кодом:

    if (ch == '+')
       sum += Double.Parse(textBox1.Text);
    if (ch == '-')
       sum -= Double.Parse(textBox1.Text);
    if (ch == '*')
       sum *= Double.Parse(textBox1.Text);
    if (ch == '/')
       sum /= Double.Parse(textBox1.Text);

Последние две ошибки в калькуляторе оставляю за вами =)

При копировании ( использовании ) материала размещайте ссылку на сайт www.mir-koda.ru