Перечисления и структуры. Назначение, область применения, синтаксис описания, примеры.

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

Синтаксис:

enum <имя_типа> [:<тип_данных>] {<список_именнованных_констант>};

Пример объявления:

enum nameOfEnum {el1, el2, el3};

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

Пример для типа Byte:

enum nameOfEnum: byte {el1, el2, el3};

Пример:

enum season {spring, summer, autumn, winter};

static void Main()

{

seasons season = seasons.summer;

string s;

switch (season)

{

case seasons.spring: s=”Весна”; break;

case seasons.summer: s=”Лето”; break;

case seasons.autumn: s=”Осень”; break;

case seasons.winter: s=”Зима”; break;

default: s=”Не определено”; break;

}

Console.WriteLine(s);

Console.ReadLine();

}

Структуры. Если данные являются частью чего-то большего, то имеет смысл объединить их в единую структуру. Например, информация о каком-нибудь объекте реального мира, который включает набор характеристик, описывающих данный объект. Например, структура, описывающая точку на экране, может иметь следующие данные: координаты по оси X и Y, цвет точки. В свою очередь цвет может являться структурой, соединяющей данные о компонентах красного, зеленого, синего и яркости. Для описания такого рода информации предназначена структура.

Структура – пользовательский тип данных, предназначенный для представления логически связанных данных.

Синтаксис:

stract <имя_структуры> {<элементы_структуры>};

элементы структуры разделяются между собой «;». Для каждого элемента можно также устанавливать модификаторы доступа. Если элемент объявлен с модификатором private, то он доступен только внутри структуры. Если объявлен public, то он доступен в любой точке пространства имен, в котором он описан.

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

struct color {

public byte r;

public byte g;

public byte b;

public byte a;

}

color point;

p.r=125;

p.b=10;

p.g=90;

p.a=80;

 

struct point {

public int x;

public int y;

public color c;

}

point p;

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

Конструктор – метод, который вызывается при создании объекта.

struct color {

public byte r;

public byte g;

public byte b;

public byte a;

public color (byte_r, byte_g, byte_b, byte_a)

{

r=_r; b=_b; g=_g; a=_a;

}

}

color c = new color (10, 33, 69, 120);

9. Понятия: выражение, операция, операнд, оператор. Примеры.

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

Операндамимогут быть: литералы, переменные, константы или функции.

Операция – это некоторое действие, обозначаемое символом.

Операции бывают:

Унарные – выполняются над одним операндом.

Бинарные – выполняются над двумя операндами.

1) Математические операции – результат число: +, - (бинарная и унарная), *, /, %

2) Операция сравнения – результат true или false: == - проверка на равенство, != - проверка на неравенство, <, >, <=, >=

3) Логические операции – результат true или false: & - побитовое «И», | - побитовое «ИЛИ», ~ - побитовое «НЕ» (бинарные и унарные), && - логическое «И», || - логическое «ИЛИ», ! - логическое «НЕ», ^ - логическое исключающее «ИЛИ».

4) Операции сдвига: >> - сдвиг вправо, << - сдвиг влево.

5) Операции присваивания: =, +=, -=, *=, /=, %=, &=, |=, ^=, <<=, >>=

6) Операции инкремент и декремент: ++ - увеличение значения аргумента на 1, -- - уменьшение значения аргумента на 1 (префиксные и постфиксные)

Пример: c=a+b*n

static void Main(string[] args)

{

int n;

n = Convert.ToInt32(Console.ReadLine());

n = n == 0 ? 1 : n;

Console.WriteLine("1/n="+1/n);

Console.ReadKey();

}