Массивы

Структуры. Классы

Структура это объединенное в единое целое множество поименованных элементов в общем случае разных типов. Структуры обычно описываются в интерфейсной части модуля программы

Линейная динамическая структура представляет собой изменяемую по­следовательность элементов. Частными случаями таких структур являются:

стеки, в которых разрешено добавлять элементы только в конец и уда­лять только последние элементы;

очереди, в которых добавление элементов осуществляется в конец, а удаление - из начала;

деки, которые допускают добавление и удаление элементов и с нача­ла, и с конца.

В древовидной структуре, каждый элемент (вершина) ссылается на один или более элементов следующего уровня.

В сетевой структуре никаких ограничений на связи элементов не на­кладывается.

Линейные динамические структуры, такие как стеки, очереди и деки, при известном максимальном количестве элементов в них можно реализо­вать в виде динамических или статических одномерных массивов. В против ном случае, а также для представления остальных структур (древовидной и сетевой) используют списки.

Списком называют структуру, в которой помимо данных хранятся также адреса элементов. Элемент списка состоит из двух частей: информационной, содержащей данные, и адресной, где хранятся указатели на следующие эле­менты.

Класс — разновидность абстрактного типа данных в объектно-ориентированном программировании (ООП), характеризуемый способом своего построения. Другие абстрактные типы данных — метаклассы, интерфейсы, структуры, перечисления, — характеризуются какими-то своими, другими особенностями. Наряду с понятием «объекта» класс является ключевым понятием в ООП (хотя существуют и бесклассовые объектно-ориентированные языки, например, Self, Lua; подробнее смотрите Прототипное программирование). Суть отличия классов от других абстрактных типов данных состоит в том, что при задании типа данных класс определяет одновременно и интерфейс, и реализацию для всех своих экземпляров, а вызов метода-конструктора обязателен. Точный смысл этой фразы будет раскрыт ниже.

На практике объектно-ориентированное программирование сводится к созданию некоторого количества классов, включая интерфейс и реализацию, и последующему их использованию. Графическое представление некоторого количества классов и связей между ними называется диаграммой классов. Объектно-ориентированный подход за время своего развития накопил множество рекомендаций (паттернов) по созданию классов и иерархий классов.

 

Идея классов пришла из работ по базам знаний, имеющих отношение к исследованиям по искусственному интеллекту. Используемые человеком классификации в зоологии, ботанике, химии, деталях машин, несут в себе основную идею, что любую вещь всегда можно представить частным случаем некоторого более общего понятия. Конкретное яблоко — это в целом некоторое яблоко, вообще яблоко, а любое вообще яблоко — фрукт. Именно поэтому примеры классов в учебных пособиях по объектно-ориентированному программированию так часто упоминают яблоки и груши.

public class MyCustomClass { public int Number { get; set; } public int Multiply(int num) { return num * Number; } public MyCustomClass() { Number = 0; } }

 

Массив - это упорядоченная совокупность однотипных данных. Каждо­му элементу массива соответствует один или несколько индексов, определя­ющих положение элемента в массиве. Индексы образуют упорядоченные по­следовательности.

В зависимости от количества типов индексов различают: одномерные, двумерные, трехмерные и n-мерные массивы.

Значения элементов массива в программе можно определить тремя спо­собами. Во-первых, массив может быть инициализирован с использованием типизированных констант или просто присваиванием значений элементам. Во-вторых, элементы массива могут быть введены с клавиатуры или из фай­ла. В-третьих, элементы массива могут быть определены в про­грамме:

а) с использованием датчика случайных чисел;

б) заданным образом, в том числе, и скопированы из другого массива.

Операции над массивами. Над массивом в целом определена единст­венная операция - операция присваивания.

Присваивание массивов заключается в копировании элементов одного массива в другой. Эту операцию можно выполнять только над массивами од­ного типа.

Массивы считаются совпадающими по типу, если они объявлены через запятую в одной строке.

Ввод-вывод массивов выполняют поэлементно, используя циклы с заданным числом повторений.

При выполнении операций ввода-вывода матриц и массивов большой размерности целесообразно вводить и выводить значения построчно.

Символьные массивы. Символьными называют массивы, элементами которых являются символы.

Переформирование массива. Переформирование массива предполага­ет изменение порядка элементов посредством их перемещения, удаления или вставки. При переформировании массива его размер может изменяться, а мо­жет оставаться без изменений.

Одновременная обработка нескольких массивов или подмассивов. К этому классу относятся задачи слияния массивов, переписи элементов одно­го массива, отвечающих определенному условию, в другой, формирования нового массива из элементов исходного, в соответствии с заданным законом преобразования и т. п.

Поиск элементов массива по заданным критериям. Примерами по­добного рода задач могут служить поиск первого отрицательного, первого положительного и любого первого элемента, отвечающего некоторому усло­вию, а также поиск единственного или определенного количества элементов, равных некоторому конкретному значению

Пример:int[] array = new int[] { 1, 3, 5, 7, 9 };