Контрольное задание. Разработка консольного приложения для вычисления корней квадратного уравнения
Требуется разработать приложение, которое по заданным значениям коэффициентов a,b и c квадратного уравнения (значения вводятся с клавиатуры пользователем) вычисляет и отображает на экране корни уравнения.
Для данного приложения потребуются следующие методы:
- string Console.ReadLine() - чтение строки символов из входного потока.
- double Convert.ToDouble(string) - преобразование строки символов в число с плавающей запятой двойной точности.
- double Math.Sqrt(double) - извлечение квадратного корня числа.
Массивы
Язык C# предоставляет средства для работы с одномерными массивами, массивами массивов и многомерными массивами.
Ниже представлены способы объявления ссылок на массивы различной размерности и конфигурации.
// Объявление массива размерности 3 из элементов типа int.
// Фактически это массив составляющих, представляющих собой массивы
// размерности 2 одномерных массивов элементов типа int.
// Размеры всех составляющих массивов одного уровня равны
// между собой ("прямоугольный" массив).
int[,,] ar1;
// Объявление одномерного массива из
// одномерных массивов элементов, каждый из которых является
// одномерным массивом элементов типа int.
int[][][] ar2;
// Объявление одномерного массива составляющих, каждый из которых является
// двумерным массивом массивов элементов типа int.
// При этом у всех составляющих могут быть разные размеры
int[][,] ar3;
// Объявление двумерного массива составляющих, каждая из которых является
// одномерным массивом элементов типа int.
// При этом у всех составляющих могут быть разные размеры.
int[,][] ar4;
Рассмотренные примеры демонстрируют определение двух различных категории массивов:
- прямоугольные массивы,
- ломаные (jagged) массивы.
Объявление массива может быть совмещено с инициализацией. При объявлении с отложенной инициализацией сам массив не формируется, а создается только ссылка на массив, имеющая неопределенное значение Null. Поэтому пока массив не будет реально создан и его элементы инициализированы, использовать его нельзя.
Возможны два варианта объявления массива совмещенного с инициализацией.
В первом случае инициализация является явной и задается списком констант, например:
int[] odd = {1, 3, 5, 7, 9};
Во втором случае создание и инициализация массива реализуется вместе с вызовом конструктора массива. Например:
int[] even = new int[5];
Все массивы являются потомками класса System.Array, который в свою очередь наследует ряд интерфейсов: ICloneable, IList, ICollection, IEnumerable, а, следовательно, реализует все их методы и свойства. Кроме того, класс Array имеет большое число собственных методов и свойств.
Благодаря наследованию от класса System.Array, для массивов определены такие встроенные методы копирования, поиска, обращения, сортировки. Массивы можно рассматривать также как как коллекции и использовать цикл foreach для перебора его элементов.
Ниже приведены основные свойства и методы класса System.Array:
Свойство | Описание | |
IsFixedSize | Возвращает true, если массив является статическим | |
IsReadOnly | Для всех массивов возвращает значение false | |
IsSynchronized | Возвращает true или false, в зависимости от того, установлена ли синхронизация доступа для массива | |
Length | Число элементов в массиве | |
Rank | Размерность массива | |
Метод | Описание | |
BinarySearch | Бинарный поиск элементов | |
Clear | Выполняет инициализацию элементов. Числовые элементы становятся нулевыми, а строковые принимают значение Null | |
Clone | Клонирование массива | |
Copy | Копирование части или всего массива в другой массив | |
CopyTo | Копируются все элементы одномерного массива в другой одномерный массив, начиная с заданного индекса | |
CreateInstance | Создание экземпляра массива | |
GetEnumerator | Возварщает интерфейс IEnumerator. Необходим для использования в цикле foreach | |
GetLength | Возвращает число элементов массива по указанному измерению | |
GetLowerBound, GetUpperBound | Возвращает нижнюю и верхнюю границу по указанному измерению. Для массивов нижняя граница всегда равна нулю. | |
GetValue SetValue | Возвращает или устанавливает значение элемента массива с указанными индексами. | |
IndexOf | Индекс первого вхождения образца в массив | |
LastIndexOf | Индекс последнего вхождения образца в массив | |
Reverse | Сортировка одномерного массива в обратном порядке | |
Sort | Сортировка массива | |
Строки
В языке C# определен класс сhar[], и его можно использовать для представления строк постоянной длины. Однако массив сhar[] - это обычный массив, поэтому его нельзя инициализировать строкой символов. В C# не определено преобразование из класса сhar[] в класс String. У String есть динамический метод ToCharArray, задающий подобное преобразование в сhar[].
Объекты класса String объявляются с явной или отложенной инициализацией, с явным или неявным вызовом конструктора класса. Чаще всего, при объявлении строковой переменной конструктор явно не вызывается, а инициализация задается строковой константой. У класса String достаточно много конструкторов, которые позволяют сконструировать строку из:
- символа, повторяющегося указанное число раз;
- массива символов char[];
- части массива символов.
Методы класса String позволяют выполнять вставку, удаление, замену, поиск вхождения подстроки в строку. Класс String наследует методы класса Object, а также методы четырех интерфейсов: IComparable, ICloneable, IConvertible, IEnumerable.
Некоторые из членов класса приведены в таблице:
Метод | Описание |
Length | Это свойство возвращает длину указанной строки |
Insert | Вставляет подстроку в заданную позицию |
Remove | Удаляет подстроку в заданной позиции |
Replace | Заменяет подстроку в заданной позиции на новую подстроку |
Substring | Выделяет подстроку в заданной позиции |
IndexOf, IndexOfAny, LastIndexOf, LastIndexOfAny | Определяются индексы первого и последнего вхождения заданной подстроки или любого символа из заданного набора |
StartsWith, EndsWith | Возвращается true или false, в зависимости от того, начинается или заканчивается строка заданной подстрокой |
PadLeft, PadRight | Выполняет заполнение нужным числом пробелов в начале и в конце строки |
Trim, TrimStart, TrimEnd | Удаляются пробелы в начале и в конце строки, либо только с одного конца |
ToCharArray | Преобразование строки в массив символов |
Класс String не разрешает изменять существующие объекты. Для этой цели имеется другой класс - класс StringBuilder, который позволяет исправить данный недостаток. Этот класс принадлежит к изменяемым классам и его можно найти в пространстве имен System.Text.
Объекты этого класса объявляются с явным вызовом конструктора класса. Конструктор класса перегружен, и наряду с конструктором без параметров, создающим пустую строку, имеется набор конструкторов, которым можно передать две группы параметров:
- Первая группа позволяет задать строку или подстроку, значением которой будет инициализироваться создаваемый объект класса StringBuilder.
- Вторая группа параметров позволяет задать размер объекта, т.е объем памяти, отводимой для экземпляру класса StringBuilder.
Примеры конструкторов:
- public StringBuilder(string str, int size). Параметр str задает строку для инициализации, size - размер объекта;
- public StringBuilder(int cursize, int maxsize). Параметры cursize и maxsize задают начальный и максимальный размер объекта;
- public StringBuilder(string str, int start, int len, int size). Параметры str, start, len задают строку инициализации, size - размер объекта.
Над строками этого класса определены (также как идля строк класса String) операции:
- присваивание (=);
- две операции проверки эквивалентности (==) и (!=);
- взятие индекса ([]).
Операция конкатенации (+) не определена над строками класса StringBuilder, ее роль играет метод Append, добавляющий новую строку в конец существующей.
Интерфейсы
Интерфейс представляет собой полностью абстрактный класс, все методы которого абстрактны. Однако методы интерфейса объявляются без указания модификатора доступа, и класс, наследующий интерфейс, обязан полностью реализовать все методы интерфейса. В этом - отличие от класса, наследующего абстрактный класс, где потомок может реализовать лишь некоторые методы родительского абстрактного класса, оставаясь абстрактным классом.
Интерфейс позволяет описывать некоторые желательные свойства, которыми могут обладать объекты разных классов.
Среди интерфейсов, встроенных в библиотеку базовых классов .NET, можно особо выделить такие как:
- IEnumerable (для работы с наборами объектов, в т.ч. с использованием оператора foreach).
- IClonable (копирование объектов).
- IComparable (для сравнения и сортировки объектов).
Пространство имен System.Collections, предназначенное для работы с наборами объектов, поддерживает интерфейсы:
- ICollection (определяет общие характеристики класса набора элементов).
- IComparer, IDictionary (позволяет представлять содержимое объекта в виде пар имя-значение).
- IDictionaryEnumerator (нумерация содержимого объекта, поддерживающего IDictionary).
- IEnumerable, IEnumerator.
- IHashCodeProvider (возвращает хэш-код с помощью выбранного алгоритма хэширования).
- IList (обеспечивает методы добавления, удаления и индексирования элементов в списке объектов).
Дата добавления: 2015-12-29; просмотров: 1397;