ВНИМАНИЕ! Опубликовано расписание занятий на 2017-2018 уч. год Подробнее
Toggle Bar

Turbo Pascal. Массивы

Массив – конечная группа переменных одного типа, которой присвоено общее имя.

Так, совокупность целых чисел

 -12, 14, 124, -1, 25 

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

 первый - A[1], четвертый - A[4]. 

Имя массива является единым для всех элементов. К каждому элементу массива можно обратиться с помощью индекса. Индекс – величина, характеризующая положение элемента относительно начала массива. Индекс записывается в квадратных скобках, например, A[1] , 1 – это индекс, указывающий на первый элемент массива с именем A .

Если в программе используется массив, то он должен быть описан или в разделе переменных Var , или в разделе типов Type .

Формат описания массива в разделе переменных:

 Var
:array[индекс] of

здесь : array (массив); of (из) – зарезервированные слова языка;  индекс – величина, характеризующая положение элемента относительно начала массива. В качестве индекса могут использоваться константы или данные целого, логического, символьного, перечисляемого и интервального типа (кроме Longint );  тип элементов – любой тип Турбо Паскаля.

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

Var
a:array[1..5] of integer;
b,c:array[1..20] of real;

В приведенном примере описаны три массива: a,b,c . В описании массивов содержатся следующие сведения: имена массивов – a,b,c ; тип элементов массивов: a – целые, b и c – вещественные; диапазон изменения индексов – 1..5 и 1..20 . Нижняя граница отделяется от верхней границы двумя точками. Две точки « .. » рассматриваются как единый неделимый символ. Нижняя граница показывает наименьшее значение индекса, верхняя – наибольшее. Значение нижней границы не может быть больше верхней. Массивы b и c имеют один и тот же тип и одинаковое количество элементов, поэтому описания можно объединить, разделив имена массивов запятой.

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

Например:

Program example_2;
const n=20;
Var
b,c:array[1..n] of real;
Begin ...

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

Массивы могут быть одномерными и многомерными. На практике, как правило, используют одномерные, двумерные и трехмерные массивы. Схематично одномерный и двумерный массивы можно представить таким образом:

Схема представления одномерного массива

 ris122

 

Схема представления двумерного массива

 ris123

В приведенной схеме массив A можно рассматривать как матрицу или таблицу и говорить, что A[i,j] – это элемент, находящийся в j -ом столбце i- ой строки этой матрицы.

Описание двумерного массива.

Const
m =10; n =20;
Var
b,c:array[1..m, 1..n] of real;

Поскольку в Турбо Паскале тип элементов массива может быть любой, в том числе и другим массивом, то помимо явного описания массивов в разделе переменных, существует и другая форма описания, через использование раздела типов. Последовательность описания и использования раздела Type следующая:

  • в разделе описания типов Type указывается тип массива;
  • в разделе описания переменной Var перечисляются массивы, относящиеся к указанному типу.

 Формат описания массивов:

Type<имя типа массива>=array[индекс] of <тип элементов>
Var
<имя массива>:<имя типа массива>

Пример:

Const
 n=10; m=20; 
Type 
mas=array[1..n,1..m] of real; 
Var 
a:mas ;

Если в программе несколько массивов, например, a,b,c,d, которые имеют тип mas , то изменяется только раздел описаний переменных:

Var
a,b,c,d:mas;

Тип массива mas формально введен только в разделе описания типов и нигде в программе не указывается и не обрабатывается.

При работе с массивами следует учитывать следующие правила:

  • над массивами не определены операции отношения. Нельзя писать

if a=b then ... 

  • сравнивать элементы массива можно поэлементно

for i:= 1 to 10 do 

if a[i]b[i] then ... 

  • при работе с массивами наиболее часто используется оператор цикла

For ... to ...do 

Примеры:

1. Всем элементам одномерного массива  a[1..10] присвоить нуль:

for i:= 1 to 10 do a[i]:=0; 

2. Всем элементам двумерного массива a[1..10,1..20] присвоить нуль:

 for i:= 1 to 10 do 

 for j:= 1 to 20 do 

 a[i,j]:=0; 

3. Всем элементам одномерного массива a[1..10] присвоить значения элементов массива b[1..10] :

 for i:= 1 to 10 do a[i]:=b[i]; 

ЗАДАЧА 1. Написать программу вычисления суммы пятнадцати чисел.

program a16;
Type
mas=array[1..15] of integer; {объявление типа массива}
Var
a:Mas; {объявление массива a типа mas}
i,sum:integer; {i-параметр цикла; sum-сумма чисел}
begin
sum:=0; {присваиваем начальное значение}
writeln(‘Введите 15 целых чисел:’);
for i:=1 to 15 do
begin
readln(a[i]); {ввод элементов массива}
sum:=sum+a[i]; {вычисление суммы}
end;
writeln(‘Сумма чисел равна:’, sum:6);
end.

Результаты работы программы:

 Введите 15 целых чисел 

 1 

 1 

 1 

 ... 

 1 

 Сумма чисел равна: 15 

ЗАДАЧА 2. Ввести с клавиатуры 15 вещественных чисел в массив и найти сумму этих чисел.

program a17;
Const n =15; {количество чисел}
Type
mas=array[1..n] of real;
Var
a:Mas;
i:integer; {параметр цикла}
sum:real; {сумма чисел}
begin
writeln(‘Введите ’, n:4,’ чисел’);
for i:=1 to n do
begin
write(‘a[‘,i,’]=’);
readln(a[i]); {ввод элементов массива}
end;
sum:=0; {присваиваем начальное значение}
for i:=1 to n do sum:=sum+a[i]; {вычисление суммы}
writeln;
writeln(‘Сумма равна:’, sum:8:2);
end.

Результаты работы программы:

Введите 15 чисел

a[1]=1

a[2]=1

a[3]=1

...

a[15]=1

Сумма равна: 15.00

ЗАДАЧА 3. Найти наибольший элемент массива и определить его номер. Количество элементов массива и их значения ввести с клавиатуры.

program a18;
Const n =100; {допустимое количество чисел}
Type
mas=array[1..n] of real;
Var
a:Mas;
m:integer; {количество чисел}
i:integer; {параметр цикла}
k:integer; {порядковый номер элемента массива}
max:real; {максимальный элемент массива}
begin
write(‘Введите количество чисел: ’);
readln(m);
writeln(‘Введите ’, m:4,’ чисел’);
for i:=1 to m do
begin
write(‘a[‘,i,’]=’);
readln(a[i]); {ввод элементов массива}
end;
max:=a[1]; k:=1; {берем первый элемент массива}
for i:=2 tom do {в цикле начиная со второго элемента просматриваем массив}
if a[i]>max then
begin
max:=a[i]; k:=i;
end;
writeln;
writeln(‘Номер наибольшего элемента:’,k:3);
writeln(‘Его значение:’,max:8:2);
end.

Результаты работы программы:

 Введите количество чисел: 5 

 Введите 5 чисел 

 a[1]=101.2 

 a[2]=11.4 

 a[3]=1.0 

 a[4]=304.7 

 a[5]=19.3 

 Номер наибольшего элемента: 4 

 Его значение: 304.70 

Добавить комментарий
  • Комментарии не найдены
 
DMC Firewall is developed by Dean Marshall Consultancy Ltd