Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Поразрядные операции




 

В C# имеются операции, пригодные для обработки отдельных разрядов памяти (например, в видеопамяти графического дисплея). Такие операции называются поразрядными (операции с битами). Они позволяют изменять, считывать и сдвигать разряды в переменных. При этом переменная рассматривается не как число, а как комбинация двоичных разрядов, т.е. как логический код. Операция выполняется отдельно над каждым разрядом. Перечень поразрядных операций приведён в следующей таблице.

 

Операция Назначение Пример
& Поразрядное И i & 16
| Поразрядное ИЛИ i | 12
^ Поразрядное Исключающее ИЛИ k ^10
~ Поразрядное НЕ ~ a
<< Поразрядный сдвиг влево << 2
>> Поразрядный сдвиг вправо >> 2

 

Существует краткая форма поразрядных операций присваивания. Например:

 

x &= y вместо x = x & y

 

Поразрядные операции можно использовать только с целочисленными типами данных, к вещественным числам их применять нельзя!!!

 

Пример 1:

int k = 26;

k & 15 // 10

k | 15 // 31

k ^ 15; // 21

k << 2 // 104

k >> 2 // 6

 

Пример 2:

Выделить пятый бит в байте B, а остальные обнулить.

В = (B & 4);

 

4) Операции отношения:

 

Все операции отношения используются для сравнения значений переменных или выражений. Эти операции вырабатывают значение булевского типа: ИСТИНА (true) или ЛОЖЬ (false). Численных эквивалентов для этих значений в языке C# не существует. Перечень операций приведён в таблице:

 

Операция Назначение Пример
= = Равно I = = 0
! = Не равно K!=15
> Больше, чем Z>15.2
< Меньше, чем Tab< -132.654
>= Больше или равно Z11>=0
<= Меньше или равно Y2<=10

 

 

При выполнении операций сравнения следует помнить одну специфическую особенность. Точное сравнение вещественных чисел возможно только с нулём!

 

Сравнение ненулевых вещественных чисел, полученных путём вычислений, возможно только с определённой точностью. Это связано с формой представления вещественных чисел (формат с плавающей запятой). А вот числа формата Decimal можно сравнивать между собой на равно.

 

5) Логические операции:

 

Логические операции используются для составления логических выражений на основе выражений, которые используют операции сравнения. Такие выражения называются булевыми. Значением булевого выражения также может быть ИСТИНА и ЛОЖЬ.

 

Операция Назначение Пример
&& Логическое И (R>2)&&(R<20)
|| Логическое ИЛИ (L= =12) || (L > 15)
! Логическое НЕ Tab!=13

 

 

6) Операция «приведение к типу»:

 

Эта операция используется тогда, когда необходимо преобразовать значение одного типа в значение другого типа. Это так называемое явное преобразование типов. Операция задаётся указанием имени типа в круглых скобках. Например, (byte) – преобразовать в тип байт. Рассмотрим пример:

 

int n = 10;

double z;

z = n;

n = (int) z;

 

В данном примере объявлены две переменные, причём целочисленной уже присвоено значение. После присваивания значением z будет число 10,0 – такое преобразование выполнится неявно автоматически, и несогласования типов не будет. А вот обратное преобразование надо задавать явно. Понять, когда возможно неявное преобразование, а когда приведение надо делать явно, можно на основании схемы. На схеме перечислены все арифметические типы. Стрелками указаны направления, по которым автоматически осуществляется неявное преобразование (например, из byte в double). Любое обратное приведение (против стрелок) должно быть явным!!! Но надо помнить: ответственность за такое преобразование лежит на программисте. Вполне может оказаться, что при таком преобразовании будут искажены данные или потеряна точность, и система об этом не сообщит.

 

 

7) Строковые преобразования. Класс Convert:

 

Не существует явного преобразования арифметических типов в строки! Операция «приведение к типу» здесь невозможна. Однако, в базовом классе Object имеется и определён метод ToString. Так как все арифметические типы данных считаются потомками (наследниками) класса Object, то для них предусмотрена соответствующая реализация этого метода. Следовательно, метод ToString можно использовать, когда любое арифметическое значение надо преобразовать в строку.

Например:

 

string s;

int n = 2010;

s = "Год "+ToString(n);

 

Достаточно часто требуется обратное преобразование – строку в число. Для таких преобразований предусмотрен специальный класс методов – класс Convert, встроенный в пространство имен System. Этот класс содержит 15 статических методов вида To (ToBoolean, … ТоInt64), где Type может принимать значения от Boolean до UInt64 (см. таблицу встроенных типов). Единственным исключением является тип Object, - метода ToObject нет по понятным причинам, поскольку для всех типов существует неявное преобразование к типу Object.

 

Существует возможность преобразования строки к системному типу DateTime, который хотя и не является встроенным типом языка C#, но допустим в программах, как и любой другой системный тип. Пример работы с этим типом:

 

System.DateTime dat = Convert.ToDateTime("15.03.2003");

Console.WriteLine("Date = {0}", dat);

 

Результатом вывода будет строка: Date = 15.03.2003 0:00:00

 

