Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C# Лекция_3 Выражения и операции.docx
Скачиваний:
28
Добавлен:
18.12.2018
Размер:
667.21 Кб
Скачать

Основы программирования на С# 3.0: ядро языка

3. Лекция: Выражения и операции

Рассматривается синтаксис и семантика построения выражений языка С#. Рассматриваются все возможные операции языка, их приоритеты. При рассмотрении логических операций обсуждается работа со шкалами. Рассмотрен лямбда оператор и лямбда выражение. Большое внимание уделяется преобразованиям типа данных при вычислении выражений. Обсуждаются вопросы эффективного вычисления выражений. Предлагаются задачи на эту тему.

1.Выражения 2

1.1.Приоритет и порядок выполнения операций 2

1.2.Перегрузка операций и методов 3

1.3.Преобразования типов 4

1.4.Организация программного проекта ConsoleExpressions 5

1.5.Операции высшего приоритета 6

1.5.1.Выражения в скобках 6

1.5.2.Операция вызова "точка" x.y, вызов функций F(x), вызов, инициируемый указателем x -> y 6

1.5.3.Операция индексации a[i, j] 8

1.5.4.Операция new 8

1.5.5.Операции sizeof и typeof 8

1.5.6.Операции "увеличить" и "уменьшить" (increment, decrement) 9

1.6.Унарные операции приоритета 1 10

1.6.1.Операция кастинга - приведения к типу 11

1.6.2.Проверяемые и непроверяемые блоки и выражения 12

1.7.Арифметические операции 13

1.7.1.Вычисление выражений 14

1.7.1.1.Память и время - два основных ресурса 14

1.7.1.2.Именованные константы 15

1.7.2.Операции отношения 16

1.7.3.Операции проверки типов 16

1.7.4.Операции сдвига 16

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

1.8.1.Логические операции над булевскими операндами 17

1.8.2.Логические операции над булевскими операндами и целыми числами. Работа со шкалами 18

1.8.2.1.Шкалы 19

1.8.3.Условное выражение 22

1.9.Операция присваивания 22

1.10.Операция ?? - новая операция C# 2.0 23

1.11.Лямбда-оператор - новая операция в C# 3.0 24

1.12.Преобразования внутри арифметического типа 25

2.Выражения над строками. Преобразования строк 29

2.1.Преобразования строкового типа в другие типы 31

2.1.1.Метод Parse 31

2.2.Преобразование в строковый тип 32

2.3.Класс Convert и его методы 32

2.4.Класс Console и его методы 34

2.4.1.Методы Read и ReadLine 34

2.4.2.Вывод данных на консоль. Методы Write и WriteLine 35

3.Задачи 37

3.1.Вычисление выражений. Оценка времени вычислений 37

3.2.Геометрические фигуры 39

3.3.Преобразования типов 40

3.4.Проекты 40

  1. Выражения

Выражения строятся из операндов - констант, переменных, функций, - объединенных знаками операций и скобками. При вычислении выражения определяется его значение и тип. Эти характеристики выражения однозначно определяются значениями и типами операндов, входящих в выражение, и правилами вычисления выражения. Правила задают:

  • приоритет операций,

  • для операций одного приоритета порядок применения - слева направо или справа налево;

  • преобразование типов операндов и выбор реализации для перегруженных операций;

  • тип и значение результата выполнения операции над заданными значениями операндов определенного типа.

    1. Приоритет и порядок выполнения операций

Большинство операций в языке C#, их приоритет и порядок наследованы из языка C++. Однако имеются и различия: например, нет операции " , ", позволяющей вычислять список выражений; добавлены операции checked и unchecked, применимые к выражениям.

Как это обычно делается, приведем таблицу приоритетов операций, в каждой строке которой собраны операции одного приоритета, а строки следуют в порядке приоритетов, от высшего к низшему.

Таблица 3.1. Приоритеты операций языка C#

Приоритет

Категория

Операции

Порядок

0

Первичные

(expr), x.y, x->y, f(x), a[x], x++, x--, new, typeof(t), checked(expr), unchecked(expr)

Слева направо

1

Унарные

+, -, !, ~, ++x, --x, (T)x, sizeof(t)

Слева направо

2

Мультипликативные (Умножение)

*, /, %

Слева направо

3

Аддитивные (Сложение)

+, -

Слева направо

4

Сдвиг

<< ,>>

Слева направо

5

Отношения, проверка типов

<, >, <=, >=, is, as

Слева направо

6

Эквивалентность

==, !=

Слева направо

7

Логическое И (AND)

&

Слева направо

8

Логическое исключающее ИЛИ (XOR)

^

Слева направо

9

Логическое ИЛИ (OR)

|

Слева направо

10

Условное логическое И

&&

Слева направо

11

Условное логическое ИЛИ

||

Слева направо

12

Условное выражение

? :

Справа налево

13

Присваивание

Склеивание с null

=, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, |=

??

Справа налево

14

Лямбда-оператор

=>

Справа налево