Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дополн. к лекции 2,3.doc(программирование).doc
Скачиваний:
12
Добавлен:
10.06.2015
Размер:
443.39 Кб
Скачать
    1. Арифметическое переполнение

Арифметические операторы могут выдавать результаты, находящиеся за пределами интервала возможных величин используемого числового типа.

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

В случае деления целого числа на ноль вызывается исключение DivideByZeroException.

Для чисел с плавающей запятой при переполнении арифметической операции или делении на ноль исключение никогда не вызывается, потому что типы чисел с плавающей запятой основаны на стандарте IEEE 754 и включают правила для представления бесконечности и нечисловых значений (NaN).

    1. Математические операции

Для выполнения математических операций, например в тригонометрии, используется класс платформ Math. В примере используются методы Sin (вычисление синуса) и Sqrt (вычисление квадратного корня) и константа PI (системная константа с большим количеством знаков).

using System;

double d = Math.Sin(Math.PI/2);

double e = Math.Sqrt(144);

Класс System.Math включает поля и методы.

Поля класса

Вызов

Действие

Math.E

Значение свойства E примерно равно 2,718.

Math.LN10

Значение свойства LN10 примерно равно 2,302.

Math.LN2

Значение свойства LN2 примерно равно 0,693.

Math.LOG10E

Свойство LOG10E (константа) приблизительно равно 0,434.

Math.LOG2E

Значение свойства LOG2E (константа) приблизительно равно 1,442.

Math.SQRT1_2

Свойство SQRT1_2 (константа) приблизительно равно 0,707.

Math.SQRT2

Свойство SQRT2 (константа) приблизительно равно 1,414.

Math.PI

Свойство PI является константой, приблизительно равной 3,14159.

Методы класса. Имена с заглавной буквы.

Вызов

Функция

Abs(x)

Абсолютное значение

Acos(x)

Обратный косинус

Asin(x)

Обратный синус

Atan(x)

Обратный тангенс

Atan2(x,y)

4-квадрантный арктангенс. Atan2(x,y) = Atan(x/y)

BigMul(x,y)

Умножает два 32-битовых числа.

Ceiling(x)

Округление вверх

Cos(x)

Косинус

Cosh(x)

Косинус гиперболический

DivRem(x,y)

Остаток от x/y, числа целые

Exp(x)

Экспонента = ex

Floor(x)

Округление вниз

IEEERemainder(x,y)

Остаток от x/y, числа вещественные

Log(x)

Натуральный логарифм

Log(x,y)

Логарифм от x по основанию y

Log10(x)

Логарифм от x по основанию 10

Max(x,y)

Максимальное из двух

Min(x,y)

Минимальное из двух

Pow(x,y)

Возводит x в любую степень y

Round(x)

Округление до ближайшего целого

Sign(x)

Знак числа

Sin(x)

Синус

Sinh(x)

Синус гиперболичгский

Sqrt(x)

Квадратный корень

Tan

Тангенс

Tanh

Тангенс гиперболичгский

Truncate(x)

Отсечение дробной части

    1. Литералы

Литерал представляет собой постоянное значение, у которого нет имени. Например, 5 и "Hello World" являются литералами.

  1. Типы

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

Библиотека классов платформы .NETFrameworkопределяет типы:

  • Типы значения. Это встроенные числовые типы (или примитивные типы). Они содержат данные.

  • Ссылочные типы. Это сложные типы, определяемые классами, например, коллекции и массивы объектов и даты. Они содержат ссылки на объекты в куче, где размещаются данные.

  • Типы указателей. Могут использоваться только в небезопасном режиме. Они могут привести к сбоям и

Существует возможность преобразовать тип значения в ссылочный тип и обратно в тип значения с помощью упаковки-преобразования и распаковки-преобразования. За исключением упакованного типа значения преобразовать ссылочный тип в тип значения невозможно.

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

К сведениям, хранимым в типе, может относиться следующее:

  • Место для хранения переменной типа.

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

  • Содержащиеся члены (методы, поля, события и т. д.).

  • Базовый тип, которому он наследует.

  • Расположение, в котором будет выделена память для переменных во время выполнения.

  • Разрешенные виды операций.

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

Компилятор внедряет сведения о типе в исполняемый файл в качестве метаданных. Среда CLR использует эти метаданные во время выполнения для дальнейшего обеспечения безопасности типа при выделении и освобождении памяти.