Тема: Операторы
Цель: Формирование навыков применения различных операторов
Вид работы: индивидуальный.
Время выполнения: 4 часа.
Теоретический материал
Оператор – это запись инструкций по выполнению некоторой последовательности действий. Операторы используются для выполнения вычислений, присвоения значений, проверки на равенство и неравенство и т. д.
В языке C# имеется большой набор операторов. Они представляют собой символы, определяющие операции, которые необходимо выполнить с выражением.
Операторы в выражениях исполняются с приоритетами:
- высший приоритет имеют основные операторы,
- далее мультипликативные (типа умножения),
- затем аддитивные (типа сложения),
- далее отношения (типа сравнения).
Основные операторы представлены в таблице №5.
Таблица №5
Основные операторы
Оператор |
Действие |
x.y |
Оператор "точка" используется для доступа к членам класса. Формат - Класс.Член. |
(x) |
Круглые скобки (…) используются для указания порядка выполнения операций в выражении. Наивысший приоритет – операции в самых внутренних скобках. |
A[x] |
Квадратные скобки [ ]. Используются для доступа к элементу массива, его индекс необходимо заключить в скобки. Для одномерных массивов A[1]. Для многомерных массивов индексы разделяются запятыми B[1,2]. |
new |
Используется для создания экземпляра класса. Class1 Имя = new Class1(); |
Typeof(имя типа) |
Используется для получения типа объекта. System.Type type = typeof(имя типа); |
Унарные операторы представлены в таблице №6.
Таблица №6
Унарные операторы
Оператор |
Действие |
+ X |
Унарный плюс. Это знак числа X. Он использован по умолчанию. |
++X |
Префиксная форма инкремента. Увеличение X на 1 перед использованием. |
X ++ |
Постфиксная форма инкремента. Увеличение X на 1 после использования. |
- X |
Унарный минус. Это знак числа X. |
-- X |
Префиксная форма декремента. Уменьшение X на 1 перед использованием. |
X -- |
Постфиксная форма декремента. Уменьшение X на 1 после использования. |
! X |
Логическое отрицание. Унарный оператор, который выполняет над операндом X операцию НЕ. Он задан для типа bool и меняет значение операнда true на false, или наоборот. |
~X |
Поразрядное дополнение. Инвертирование каждого бита целого X. |
(T) x |
Явное преобразование x в тип T |
Мультипликативные операторы представлены в таблице №7.
Таблица №7
Мультипликативные операторы
Оператор |
Действие |
X * Y |
Умножение. Вычисляет произведение двух операндов. |
X / Y |
Деление. Делит X на Y. При делении целых чисел результат всегда является целочисленным. Остаток отбрасывается. |
X % Y |
Остаток. Вычисляет остаток после деления X на Y. |
X & Y |
Логическое умножение (И - AND). Вычисляет X и Y независимо от X. |
X && Y |
Условное логическое умножение (И - AND). Вычисляет Y в зависимости от X. Если X предопределяет результат, то Y не вычисляется. |
Аддитивные операторы представлены в таблице №8.
Таблица №8
Аддитивные операторы
Оператор |
Действие |
X + Y |
Сложение. Для числовых типов он вычисляет сумму X + Y. Для строкового типа он объединяет X и Y. |
X - Y |
Вычитание. Для числовых типов вычисляет разность X - Y. |
X | Y |
Логическое сложение (ИЛИ - OR). Вычисляет X и Y независимо от значения X. |
X || Y |
Условное логическое сложение (ИЛИ - OR). Вычисляет Y в зависимости от X. Если X предопределяет результат, то Y не вычисляется. |
X ^ Y |
Сложение по модулю 2 (Исключающее ИЛИ - XOR). Вычисляет X и Y независимо от значения X. |
Операторы отношений представлены в таблице №9.
Таблица №9
Операторы отношений
Оператор |
Действие |
X == Y |
Равно. Возвращает значение true, если X == Y, в противном случае возвращается значение false. |
X != Y |
Не равно. Возвращает значение true, если X != Y, в противном случае возвращается значение false. |
X < Y |
Меньше. Возвращает значение true, если X < Y, в противном случае возвращается значение false. |
X > Y |
Больше. Возвращает значение true, если X > Y, в противном случае возвращается значение false. |
X <= Y |
Меньше или равно. Возвращает значение true, если X <= Y, в противном случае возвращается значение false. |
X >= Y |
Больше или равно. Возвращает значение true, если X >= Y , в противном случае возвращается значение false. |
Результат выполнения операторов отношений и логических операторов имеет тип bool.
В C# на равенство (==) и не равенство (!=) можно сравнивать все объекты, но операторы сравнения (<, >, <=, >=) можно применять только к типам, которые поддерживают только отношение упорядочения, т.е к числовым типам. Например, x>2, z==0, Math.Sin(x)<=5.
Присваивание бывает простое и сложное. При простом присваивании оператор состоит из одного символа (=).
Можно использовать явное преобразование, используя синтаксис:
ИмяПеременной = (тип переменной слева от =) выражение; Например :
double x = 2.5; float y=0;
y = (float) (x * x);
или
double x = 2.5; int y=0;
y = (int) (x * x);
Оператор сложного присваивания (см. табл. №10) состоит из нескольких знаков без разделителей. Правый символ – знак простого присвоения, слева дополнительный символ, указывающий на тип дополнительной операции, выполняемой перед присваиванием.
Таблица №10
Операторы сложного присваивания
Составные операторы |
Действие |
X += Y |
X = X + Y |
X –= Y |
X = X – Y |
X *= Y |
X = X * Y |
X /= Y |
X = X / Y |
X %= Y |
X = X % Y |
X &= Y |
X = X & Y |
X |= Y |
X = X | Y |
Примеры простых условий:
(Summa<1000) // значение переменной Summa < 1000?
(Math.Pow(x,2)-10*x>=5) // выражение x2 -10·x³5 ?
(x % 2 = 0) // остаток от деления x на 2 равен 0?
Примеры сложных условий:
(Day==6 | Day==7) // день суббота или воскресенье
(Sum>100 & Day==7) //скидка на товар стоимостью более 100у.е. в воскресный день
(m==1 & d>=1 & d<=10) //дни с 1 по 10 в первом месяце года.
Он предназначен для изменения порядка выполнения операторов программы. Инструкция goto используется следующим образом:
- В коде программы создается метка с именем (например, M).
- Организуется переход на эту метку инструкцией goto M.
- Имя метки M в коде обязательно должно заканчиваться двоеточием (:). Оно указывает на точку в программе, с которой будет выполняться программа после использования инструкции goto.
Ход работы:
Выполнить задание, примеры с комментариями записать в тетрадь, ответить на вопросы.
Задания
1. Определить, какие слова в следующем программном коде являются членами класса.
private void button1_Click(object sender, EventArgs e)
{
button1.Visible = false;
label1.Text = "Студент";
textBox1.Text = "Группа ПИЭ-01";
}
2. Определить, какое выражение вычисляет следующий алгоритм.
double x, a, z;
a = 0.6; x = 0.5;
z = (Math.Pow(Math.Sin(x + 5), 2) - Math.Abs(x)) /
(Math.Exp(-a * x) + Math.Pow(x,3));
Console.WriteLine("z={0:E}", z);
Console.ReadKey();
3. Скомпилировать следующий алгоритм и определить, какие унарные операции выполняются.
int x=10, y1, y2;
y1 = ++x; //x=11
y2 = x++; //x=11
Console.WriteLine("y1= " + y1);
Console.WriteLine("y2= " + y2);
Console.ReadKey();
В обоих случаях переменная х получит значение 11. Разница состоит лишь в том, в какой момент она станет равной 11 (до присвоения ее значения переменной y или после).
4. Скомпилировать следующий алгоритм, комментарий записать.
int x=10, y1;
y1 =x + ++x;
Console.WriteLine("y1= " + y1);
Console.ReadKey();
Инструкция x + ++x выполняется следующим образом: сначала запоминается исходное значение х=10, затем инкрементируется х (х=10+1=11), далее суммируются новое значение с исходным (11+10=21), а результат суммирования присваивается y.
5. Скомпилировать следующий алгоритм, комментарий записать.
int x=10, y2;
y2 =x + x++;
Console.WriteLine("y2= " + y2);
Console.ReadKey();
Инструкция x + x++ выполняется следующим образом: сначала суммируются х+х (10+10=20), результат суммирования присваивается y, затем инкрементируется переменная х (10+1=11) для дальнейшего использования в программе.
6. Скомпилировать следующий алгоритм, результат записать.
int ires, ioct;
double dres, doct;
ires = 10 / 3;
ioct = 10 % 3;
dres = 10.0 / 3.0;
doct = 10.0 % 3.0;
Console.WriteLine("Результат и остаток от деления 10/3=" + ires + " " + ioct);
Console.WriteLine("Результат и остаток от деления 10.0/3.0=" + dres + " " + doct);
7. Скомпилировать следующий алгоритм, определить какие операторы используются.
int a, b;
a = 3; b=0;
if (a==b) Console.WriteLine("Переменные равны");
else if (a>=0) Console.WriteLine("Значение а неотрицательно");
Console.ReadKey();
8. Скомпилировать следующий алгоритм, результат записать в тетрадь.
public static int Main()
{
int i = 0;
M: Console.WriteLine("i: {0 } ", i);
i = i + 1;
if (i < 10) goto M;
}
}
Контрольные вопросы:
1) К какому типу операторов относятся инкремент и декремент?
2) С какой целью используется оператор new?
Скачано с www.znanio.ru
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.