Технологии программирования ЛР1, ЛР2. Вариант 38
Лабораторная работа
в среде программирования Visual C# .NET 2017
Среда программирования: Visual C# .NET 2017
Название работы: Технологии программирования ЛР1, ЛР2. Вариант 38
Вид работы: Лабораторная работа
Описание: Технологии программирования
Лабораторная работа 1, Лабораторная работа 2.
Язык программирования - C#
Вариант 38
В рамках курса «Технологии программирования» необходимо выполнить две лабораторные работы. В процессе обучения по направлению «Специалист по информационным системам и технологиям» предполагается, что студенты постепенно реализуют проект в одной из выбранных предметных областей, добавляя к нему новые модули по мере изучения новых дисциплин. Поэтому в данном документе предложены типовые задания, однако если в выбранной предметной области есть задачи, требующие применения современных технологий программирования, студенты могут предлагать свои индивидуальные варианты заданий. В этом случае в рамках первой лабораторной работы необходимо реализовать основную структуру классов модуля, а во второй - добавить использование универсальных типов (если это требуется), атрибутов классов и их членов, а также использовать средства документирования кода для генерации документации разработанной структуры классов.
Язык программирования - C#. Задания предполагают разработку консольных приложений, однако использовать оконный интерфейс не запрещается.
Сначала необходимо сдать лабораторную работу №1. Затем, после устранения всех замечаний, на ее основе реализуется лабораторная работа №2. По результатам выполнения каждой лабораторной работы пишется отчет, включающий в себя:
1. Титульный лист.
2. Содержание.
3. Задание.
4. Краткую теорию по теме задания.
5. Результаты работы программы.
6. Выводы.
7. Список использованных литературных источников.
8. Приложение с листингом исходных файлов.
Лабораторная работа №1
Вариант 38) Добиться того, чтобы оператор «&&» объединял матрицы. Причем операция «x && y» должна объединять матрицы, имеющие одинаковое количество столбцов таким образом, чтобы в результирующей матрице строки матрицы y располагались ниже строк матрицы x.
Приложение 1. Класс «Вектор»
Составить описание класса для объектов-векторов, задаваемых одномерным массивом вещественных чисел типа double. Компоненты вектора (x1, x2, ..., xn) должны быть
инкапсулированы в классе.
I. Предусмотреть применение конструкторов:
а) по умолчанию (создающий пустой вектор);
б) для инициализации вектора заданного размера;
в) для инициализации вектора с заданными в виде одномерного массива компонентами.
г) для копирования одного вектора в другой.
Организовать в конструкторах и деструкторе вывод на экран информационных сообщений, например «Конструктор вектора ХХХ», «Деструктор вектора ХХХ» и т.д. Вместо «ХХХ» указывать некоторый уникальный идентификатор вектора.
II. С помощью методов класса обеспечить:
1) вычисление модуля (длины, или нормы) вектора ||A||;
2) нормировку вектора (получение вектора единичной длины - A/||A||);
3) поиск максимального элемента вектора;
4) поиск минимального элемента вектора.
III. С помощью перегруженных операторов класса обеспечить операции сложения, вычитания и скалярного умножения векторов (A + B, A - B и (A, B)), а также умножения и деления вектора на скаляр (A*k, k*A и A/k). Выполнению операций сложения, вычитания и скалярного умножения векторов должна предшествовать проверка возможности их выполнения над данными объектами.
IV. С помощью статических методов обеспечить:
1) вычисление синуса угла между двумя векторами;
2) вычисление косинуса угла между двумя векторами;
3) вычисление величины угла в радианах между двумя векторами.
Для определения синуса и косинуса угла между векторами можно использовать соотношение (A, B) = ||A||x||B||*cos(a), для вычисления величины угла - функцию Atan2 (tg(a) = sin(a)/cos(a), поэтому a = Atan2(sin(a), cos(a))).
V. С помощью индексатора обеспечить доступ к элементам вектора по индексу (чтение/запись). С помощью свойства - доступ к количеству элементов (только чтение).
VI. Перегрузить метод ToString для представления вектора, заключенного в скобки (любой формы), в виде строки.
При невозможности выполнения над вектором тех или иных операций генерировать исключение (типа ArgumentException или других типов, в зависимости от операции).
Приложение 2. Класс «Матрица»
Составить описание класса для объектов прямоугольных матриц, задаваемых прямоугольным массивом вещественных чисел типа double. Компоненты матрицы должны быть инкапсулированы в классе.
I. Предусмотреть применение конструкторов:
а) по умолчанию (создающий пустую матрицу);
б) для инициализации квадратной матрицы заданного размера;
в) для инициализации прямоугольной матрицы заданных размеров;
г) для инициализации матрицы с заданными в виде прямоугольного двумерного массива компонентами.
д) для копирования одной матрицы в другую.
Организовать в конструкторах и деструкторе вывод на экран информационных сообщений, например «Конструктор матрицы ХХХ», «Деструктор матрицы ХХХ» и т.д. Вместо «ХХХ» указывать некоторый уникальный идентификатор матрицы.
II. С помощью методов класса обеспечить:
1. проверку возможности умножения двух матриц;
2. проверку возможности сложения двух матриц;
3. поиск максимального элемента матрицы;
4. поиск минимального элемента матрицы.
III. С помощью перегруженных операторов класса обеспечить операции сложения, вычитания и умножения матриц, а также умножения матрицы на скаляр. Выполнению операций сложения, вычитания и умножения матриц должна предшествовать проверка возможности их выполнения над данными объектами.
IV. С помощью индексатора обеспечить доступ к элементам матрицы по индексу строки и столбца (чтение/запись). С помощью свойств - доступ к количеству строк и столбцов (только чтение).
V. Перегрузить метод ToString для представления матрицы в построчной форме в виде строки. Использовать форматирование, чтобы элементы одного столбца матрицы располагались друг под другом.
При невозможности выполнения над матрицей тех или иных операций генерировать исключение (типа ArgumentException или других типов, в зависимости от операции).
Приложение 3. Класс «Полином»
Составить описание класса для объектов-полиномов, задаваемых одномерным массивом коэффициентов - вещественных чисел типа double. Коэффициенты полинома степени n (aQ, a1, a2, ..., an) должны быть инкапсулированы в классе. Полином всегда
содержит, как минимум, один коэффициент - aQ.
I. Предусмотреть применение конструкторов:
а) по умолчанию (создающий полином нулевой степени с единственным коэффициентом, равным 0);
б) для инициализации полинома заданной степени;
в) для инициализации полинома с заданными в виде одномерного массива коэффициентами.
г) для копирования одного полинома в другой.
Организовать в конструкторах и деструкторе вывод на экран информационных сообщений, например «Конструктор полинома ХХХ», «Деструктор полинома ХХХ» и т.д. Вместо «ХХХ» указывать некоторый уникальный идентификатор полинома.
II. Предусмотреть свойство типа bool, определяющее, будут ли автоматически при совершении любых операций с полиномом отбрасываться старшие члены с нулевыми коэффициентами. Отбрасывание коэффициентов реализовать в отдельном открытом (public) методе.
III. С помощью перегруженных операторов класса обеспечить операции сложения, вычитания, умножения, деления и остатка от деления полиномов. Деление полиномов выполняется по алгоритму Евклида.
IV. С помощью индексатора обеспечить доступ к коэффициентам полинома по индексу (чтение/запись). С помощью свойства - доступ к степени полинома (только чтение).
Лабораторная работа №2
Задание состоит из следующих этапов:
• Описать в классе «Матрица» события, сигнализирующие об изменении размеров или компонентов матрицы.
• Реализовать структуру «Рациональная дробь» (см. приложение 4). Создать универсальную версию класса «Матрица». Добиться того, чтобы элементами матрицы могли быть целые числа, числа с плавающей точкой или рациональные дроби.
• Добавить в проект класс атрибута (или несколько классов атрибутов). Функциональность классов атрибутов предлагается выбрать самостоятельно - это могут быть какие-либо данные о классе или его членах.
• Обеспечить документирование кода проекта. Все классы и члены классов должны быть снабжены специальными комментариями для генерации XML-файла документации. По данному XML-коду сформировать документацию в любом удобном для просмотра формате.
Год: 2019
Данный заказ (лабораторная работа) выполнялся нашим сайтом в 2019-м году, в рамках этого заказа была разработана программа в среде программирования Visual C# .NET 2017. Если у Вас похожее задание на программу, которую нужно написать на Visual C# .NET 2017, либо на другом языке программирования, пожалуйста заполните форму, приведённую ниже, после чего Ваше задание в первую очередь рассмотрит наш программист, выполнявший в 2019-м году этот заказ, если он откажется, то Ваше задание оценят другие наши программисты в течение 48-и часов, если оценка нужна срочно, просим Вас оставить пометку об этом - напишите в тексте задания фразу "СРОЧНЫЙ ЗАКАЗ".
Тел.:
+79374242235
Viber: +79374242235 Telegram: kursovikcom ВКонтакте: kursovikcom WhatsApp +79374242235 E-mail: info@kursovik.com Skype: kursovik.com |