Создание Windows приложений на C# (Си шарп)


Математические возможности языка C#




Содержание:
  • Типы данных.
  • Приложение "калькулятор".
  • Объявление переменных и способы записи выражений.
  • Логические операции.
  • Встроенные математические функции.


  • Типы данных.

    Как и любой язык программирования, язык C# предназначен для разработки программного обеспечения связанного с обработкой числовой и символьный информации. Весь объём обрабатываемых данных при выполнении программы хранится в оперативной памяти компьютера. По мере выполнения программы данные могут принимать разные значения. Те данные, которые требуется сохранить, например набранный вами текст или результаты каких либо вычислений, сохраняются в долговременной памяти компьютера. Чем более ёмкая программа, тем больше данных приходится хранить в оперативной памяти, поэтому, что бы не расходовать память понапрасну, следует определиться с переменными участвующими в работе программы. Каждый тип переменных занимает разный объём в оперативной памяти, и какой смысл, например при сложении 2 и 2, резервировать кусок памяти под триллионные значения. Ниже, в таблице представлены типы данных, те значения (диапазон) которые они могут принимать и размер, выделяемый для них памяти.
    (Понятие битов, байтов и так далее можно посмотреть здесь ).

    Встроенные типы в С#.
    Тип
    Область значений
    Размер
    sbyte -128 до 127 Знаковое 8-бит целое
    byte 0 до 255 Беззнаковое 8-бит целое
    char U+0000 до U+ffff 16-битовый символ Unicode
    bool true или false Логическое. 1 байт
    short -32768 до 32767 Знаковое 16-бит целое
    ushort 0 до 65535 Беззнаковое 16-бит целое
    int -2147483648 до 2147483647 Знаковое 32-бит целое
    uint 0 до 4294967295 Беззнаковое 32-бит целое
    long -9223372036854775808 до 9223372036854775807 Знаковое 32-бит целое
    ulong 0 до 18446744073709551615 Беззнаковое 32-бит целое
    float ± 1,5*10^-45 до ± 3,4*10^33 4 байта, точность - 7 разрядов
    double ± 5*10^-324 до ± 1,7*10^306 8 байт, точность -16 разрядов
    Примечание: Значок ^ означает "в степени".



    Приложение "Калькулятор"

    На первом занятии мы уже создавали простое приложение. Создадим ещё одно, назовём его Lesson2, и рассмотрим некоторые свойства формы и визуальных элементов. При этом мы будем создавать приложение "калькулятор". Итак, сначала присвоим форме заголовок "Калькулятор" (не путать с именем формы). Заголовок задаётся свойством Text. Панель свойств находится в правой части экрана.



    Покрасим форму, например, в темно-синий цвет. Для этого найдём в редакторе свойств строку BackColor и выпадающем списке выберем нужный цвет.



    Мы будем делать немного нетрадиционный калькулятор, в отличие, например от Windows калькулятора. Он будет иметь отдельные строки для ввода аргументов, знака математического действия и результата вычислений.
    Поставим на форму четыре текстовых поля textBox1 ... textBox4 сверху вниз.



    Напротив каждого текстового поля поставим метки Label и в свойстве Text меток введём надписи, показанные на рисунке. Цвет надписей меток можно изменить свойством ForeColor.
    Добавим кнопку и создадим событие на нажатие кнопки "Вычислить". Событие можно создать двойным щелчком на выделенной кнопке или, на панели свойств и событий, переключиться на раздел события (Properties) и выбрать событие Click.



    Так же, двойным щелчком следует создать событие button1_Click. Допишем в полученную функцию обработчика события следующие строки (помечены синим цветом):

    private void button1_Click(object sender, EventArgs e)
      {
        double x, y, z;
        string znak = "";
        x = Convert.ToDouble(textBox1.Text);
        y = Convert.ToDouble(textBox3.Text);
        z = 0;
        znak = textBox2.Text;
        if (znak == "+") z = x + y; else
        if (znak == "-") z = x - y; else
        if (znak == "/") z = x / y; else
        if (znak == "*") z = x * y; else
        textBox4.Text = Convert.ToString(z);
      }


    Объявление переменных и способы записи выражений.

    Рассмотрим подробно все строки написанные в функции обработчика события.
    Строка double x, y, z; - объявляет три переменные x, y и z (x и y - для вводимых значений и z для хранения результата вычислений) типа double. Тип double выбран с тем расчётом, что калькулятор должен уметь вычислять максимально большие числа.
    При объявлении переменных любого типа им присваивается имя. Имя переменной должно начинаться с латинской буквы за которой могут следовать числа, например x256. Переменная может быть словом, например означающем назначение переменной input_x, out_y. Несколько переменных одного типа записываются через запятую. Выражение объявления переменных завершается точкой с запятой. При объявлении имени переменной и последующему её вызову в программе, регистр символов имеет значение. Так переменные Input_x и input_x являются независимыми, то есть это не одна переменная, а две.

    Следующая строка программы string znak = ""; объявляет переменную znak (для хранения знака математической операции) типа string - строка и сразу этой переменной присваивается начальное значение - пустая строка.
    Строка x = Convert.ToDouble(textBox1.Text); преобразует первую числовую строку введённую пользователем в textBox1 в число и присваивает это число переменной x. Аналогичное назначение следующей строки - преобразование и присваивание числа переменной y.
    В строке z = 0; присваиваем начальное значение переменной z. В языке C# принято инициализировать переменные до обращения к ним из программы. Если не написать эту строку то компилятор (компилятор - программа преобразующая текст программы в цифровой код понятный для ЭВМ) выдаст предупреждающее сообщение, но программа всё равно будет работоспособна.
    Строкой znak = textBox2.Text; мы получаем символ знака оперции введённый пользователем в textBox2 и присваиваем его переменной znak.
    Далее, нам нужно проверить какой знак операции ввёл пользователь. Строка if (znak == "+") z = x + y; определяет ввёл ли пользователь знак +. Прочитать эту строку можно так: Если (if) переменная знак (znak) равна символу "+" то результат вычисления будет z = x + y. В скобках выражения записана проверка истинности выражения.
    Для проверки истинности выражений в операторе if следует использовать следующие знаки сравнения:
    == проверка равенства
    != проверка неравенства
    < меньше
    > больше
    <= меньше или равно
    >= больше или равно
    Следующие три строки:
    if (znak == "-") z = x - y; else
    if (znak == "/") z = x / y; else
    if (znak == "*") z = x * y; else
    выполняют проверку на ввод остальных математических знаков и, соответственно, производят вычисления. Слово else в конце каждой строки означает "иначе", то есть, если условие не выполнено, то иначе нужно проверить следующее условие.
    И, наконец, строка textBox4.Text = Convert.ToString(z); выводит полученное значение z в textBox4. В связи с тем, что переменная z числового типа, а вывести в textBox4 мы можем только строковый тип, то нужно преобразовать число в строку функцией Convert.ToString.
    Калькулятор готов, можно проверить его работоспособность нажав клавишу F5.




    Примечание - при вводе чисел с плавающей запятой, в Windows принято вводить разделитель запятую, а не точку, как это принято в DOS.


    Логические операции.

    Известно, что при делении на 0 возникает ошибка. Попробуем исключить такую ошибку, если пользователь введёт знаменателем 0. Доработаем строку определяющую ввод знака деления:

    if ((znak == "/") && (y == 0)) MessageBox.Show("Ошибка! Деление на 0"); else z = x / y;

    В этой строке мы написали: если знак равен наклонной черте ((znak == "/") и && второй аргумент (знаменатель) равен 0 (y == 0) то выводится сообщение об ошибке MessageBox.Show("Ошибка! Деление на 0"); иначе else можно вычислить результат деления z = x / y;. Из этой строки видно, что сложные логические выражения записываются в скобках. В сложных логических конструкциях следует использовать следующие операторы:
    && - логическое "И"
    || - логическое "ИЛИ"

    Введя изменения, посмотрим, как работает программа в такой ситуации.




    Встроенные математические функции.

    Итак, калькулятор готов, но производить только арифметические действия не тнтересно, поэтому расширим возможности нашего калькулятора введя вычисление некоторых математических функций. Язык C# имеет большую коллекцию функций математической обработки данных, основные из них приведены в таблице:

    Запись на C#
    Возвращаемый результат
    Math.Abs(Х); Модуль числа Х
    Math.Ceiling (Х); Округление числа Х до большего целого
    Math.Floor(Х); Округление числа Х до меньшего целого
    Math.Cos (Х); Косинус аргумента Х
    Math.E Число е. е = 2,718282
    Math.Exp (Х); Экспонента, число е в степени Х
    Math.Log(Х); Логарифм натуральный числа Х
    Math.Log10(Х); Логарифм десятичный числа Х
    Math.Max(Х,Y); Максимум из двух чисел Х и Y.
    Math.Min (X,Y); Минимум из двух чисел Х и Y.
    Math.Pi Число пи.
    Math.Pow(X,Y); Число X в степени Y
    Math.Round(Х); Простое округление числа Х
    Math.Sing(Х); Знак числа Х
    Math.Sin(Х); Синус аргумента Х
    Math.Sqrt(Х); Квадратный корень числа Х
    Math.Tan(Х); Тангенс аргумента Х
    Примечание: аргументы тригонометрических функций задаются в радианах.
    Добавим в наш калькулятор, например, возведение в степень Y числа X. Нам нужно выбрать обозначение этой операции. Степень принято обозначать значком ^. Для расширения возможностей калькулятора добавим ещё строки в код обработчика события:

    if (znak == "^") z = Math.Pow(x, y); else

    Это уже известное нам выражение определяющее ввод знака ^ и если знак введён, то произвести вычисление степени. Запустим приложение и убедимся, что оно исправно работает.


    И, в заключение этого урока, добавим на форму ещё одну кнопку которая, для удобства пользователя, будет очищать все поля ввода и результата.



    Двойным щелчком на кнопки создадим функцию события нажатия на кнопку. Добавим код очистки всех текстовых полей:

    private void button2_Click(object sender, EventArgs e)
       {
       textBox1.Text = "";
       textBox2.Text = "";
       textBox3.Text = "";
       textBox4.Text = "";
       }



   ©Гуков Константин Михайлович 2006 - 2012     Почта: [email protected]