Оператори и изрази

40
Оператори и изрази Елементарни калкулации със C# Ясен Янков [email protected]

description

Оператори и изрази. Елементарни калкулации със C#. Ясен Янков. [email protected]. Съдържание. Оператори в C# Аритметични оператори Логически оператори Оператори за сравнение Оператори за присвояване Други оператори Имплицитно и експлицитно преобразуване Изрази. Оператори в C#. - PowerPoint PPT Presentation

Transcript of Оператори и изрази

Page 1: Оператори и изрази

Оператори и изразиЕлементарни калкулации със C#

Ясен Янков[email protected]

Page 2: Оператори и изрази

2

Съдържание

Оператори в C# Аритметични оператори Логически оператори Оператори за сравнение Оператори за присвояване Други оператори Имплицитно и експлицитно преобразуване Изрази

Page 3: Оператори и изрази

аритметични, логически, за сравнение, и др.

Оператори в C#

Page 4: Оператори и изрази

4

Какво е оператор?

Операторите позволят обработка на прими тивни типове данни и обекти. Приема като вход един или няколко аргумента

Връщат като резултат нова стойност

Операторите имат приоритет Приоритетът определя кой оператор ще се

изпълни преди друг

Изразите са поредица от оператори и аргументи, изчислени до една стойност

Page 5: Оператори и изрази

5

Оператори в C# Оператори в C#:

Унарни - вземат един аргумент

Бинарни - вземат два аргумента

Тринарни (?:) – вземат три аргумента

Всички бинарни оператори, освен тези за присвояване са ляво-асоциативни

Операторите за присвояване и услоовните оператори са дясно-асоциативни

Page 6: Оператори и изрази

6

Категории оператори в C#

Категория ОператориАритметични + - * / % ++ --

Логически && || ^ !

За сравнение == != < > <= >=

За присвояване = += -= *= /= %= &= |= ^= <<= >>=

Конкатенация +

Преобразуване на типове

is as typeof

Други . [] () ?: new

Page 7: Оператори и изрази

Приоритет на операторите

Page 8: Оператори и изрази

8

Приоритет на операторите

Приоритет

Оператори

Най-висок ()

++ -- (postfix) new typeof

++ -- (prefix) + - (unary) ! ~

* / %

+ -

<< >>

< > <= >= is as

== !=

&

Нисък ^

Page 9: Оператори и изрази

9

Приоритет на операторите (2)

Приоритет ОператориВисок |

&&

||

?:

Нисък= *= /= %= += -= <<= >>= &= ^= |=

Операторът скоби винаги има най-голям приоритет

Page 10: Оператори и изрази

Аритметични оператори

Page 11: Оператори и изрази

11

Аритметични оператори Аритметичните оператори +, -, * са същите

като в математиката Ако операторът за делене / бъде изпозван

върху int, връща int или exeption Ако операторът за делене / бъде изпозван

върху реални числа, връща реално число, Infinity или NaN

Операторът % връща остатъка от делене на цели числа

Операторът ++ увеличава стойността с едно

Page 12: Оператори и изрази

Аритметични оператори - Примериint squarePerimeter = 17;double squareSide = squarePerimeter / 4.0;double squareArea = squareSide * squareSide;Console.WriteLine(squareSide); // 4.25Console.WriteLine(squareArea); // 18.0625

int a = 5;int b = 4;Console.WriteLine( a + b ); // 9Console.WriteLine( a + b++ ); // 9Console.WriteLine( a + b ); // 10Console.WriteLine( a + (++b) ); // 11Console.WriteLine( a + b ); // 11

Console.WriteLine(12 / 3); // 4Console.WriteLine(11 / 3); // 3

Page 13: Оператори и изрази

Аритметични оператори (2)

Console.WriteLine(11.0 / 3); // 3.666666667Console.WriteLine(11 / 3.0); // 3.666666667Console.WriteLine(11 % 3); // 2Console.WriteLine(11 % -3); // 2Console.WriteLine(-11 % 3); // -2

Console.WriteLine(1.5 / 0.0); // InfinityConsole.WriteLine(-1.5 / 0.0); // -InfinityConsole.WriteLine(0.0 / 0.0); // NaN

int x = 0;Console.WriteLine(5 / x); // DivideByZeroException

Page 14: Оператори и изрази

Аритметични оператори - препълване

int bigNum = 2000000000;int bigSum = 2 * bigNum; // Integer overflow!Console.WriteLine(bigSum); // -294967296

bigNum = Int32.MaxValue;bigNum = bigNum + 1;Console.WriteLine(bigNum); // -2147483648

