Динамические строки
Тип динамической строки определен как класс – StringBuilder, пространство имен System.Text.
Создание динамической строки
StringBuilder ИмяСтроки;
ИмяСтроки=new StringBuilder();
Отличия от обычной строки:
1. Элементы динамической строки можно изменять напрямую, путем присваивания.
2. В операциях ==, !=, = участвуют не элементы строки, а адреса (аналогично массиву).
Поле объекта: Length
Методы:
ИмяСтроки.Append (символ) //добавление символа в конец строки
ИмяСтроки.Append (символ, кол-во) //добавление заданного количества символов в конец строки
ИмяСтроки.Remove (номер позиции, кол-во символов) //удаление заданного кол-ва символов с заданной позиции
По сравнению со строками динамические строки имеют меньший набор методов, поэтому при решении задач используется комбинация строк и динамических строк, что порождает проблему их преобразования.
Схема выполнения преобразований:
string s => char[] a
s.ToCharArray;
char[] a => string s
s=new_string(a);
string s => StringBuilder b
b=new_StringBuilder(s);
StringBuilder b => string s
s=b.ToString();
Двумерные массивы
Предназначены для хранения данных, организованных в виде прямоугольной таблицы (матрицы). Таблица имеет определенное количество строк и столбцов, которые нумеруются, начиная с нуля.
Обработка массива производится поэлементно. Для доступа к элементу матрицы необходимо указать номер строки и столбца, на пересечении которых находится этот элемент.
Объявление двумерного массива:
Тип элементов [,] ИмяМассива;
ИмяМассива=new Тип элементов [кол-во строк, кол-во столбцов];
При выделении памяти можно выполнять инициализацию массива, указывая значения, относящиеся к каждой строке. Размерность массива можно не указывать, она будет определена по количеству инициализирующих значений.
int[,] a, b; a b
a=new int[3,2];
b=new int[,] {{1,2}, {3,4}, {5,6}};
Свойство Length применительно к двумерному массиву соответствует общему количеству элементов: b.Length => 6
Пример:
Сформировать и выдать на экран целочисленную единичную матрицу размером m×n.
int [,] a;
int i,j; //номера строк и столбцов
string s; //строка, формирующая символьное значение строки матрицы
int n=5;
a=new int [n,n];
for (i=0; i<n; i++)
a [i,i]=1;
for (i=0; i<n; i++)
{ s=””;
for (j=0; j<n; j++)
s=s + a[i,j] + “_”;
Console.WriteLine (s);
Массив массивов
Для двумерных массивов невозможно выделить в качестве отдельного семантического понятия строку. Следовательно, нет возможности применять стандартные методы обработки массивов применительно к строке.
Массив массивов позволяет рассматривать строку матрицы как одномерный массив, следовательно, имеется возможность применять к отдельной строке методы обработки одномерных массивов.
Кроме того, имеется возможность назначить каждой строке таблицы индивидуальную длину, следовательно имеется возможность создавать таблицы с разной длиной строки.
Массив
Строка
Элементы
Объявление массива массивов
Тип элементов [][] ИмяМассива;
//память под ссылки
ИмяМассива=new_ Тип элементов [кол-во строк][];
//память под каждую строку
ИмяМассива[№строки]=new_Тип[кол-во элементов в строке]
100
int[][] a;
a=new int[2][];
a[0]=new int[3];
a[1]=new int[2]; 200
//инициализация
a[0]=new int[] {1, 2, 3};
a[1]=new int[] {5,6};
Свойство Length определено как для всего массива, так и для каждой строки отдельно:
a.Length => 2 (2 строки)
a[0].Length => 3 (3 элемента в строке)
Для каждой строки можно использовать методы обработки одномерных массивов. При поэлементной обработке массива для доступа к элементу необходимо указать номер строки и номер элемента внутри строки. Каждый номер указывается в своей паре скобок:
a[0][1]=88;
МЕТОДЫ
Определение метода
Метод определяет некоторую процедуру обработки данных. Выполнение объектно-ориентированной программы можно рассматривать как взаимодействие объектов путем передачи сообщений. Сообщение равносильно вызову метода. Т.е. выполнение программы можно рассматривать как взаимодействие методов с точки зрения двух аспектов:
- по управлению (вызов/возврат)
- по обмену данных
Определение метода может быть выполнено только в составе класса.
Определение метода должно содержать:
1. Имя метода
2. Доступ к данному методу со стороны других
3. Принадлежность методу конкретному объекту или классу
4. Параметры, которые принимаются методом для обработки и тип возвращаемого результата
5. Собственно процедуру обработки параметров
<модификаторы>_ТипВозвращаемогоОбъекта Имя (параметры)
{
<локальные переменные> + процедура
}
Дата добавления: 2019-02-08; просмотров: 576;