Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lec

.pdf
Скачиваний:
24
Добавлен:
24.03.2015
Размер:
3.43 Mб
Скачать

Тип константы определяется как первый подходящий, начиная с типа int. Возможно указание типа константы в явном виде (с помощью суффикса):

255L – имеет тип long (L-это суффикс) 255U – беззнаковая

255UL – беззнаковая длинная (ulong)

Примеры объявления переменных

int a, b=10, c=int.Parse(“355”), d=b+c, e=short.MaxValue;

2. Вещественные типы

Тип С#

CTS

Длина,байт

Точность,цифр Диапазон

float

Single

4

7

|10-45|1038|

double

Double

8

15

|10-324|10308|

Константы

-форма F ±XXX.YYY

-форма E ±МантиссаЕ ±Порядок

Примеры констант:

5.5 => 5,5

5.0 => 5,0

5. => 5,0

0.5 => 0,5

.5 => 0,5

2.5 E2 => 2,5*102 => 250,0

Все константы имеют тип данных double. Тип константы может быть изменен c помощью суффикса F:

25.5 => double

25.5F => float

Примеры объявления переменных double a, d=.5, c=double.Parse(“5.5”);

ОШИБКА! 5,5 - верно

3. Десятичный тип (денежный тип)

Представляет собой вещественное значение, причем способ кодирования этого значения не совпадает ни с одним способом кодирования вещественных чисел. Поэтому денежный тип несовместим ни с одним

вещественным типом.

 

 

 

Тип С#

CTS

Длина,байт Точность,цифр

Диапазон

decimal

Decimal

16

28

|10-

28|1028|

 

 

 

 

Константы

 

 

 

 

Целая или вещественная константа с суффиксом М:

25.5М

4. Логический тип

Тип С#

CTS

bool

Bool

Константы

false – ложь

true -

истина

71

Логический тип несовместим ни с каким другим типом.

5 Символьный тип

Тип С#

CTS

char

Char

На один символ отводится область памяти длиной 2 байта. В этой области содержится код символа в таблице кодировки Unicode.

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

´\uXXXX´ - где XXXX – 16-й код символа по таблице кодировки ‘Символ’

Пример: ‘A’ или ´\u0041’ - это код латинской буквы A Символьный тип имеет статические методы:

символ

Метод про-

 

true, если символ принадлежит проверяемой группе

 

верки

 

false, если не принадлежит

 

 

 

 

IsDigit

 

10-я цифра

 

IsLetter

 

буква

 

IsLetterOrDigit

10-я цифра или буква

 

IsLower

 

строчная буква

 

IsUpper

 

прописная буква

символ

Метод преобра-

символ

 

зования

 

 

 

 

ToLower прописные в строчные

ToUpper строчные в прописные

72

ОПЕРАЦИИ СО СТАНДАРТНЫМИ ПРОСТЫМИ ТИПАМИ ДАННЫХ

1 Выражение и оператор

Выражение – операнды, объединенные знаками операций. Любое выражение, завершенное ”;” – оператор. Одиночный символ ”;”, не относящийся ни к одному оператору – пустой оператор.

Операндами могут быть:

1.Вызов метода

2.Переменная

3.Константа

4.Выражение

Операции имеют приоритет. Приоритет предписывает очередность выполнения операций в выражении. Операции одного приоритета выполняются слева направо. Исключения будут оговорены особо. Порядок операций можно регулировать скобками “()”.

Взависимости от числа операндов различают:

1)Унарные

2)Бинарные

3)Тернарные

Приоритеты операций по группам:

Вызов метода

Унарные операции

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

Сдвиги

бинарные

 

Отношения

Битовые

Логические

Тернарная

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

2 Операции присваивания

- Простое присваивание

А=В

переменная выражение (“приемник”) (“источник”)

1. Вычисляется значение В

73

2.Если тип переменной А и тип выражения В не совпадают, то значение В преобразуется к типу А

3.Значение В заносится в область памяти, отведенную для переменной А

int a, b; a=10; b=5; a=a+b;

 

 

10

 

 

 

 

5

 

a

 

15

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

 

10

 

15

5

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

int a, b, с;

a=b=c=100;

-Составное присваивание объединяет присваивание и одну из бинарных операций

А * = В => А = А * В, где * – бинарная операция

int a=10;

a+=3; // a=a+3; a=13

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

1.Типы совместимы

2.Преобразование не приведет к потери информации

Совместимые типы

Приемник

Источник

bool

bool

char

char

decimal

decimal, char, целый тип

целый тип

целый тип, char

вещественный тип

вещественный тип, целый тип, char

Если типы совместимы, проверяется возможность потери информации при преобразовании. Потери возможны:

74

1.При присваивании целой переменной вещественного значения (теряется дробная часть)

2.При присваивании переменной с меньшим диапазоном значений значения переменной с большим диапазоном значений.

Вслучае возможности потери информации фиксируется ошибка.

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

2. Преобразование типов операндов при выполнении операций

