Явное преобразование типа




Операция используется для явного преобразования величины из одного типа в другой. Это требуется в том случае, когда неявного преобразования не существует. При преобразовании из более длинного типа в более короткий возможна потеря информации. Формат операции:

(тип) выражение

Здесь тип — это имя того типа, в который осуществляется преобразование, а выражение чаще всего представляет собой имя переменной, например:

long b = 300;int a = (int) b; // данные не теряютсяbyte d = (byte) a; // данные теряются

Условная операция

Условная операция (?:) имеет три операнда. Ее формат:

операнд_1? операнд_2: операнд_3

Первый операнд — выражение, для которого существует неявное преобразование к логическому типу. Если результат вычисления первого операнда равен true, то результатом условной операции будет значение второго операнда, иначе — третьего операнда. Вычисляется всегда либо второй операнд, либо третий. Их тип может различаться.

Тип результата операции зависит от типа второго и третьего операндов. Если операнды одного типа, он и становится типом результата операции.

Математические функции — класс Math

Самая простая программа, которую можно себе представить (не считая "Hello, World!"), состоит из ввода исходных данных, вычислений по каким-то формулам и вывода результата. В выражениях, из которых состоят формулы, часто используются математические функции, например, синус или возведение в степень. Они реализованы в классе Math, определенном в пространстве имен System. Описание методов и полей класса приведено в таблице.

Таблица – Основные поля и статические методы класса Math

Имя Описание Результат Пояснения
Abs Модуль Перегружен |x| записывается как Abs(x)
Acos Арккосинус double Acos(double x)
Asin Арксинус double Asin(double x)
Atan Арктангенс double Atan2(double x, double y) — угол, тангенс которого есть результат деления y на x
BigMul Произведение long BigMul(int x, int y)
Ceiling Округление до большего целого double Ceiling(double х)
Cos Косинус double Сos(double x)
Cosh Гиперболический косинус double Cosh(double x)
DivRem Деление и остаток Перегружен DivRem(x, y, rem)
E База натурального логарифма (число е) double 2,71828182845905
Exp Экспонента double ex записывается как Exp(x)
Floor Округление до меньшего целого double Floor(double х)
IEEERemainder Остаток от деления double IEEERemainder(double x, double y)
Log Натуральный логарифм double logex записывается как Log(x)
Log10 Десятичный логарифм double log10x записывается как Log10(x)
Max Максимум из двух чисел Перегружен Max(x, y)
Min Минимум из двух чисел Перегружен Min(x, y)
PI Значение числа double 3,14159265358979
Pow Возведение в степень double xy записывается как Pow(x, y)
Round Округление Перегружен Round(3.1) даст в результате 3 Round (3.8) даст в результате 4
Sign Знак числа int Аргументы перегружены
Sin Синус double Sin(double x)
Sinh Гиперболический синус double Sinh(double x)
Sqrt Квадратный корень double √x записывается как Sqrt(x)
Tan Тангенс double Tan(double x)

Пример

Пример применения методов класса Math.

private void button1_Click(object sender, EventArgs e)

{

double x,y;

x = double.Parse(textBox1.Text);

y = double.Parse(textBox2.Text);

label3.Visible = true;

label3.Text = "Максимум из х и y: " + Math.Max(x, y);

label4.Visible = true;

double z = Math.Pow(Math.Sin(x), 2) + Math.Pow(Math.Sin(y), 2);

label4.Text = "Сумма квадратов синусов х и y: " + z;

}

Рис. Результат работы программы

Операторы

Любое выражение, завершающееся точкой с запятой, рассматривается как оператор, выполнение которого заключается в вычислении выражения. Частным случаем выражения является пустой оператор; (он используется, когда по синтаксису оператор требуется, а по смыслу — нет). Примеры:

i++; // выполняется операция инкрементаa *= b + c; // выполняется умножение с присваиваниемfun(i, k); // выполняется вызов функцииwhile(true); // цикл из пустого оператора (бесконечный)

Блок, или составной оператор, — это последовательность описаний и операторов, заключенная в фигурные скобки. Блок воспринимается компилятором как один оператор и может использоваться всюду, где синтаксис требует одного оператора, а алгоритм — нескольких. Блок может содержать один оператор или быть пустым.

Условный оператор if

Условный оператор if используется для разветвления процесса вычислений на два направления.

Формат оператора:

if (логическое_выражение) оператор_1; [ else оператор_2; ]

Сначала вычисляется логическое выражение. Если оно имеет значение true, выполняется первый оператор, иначе — второй. После этого управление передается на оператор, следующий за условным. Ветвь else может отсутствовать.

Если в какой-либо ветви требуется выполнить несколько операторов, их необходимо заключить в блок. Блок может содержать любые операторы, в том числе описания и другие условные операторы, но не может состоять из одних описаний.

Примеры условных операторов:

if (a < 0) b = 1; // 1if (a < b && (a > d || a == 0)) b++; else { b *= a; a = 0; } // 2if (a < b) if (a < c) m = a; else m = c; else if (b < c) m = b; else m = c; // 3if (b > a) max = b; else max = a; // 4

Если требуется проверить несколько условий, их объединяют знаками логических условных операций. Например, выражение в примере 2 будет истинно в том случае, если выполнится одновременно условие a < b и одно из условий в скобках. Оператор в примере 3 вычисляет наибольшее значение из трех переменных. Обратите внимание, что компилятор относит часть else к ближайшему ключевому слову if.

Пример

Подсчет количества очков после выстрела по мишени.

private void button1_Click(object sender, EventArgs e)

{

double x,y;

x = double.Parse(textBox1.Text);

y = double.Parse(textBox2.Text);

int kol = 0;

if (x * x + y * y < 1) kol = 2;

else if (x * x + y * y < 4) kol = 1;

label3.Visible = true;

label3.Text="Результат ="+kol+" очков";

}

Рис. Результат работы программы

Оператор выбора switch

Оператор switch (переключатель) предназначен для разветвления процесса вычислений на несколько направлений.

Формат оператора:

switch (выражение){ case константное_выражение_1: [ список_операторов_1 ] case константное_выражение_2: [ список_операторов_2 ]... case константное_выражение_n: [ список_операторов_n ] [ default: операторы ]}

Выполнение оператора начинается с вычисления выражения. Тип выражения чаще всего целочисленный (включая char) или строковый. Затем управление передается первому оператору из списка, помеченному константным выражением, значение которого совпало с вычисленным. Если совпадения не произошло, выполняются операторы, расположенные после слова default, а при его отсутствии управление передается следующему за switch оператору.

Каждая ветвь переключателя должна заканчиваться явным оператором перехода, а именно одним из операторов break, goto или return:

  • оператор break выполняет выход из самого внутреннего из объемлющих его операторов switch, for, while и do;
  • оператор goto выполняет переход на указанную после него метку, обычно это метка case одной из нижележащих ветвей оператора switch;
  • оператор return выполняет выход из функции, в теле которой он записан.

Пример

Пример программы, реализующей простейший калькулятор на четыре действия.

private void button1_Click_1(object sender, EventArgs e)

{

double a, b, res;

 

a = double.Parse(textBox1.Text);

b = double.Parse(textBox3.Text);

char op = char.Parse(textBox2.Text);

bool ok = true;

switch (op)

{

case '+': res = a + b; break;

case '-': res = a - b; break;

case '*': res = a * b; break;

case '/': res = a / b; break;

default: res = double.NaN; ok = false; break;

}

label3.Visible = true;

if (ok) label3.Text = "Результат: " + res;

else label3.Text = "Недопустимая операция";

}

Рис. Результат работы программы



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-03-02 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: