Тольяттинский государственный университет (Росдистант), ТГУ. Практикум по программированию на C# 1 (9548). Практические задания 1-6. Решение.
Для Росдистант имеются и другие готовые работы. Пишем уникальные работы под заказ. Помогаем с прохождением онлайн-тестов. Пишите, пожалуйста, в личку (Евгений).
Практическое задание 1
Тема 1. Введение в .NET Framework
Цель работы:
Сформировать навыки создания на языке программирования C# в среде Visual Studio приложений .NET Framework, познакомиться с типами и шаблонами проектов Visual Studio, научиться документировать приложение и выполнять отладку кода исходного документа.
Задание
Разработать консольное приложение для чтения небольшого набора входных данных, форматирования этих данных удобным для чтения образом и отображения отформатированных результатов. Данные представляют собой текст, содержащий пары чисел, представляющие х и у – координаты местоположения объекта. Каждая строка текста содержит один набор координат. Следующий пример демонстрирует типичный набор данных.
23.8976,12.3218
25.76,11.9463
24.8293,12.2
В отформатированном виде данные могут выглядеть следующим образом:
X: 23,8976 Y: 12,3218
X: 25,76 Y: 11,9463
X: 24,8293 Y: 12,2
Перенаправить ввод для запуска приложения с помощью текстового файла, содержащего данные, которые нужно отформатировать.
Реализовать простое консольное или WPF-приложение, обеспечивающее описанные выше функциональные возможности. Предусмотреть возможность введения данных пользователем путем предоставления поля.
Перенаправить ввод для запуска приложения с помощью данных из файла. Создать дополнительные тестовые данные и использовать их в качестве входных данных для тестирования приложения.
Использовать Visual Studio отладчик для пошагового выполнения кода и изучения работы приложения.
Практическое задание 2
Тема 2. Основные программные конструкции C#
Цель работы:
Сформировать практические навыки применения операторов выбора и цикла, основываясь на функциональности, которую необходимо реализовать, а также создавать, инициализировать массивы и работать с ними, используя общие свойства и методы, которые они предоставляют.
Задание 1
• Разработать тип, позволяющий вычислять корень n-ой степени из числа методом Ньютона с заданной точностью.
• Предусмотреть в нем возможность сравнения полученного результата со значением, рассчитываемым с помощью метода Math.Pow библиотеки классов .NET Framework.
• Обязательно должны быть «приглашения для ввода» и отображение результата – так, чтобы пользователю было понятно, что отображается.
• В качестве UI-интерфейса использовать консольное приложение с интерфейсом командной строки, WinForms или WPF-приложение.
Задание 2
• Разработать тип, позволяющий конвертировать неотрицательное десятичное значение целого числа в строку, содержащую двоичное представление этого значения.
Нужно реализовать два варианта:
o использовать стандартные классы и методы для конвертирования;
o реализовать свой алгоритм конвертирования.
• Обязательно должны быть «приглашения для ввода» и отображение результата – так, чтобы пользователю было понятно, что отображается.
• В качестве UI-интерфейса использовать консольное приложение с интерфейсом командной строки, WinForms или WPF-приложение.
Практическое задание 3
Тема 3. Определение и вызов методов
Цель работы:
Сформировать навыки создавать и вызывать методы, перегруженные методы, а также методы, принимающие переменное число параметров, и использовать необязательные параметры, именованные аргументы и выходные параметры.
Задание
• Разработать тип, реализующий алгоритм Евклида для вычисления НОД двух целых чисел.
• Добавить к разработанному типу дополнительную функциональность в виде перегруженных методов вычисления НОД для трех, четырех или пяти целых чисел.
• Добавить к разработанному типу метод, реализующий алгоритм Стейна (бинарный алгоритм Евклида) для расчета НОД двух целых чисел.
o Сделать «обертку для метода», которая принимает выходной параметр, содержащий значение времени, необходимое для выполнения расчетов.
• Сделать «метод-обёртку» для метода, реализующего алгоритм Евклида вычисления НОД двух параметров, добавив аналогичную функциональность.
• Создать unit-тесты для тестирования разработанных методов.
• В качестве UI-интерфейса использовать консольное приложение с интерфейсом командной строки, WinForms или WPF-приложение.
Практическое задание 4
Тема 4. Создание новых типов в С#
Цель работы:
Сформировать навыки создавать и использовать перечисления, структуры и классы.
Задание
• Разработать класс «треугольник» для работы с треугольником, заданным на плоскости сторонами a, b, c.
• Предусмотреть возможность проверки существования треугольника, реализовать функции подсчета его площади и периметра.
• В качестве UI-интерфейса использовать консольное приложение с интерфейсом командной строки, WinForms или WPF-приложение.
• Создать unit-тесты для тестирования методов разработанного типа.
Практическое задание 5
Тема 5. Инкапсуляция данных и методов
Цель работы:
Сформировать навыки управлять видимостью членов типа, использовать свойства и индексаторы и создавать статические поля и методы, а также методы расширения.
Задание «Вектор»
• Разработать класс «вектор» для работы с трехмерными векторами.
• Перегрузить для класса операции, допустимые для работы с трехмерными векторами.
• Создать unit-тесты для тестирования разработанных методов.
• В качестве UI-интерфейса использовать консольное приложение с интерфейсом командной строки, WinForms или WPF-приложение.
Задание «Многочлен»
• Разработать класс «многочлен» для работы с многочленами от одной переменной.
• Перегрузить для класса операции, допустимые для работы с многочленами.
• Создать unit-тесты для тестирования разработанных методов.
• В качестве UI-интерфейса использовать консольное приложение с интерфейсом командной строки, WinForms или WPF-приложение.
Практическое задание 6
Тема 6. Наследование. Интерфейсы и абстрактные классы
Цель работы:
Сформировать понимание концепции наследования и навыки определять и реализовывать интерфейсы, абстрактные классы и абстрактные методы.
Задание 1
• Определить интерфейс IConvertible, указывающий, что реализующий его класс может конвертировать блок кода в С# или VB-код. В интерфейсе определить два метода ConvertToCSharp и ConvertToVB, каждый из которых принимает и возвращает строку.
• Создать класс ProgramHelper, реализующий интерфейс IConvertible. При написании методов вместо преобразования строки использовать простые строковые сообщения для имитации преобразования.
• Создать новый интерфейс ICodeChecker, определив в нем метод CheckCodeSyntax, принимающий две строки: строка для проверки и используемый язык. Метод должен возвращать тип bool. Добавить в класс ProgramHelper функциональность нового интерфейса IСodeChecker.
• Создать класс ProgramConverter, реализующий интерфейс IConvertible. Изменить класс ProgramHelper, наследуя его от класса ProgramConverter и интерфейса ICodeChecker.
• Протестировать класс, создав массив объектов ProgramConverter, одни из которых имеют тип ProgramConverter, а другие – тип ProgramHelper. Для каждого элемента массива проверить, что он реализует интерфейс IСodeChecker (или нет). Если реализует интерфейс IСodeChecker, то вызвать метод проверки кода и соответствующий метод преобразования. Если не реализует интерфейс IСodeChecker, то вызвать два метода преобразования кода.
• Добавьте в проект диаграмму классов с использованием средств Visual Studio. Задайте диаграмме понятное имя.
Задание 2
Написать программу, которая декорирует класс Stream и показывает, какая часть файла была прочитана, используя полосу прокрутки.
При выполнении нужно применить шаблон проектирования Декоратор.
Задание 3
Напишите программу, которая декорирует класс Stream и спрашивает пароль, прежде чем позволяет продолжить чтение.
При выполнении нужно применить шаблон проектирования Декоратор.