Действия над элементами массивов




СОДЕРЖАНИЕ

 

 

1.Цель работы 4

2. Задачи 4

3. Теоретическая часть 4

3.1. Понятие массива данных 4

3.2. Одномерные массивы 4

3.3. Многомерные массивы 7

3.4. Действия над элементами массивов 9

3.5. Ввод и вывод элементов массива 10

4. Решение задач - примеров 11

5. Порядок выполнения работы 13

6. Контрольные вопросы 14

7. Содержание и оформление отчета 15

Приложение 16

Список литературы 19

 

 

ЛАБОРАТОРНАЯ РАБОТА

РАБОТА С МАССИВАМИ ДАННЫХ В ИНТЕГРИРОВАННОЙ СРЕДЕ DELPHI

Цель работы

Целью настоящей работы является изучение методов программирования на языке Delphi с использованием массивов данных.

 

Задачи

Задачами лабораторной работы являются задачи овладения навыками разработки программ в интегрированной среде Delphi.

 

Теоретическая часть

 

Понятие массива данных

 

В языке Delphi под массивомпонимается упорядоченный набор фиксированного количества однотипных данных.

Массивы, наряду с записями, строками, множествами, файлами, относятся к структурированному типу данных языка. Массивы могут быть одномерные и многомерные. При этом размер массива не ограничивается. Размерность массивов на практике ограничивается лишь объемом рабочей памяти конкретного компьютера. В памяти компьютера элементы массива располагаются в последовательных соседних ячейках памяти.

 

Одномерные массивы

 

Переменные массивов можно задавать двумя способами:

а) через объявление типа в разделе TYPE, а затем объявление переменной (переменных) в разделе VAR:

 

 

TYPE

< имя типа > = ARRAY [тип индекса] OF < тип элементов >;

VAR

< идентификатор >: < имя типа >;

 

б) через объявление переменной (переменных) сразу в разделе VAR:

VAR

< идентификатор >: ARRAY [тип индекса] OF < тип элементов >;

 

Элементы массива могут быть любого, в том числе и структурированного, типа. Следует отметить, что вещественный тип не относится к упорядоченным типам данных. В качестве типа индекса может использоваться любой порядковый тип, кроме типа Longint. Обычно в качестве индексного типа используется целочисленный тип-диапазон, в котором задаются границы изменения индексов. Обратите внимание, что величины, соответствующие начальному и конечному индексам, т.е. значения, указанные в квадратных скобках, разделяются двумя (!) точками. Причем перед этими двумя точками и после них допускаются пробелы.

 

Примеры объявления массивов:

 

TYPE

X = ARRAY [1.. 100] OF INTEGER;

Y = ARRAY [1.. 25] OF REAL;

Z = RECORD

R, I: REAL

END;

VAR

M: X; { целочисленный массив }

V1, V2: Y; { вещественные массивы }

L1, L2: ARRAY [1.. 20 ] OF Z; { массивы записей }

K: ARRAY [ BYTE ] OF CHAR; { массив символов }

R: ARRAY [ 1.. 5 ] OF STRING [25]; {массив строк }

T: ARRAY [-10.. 9] OF BYTE; {массив целых чисел }

G: ARRAY [ 1.. 15] OF (MO, TU, WE, TH, FR, SA, SU);

{ массив перечислимого типа }

Типизированная константа-массив объявляется в программе следующим образом:

CONST

A: ARRAY [1.. 5] OF INTEGER = (1, 2, 3, 4, 5);

B: ARRAY [1.. 4] OF REAL = (1.1, 2.2, 3.3, 4.4);

Кроме того, в качестве индексного типа могут использоваться упорядоченные типы языка Delphi, например:

 

VAR

A1: ARRAY[BYTE] OF BOOLEAN;

A2: ARRAY[CHAR] OF BOOLEAN;

A3: ARRAY[RED,YELLOW,GREEN] OF CHAR;

 

Здесь А 1 (первый пример) представляет собой массив из 256 (0..255) значений типа Вооlеаn. А 2 – это массив также из 256 значений типа Вооlеаn, однако, в отличие от массива А 1, он индексируется значениями типа Сhаr. Обращения к отдельным элементам массивов АА 2 выглядят так:

 

а 1[90] :=fаlsе;

а 2[ z ] :=truе;

Содержимое массивов АА 2 может быть следующим:

1-й элемент 2-й элемент 3-й элемент... 256-й элемент

TRUE FALSE FALSE … TRUE

(Элементы 1 – 256 массива А 1 будут обозначаться числами с 0 по 255, а массива А 2 – символами таблицы ASCII по порядку.)

