Массивы
До сих пор Вы сталкивались
в основном с простыми типами данных. Типы данных в системе Turbo Pascal
делятся на простые и сложные. К простым типам относятся стандартные,
перечисляемые и ограниченные; к сложным типам - массивы, множества, записи,
файлы. Элементами сложных типов могут быть простые типы, а также, в свою
очередь, сложные типы. Введение сложных типов делает язык программирования
более мощным и позволяет составлять эффективные программы.
Рассмотрение
структурированных типов мы начнём с так называемых массивов "ARRAY". Массив
объединяет элементы одного типа данных. Массивы бывают одномерными и
многомерными. Размер массива (и число измерений) ограничивается только
объёмом рабочей памяти ПЭВМ.
В математике и информатике
массив называется одномерным, если для получения доступа к его элементам
достаточно одной индексной переменной.
Декларация (объявление)
одномерного массива выглядит следующим образом:
VAR
имя_массива: ARRAY[нач_инд..кон_инд] OF тип данных;
Например:
VAR
mas: ARRAY[1..25] OF Integer;
Таким образом мы объявили
одномерный массив mas целых чисел. Номер (индекс) первого элемента 1,
последний номер (индекс) 25.
Декларация массивов может
производится и немного другим способом. Сначала объявляется тип пользователя
(в нашем случае типа "ARRAY"), а затем и переменная на основе этого типа
данных. Например:
TYPE
tab=ARRAY[1..25] OF Integer;
VAR
mas: tab;
Эта декларация аналогична
приведённой выше. В следующем примере декларировано несколько переменных
типа массив:
VAR
mas_1: ARRAY[1..10] OF Real;
mas_2: ARRAY[5 .. 16] OF Integer;
sst: ARRAY[20..40] OF Char;
Обратите внимание, что
величины, обозначающие "начальный индекс" и "конечный индекс", в квадратных
скобках разделяются двумя (!) точками, причём перед этими двумя точками и
после них допускаются пробелы.
Тип элементов, составляющих
массив, может быть любым (в том числе и сложным). Тип индексов элементов
массива может быть только простым, хотя наиболее часто в качестве индексов
элементов массива применяют целые числа.
В следующем примере
объявлены массивы содержащие элементы различных типов, и индексы различных
простых типов:
VAR
mas: array [1..15] of real;
{описан массив из 15 вещественных чисел}
www: array [(mon,tue,wed)] of integer;
{описан массив из трёх целых чисел,
индексы элементов массива имеют
перечислимый тип и принимают значение
названий дней недели mon, tue, wed}
ast: array ['A'..'Z'] of boolean;
{описан массив элементов логического типа,
тип индексов - ограниченый
символьный}
art: array [(black,white)] of 11..20;
{описан массив целых чисел с индексами black, white.
Каждый элемент массива
может принимать значения от 11 до 20}
svz: array [byte] of integer;
{описан массив из 256 целых чисел
с индексами стандартного типа byte
(от 0 до 256)}
Извлечения и
присвоения в массивах
В отличие от стандартных
переменных массивы не могут обрабатываться целиком. Но Вы можете получить
доступ к каждому элементу-ячейке массива. Это выполняется путём указания
значения индекса в квадратных скобках. Так например, с помощью оператора
mas[2]:=34;
элементу массива с индексом 2 присваивается значение
34. Оператор
Writeln(mas[2]);
вызовет вывод на экран пользователя значение
хранящегося в элементе-ячейке N 2 массива mas. Наряду с конкретным значением
(конcтантой) в качестве индекса может быть использована переменная,
например, при обработке массива поэлементно в рамках цикла "FOR ... TO ...
DO". Так с помощью фрагмента программы
FOR i:=1 TO 25 DO mas[i]:=0;
всем элементом массива присваивается значение "0".
Использование массивов
вместо одиночных переменных позволяет Вам благодаря применению циклов "FOR
... TO ... DO" существенно сэкономить время и объём программы. Это
демонстрируется следующим примером.
ПРИМЕР. Дана
последовательность реальных чисел s1 ... s30. Организовать массив для
хранения этих чисел. Определить сумму этих элементов.
PROGRAMM ex_1;
VAR
m: ARRAY[1..30] of real; {декларация массива}
i: integer; {параметр цикла FOR}
s: real; {сумма элементов}
BEGIN
FOR i:=1 TO 30 DO {заполнение массива}
Begin
Write('Введите элемент последовательности N ',i);
Readln(m[i]);
End;
s:=0; {обнуление счётчика суммы}
FOR i:=1 TO 30 DO s:=s+m[i]; {вычисление суммы}
Write('Сумма элементов последовательности равна ',s);
Readln; { пауза }
END.
Контрольные
вопросы.
- Какие типы данных Вы знаете?
- Перечислите и приведите примеры простых типов
данных.
- Перечислите сложные типы данных.
- Что такое массивы?
- Что называют элементом массива?
- Что называют индексом элемента массива?
- Сколько элементов может содержать массив?
- Сколько индексов может быть у одного элемента
массива?
- Элементы какого типа может содержать массив?
- Какие типы данных допустимы для индексов
элементов массива?
Задания для
самостоятельного выполнения.
- Напишите программу, которая сначала вводит
десять чисел в одномерный массив, а затем складывает отдельно все
положительные элементы этого массива, отдельно отрицательные элементы и
выдаёт полученные результаты.
- Разработайте программу, которая будет вводить с
клавиатуры 25 реальных чисел и сохранять их в некотором одномерном
массиве. Затем у пользователя запрашивается ввод ещё одного
"контрольного" числа. Программа должна проверить, содержится ли
последнее введённое число среди введённых раннее элементов массива, и
выдать соответствующее сообщение на экран.
- Напишите программу, которая вводит с клавиатуры
25 реальных чисел, организовывает их хранение в одномерном массиве, а
затем определяет число положительных элементов данной последовательности
и выводит результат на экран.
- Напишите программу, которая вводит с клавиатуры
20 реальных чисел, организовывает их хранение в одномерном массиве, а
затем определяет каких чисел в массиве больше, положительных или
отрицательных. Не исключается случай равенства.
- Напишите программу, которая вводит с клавиатуры
15 целых чисел, организовывает их хранение в одномерном массиве, а затем
определяет среднее арифметическое элементов массива. Результат выдаётся
на экран пользователя.
- Напишите программу которая вводит с клавиатуры
20 реальных чисел, организовывает их хранение в одномерном массиве, а
затем определяет индекс и значение максимального элемента массива.
Результат выдаётся на экран пользователя.
- Напишите программу которая вводит с клавиатуры
30 символов, организовывает их хранение в одномерном массиве, а затем
выводит содержимое массива в обратном порядке с указанием индекса
(номера) каждого элемента.
- Напишите программу которая вводит с клавиатуры
20 реальных чисел, организовывает их хранение в одномерном массиве, а
затем определяет среднее арифметическое элементов с чётными индексами, и
среднее арифметическое элементов с нечётными номерами. Результат
выдаётся на экран пользователя.
- Дан одномерный массив целых чисел размерностью
20. Определите количество положительных групп в этом массиве. (Группой
называется последовательность состоящая из 2-х и более положительных
чисел находящихся рядом.)
- Дан массив из 20 целых чисел. На экране
нарисовать график, состоящий из 20 параллелепипедов высота которых
пропорциональна значению элементов массива. Цвет заполнения
параллелепипедов зависит от их высоты, - чем выше параллелепипед, тем
больше номер цвета.
НАЗАД
ДАЛЕЕ