Кроме методов, задающих преобразования типов, в классе Convert имеются и другие методы, например, задающие преобразования символов Unicode в однобайтную кодировку ASCII, преобразования значений объектов и другие методы. Подробности можно посмотреть в справочной системе. В дальнейшем это будет более подробно разобрано на нашем сайте в моих следующих статьях.

 

8) Понятие исключения:

 

Как показывает практика программирования, в процессе работы программы могут возникнуть какие-либо неполадки, связанные, например, с некорректными данными. В языке C# такие ситуации обрабатываются с помощью исключений. Говорят, что если операция или метод не может выполниться корректно, то выбрасываются исключения соответствующего типа. Выражение «выбрасываются» надо понимать не буквально, а в том смысле, что при обнаружении ошибки система прерывает выполнение программы и сообщает об этом. Например, если при делении делитель оказался равен нулю, то программа будет прервана с признаком «деление на нуль». А если при попытке преобразовать строку в число один из символов строки окажется не цифровым, то тоже будет прерывание программы, но уже с другим признаком. Это и есть выбрасывание исключений.

 

Исключения являются нормальным способом уведомления об ошибках в работе программы. Возможна стандартная обработка исключения, когда система просто информирует пользователя о случившейся неприятности и завершает выполнение программы. Однако, считается хорошим стилем, когда программист предусматривает возможность появления исключения и сам обеспечивает его обработку. Говорят, что программист «ловит» исключение, вставляя в текст программы соответствующий блок. Пример обработки исключения будет рассмотрен в одной из моих ближайших статей.

 

В состав библиотеки FCL (Free Class Library, библиотека свободных классов – это объектно-ориентированная библиотека, нацеленная на работу с XML, веб-программирование, взаимодействие с базами данных, обработку изображений и др.) входит класс Exception, свойства и методы которого позволяют работать с исключениями. Свойства этого класса определяют виды исключений, которые задаются определёнными идентификаторами. Если в некотором блоке предполагается возможность появления исключений, то разумно заключить этот блок в фигурные скобки и предварить ключевым словом try. Вслед за этим блоком можно расположить один или несколько блоков, обрабатывающих исключения, – это так называемые catch-блоки. Каждый catch-блок имеет формальный параметр, определяющий, какое именно исключение будет обработано в этом блоке. Если в try-блоке возникает исключение, то catch-блоки начинают конкурировать в борьбе за перехват исключения. Обрабатывает исключение тот блок, параметр которого соответствует исключению. Ну, а чтобы исключение было правильно обработано, программист должен разместить в блоке необходимые операторы.

 

 

Выражения (Expressions)

 

Выражение — это строка кода, которая определяет значение. Пример простого выражения:

 

myValue = 100;

 

 

Обратите внимание, что данная инструкция выполняет присвоение значения 100 переменной myValue. Оператор присвоения (=) не сравнивает стоящее справа от него значение (100) и значение переменной, которая находится слева от оператора (myValue). Оператор «=» устанавливает значение переменной myValue равным 100.

Поскольку myValue = 100, то как выражение, которое определяет значение 100, myValue может использоваться другим оператором присвоения.

Например:

 

mySecondValue = myValue = 100;

 

 

В данном выражении литеральное значение 100 присваивается переменной myValue, а затем оператором присвоения устанавливается вторая переменная mySecondValue с тем же значением 100. Таким образом, значение 100 будет присвоено обеим переменным одновременно. Инструкцией такого вида вы можете инициализировать любое число переменных с одним и тем же значением, например 20:

a = b = c = d = e = 20;

 

Выражения (Руководство по программированию в C#)

 

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

 

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

 

((x < 10) && (x > 5)) || ((x > 20) && (x < 25))

System.Convert.ToInt32("35")

 

 

Значения выражений

 

В большинстве контекстов, в которых используются выражения, например, в операторах или в параметрах методов, предполагается, что результатом вычисления выражения будет какое-то значение. Если x и y — целые числа, то результатом вычисления выражения x + y будет числовое значение. Результатом вычисления выражения new MyClass() будет ссылка на новый экземпляр объекта MyClass. Результатом вычисления выражения myClass.ToString() является строка, поскольку она является возвращаемым типом метода. Однако хотя имя пространства имен классифицируется как выражение, значение не будет результатом его вычисления и, поэтому, оно никогда не будет конечным результатом какого-либо выражения. Имя пространства имен нельзя передать параметру метода, или использовать его в новом выражении, или присвоить его переменной. Его можно использовать только как часть выражения в более крупном выражении. Это также относится к типам (в отличие от объектов System.Type), именам групп методов (в отличие от отдельных методов) и к методам доступа к событиям add и remove.

У каждого значения есть связанный с ним тип. Например, если x и y — переменные типа int, то значение выражения x + y также типизируется как int. Если значение присвоено переменной другого типа или если x и y принадлежат к разным типам, то применяются правила преобразования типов. Дополнительные сведения о работе таких преобразований см. в разделе Приведение и преобразование типов (руководство по программированию в C#).

 

Переполнения

 

Числовые выражения могут привести к переполнениям, если значение больше максимального значения типа значения. Дополнительные сведения см. в разделах Checked и Unchecked (Справочник по C#) и Таблица явных числовых преобразований (справочник по C#).

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных