Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
T7.doc
Скачиваний:
1
Добавлен:
23.11.2019
Размер:
141.31 Кб
Скачать

20.11.20 19:18 -26-

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

Предположим, что в результате проделанной работы получен некоторый набор данных, который характеризует суть изучаемых явлений, будь то: экспериментальные значения некоторых физических величин, или значения некоторой функции, рассчитанные на определённом интервале, или экономические показатели предприятия или учреждения за определенное время, или оценки на экзаменах, полученные школьниками или студентами, результаты соревнований и т. д. Обозначим данные из этого набора через А1, А2, ..., Аn.

В языках программирования совокупность данных одного типа называется массивом данных или просто массивом. В языке Паскаль индексы массива (номерующие порядковый номер набора данных) записываются в квадратных скобках.

Номер Данные Алгебраическое Элементы массива

обозначение

1 5 А1 А[1]

2 4 А2 А[2]

3 3 А3 А[3]

.............................................……………………….

n 4 An A[n]

Точно также можно рассматривать строку текста как последовательность символов, пронумеровать их, и мы получим символьный массив

. В качестве примера рассмотрим слово Паскаль:

П А С К А Л Ь — символы;

S[1] S[2] S[3] S[4] S[5] S[6] S[7] — элементы символьного

массива.

Слово ПАСКАЛЬ можно записать в символьный массив S,

состоящий из семи символов, а для записи выражения ТУРБО-ПАСКАЛЬ понадобится массив, состоящий из тринадцати элементов.

Элементами массивов в системе программирования ТУРБО-ПАСКАЛЬ могут быть как простые типы данных: целого, вещественного, символьного или логического типа, — так и другие, более сложные объекты. Пока мы ограничимся рассмотрением первого случая. Сформулируем определения.

МАССИВ – упорядоченная совокупность данных одного типа, размещённых в оперативной памяти ЭВМ под своим именем –идентификатором массива. Элементами массива могут быть целые, вещественные, символьные и логические переменные и другие, более сложные объекты.

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

К любому элементу массива можно попасть по его номеру. Поэтому можно записать данные в любое место массива. Например:

A[25]:=с;

Аналогично пpоизводится и считывание какого-либо элемента из массива.

d:=A[18];

В системе ТУРБО-ПАСКАЛЬ массивы распределяются статически, т.е. длина массива задаётся в разделе описаний и не меняется в процессе работы программы. Следовательно, длину массива надо задавать так, чтобы её хватило для решения задач данного типа.

Однако возможно и динамическое распределение памяти. Массивы переменной длины можно создавать путём непосредственного распределения свободной оперативной памяти с помощью указателей.

Описание массива в программе можно сделать двумя способами.

1. В разделе описаний переменных можно поместить

строку вида

var A: array [1..100] of real;

Это означает, что в оперативной памяти ЭВМ транслятор отведёт место для ста вещественных чисел, т. е. под массив А будет отведён участок памяти длиной 600 байт.

Границами массива могут быть любые целые числа, лишь бы левая граница была меньше правой. Например, можно написать:

var a: array [-20..-5] of integer;

b: array [-5..10] of boolean;

Гpаницы массива можно задавать и с помощью констант:

const n1 = 5;

n2 = 15;

...............................

var c: array [n1..n2] of char;

...............................

В этом примере сформирован символьный массив длиной 11 элементов.

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

var i,n: integer;

a: array [1..100] of real;

begin

writeln('Введите длину массива - n');

read(n);

writeln('Введите ',n,' чисел);

for i:=1 to n do read( a[i]);

.....................................

end.

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

for i:=1 to n do

begin

write('a[',i,']=');readln(a[i]);

end;

Для вывода данных массива можно написать цикл следующего вида

for i:=1 to n do

writeln(´a[',i,']=',a[i]:8:4);

Здесь будут напечатаны элементы массива а с 1-го по n-тый с подписью и нумерацией.

2. Второй способ описания массива связан с использованием базового типа. Делается это следующим образом. В программе в разделе описания типов задаётся базовый тип с помощью выражения:

type mass100 = array [1..100] of real;

................................

var c: mass100;

................................

В разделе описания переменных просто даётся ссылка на этот тип. Для нескольких массивов ссылка на базовый тип записывается так же, как и для простых переменных:

var b,c,d: mass100;

Переменные b, c, d в данном описании относятся к базовому типу mass100, т.е. это массивы длиной 100 компонент каждый.

В системе Турбо-Паскаль можно данные из одного массива в другой переносить, используя сокращённый оператор присваивания

M1:=M2;

где переменные М1 и M2 должны быть описаны как массивы одного типа.

Подчеркнём, что второй способ описания массивов в системе ТУРБО-ПАСКАЛЬ используется обязательно, когда массивы являются входными параметрами функций или входными/выходными параметрами процедур.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]