Третий пример (А 3) представляет собой массив из трех элементов типа Сhаr. Элементы этого массива обозначаются именами Red, Yеllоw и Grееn (для индексирования здесь использован перечислимый тип). Примеры обращений к элементам этого массива можно видеть в табл.1.

Содержимое массива А 3 может выглядеть так:

А 3[ Red ] А 3[ Yе11оw ] А 3[ Grееn ]

'А' 'С' '10'

 

Таблица 1

Манипуляции над элементами массива

 

Пример обращения Комментарий
A 3[ Red ] :=chr (100) Элементу Red массива A 3 присваивается значение типа Char, соответствующее букве ‘ d
A 3[ Red ] :=’d’ Эквивалент предыдущего оператора
Write (a 3[ Yellow ]) Значение элемента Yellow массива A 3выводится на экран
Read (a 3[ Green ]) Значение элемента Green массива A 3вводится с клавиатуры

 

Многомерные массивы

Элементами массивов могут быть также массивы. В этом случае мы имеем двумерный массив (матрицу).

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

а) через объявление типа в разделе TYPE, а затем объявление переменной (переменных) в разделе VAR:

TYPE

< имя типа > = ARRAY [тип индекса 1] OF ARRAY [тип индекса 2] OF < тип элементов >;

или

< имя типа > = ARRAY [ тип индекса 1, тип индекса 2 ] OF <тип элементов >;

Обе формы описания равносильны, но вторая употребляется чаще.

VAR

< идентификатор >: < имя типа >;

б) через объявление переменной (переменных) сразу в разделе VAR:

VAR

< идентификатор >: ARRAY [тип индекса 1, тип индекса 2] OF < тип элементов >;

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

 

Примеры объявления двумерных массивов:

TYPE

A = ARRAY [ 1.. 5, 1.. 4 ] OF WORD;

B = ARRAY [ 1.. 10, 1.. 20 ] OF REAL;

VAR

C: ARRAY [ 1.. 5, BOOLEAN ] OF -20.. 20;

D1, D2: A;

F1, F2: B;

 

А вот так выглядит двумерный массив A (или матрица) полностью:

а1[1,1] а1[1,2] а1[1,3] а1[1,4]

а1[2,1] а1[2,2] а1[2,3] а1[2,4]

а1[3,1] а1[3,2] а1[3,3] а1[3,4]

а1[4,1] а1[4,2] а1[4,3] а1[4,4]

а1[5,1] а1[5,2] а1[5,3] а1[5,4]

Типизированная константа-матрица объявляется в программе следующим образом

CONST

M: ARRAY [1.. 3, 1.. 2] OF INTEGER = ((1, 2), (3, 4), (5, 6));

Массивы могут быть не только одномерными или двумерными, но и 3-х мерными, 4-х мерными и т.д. В этом случае они объявляются в программе следующим образом:

VAR

M: ARRAY [ 1.. 10, -10.. 9, CHAR ] OF BYTE;

N: ARRAY [ 1.. 5, 1.. 10, 1.. 15, 1.. 20 ] OF SHORTINT;

В памяти компьютера элементы размещаются друг за другом так, что при переходе от младших адресов к старшим наиболее быстро изменяется самый правый индекс массива. Например, для матрицы 2х2: A[1,1], A[1,2], A[2,1], A[2,2].

Действия над элементами массивов

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

Примеры задания индекса:

A [5] - непосредственно числом;

A [x] - косвенно через переменную x;

A [y+5] - косвенно через выражение;

A [Succ(i)] - косвенно через значение функции.

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

Таблица 2

Действия над элементами массива

 

Пример действия Комментарий
   
Write (a 1[10]) На экране отображается значение 10-го элемента массива A 1
a 4[5] :=а 4[3] 4[2] Значения 3 и 2-го элементов массива А 4 складываются, и полученная сумма в качестве значения присваивается эле­менту 5 того же массива
abc:=аbс+а 4[88] Значение 88-го элемента массива А 4 суммируется со значением переменной abс, и полученная сумма присваивается этой же переменной
   
abс:=а 4[55] 4[56] Значения 55 и 56-го элементов массива А 4 cкладываются, и полученная сумма присваивается переменной abс
a 4[33] :=а 4[33] + 20 Значение 33-го элемента массива А 4 увеличивается на 20

 

Что касается набора операций над массивами в целом, то скопировать все элементы из одного массива в другой можно единственным оператором присваивания. Например, если Х и Y – массивы, принадлежащие одному типу, то правомерен оператор

 

X:= Y;

 

Этот оператор копирует значения всех элементов массива X в массив Y.

Однако нельзя использовать с массивами операции сравнения. Неверно, например, было бы к массивам Х и Y применить оператор

 

while х=у do...

 

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



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-10-11 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: