- •15 Макаров м.И., Юдин а.В.
- •"C#. Перечисления и наборы"
- •В в е д е н и е
- •Лабораторная работа «с#: Перечисления и наборы»
- •Подготовка к работе
- •Контрольные вопросы
- •Задание 3.1. Работа с перечислениями
- •Задание 3.2. Работа с набором ArrayList
- •Задание 3.3. Работа с наборами Queue и Stack
- •Задание 3.4. Работа со словарями
- •Задание 3.5. Работа с набором двоичных значений
- •Методические указания
- •Приложение
Задание 3.4. Работа со словарями
3.4.1. Создать набор типа словарь ключ-значение (Hashtable) содержащий 10 ключ-значение. Тематика словаря выбирается в соответствии с вариантом (табл. 1).
3.4.2. В консольном приложении осуществить запрос у пользователя ввода ключа.
3.4.3. Осуществить поиск значения в соответствии с введенным ключом, если такой есть то вывести его значение на экран, если отсутствует, то вывести соответствующее сообщение.
Таблица 1.
Вариант |
Тематика (ключ-значение) |
1 |
Книга - автор |
2 |
Номер - игрок |
3 |
Предмет - оценка |
4 |
Товар - цена |
5 |
Зачетка - фамилия |
6 |
Номер заказа - покупатель |
7 |
Имя - телефон |
8 |
Фамилия – e-mail |
9 |
Город - индекс |
10 |
Заказ-фирма |
11 |
Улица-номер дома |
12 |
Фамилия-адрес |
13 |
Телефон - фамилия |
14 |
Фирма - сайт |
15 |
Композиция - исполнитель |
16 |
Программа - разработчик |
17 |
Место – команда |
3.4.4. Удалить из набора найденный элемент.
3.4.5. Вывести на экран все оставшиеся элементы.
3.4.6. Удалить все элементы набора.
Задание 3.5. Работа с набором двоичных значений
3.5.1. Создать набор двоичных значений.
3.5.2. Записать в набор значения своей фамилии и имени для четных вариантов 1 для гласных и 0 для согласных, для нечетных наоборот.
3.5.3. Осуществить две логические операции над каждым элементом набора в соответствии с вариантом (см. табл .1.).
Таблица 1.
Вариант |
Операция 1 |
Операция 2 |
1 |
AND 1 |
Not |
2 |
AND 0 |
Not |
3 |
OR 0 |
Not |
4 |
OR 1 |
Not |
5 |
XOR 1 |
Not |
6 |
XOR 0 |
Not |
7 |
AND 1 |
OR 1 |
8 |
AND 0 |
OR 1 |
9 |
AND 1 |
OR 0 |
10 |
AND 0 |
OR 0 |
11 |
OR 1 |
XOR 1 |
12 |
OR 0 |
XOR 1 |
13 |
OR 1 |
XOR 0 |
14 |
OR 0 |
XOR 0 |
15 |
AND 1 |
XOR 0 |
16 |
AND 0 |
XOR 0 |
17 |
AND 1 |
XOR 1 |
18 |
AND 0 |
XOR 1 |
3.5.4. Результат вывести на экран в виде цифровых значений.
Методические указания
Методические указания к пункту 3.1.
Перечисления представляют множество именованных целочисленных констант. Конструкция:
emum имя {список};
Рассмотрим пример:
Из примера видно что перечисления объявляются не в методе Main а для использования значений нужно применять приведение к целочисленному типу. В результате выполнения программы будет выведены значении 0 и 2. Если значения констант не указывать то они устанавливаются по умолчанию по следующему правилу: инкремент значения предыдущей константы, значение первой константы равно 0.
Значения констант можно установить вручную. Пример:
В результате на экран будет выведено: 50, 51 и 0. Для констант b и d не было объявлено значений, поэтому для них были присвоены значения инкремента о предыдущий значений – 51 и 0 соответственно.
Методические указания к пункту 3.2.1.
Для решения задания нужно подключить дополнительно пространство имён: System.Collections. Подключение:
Вначале, нужно создать набор типа ArrayList:
Генерация случайных значений в интервале осуществляется с помощью метода Next экземпляра класса Random. В примере 10 элементов созданного набора заполняются случайными числами из диапазона от 1 до 100:
Методические указания к пункту 3.2.2.
Сортировка осуществляется с помощью метода Sort:
Методические указания к пункту 3.2.3.
Для того чтобы выполнить вывод всех элементов на консоль нужно составить цикл foreach:
Для того что бы добавить в набор элемент по заданному индексу необходимо применить метод Insert. Занесения в 5 индекс значения 700:
Методические указания к пункту 3.2.4.
Генерация значений осуществляется как в пункте 3.1.1. Для проверки наличия в наборе элемента применяется метод Contains возвращающий тип bool. Для поиска индекса по заданному его значению используется метод IndexOf. Пример проверка на наличие в наборе значения 700 и случае присутствия, поиск его индекса и вывод на консоль:
Методические указания к пункту 3.2.5.
Удаление элементов набора осуществляется с помощью метода Remove. Пример удаления элемента с индексом 5:
Методические указания к пункту 3.2.6.
Очистка набора осуществляется с помощью метода Clear:
Методические указания к пункту 3.3.1
Для генерации случайного текста необходимо определить диапазон значений кодовой таблицы, в которых располагаются нужные символы. По умолчанию в C# применяется кодовая таблица UTF-8, соответствие наборов символов и диапазонов располагается в приложении данных методических указаний. После определения диапазона значений, нужно с помощью генерации псевдослучайных чисел в этом диапазоне и их преобразованием в символьный тип получить текст.
Рассмотрим по пунктам на основе примера – необходимо сгенерировать текст из 100 символов, значения из кодировки берутся в пределе от 1000 до 1050. Генерация случайных значений в интервале осуществляется с помощью метода Next экземпляра класса Random:
Как видно в примере метод принимает в качестве параметров значение пределов, в которых нужно генерировать значение.
Для генерации строки символов нужно с помощью регулярного цикла задать число необходимых символов и использовать приведение типов из числового (int) в символьный (char). Пример:
Методические указания к пункту 3.3.2.
Вначале, нужно создать набор типа очередь (Queue). Добавление элементов в очередь осуществляется с помощью метода Enqueue. В примере рассмотрено создание очереди и добавление двух элементов – строкового и числового типа:
Методические указания к пункту 3.3.4.
Возвращение элемента очереди без его удаления из неё осуществляется с помощью метода Peek.
Методические указания к пункту 3.3.5.
Количество элементов в очереди возвращает метод Count. Возвращает элемент очереди, и удалят из неё метод Dequeue. Пример удаления всех элементов очереди:
Методические указания к пункту 3.3.6.
Вначале, нужно создать набор типа стек (Stack). Добавление элементов в очередь осуществляется с помощью метода Push. В примере рассмотрено создание стека и добавление двух элементов – строкового и числового типа:
Методические указания к пункту 3.3.7.
Извлечение элементов из набора стек осуществляется методом Pop. В примере с помощью цикла извлекается поочередно 5 элементов и выводятся на консоль:
Методические указания к пункту 3.3.8.
Извлечение без удаления верхнего элемента стека осуществляется с помощью метода Peek.
Методические указания к пункту 3.4.1.
Для решения задания нужно подключить дополнительно пространства имён: System.Collections.Specialized. Подключение:
Необходимо создать набор типа словарь ключ-значение:
Заполнение осуществляется с помощью метода add, в качестве параметров передается ключ и зщначение. Пример заполнения:
Методические указания к пункту 3.4.2.
Вывод на консоль осуществляется с помощью метода WriteLine класса Console, а считывание осуществляется с помощь метода ReadLine. Пример запрос ввод имени пользователя в переменную s типа String:
Методические указания к пункту 3.4.3
Осуществить поиск значения в соответствии с введенным ключом, можно осуществить с помощью вызова элемента с заданным ключом. Пример:
Методические указания к пункту 3.4.4
Удаление осуществляется с помощью метода Remove
Методические указания к пункту 3.4.5
Вывести на экран все значения можно с помощью цикла foreach:
Методические указания к пункту 3.4.6
Для удаления всех элементов массива существует специальный метод очистки (Clear). Пример его использования:
Методические указания к пункту 3.5.1.
Необходимо создать битовый набор (BitArray) с указанием числа элементов. Пример создания битового набора с 3 элементами:
Методические указания к пункту 3.5.2.
Заполнение битового набора осуществляется с помощью переменных типа bool. Пример, в созданный набор заносятся значения 101:
Методические указания к пункту 3.5.3.
Для осуществления логических операций над битовым массивом нужно использовать методы битового набора – and (логическое И), or (логическое Или), xor (исключающее Или), not (инверсия). В качестве параметра передается другой битовый массив с необходимыми значениями. Пример применения Исключающего Или:
Методические указания к пункту 3.5.4.
Для того чтобы вывести все значения набора в цифровом виде нужно организовать цикл проверяющий значения набора. Пример: