Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмы преобразования одномерных массивов Курсовая Горлов ФИ2.docx
Скачиваний:
14
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
  1. Структуры данных и алгоритмы обработки

Типами данных называются именованные множества значений, задаваемые различными способами. Эти типы данных делятся на несколько групп: простые, структурированные, процедурный тип и указатели. К простым относятся числовые, логический, строковый типы. Массивы, классы, записи, файлы и множества – это структурированные типы данных.

Рассмотрим такой структурированный тип данных как массив. При обращении к множеству однородных данных нецелесообразно объявлять каждую переменную отдельно. Гораздо удобнее обратиться к массиву, вызвав который, мы обратимся ко всем однородным переменным. Массив – это совокупность данных (элементов) одного типа с общим для всех элементов именем.

Существуют несколько видов массивов: одномерный, двумерный и многомерный (рис.1).

Рисунок 1. Упрощенная схема представления массивов

Одномерный массив – это массив, элементы которого нумеруются одним индексом (линейный массив). Двумерный массив – это массив, элементы которого нумеруются двумя индексами: строкой и столбцом (табличный массив). Каждый элемент массива пронумерован. Можно обратиться целиком к массиву, а можно обратиться к нужной переменной, указав её индекс.

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

Описание типа линейного массива выглядит следующим образом:

type < имя типа > = array [<диапазон индексов>] of <тип элементов>

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

Одномерный массив можно задать (объявить) несколькими способами:

1. C помощью служебного слова type описывается тип массива, а затем с помощью var вводится переменная этого типа:

type <тип массива> = array [тип индекса] of <тип компонент>

var <переменная>: <тип массива>

2. С помощью слова var сразу описывается переменная типа массив:

var <переменная>: array [тип индекса] of <тип компонент>

Примеры описания массивов:

var

A, BB : array [1..40] of real;

C : array ['A'..'Z'] of integer;

D : array [-20..20] of word;

E : array [1..40] of real;

Теперь переменные A, BB и E представляют собой массивы из сорока вещественных чисел; массив C имеет индексы символьного типа и целочисленные элементы; массив D может хранить в себе 41 число типа word.

Основное отличие элемента массива от простой переменной состоит в том, что для элемента массива в квадратных скобках может стоять не только соответствующее значение индекса, но и выражение, приводящее к значению индексного типа. То есть реализуется косвенная адресация: BB[15] - прямая адресация;

BB[m] - косвенная адресация через переменную m, значение которой будет использовано в качестве индекса элемента массива BB.

Чтобы определить позицию элемента в двумерном массиве, необходимо задать два индекса. Каждый двумерный массив – матрица (прямоугольная таблица, набор векторов). Исходя из этого, удобно описывать двумерные массивы путем указания границ изменения индексов (номеров) строк и столбцов.

Например, таблица символов a × b, где a – число строк и b – число столбцов, может быть описана:

var tab : array [1..a, 1..b] of char;

Общая форма записи:

var <имя> : array [тип индекса строки, тип индекса столбца]

of <тип компонент>;

Но двумерный массив можно интерпретировать как вектор-столбец, каждый элемент которого является одномерным массивом (вектор-строка). Такой подход к определению двумерного массива влечет его описание с помощью двух строк, где первая содержит описание строки, а вторая – описание столбца:

type

line = array [1..b] of char;

stolb = array [1..a] of line;

var tab : stolb.

Здесь tab [i] – переменная типа line, а tab [i][j] – переменная типа char.

Описание двумерного массива:

Способ 1. В разделе описания переменных.

Имя Массива : array [Верх. Гр.1..Ниж. Гр.1, Верх. Гр.2.. Ниж. Гр.2] of тип элементов;

Способ 2. В разделе описания типов.

massive: array [Верх. Гр.1.. Ниж. Гр.1, Верх. Гр.2.. Ниж. Гр.2] of тип элементов;

Способ 3. В разделе описания констант.

const

massive: array [1..3,1..3] of real = ((1.2,2.4,0.4),(0.045,-0.47,0.003),(1.24,1,-7.4));

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