Оператор ветвления.
В C# поддерживаются многие операторы условий и циклов, применяемых в C++, поэтому рассмотрим только отличия.
Оператор условия if-else внешне выглядит, как в C++:
if ( условие )
{
...
}
else if ( условие )
{
...
}
...
else
{
...
}
Однако, в C# выражение в скобках должны иметь тип bool. Это означает, что выражения типа if(a) /* a не имеет тип bool) */ и if(a = 5) будут вызывать ошибку компиляции. Таким образом C# позволяет избежать известной ошибки, связанной с потерей одного знака = внутри оператора условия.
Тринарный условный оператор:
условие ? выражение 1 /*условие истинно*/ : выражение 2 /*условие ложно*/
Пример 2. Пусть необходимо вычислить значение функции y:
Некорректные ситуации при вычислении возможны, если: , , .
Фрагмент кода C#, который реализует вычисление функции, представлен ниже.
int a, b, x;
double y;
a = 7;
b = 10;
x = -10;
y = Math.Pow(x, 2); // Вычисление y = x^2
if ((x == 0) || (b <= 0) || (b == y))
{
Console.WriteLine("Вычисление невозможно!");
}
Else
{
y = (a * y - b) / Math.Log10(b / y);
Console.WriteLine("Значение y: {0}", y);
}
Console.ReadKey();
В этой программе вначале объявляются переменные a, b, x типа int, а также переменная y типа double. При объявлении переменных для них резервируется место в оперативной памяти, а идентификаторы (имена) переменных представляют собой ссылки на соответствующие места в памяти. Так, например, идентификатор b является ссылкой на область памяти размером 2 байта (для типа данных int), а идентификатор y является ссылкой на область памяти размером 4 байта (для типа данных double).
Далее следует 4 операции присваивания на основе оператора присваивания (=). Первые три операции присваивания обеспечивают инициализацию переменных a, b, x. Фактически при этом в области памяти, связанные с этими переменными заносятся указанные справа от оператора присваивания “=” константы (в примере числа 7 ,10, –10). Четвертая операция присваивания отличается от первых трех тем, что в правой части записано выражение, значение которого вычисляется и присваивается указанной слева переменной y. Можно сказать также, что переменная y инициализируется значением выражения. В этом выражении Math — наименование класса пространства имен System, который содержит методы для вычисления математических функций, таких как Pow (возведение в степень) или Log10 (вычисление десятичного логарифма), и др.
Структурный оператор ветвления if … else предназначен здесь для проверки возможности вычисления ,чтобы исключить ошибки выполнения (например, деление на ноль). Этот оператор рассматривается подробно в теоретических положениях к лабораторной работе №2.
Перечень математических функций, которые могут быть использованы при вычислении значений заданных функций:
Функция | Назначение |
Abs(Double) | Возвращает абсолютное значение аргумента |
Exp(Double) | Вычисляет значение экспоненты в степени аргумента |
Log(Double) | Вычисляет логарифм натуральный от аргумента |
Log10(Double) | Вычисляет логарифм десятичный от аргумента |
Log(Double, Double) | Вычисляет логарифм от аргумента 1 по основанию аргумента 2 |
Pow(Double, Double) | Вычисляет значение аргумента 1 возведенного в степень аргумента 2 |
Sqrt(Double) | Вычисляет значение квадратного корня из значения аргумента |
Некоторые приемы упрощенного решения вычислительных задач:
Выражение | Вариант вычисления |
x2 | x * x |
x3 | x * x * x |
Math.Sqrt(Math.Sqrt(x)) | |
p=1/n; Math.Pow(x, p) | |
p=m/n; Math.Pow(x, p) | |
p | double pi = Math.PI |
Дата добавления: 2021-12-14; просмотров: 317;