checked{ // This will cause OverflowException bigSum = bigNum * 2;}

Page 15: Оператори и изрази

Демо

Аритметични оператори

Page 16: Оператори и изрази

Логически оператори

Page 17: Оператори и изрази

17

Логиески оператори Логическите оператори приемат булеви

стойности и връщат булев резултат (true или false)

Операторът ! превръща true в false и false в true

Държание на операторите &&, || и ^

Page 18: Оператори и изрази

Логически оператори - пример

Логически оператори в действие:

bool a = true;bool b = false;Console.WriteLine(a && b); // FalseConsole.WriteLine(a || b); // TrueConsole.WriteLine(a ^ b); // TrueConsole.WriteLine(!b); // TrueConsole.WriteLine(b || true); // TrueConsole.WriteLine(b && true); // FalseConsole.WriteLine(a || true); // TrueConsole.WriteLine(a && true); // TrueConsole.WriteLine(!a); // FalseConsole.WriteLine((5>7) ^ (a==b)); // False

Page 19: Оператори и изрази

Демо

Логически оператори

Page 20: Оператори и изрази

Оператори за сравнение и присвояване

Page 21: Оператори и изрази

int a = 5;int b = 4;Console.WriteLine(a >= b); // TrueConsole.WriteLine(a != b); // TrueConsole.WriteLine(a == b); // FalseConsole.WriteLine(a == a); // TrueConsole.WriteLine(a != ++b); // FalseConsole.WriteLine(a > b); // False

Оператори за сравнение Операторите за сравнение се използват за

сравнение на променливи ==, <, >, <=, >=, !=

Page 22: Оператори и изрази

int x = 6;int y = 4;Console.WriteLine(y *= 2); // 8int z = y = 3; // y=3 and z=3 Console.WriteLine(z); // 3Console.WriteLine(x |= 1); // 7Console.WriteLine(x += 3); // 10Console.WriteLine(x /= 2); // 5

Оператори за присвояване Операторите за присвояване се използват за

присвояване на стойност =, +=, -=, *=, ...

Page 23: Оператори и изрази

Демо

Оператори за сравнение и присвояване

Page 24: Оператори и изрази

Console.WriteLine(DateTime.Now);

Други оператори Операторът за достъп "." се използва за

достъп до пропъртитата и методите на даден клас или обект Пример

Условен оператор ?: със следната форма

(ако b е вярно тогава резултатът е x, иначе резултатът е y)

b ? x : y

Page 25: Оператори и изрази

Експлицитно и имплицитно

Преобразуване на типове

Page 26: Оператори и изрази

int i = 5;long l = i; // l = 5;

Имплицитно преобразуване Имплицитно преобразуване

Автоматично превръщане на данни от един тип към данни от друг тип

Позволен е само когато не може да се изгубят данни

• „Големите" типове данни могат имплицитно да взимат стойности на „по-малки“ типове

Пример:

Page 27: Оператори и изрази

long l = 5;int i = (int) l; //i = 5;

Експлицитно преобразуване Експлицитно преобразуване

Ръчно преобразуване на стойности от един тип данни към друг

Позволен само с изричното използване на (type) оператора

Нужно е, когато има възможност от загуба на данни

Пример:

Page 28: Оператори и изрази

float heightInMeters = 1.74f; // Explicitdouble maxHeight = heightInMeters; // Implicit

double minHeight = (double) heightInMeters; // Explicit

float actualHeight = (float) maxHeight; // Explicit

float maxHeightFloat = maxHeight; // Compilation error!

Преобразуване на типове

Примери за имплицитно и експлицитно преобразуване:

Експлицитното преобразуване може да се използва, когато не се изисква от компилатора.

Page 29: Оператори и изрази

float heightInMeters = 1.74f; // Explicit conversiondouble maxHeight = heightInMeters; // Implicit

double minHeight = (double) heightInMeters; // Explicit

float actualHeight = (float) maxHeight; // Explicit

float maxHeightFloat = maxHeight; // Compilation error!

Преобразуване на типове Примери за имплицитно и експлицитно

преобразуване:

Експлицитното преобразуване може да се използва и когато не се изисква от компилатора.

Page 30: Оператори и изрази

Демо

Преобразуване на типове

Page 31: Оператори и изрази

Изрази

Page 32: Оператори и изрази

int r = (150-20) / 2 + 5; // r=70// Expression for calculation of circle areadouble surface = Math.PI * r * r;// Expression for calculation of circle perimeterdouble perimeter = 2 * Math.PI * r;

Изрази Изразите са поредица от оператори,

литерали и променливи пресметнати до дадена стойност

Пример:

Page 33: Оператори и изрази

int a = 2 + 3; // a = 5int b = (a+3) * (a-4) + (2*a + 7) / 4; // b = 12bool greater = (a > b) || ((a == 0) && (b == 0));

Изрази(2) Израза има:

Тип (integer, real, boolean, …)

Стойност

Пример:Expression of type int. Calculated at

compile time.

Expression of type int.

Calculated at runtime.

Expression of type bool. Calculated at runtime.

Page 34: Оператори и изрази

Демо

Изрази

Page 35: Оператори и изрази

35

Обобщение

Обсъдихме операторите в C# Аритметични, логически, за сравнение, за

присвояване и други

Приоритет на операторите

Научихме кога да изпозваме имплицитно и кога експлицитно преобразуване

Научихме се как да използваме изрази

Page 36: Оператори и изрази

Въпроси?

Оператори и изрази

Page 37: Оператори и изрази

37

Упражнения

1. Напишете условен оператор, който проверява дали даден integer е четен или не.

2. Напишете булев израз, който проверява дали даден integer може да се дели на 7 и 5 без остатък едновременно.

3. Напишете израз, който изчислява площта на правоъгълник по дадени ширина и височина.

4. Напишете израз, който проверява дали точка (x, y) се намира в кръг K(0, 5).

Page 38: Оператори и изрази

38

Упражнения (2)

5. Силата на гравитационното поле на Луната е приблизително 17% от това на Земята. Напишете програма, която да изчислява тежестта на човек на Луната, по дадената тежест на Земята.

6. Напишете израз, който изчислява площта на трапец по дадени a, b и h.

Page 39: Оператори и изрази

39

Упражнения (3)

7. Напишете програма, която приема за вход четирицифрено число във формат abcd (например числото 2011) и след това извършва следните действия върху него:

- Пресмята сбора от цифрите на числото (за нашия пример 2+0+1+1 = 4).

- Разпечатва на конзолата цифрите в обратен ред: dcba (за нашия пример резултатът е 1102).

Page 40: Оператори и изрази

40

Упражнения (4)

- Поставя последната цифра, на първо място: dabc (за нашия пример резултатът е 1201).

- Разменя мястото на втората и третата цифра: acbd (за нашия пример резултатът е 2101).