Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АЯП лекции.doc
Скачиваний:
12
Добавлен:
03.12.2018
Размер:
634.37 Кб
Скачать

Структурированные типы данных.

Структурированными называются такие типы данных, которые объединяют некоторое количество переменных и обладают строго определенными свойствами, которые определяют методы их обработки.

Массивы.

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

VAR

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

Свойства массива:

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

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

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

<имя массива>[индекс элемента].

Любая работа с массивом, коме переноса, связана с перебором элементов массива. Чаще всего перебор элементов массива осуществляется в цикле с параметром. Ввод /вывод массива осуществляется в цикле поэлементно.

Пример. Задан массив из 15 целых чисел.

Var p:1..15;

M:array[1..15] of integer;

Begin

Writeln(‘Введите масив’);

For p:=1 to 15 do read(m[p]);

End.

Примечание:

Обратите внимание, что с практической точку зрения в предыдущем примере ввод значений массива будет отличаться. Если используем READ, то ввод элементов массива происходит как в стирку так и в столбец. Если используем READLN, то только в столбец.

Пример. Задан массив из 100 литеров. Вывести введенные литеры в обратном порядке.

Var p:integer;

M:array[1..100] of char;

Begin

Writeln(‘Введите 100 литеров’);

For p:=1 to 100 do read(m[p]);

For p:=100 downto 1 do

Write(m[p]);

End.

Пример. Задан массив из 100 целых чисел. Упорядочить его по возрастанию.

Var M:array[1..100] of integer;

p,c,v:integer;

Begin

Writeln(‘Введите массив’);

For p:=1 to 100 do read(m[p]);

R

C=0

epeat c:=0;

For p:=1 to 99 do

If m[p]>m[p+1] then

Begin v:=m[p];

m[p]:=m[p+1];

m[p+1]:=v;

c:=c+1; end;

until c=0;

f

V=m[p]

m[p]=m[p+1]

m[p+1]=v

c=c+1

or p:=1 to 100 do write(m[p],’ ‘);

end.

Пример. Используя генератор случайных чисел сформировать массив из 100 целых чисел.

Var m:array[1..100] of enteger;

p:integer;

RANDOMIZE;

For p;=1 to 100 do

Begin m[p]:=RANDOM(100)-50;

Write(m[p],’ ‘);

End; end.

Генератор случайных чисел необходимо с начало проинициализировать программой RANDOMIZE. После инициализации можно использовать генератор случайных чисел RANDOM(N), N-целое число

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

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

В Паскале многомерные массивы можно оформлять не записывая вложения одного типа в другой. Например

а: ARRAY [1..10] OF

ARRAY [1..10] OF a, перечисляя через запятую типы индексов в [ ].

При обращении к конкретному элемента массива так же его индексы перечисляются через запятую.

Пример. Сформировать матрицу 10 на 10 элементов, состоящую из двухзначных чисел. Вывести её по строкам на экран.

Var m:array[1..10,1..10] or integer;

p,k:integer;

begin randomize;

for p:=1 to 10 d0 begin

for k:=1 to 10 do begin

m[p.k]:=random(100)-50;

write(m[p,k]:4);

e

m[p,k]=RANDOM(100)-50

nd; writeln;

end; end.

Пример. Задана матрица 10 на 10 элементов. Упорядочить строки по возрастанию.

Var mt:array[1..10,1..10] or integer;

p,k,c,v,min:integer;

begin writeln(‘Введите матрицу’);

for p:=1 to 10 d0

for k:=1 to 10 do

r

C=0

ead (mt[p,k]);

writeln;

for p:=1 to 10 do

repeat c:=0;

for k:=1 to 9 do

if mt[p,k]>mt[p,k+1] then

begin v:= mt[p,k+1];

mt[p,k+1]:=v;

c

V=mt[p,k]

mt[p,k]=mt[p,k+1]

mt[p,k+1]=v

c=c+1

:=c+1; end;

until c=0;

for p:=1 to 10 do

begin

for k:=1 to 10 do

write(mt[p,k],’ ‘);

writeln; readln;

end; end.

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