Хотите получать новые статьи блога
прямо себе на почту?
Укажите свой e-mail:


WorldSkills Russia
Яндекс.Метрика Интернет-издание Профобразование

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

0

Лекция №5

Тема: Операторы следования.

План:

  1. Классификация операторов
  2. Операторы следования:
    • простой оператор (выражения)
    • составной оператор

1. Классификация операторов

Программа на языке C# состоит из последовательности операторов, каждый из которых определяет законченное описание некоторого действия и заканчивается точкой с запятой.

Все операторы делятся на две группы:

  • описательные
  • исполняемые

Описательные — описывают те или иные конструкции языка (константы, переменные, типы и т.д.), которые затем используются в исполняемых операторах.

Исполняемые операторы — в них шифруются некоторые действия, которые должна выполнять программа. Которые в свою очередь делятся на:

  • операторы следования
  • операторы ветвления
  • операторы цикла
  • операторы передачи управления

2. Операторы следования

Операторы следования выполняются компилятором в естественном порядке: начиная с первого до последнего.

К операторам следования относятся:

  • выражения
  • составной оператор
а) простой оператор (выражения)

Выражение — это синтаксическая единица языка, определяющая способ вычисления некоторого значения.

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

Смотри список математических функций, реализованных в C#.

Примеры выражений:

  • (a + 0.12) / 6
  • x && y || !z
  • (t + Math.Sin(x) — 1.05e4) / ((2 * k + 2) * (2 * k + 3)

Операции выполнятся в соответствии с приоритетами.

Для изменения порядка выполнения операций используются круглые скобки.

Если в одном выражении записано несколько операций одинакового приоритета, то унарные операции, условная операция и операция присваивания выполняются справа налево, остальные — слева направо.

Пример:

  • a = b = c означает a = (b = c)
  • a + b + c означает (a + b) + c

Результат вычисления выражения характеризуется значением и типом.

Например, если a и b — переменные целого типа и описаны так:

[c-sharp]
int a = 2, b = 5;
[/c-sharp]

то выражение a + b имеет значение 7 и тип int.

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

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

Иерархия типов данных приведена в следующей схеме:

Иерархия типов данных в C#
Рис. 1. Иерархия типов данных в C#

Листинг 1. Пример неявного преобразования типов данных

[c-sharp]
static void Main(string[] args)
{
int a = 2;
uint b = 5;
Console.WriteLine(a + b);
Type t = (a + b).GetType(); //Получение типа данных
Console.WriteLine(t);
Console.ReadLine();
}
[/c-sharp]

Результат неявного преобразования типов данных
Рис. 2. Результат неявного преобразования типов данных в C#

Преобразование типов в выражениях происходит неявно (без участия программистов) следующим образом:

  • Если один из операндов имеет тип, изображённый на более низком уровне, чем другой, то он приводится к типу второго операнда при наличии пути между ними.
  • Если пути нет, то возникает ошибка компиляции (чтобы её избежать, необходимо воспользоваться операцией явного преобразования).
  • Если преобразований несколько, то выбирается наиболее короткий путь, не содержащий пунктирных линий.

Листинг 2. Пример явного преобразования типов данных

[c-sharp]
static void Main(string[] args)
{
int a = 2;
uint b = 5;
int c;
c = (int)(a + b); //явное преобразование типов данных
Type t = (c).GetType(); //Получение типа данных
Console.WriteLine(t);
Console.ReadLine();
}
[/c-sharp]

Результат явного преобразования типов данных
Рис. 3. Результат явного преобразования типов данных в C#

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

Пример:

[c-sharp]
++i; //оператор инкремента
x+=y; //оператор сложения с присваиванием
Console.WriteLine(x); //вызов метода
x = Math.Pow(a,b)+a*b; //вычисление сложного выражения
[/c-sharp]

Частным случаем оператора выражения является пустой оператор. Синтаксически он представляет собой лишь символ точки с запятой (;). Он используется тогда, когда по синтаксису оператор требуется, а по смыслу — нет. В этом случае символ ; является пустым оператором и вполне допустим, хотя и не всегда безопасен. Например, случайный символ ; после оператора while или if может совершенно поменять работу этого оператора.

б) составной оператор

Составной оператор, или блок операторов, — это произвольное количество (в том числе 0) операторов, заключённых в фигурные скобки { }.

Составной оператор применяется в случае, когда правила языка предусматривают наличие только одного оператора, а логика программы требует несколько операторов. Например, тело цикла while должно состоять только из одного оператора.

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

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

<<Лекция №4 :: Лекция №6-7>>