- •Введение
- •Контрольная работа № 1 разработка приложений в microsoft visual studio 2008
- •Теоретические сведения Интерфейс Microsoft Visual Studio 2008
- •Создание консольного приложения
- •Построение xml-отчета по выполненному проекту
- •Создание приложения Windows Forms
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Контрольная работа № 2
- •Теоретические сведения Структура программы. Переменные и выражения
- •Литеральные константы
- •Операции и их старшинство
- •Операторы c#
- •If(выражение1) if(выражение2) if(выражение3) ...
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Примеры решения задач
- •Контрольная работа № 3 техника работы с массивами. Процедуры и функции
- •Теоретические сведения
- •Базовый класс для массивов
- •Процедуры и функции
- •Синтаксис методов
- •Формальные и фактические аргументы
- •Соответствие формальных и фактических аргументов
- •Функции с побочным эффектом
- •Функция Main()
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Примеры решения задач
- •Контрольная работа № 4 перечисления и структуры
- •Теоретические сведения
- •Базовый класс перечислений - System.Enum
- •Структуры
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Пример решения задачи
- •Контрольная работа № 5 обработка символов и строк
- •Теоретические сведения
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Примеры решения задачи
- •Контрольная работа № 6 проектирование классов. Составление программ с использованием ооп
- •Теоретические сведения
- •Контрольные вопросы
- •Содержание и порядок выполнения работы
- •Пример решения задачи
- •Заключение
- •Библиографический список
- •Оглавление
- •394026 Воронеж, Московский просп., 14
Контрольная работа № 4 перечисления и структуры
Цель работы: составление программ, использующих сложные типы данных и их методы.
Теоретические сведения
Перечислимый тип описывается с помощью ключевого слова enum
enum <имяТипа>
{
<значение1>,
<значение2>,
…,
<значениеN>
}
Пример:
enum ort : byte
{
norden,
suden,
osten ,
westen =4
}
ort myDirect = ort.osten;
// создаем переменную перечислимого типа
Console.WritelLine(“myDirect= {0}”, myDirect);
// выводим имя значения из перечисления
Console.WritelLine(“myDirect= {0}”, (byte)myDirect);
//выводим порядковый номер значения
// из списка перечисления
Рис. 21. Вывод переменной типа перечисление
Перечислимый тип обладает базовым типом. По умолчанию это int.
Но можно задать и другой тип в качестве базового.
enum <имяТипа> : <базовый тип>
{
<значение1>,
<значение2>,
…,
<значениеN>
}
Допустимы базовые типы:
byte, sbyte, short, ushort, int, long, ulong.
По умолчанию каждому значению перечислимого типа автоматически присваивается соответствующее значение базового типа, начиная с нуля, в том порядке, в котором они написаны, т.е. <значение1>=0, <значение2>=1, <значение3>=2 и т.д.
Можно самостоятельно задать фактические базовые значения для каждого из значений перечисления
enum <имяТипа> : <базовый тип>
{
<значение1> = <фактическоеЗначение1>,
<значение2> = <фактическоеЗначение2>,
…,
<значениеN> = <фактическоеЗначениеN>
}
Также можно задавать идентичные базовые значения для нескольких перечислимых значений, используя одно значение как базовое
enum <имяТипа> : <базовый тип>
{
<значение1> = <фактическоеЗначение1>,
<значение2> = <значение1>,
<значение3>,
…,
<значениеN> = <фактическоеЗначениеN>
}
Всем значения, оставшимся неуказанными, будут автоматически присвоены базовые значения, на 1 больше последнего указанного фактического значения. Например, если
enum <имяТипа> : <базовый тип>
{
<значение1> = <фактическоеЗначение1>,
<значение2>,
<значение3>=<значение1>,
<значение4>,
…,
<значениеN> = <фактическоеЗначениеN>
}
то окажется, что <значение2>=<значение4>.
Примеры:
enum ort : byte
{
norden=1 , // 1
sudden=osten, // 1
osten=norden, // 1
westen // 2
}
Можно писать и так
enum ort : byte
{
norden=1+1 , // 2
suden=osten+2, // 4
osten=norden-1 // 1
westen // 2
}
Рассмотрим преобразование типов для перечислений.
enum ort : byte
{
norden=1,
suden,
osten,
westen
}
static void Main(string[] args)
{
byte directByte;
string directString;
ort myDirect = ort.suden;
Console.WriteLine("myDirect= {0}", myDirect);
directByte=(byte)myDirect;
//явное преобразование в byte
directString=Convert.ToString(myDirect);
//преобразование в string
Console.WriteLine("byte эквивалент = {0}", directByte);
Console.WriteLine("string эквивалент ={0}", directString);
}
Рис. 22. Преобразование перечислимого типа
В примере вместо строки
directString=Convert.ToString(myDirect);
можно было бы написать
directString=myDirect.ToString();
Базовый класс перечислений - System.Enum
Все перечисления происходят от единого базового класса System.Enum. Рассмотрим его методы.
Метод GetUnderlyingType() позволяет получить информацию о том, какой тип данных используется для представления числовых значений элементов перечисления:
enum EmpType
{
Manager = 10,
Grunt = 20,
Contactor = 30,
VP = 40
} …..
Console.WriteLine(Enum.GetUnderlyingType(typeof(EmpType));
Метод Format() позволяет получить имена элементов перечисления по их числовым значениям
EmpType fred;
fred=EnumType.VP;
…..
Console.WriteLine(Enum.Format(typeof(EmpType),fred,"G"));
//будет выведено VP
Console.WriteLine(Enum.Format(typeof(EmpType),fred,"d"));
//будет выведено 40
Свойство IsDefined позволяет определить, является ли выбранная символьная строка элементом указанного перечисления
If (Enum.IsDefined(typeof(EmpType),"SalesPerson"))
Console.WriteLine("Да");
else
Console.WriteLine("Нет");
Для преобразования типа string в перечислимый существует специальный метод Enum.Parse():
(<перечислимыйТип>)Enum.Parse(typeof(<перечислимыйТип>), <значениеСтроки>);
Например:
string myString = “norden”;
ort myDirect = (ort)Enum.Parse(typeof(ort), myString);
Естественно, значение строки должно совпадать со значением из перечисления.