Тип данных массив

Тип данных массив


До сих пор Вы сталкивались в основном с простыми типами данных. Типы данных в системе 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.

Контрольные вопросы.
---------------------
1. Какие типы данных Вы знаете?
2. Перечислите и приведите примеры простых типов данных.
3. Перечислите сложные типы данных.
4. Что такое массивы?
5. Что называют элементом массива?
6. Что называют индексом элемента массива?
7. Сколько элементов может содержать массив?
8. Сколько индексов может быть у одного элемента массива?
9. Элементы какого типа может содержать массив?
10. Какие типы данных допустимы для индексов элементов массива?

Задания для самостоятельного выполнения.
-----------------------------------------

1. Напишите программу, которая сначала вводит десять чисел в одномерный массив, а затем складывает отдельно все положительные элементы этого массива, отдельно отрицательные элементы и выдаёт полученные результаты.
2. Разработайте программу, которая будет вводить с клавиатуры 25 реальных чисел и сохранять их в некотором одномерном массиве. Затем у пользователя запрашивается ввод ещё одного "контрольного" числа. Программа должна проверить, содержится ли последнее введенное число среди введённых раннее элементов массива, и выдать соответствующее сообщение на экран.
3. Напишите программу, которая вводит с клавиатуры 25 реальных чисел, организовывает их хранение в одномерном массиве, а затем определяет число положительных элементов данной последовательности и выводит результат на экран.
4. Напишите программу, которая вводит с клавиатуры 20 реальных чисел, организовывает их хранение в одномерном массиве, а затем определяет каких чисел в массиве больше, положительных или отрицательных. Не исключается случай равенства.
5. Напишите программу, которая вводит с клавиатуры 15 целых чисел, организовывает их хранение в одномерном массиве, а затем определяет среднее арифметическое элементов массива. Результат выдаётся на экран пользователя.
6. Напишите программу которая вводит с клавиатуры 20 реальных чисел, организовывает их хранение в одномерном массиве, а затем определяет индекс и значение максимального элемента массива. Результат выдаётся на экран пользователя.
7. Напишите программу которая вводит с клавиатуры 30 символов, организовывает их хранение в одномерном массиве, а затем выводит содержимое массива в обратном порядке с указанием индекса (номера) каждого элемента.
8. Напишите программу которая вводит с клавиатуры 20 реальных чисел, организовывает их хранение в одномерном массиве, а затем определяет среднее арифметическое элементов с чётными индексами, и среднее арифметическое элементов с нечётными номерами. Результат выдаётся на экран пользователя.




Для добавления комментариев, Вам необходимо Зарегистрироваться


Облако тегов

Случайный анекдот
Девушка-программер едет в трамвае, читает книгу. Старушка смотрит на девушку, смотрит на книгу, крестится и в ужасе выбегает на следующей остановке. Девушка читала книгу "Язык Ада".

Статистика


Счетчик посещений
Коннектов к бд: 7
Генерация 0.02151 сек
Размер файла: 19610 байт
После сжатия: 7947 байт