Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Опорный конспект по программированию (наиболее....doc
Скачиваний:
28
Добавлен:
27.10.2018
Размер:
2.51 Mб
Скачать
      1. Структурированные данные

Массив как упорядоченная совокупность однотипных данных

Переменные, применяемые в алгоритмах и программах, могут образовывать упорядоченные структуры. Широкое применение находит упорядочение переменных в виде массивов.

Массив это упорядоченное множество однотипных переменных (элементов массива), объединенных общим именем и отличающихся номерами (индексами). Массивы сходны с такими понятиями в математике, как векторы и матрицы.

Если у простых переменных имя относится только к одной ячейке, то у массивов одно имя обозначает множество ячеек памяти, отличающихся только номерами (индексами). Значения индексов указываются в скобках справа от имени массива и однозначно определяют положение переменной в массиве.

Пример:

а(1:5) – массив (вектор) из пяти элементов: а(1), а(2), а(3), a(4), а(5);

b(1:2, 1:3) – матрица из шести элементов: b(1, 1) b(l,2), b(l,3), b(2,l), b(2,2), b(2,3).

Каждый массив характеризуется:

  • размерностью (числом измерений),

  • границами индексов по каждому измерению,

  • длиной.

Размерность массива – это число индексов в списке индексов. На практике используются одно-, двух- и трехмерные массивы, графическая интерпретация которых показана на рис. 3.3.

Для описания массива необходимо в предписании «Список данных...» указать имя и границы изменения индексов массива. Предписание «Список данных» может включать в себя константы, переменные и массивы. В нем указывается, сколько ячеек памяти следует выделить в машине, чтобы записать все необходимые данные.

Пример:

...Список данных:

Константы: Pi=3.14159;

Q=1.5678;

Переменные: a, b – целый;

х – вещественный;

с – символьный;

Массивы: у (1:2, 1:3) – вещественный;...

Рис. 3.3 Массивы: а – одномерный; б – двухмерный; в трехмерный массив

В разделах «Переменные» и «Массивы» желательно указать тип используемых переменных и массивов.

Описание массива в наиболее популярных языках программирования представлено в таблице 3.6.

Таблица 3.6 Описание массива

Массивы

Описания массива

Бейсик

Паскаль

Си++

Синтаксис

DIM имя (число элементов) AS тип

Аrrау [нижняя_граница .. верхняя_граница] of тип;

тип имя [число-элементов];

Нижняя граница

1

Указывается явно

0

Пример:

DIM IntArray(1000) AS INTEGER

array[1..1000] of integer

int IntArray[1000]

Доступ к элементу массива

IntArray(12)

IntArray[i+1]

Выборка элементов массивов

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

Пример.

Дано: два двухмерных массива х(1:2, 1:2) и у(1:2, 1:2):

;

Вычислить:

Решение: После выборки указанных элементов и выполнения операции присваивания получим: ,

Следует различать запись элемента массива х(1) и имя переменной х1.

Некоторые языки высокого уровня дают возможность обрабатывать массивы целиком, указывая только его имя. При одинаковой размерности, типе и длине массивов можно записать с:=a+b; с:=а•b; с:=а-b, с:=5 что означает соответственно суммирование, умножение и вычитание элементов массивов а и b (с одинаковыми индексами) и запись результатов в массив с, присвоение всем элементам массива с значения 5.

Итак, элементарными для массивов являются предписания:

  • ввод и вывод всего массива,

  • присваивание всему массиву каких-либо значений и т.п.

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

Использование циклических операций для обработки массивов

Применительно к массивам операторы цикла позволяют:

  • записывать значения в массивы,

  • выбирать значения из массивов,

  • менять элементы массивов местами и т.д.

Порядок использования циклических операторов для обработки массивов рассмотрим без потери общности на примере.

Пример. Составить фрагмент алгоритма, в котором четным элементам массива х(1:100) будет присвоено значение 1, а остальным элементам – нули.

...

Список данных:

k – целый;

х(1:100) – вещественный;

х: =0; //обнулить массив

Цикл по k от 2 до 100 шаг 2;

x(k): = 1;

Конец-цикла;

Тип данных «структура»

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

Пример:

СТУДЕНТ={имя, пол, год рождения, группа},

ЭКЗАМЕН={предмет, группа, студент, оценка},

Сложные типы данных составляются из базовых типов и определенных ранее сложных типов. Результат - структуры данных произвольной сложности, объединенные одним именем:

  • списки,

  • деревья.

Описание структуры представлено в таблице 3.7.

Таблица 3.7 Описание структуры

Структуры

Описания структуры

Бейсик

Паскаль

Си++

Синтаксис

TYPE имя-структуры

поле AS тип

. . .

END TYPE

Type имя=record

поле:тип;

. . .

end;

struct имя

{

тип поле;

. . .

};

Пример:

СТУДЕНТ={имя, пол, год рождения}

TYPE Student

Name AS STRING

Sex AS INTEGER

BirthYear AS INTEGER

END TYPE

Type Student=record

Name: string;

Sex: boolean;

BirthYear: integer;

end;

struct Student

{

char Name[50];

bool Sex;

int BirthYear;

}

Доступ к содержимому структуры

Student.BirthYear = 1980;

Новые типы данных используются при определении нескольких переменных со сложной структурой (таблица 3.8).

Таблица 3.8 Описание типов данных, создаваемых программистом

Новые типы

Описания

Бейсик

Паскаль

Си++

Синтаксис

Как структура

type имя = описание;

typedef struct имя_структуры

{

поля_структуры;

} имя;

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

type TMyArray = array[0..99] of integer;

type TMyRecord = record

Iteml: integer;

Item2: string;

end;

typedef struct namel

{

int i;

float x;

} TNewStruct;

Пример применения

var MyArray: TMyArray;

var R: TMyRecord;

TNewStruct NewStruct;