Программирование на C#
Лабораторная работа № 2
ОПЕРАТОРЫ ЯЗЫКОВ С/С++ и С#
Цель работы: составление алгоритмов и программ разветвленной и циклической структуры на С/С++ и С# с использованием простых типов, явного и неявного преобразования типов.
Теоретические сведения Структура программы. Переменные и выражения
Код на С/С++ и C# представлен последовательностью операторов, оканчивающихся ; .
Пробельные символы игнорируются компилятором, поэтому удобно писать 1 оператор в строке, делать отступы и пропускать строки. Т.е. стиль программирования не страдает.
Программа обладает блочной структурой, скобки { } отмечают начало и конец блока, который может содержать 0 или более операторов. В С# { } не сопровождается ; .
Блоки могут быть вложенными
{
<строка1 кода>;
{
<строка2 кода>;
<строка3 кода>;
}
<строка4 кода>;
}
Для записи комментариев используются /* */, // , /// .
Переменные отличаются по своему типу. Для объявления переменных используется запись
<тип> <имя>;
<тип> <список имен>;
Одновременно с объявлением можно проводить инициализацию. Переменные создаются не при объявлении, а при инициализации. Для задания имени переменной пользуются правилами:
1-й символ обязательно буква, или _ , или @ (только для C#);
2-й и последующие символы – буквы, цифры, знак _ ;
имена переменных не должны совпадать с ключевыми словами;
компилятор чувствителен к регистру.
Для выбора имен можно пользоваться соглашениями:
венгерской нотацией (szString1);
нотацией PascalCase (MyVar);
нотацией camelCase (myVar).
Рассмотрим дальнейшие правила, относящиеся к языку С#, как более легкому для самостоятельного изучения. В дальнейшем, имея опыт программирования на С#, можно быстрее освоить языки С/С++, тем более, что он изначально поддерживает объектно-ориентированный стиль.
Система типов имеет принципиальный характер, согласно которой в С# все типы можно разделить на 4 категории:
- типы-значения (value) или значимые типы;
- ссылочные (reference).;
- указатели (pointer);
- тип void.
Классификация основана на том, где и как хранятся значения типов. Для ссылочного типа значение задает ссылку на область памяти в "куче", где расположен соответствующий объект. Для значимого типа используется прямая адресация, значение хранит собственно данные, и память для них отводится, как правило, в стеке. Указатели могут использоваться только в небезопасных блоках, помеченных как unsafe. Тип void указывает на отсутствие какого-либо значения. В языке C# к значимым типам относятся: логический, арифметический, структуры, перечисление. Массивы, строки и классы относятся к ссылочным типам.
В C# массивы рассматриваются как динамические, их размер может определяться на этапе вычислений, а не в момент трансляции. Строки могут менять свою длину. Структуры C#, также и как и в С++, представляют частный случай класса. Определив свой класс как структуру, программист получает возможность отнести класс к значимым типам.
Также типы делятся на встроенные и определенные пользователем. Встроенные типы фактически совпадают с системными типами каркаса .Net Framework из пространства имен System.
Таблица 1
Логический тип | ||||
Имя типа |
Системный тип |
Значения |
Размер | |
bool |
System.Boolean |
true, false |
8 бит | |
Арифметические целочисленные типы | ||||
Имя типа |
Системный тип |
Диапазон |
Размер | |
sbyte |
System.SByte |
-128 — 127 |
Знаковое, 8 Бит | |
byte |
System.Byte |
0 — 255 |
Беззнаковое, 8 Бит | |
short |
System.Short |
-32768 —32767 |
Знаковое, 16 Бит | |
ushort |
System.UShort |
0 — 65535 |
Беззнаковое, 16 Бит | |
int |
System.Int32 |
≈(-2*10^9 — 2*10^9) |
Знаковое, 32 Бит | |
uint |
System.UInt32 |
≈(0 — 4*10^9) |
Беззнаковое, 32 Бит | |
long |
System.Int64 |
≈(-9*10^18 — 9*10^18) |
Знаковое, 64 Бит | |
ulong |
System.UInt64 |
≈(0— 18*10^18) |
Беззнаковое, 64 Бит | |
Арифметический тип с плавающей точкой | ||||
Имя типа |
Системный тип |
Диапазон |
Точность | |
float |
System.Single |
+1.5*10^-45 - +3.4*10^38 |
7 цифр | |
double |
System.Double |
+5.0*10^-324 - +1.7*10^308 |
15-16 цифр | |
Арифметический тип с фиксированной точкой | ||||
Имя типа |
Системный тип |
Диапазон |
Точность | |
decimal |
System.Decimal |
+1.0*10^-28 - +7.9*10^28 |
28-29 значащих цифр | |
Символьные типы | ||||
Имя типа |
Системный тип |
Диапазон |
Точность | |
char |
System.Char |
U+0000 - U+ffff |
16 бит Unicode символ | |
string |
System.String |
Строка из символов Unicode | ||
Объектный тип | ||||
Имя типа |
Системный тип |
Примечание | ||
object |
System.Object |
Прародитель всех встроенных и пользовательских типов |