ПРАКТИЧЕСКАЯ РАБОТА №14

Тема: «Работа с типом данных структур» (2 часа)



Цель работы: Формирование навыков практического применение обобщенных структур в C#.
Задачи:
  • Изучать задачи и функции информационных систем;
  • Формировать умения и навыки использования программных средств используемых в разработке информационных систем;
  • Знакомство с методами и средствами проектирования информационных систем

Формируемые компетенции: ПК 1.1., ОК 1-10.
Материально-техническое обеспечение: доска, учебники, сборник практических работ, комплект нормативных документов; классификация объектов технического регулирования, Общероссийский классификатор стандартов (ОКС), приложение 2-3.
Обеспечивающие средства: компьютеры, совместимые с IBM PC.

Ход работы:
1.     Проверка готовности к ПР: тестирование
2.     Выполнение заданий
3.     Заполнение отчета

Теоретическая часть

Подобно классам, структуры также могут быть обобщенными. Они очень похожи на обобщенные классы, за исключением возможности наследования. Рассмотрим обобщенную структуру Nullable<T>, которая определена в .NET Framework.
Число в базе данных и число в языке программирования имеют важное отличие в своих характеристиках, поскольку число в базе данных может быть null. Число в C# не может быть null. Проблема существует не только с базами данных, но также с отображением данных XML на типы .NET.
Это отличие часто служит источником сложностей и требует массы дополнительной работы по отображению данных. Одно из решений состоит в отображении чисел из баз данных и файлов XML на ссылочные типы, потому что ссылочные типы могут иметь значение null. Однако это также означает дополнительные накладные расходы во время выполнения.
За счет использования структуры Nullable<T> эта проблема может быть легко решена. Структура Nullable<T> определяет ограничение, которое состоит в том, что обобщенный тип T должен быть структурой. С классами в качестве обобщенных типов преимущество минимальных накладных расходов исчезло бы, и поскольку объекты классов все равно могут быть null, то в использовании класса с типом Nullable<T> смысла нет.



Поле типа bool hasValue определяет, установлено значение или же оно равно null. Помимо этого, обобщенная структура определяет доступные только для чтения свойства HasValue и Value, а также перегрузки некоторых операций. Перегрузка операции приведения Nullable<T> к T определена явно, так как она может генерировать исключение в случае, если hasValue равно false. Перегрузка операции для приведения к Nullable<T> определена неявно, потому что она всегда успешна. В этом примере экземпляр Nullable<T> создан как Nullable<int>. Переменная х теперь может быть использована как int, т.е. ей можно присваивать значения и применять в операциях для выполнения некоторых вычислений.
Задания:
  1. Разработать класс «Полином», в котором информация о коэффициентах хранится в виде списка. Реализовать для класса методы ввода-вывода, сложения и умножения полиномов, умножения полинома на число, интегрирования и дифференцирования полинома.
  2. Использовать классы стека и очереди для решения следующих задач:
· Дана символьная строка с некоторым выражением, в котором могут содержаться скобки трех видов – (), {}, []. Написать метод проверки правильности расстановки скобок в этой строке.
· Дана символьная строка, которая содержит правильное скобочное выражение. Для каждой пары скобок (открывающей и соответствующей ей закрывающей) распечатать номера их позиций в строке, упорядочив пары: а) по возрастанию номеров открывающих скобок; б) по возрастанию номеров закрывающих скобок.
· Дана символьная строка, содержащая правильно записанное математическое выражение следующего вида: <формула>::=<цифра>|M (<формула>,<формула>) m (<формула>,<формула>) M – операция вычисления max из двух выражений, m - операция вычисления min из двух выражений. Написать функцию вычисления значения этого выражения.
· Дана символьная строка, содержащая правильно записанное логическое выражение следующего вида: <формула> ::= T | F | And(<формула> , <формула>) |Or(<формула> , <формула>) | Not (<формула>) And – операция логического И, Or – операция логического ИЛИ, Not - операция логического НЕ. Написать функцию вычисления этого выражения (функция должна возвращать true, если значение выражения равно T, false – в противном случае).
  1. Описать класс «Предметный указатель». Каждый компонент указателя содержит слово и номера страниц, на которых это слово встречается. Предусмотреть возможность формирования указателя с клавиатуры и из файла, печати предметного указателя, сохранения в файл, вывода номеров страниц для заданного слова, добавления и удаления элемента из указателя.
  2. Описать класс «Каталог библиотеки». Каждая запись каталога содержит информацию о книге – название, автор, количество экземпляров, количество экземпляров «на руках». Предусмотреть возможность формирования каталога с клавиатуры и из файла, печати каталога, сохранения в файл, поиска книги по какому - либо признаку (например, автору или названию), добавления книг в библиотеку, удаления книг из нее, операции получения или возврата книги читателем.
  3. Описать класс «Расписание занятий». Каждая запись содержит день недели, время, название учебной дисциплины, аудиторию. Предусмотреть возможность формирования расписания с клавиатуры и из файла, печати всего расписания и расписания на конкретный день (печать должна быть осуществлена в хронологическом порядке), добавления и удаления записей, сохранения в файл.
  4. Описать класс «Расписание приема пациентов». Каждая запись содержит дату, время, фамилию пациента. Время приема одного пациента должно быть равно одному часу. Предусмотреть возможность формирования расписания с клавиатуры и из файла, печати всего расписания, или расписания в конкретный день, добавления и удаления записей, сохранения в файл. При добавлении записи следует учитывать, что время записи должно быть свободно (не существует уже созданной записи с этим же временем).

Технология выполнения задания
1.Прочитайте теоретическую часть.
2. Выполните задание.
This site was made on Tilda — a website builder that helps to create a website without any code
Create a website