- •Лабораторные работы по курсу «Современные технологии и инструментарий программирования»
- •1.Программирование двусвязного списка на c#
- •1.1.Задание
- •1.2.Выбор каркаса приложения
- •1.3.Описание вариантов заданий
- •2.Приложение wForms с DataGridView на c#
- •2.1.Задание
- •2.2.Описание вариантов заданий
- •2.3.Сценарий разработки приложения
- •2.4.Как (бесплатно) получить путь к приложению
- •If(System.Io.File.Exists(Path)) /*есть*/; else /*нет*/;
- •3.Доступ к серверу Excel на c#
- •Сценарий выполнения работы
- •4.Класс матриц c#
- •4.1.Задание
- •5.Ассоциативные массивы на c#
- •5.1.Задание вкупе с ценными методическими указаниями
- •If(MyArr.Add("Охорона студента від викладача", "Тугодумко Петро", Mark)) /* Слава Україні!*/; else /* Вибачте, маячня!*/;
- •If(MyArr.Add("Хвілосохвія", "Розумниця Настя", new int [] {2,3,2})) /* Сало понад усе!*/; else /* Пробачте, нісенітниця!*/;
- •5.2.Варианты заданий для ритейла
- •6.Приложение «Тараканьи бега» (wpf с#)
- •6.1.Задание
- •6.2.Рисование простейших фигур на холсте
- •10, // Задержка перед вызовом функции обр. Вызова
- •200 // Интервал вызова функции обр. Вызова
- •7.Разработка простейшего приложения Windows Forms на c#
- •7.1.Задание
- •7.2.Бесценные методические предписания
- •Литература
- •7. Проект New_Syntax
- •8. Руководство_по_c#.Doc
4.Класс матриц c#
- Почему Яндекс всегда так долго ищет?
- Он гуглит...
Цель работы – освоить разработку класса с перегруженными операциями (4час.).
4.1.Задание
Ознакомьтесь с простеньким примером класса матриц и его использованием.
|
|
|
Каждому понятно, что реализация приведенного класса страдает многими недостатками, например, такими:
не предусмотрен ни один способ инициализации элементов матрицы (поле класса mtr). Если его разработать, то можно будет использовать перегруженную операцию сложения матриц (М3=М1+М2);
надо добавить более строгий контроль размеров матриц. Например, если реализуется сложение матриц, то обе матрицы должны быть просто одинаковыми и не обязательно квадратными;
при обнаружении ошибок класс должен выбрасывать исключительную ситуацию (оператор throw);
в тестирующей программе предусмотреть перехват исключительных ситуаций;
и т.д. и т.п.
Естественно, что ваша программа будет лишена перечисленных и всяких других мыслимых и немыслимых ошибок и недостатков.
Добавьте в класс перегруженную операцию транспонирования матрицы. Транспонировать можно любую прямоугольную матрицу, не только квадратную.
Также добавьте в класс операцию умножения матриц. Вспомните, что операция умножения может быть реализована, если число столбцов первой матрицы равно числу строк второй.
Тестирующая программа должна обладать следующими фантастическими свойствами:
запрашивать у пользователя размеры каждой из исходных матриц (число строк и столбцов);
генерировать, с помощью класса Random, значения элементов матриц как псевдослучайных чисел;
запрашивать у пользователя и выполнять над матрицами операции, предусмотренные в вашем варианте;
выводить на монитор результирующую матрицу и сообщения об ошибках.
Выберите по своему усмотрению каркас программы, например, консольное приложение, приложение WForms с отображением матриц в DataGridView и т.д.
5.Ассоциативные массивы на c#
Разговаривают студенты:
- Ты уже сколько экзаменов завалил?
- Вместе с завтрашним - пять.
Цель работы – освоить разработку класса ассоциативный массив с использованием индексаторов (4час.).
5.1.Задание вкупе с ценными методическими указаниями
Для пояснения идеи ассоциативного массива опишем следующую практическую задачу из счастливой и беззаботной студенческой жизни. Имеются дисциплины, студенты и отметки студентов по дисциплинам. Названия дисциплин и фамилии студентов естественно имеют строковый тип, а отметки – целочисленный массив произвольного размера. Необходимо разработать класс, который бы позволил накапливать перечисленные данные и возвращать их по запросу, например, таким удобным образом:
int n;
//...
int [] Mark = new int [n];
// ...
// MyArr - экземпляр вашего гениального класса
If(MyArr.Add("Охорона студента від викладача", "Тугодумко Петро", Mark)) /* Слава Україні!*/; else /* Вибачте, маячня!*/;
If(MyArr.Add("Хвілосохвія", "Розумниця Настя", new int [] {2,3,2})) /* Сало понад усе!*/; else /* Пробачте, нісенітниця!*/;
Mark = MyArr["Сміхотехніка", "Розумниця Настя"];
MyArr["Гідра-дінаміка", "Голодупенко Іван"]=Mark;
// and so on ...
Обобщая изложенное, можно сказать, что в данном примере мы имеем такой класс, объекты которого можно интерпретировать как двумерные массивы с индексами строкового типа.
В решении подобного рода задачи вам могут помочь так называемые индексаторы [8, раздел 5.13] и никак не поможет обобщенный класс Dictionary или тот же пресловутый List, потому что вы его использовать не будете – и точка.
Ваш класс должен обладать также следующими магическими пропетизмами:
для своих внутренних структур данных, например, массивов, класс не должен резервировать память под какое-то заранее определенное количество элементов;
расширение «внутренних» массивов класса должна выполняться автоматически при добавлении новых элементов с помощью функции Add;
для обработки ошибок он широко использует механизм исключительных ситуаций;
класс предоставляет удобные в использовании методы для выборок: извлечь ФИО всех студентов (в форме массива строк), изучающих заданную дисциплину и массив дисциплин, изучаемых данным студентом;
для удобства тестирования класса и сдачи л.р. преподавателю настоятельно рекомендуется задать некоторое достаточное количество входных данных и операторов, которые позволят убедиться в корректности реализации класса. Эти данные можно задать в форме инициализированных массивов или прочитать из текстового файла.
Если вы все это сделаете, то будет вам счастье в этой жизни и, возможно, хорошая отметка за л.р. Если удастся класс за какие-нибудь деньги продать «на сторону» – поделитесь выручкой с кафедрой.