Перед выполнением операции все операнды целого типа со знаком, которые по длине короче, чем int преобразуются в int, а беззнаковые операнды короче uint, преобразуются в uint.

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

 

 

ulong

uint

decimal

double

float

 

 

 

long

int

Больше

 

 

Меньше

Исключение

Особая ситуация: операнды типов uint и int. Эти типы имеют одинаковый по величине диапазон значений, но смещенный на числовой оси. В этом случае оба операнда преобразуются к типу long.

Тип результата операции будет совпадает с типом операндов после преобразования.

Преобразования выполняются при выполнении операции и не влияют на хранение значений операндов в памяти.

4 Арифметические операции

Унарные

-Изменение знака

-Унарный +

-Инкремент

-Декремент

75

Изменение знака int a=10, b=20, c, d; c=-a; // с=-10

d=+b; // d=20

Инкремент предназначен для увеличения значения переменной на единицу, а декремент – для уменьшения значения переменной на единицу.

 

int a=10;

или

а++; // а=а+1; а=11

 

++а; // а=а+1; а=11

 

int a=10;

или

а--; // а=а-1; а=9

 

--а; // а=а-1; а=9

Операции инкремент и декремента могут использоваться как в префиксной форме (знак перед переменной), так и в постфиксной форме (знак после переменной). Отличия будут проявляться при использовании операции в выражении: префиксная – сначала изменяется значение переменной, потом используется новое значение; постфиксная – сначала используется старое значение переменной, потом изменяется значение переменной.

int a=10, b=10, x, y; x=a++; //.a=11 x=10 y=++b; // b=11 y=11

Бинарные операции

Операция

тип после преобразо-

 

вания

 

 

* / %

уменьшение + - приоритета

int a, b; double c;

a=10/4; //a=2 c=10/4.; //c=2.5

b=10./4; //ошибка!!! (10./4.=2.5)

int

double

при присваивании возможна

 

 

потеря информации!!!

76

int a;

а=10%3; //а=1 а=-10%3; //а=-1 а=10%-3; //а=1 а=-10%-3; //а=-1

5 Операция явного преобразования типа

(Тип приемника) операнд

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

int a; double b;

a=(int)3.5; //a=3 b=(int)3.5+5.5;//b=3+5.5=8.5

6 Операция явного преобразования типа

true (выполнено)

Операция

bool

false (не выполнено)

 

< ≤ > ≥ кроме bool

 

== !=любой тип

bool a, b, c;

 

a= 10>5;

// true

b= ’B’>’A’;

// true

c= 65==’A’;

// true

 

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

bool Операция

! (не) && (и) || (или)

 

bool

true по таблице ис-

 

 

 

тинности

 

 

false

//унарная

 

bool a;

 

a= !(10>5 && 3==8);

//true

 

77

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

целочисл.тип

 

тип после преобразо-

кол-во бит

Сдвиг

 

вания

 

 

 

 

 

>> вправо

<<влево

Для знаковых типов – арифметический сдвиг, для беззнаковых – логический.

ushort a=0x8005, b; b=(ushort)(a>>1);

01000 0000 0000 010 1

4

0

0

2

short a=-0x1005, b; b=(short)(a>>1);

11110 1111 1111 110 1

F 7 F D

пишем знак числа на освободившееся место

9. Битовые операции

целочисл.тип

Операция

тип после преобразо-

 

 

вания

 

 

 

~(не) унарная

&и

^mod2

| или

byte a=0x1F, b=0x3A, d; d=(byte)(~(a^b));

Операции выполняются поразрядно: 0001 1111 0011 1010

0010 0101 a^b

78

1101 1010 ~(a^b)

10. Тернарная операция

Предназначена для реализации простейшего варианта ветвления.

Операнд1? Операнд2:Операнд3

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

 

 

 

 

Вычисли опе-

 

 

 

 

 

 

ранд1

 

 

 

 

true

 

 

 

false

 

 

Операнд1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вычисли операнд2 -

 

 

Вычисли операнд3 –

:

это результат

 

 

 

это результат

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

int a, b, c, min;

a=10; b=5; c=8; min = a;

min = b < min ? b :mn; min = c < min ? c :mn;

79

ОПЕРАТОРЫ УПРАВЛЕНИЯ

В языке С# реализован полный набор управляющих конструкций структурного программирования: следование, ветвление, цикл. Кроме того, имеются дополнительные операторы управления.

1. Следование

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

{оператор … оператор} блок операторов

Вкачестве оператора могут быть:

объявление

выражение, заканчивающееся символом точи с запятой

управление

блок операторов

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

2. Ветвление

if (логическое выражение P)

 

false

 

Р

 

true

 

 

 

 

 

 

 

 

оператор1

 

 

 

 

 

 

 

оператор2

 

оператор1

 

 

 

 

 

 

 

 

 

 

else

оператор2

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

Допускается сокращенное ветвление. if (P) оператор;

Р

false

true

 

оператор1

 

80

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]