Структурированные типы данных: массивы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Структурированные типы данных: массивы



Массив - совокупность конечного числа данных одного типа, объединенных общим именем.

· Одномерный массив - вектор

A A1, A2, A3,... AN B B1, B2, B3,..., BM

0.1, 0.5, 0.7,..., 1.9 12, 34, 56,..., 13

A[I],B[J] - элементы массива, где I -индексы, указывающие номер или место данного элемента в массиве.

 

 

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

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

 

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

Пример

Var A: array [1..4] of real; Type MAS1=array[1..4] of real;

B: array [1..3] of integer; MAS2=array[1..3] of integer;

Var A: MAS1;

B: MAS2; или

Type I1=1..4;

I2=1..3;

MAS1=array[I1] of real;

MAS2=array[I2] of integer;

Var A: MAS1;

B: MAS2;

Пример

for I:=1 to 4 do for I:=1 to 4 do

Read(A[I]); или begin

Writeln(‘A[‘,I,’]=’);

Read(A[I])

end;

{Ввод элементов одномерного массива}

Пример

{Вывод элементов одномерного массива}

for J:=1 to 3 do for J:=1 to 3 do

Write(B[J]:3); Writeln(‘B[‘,J,’]=’,B[J]:3);

{в строку 12 34 56} {в столбец B[ 1]= 12

B[ 2]= 34

B[ 3]= 56}

· Двумерный массив - матрица

 

D11 D12 D13 1 3 2

D =

D21 D22 D23 4 6 7

D[I,J] - элемент матрицы, I - номер строки, J - номер столбца.

 

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

Var <имя массива>: array[ <диапазон строк>, <диапазон столбцов> ]

of < тип элементов>;

 

Пример

Var D:array[1..2,1..3] of integer; или Type MATR=array[1..2,1..3] of integer;

Var D: MATR;

Type ST=array[1..2] of integer;

MATR=array[1..3] of ST;

Var D: MATR;

Пример

for I:=1 to 2 do

for J:=1 to 3 do

Read(D[I,J]); {Последовательность ввода: 1 3 2 4 6 7}

{Ввод элементов двумерного массива}

Пример

{Вывод элементов двумерного массива}

for I:=1 to 2 do

for J:=1 to 3 do

Write(D[I,J]); {вывод в строку 1 3 2 4 6 7}

или

for I:=1 to 2 do

begin Writeln; {переход на новую строку}

for J:=1 to 3 do

Write(D[I,J]) {вывод элементов строки}

end; {результат вывода: 1 3 2

4 6 7 }

 

ПРОЦЕДУРЫ И ФУНКЦИИ

В среде Turbo-Pascal имеются две разновидности подпрограмм - процедуры и функции. Структура подпрограммы аналогична структуре программы в целом.

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

глобальные- объявленные в основной программме и доступные как основной программе, так и всем ее подпрограммам.

 

· Формальное описание функции

 

function <имя функции> ( <список формальных параметров> ): <тип функции>;

<секция описаний локальных переменных>;

begin

<секция операторов>

end;

 

где <имя функции> - идентификатор, к которому предъявляются те же требования,как к любому идентификатору в среде Turbo-Pascal;

< список формальных параметров> - все параметры в списке указываются вместе со своим типом (одного типа через запятую; различные типы через точку с запятой). Тип параметров в списке может быть любой. Как частный случай, функция может быть без параметров.

<тип функции> - задается обычным способом и может быть любым простым или String.

 

· Вызов функции

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

 

< имя переменной>:= <имя функции> ( <список фактических параметров> );

или в операторе вывода

Write( <имя функции> ( <список фактических параметров> ));

< cписок фактических параметров> - представляет собой, перечисленные через запятую значения, которые при обращении заменяют соответствующие формальные параметры в описании функции.

Следует обратить внимание на то, что количество, тип и порядок расположения фактических параметров в обращении к функции обязательно должен совпадать с количеством, типом и порядком расположения формальных параметров в описании функции.

Пример

Var XN: real;

NN: word;

{Подпрограмма-функция вычисления XN }

function Ipow(X: real; N: word): real;

Var I: word;

M: real;

Begin

M:=1;

for I:=1 to N do

M:=M * X;

Ipow:=M

end;

{Основная программа}

Begin

Readln(XN,NN);

Writeln(‘ Значение функции = ‘, IPow(XN,NN))

End.

Как ранее указывалось, тип формальных параметров может быть любым, однако в заголовке подпрограммы нельзя вводить новый тип, так нельзя писать:

 

function Max(A: array [1..50] of real): real;

Правильно в основной программе ввести новый тип, а затем использовать его в заголовке подпрограммы:

 

Type MASS = array [1..50] of real;

function Max(A: MASS): real;

· Формальное описание процедуры

procedure <имя процедуры> ( <список формальных параметров> );

<секция описания локальных переменных>;

begin

<секция операторов>

end;

В отличие от формального описания функции, в заголовке процедуры отсутствует понятие <тип>, так как имя процедуры не является носителем формального результата. Результаты выполнения процедуры могут быть множественны и указываются в списке формальных параметров в качестве параметров-переменных.

В качестве формальных параметров наиболее часто встречаются параметры-значения и параметры-переменные.

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

При передаче параметров-переменных в подпрограмму фактически через стек передаются их адреса в порядке, объявленном в заголовке подпрограммы. Следовательно, подпрограмма имеет доступ к этим параметрам и может их изменять, поэтому результаты выполнения процедуры должны указываться в списке формальных параметров именно в качестве параметров-переменных.

Параметр-переменная указывается в заголовке процедуры аналогично параметру-значению, но только перед именем параметра записывается ключевое слово Var.

procedure MaxMin(A:MASS; Var Max,Min:real);

Здесь A - параметр-значение; Max, Min - параметры-переменные.

· Вызов процедуры

Для вызова процедуры из основной программы или другой подпрограммы используется отдельный оператор следующего вида:

<имя процедуры> ( <список фактических параметров> );

Требования к списку фактических параметров в процедуре предъявляются те же, что и в подпрограмме-функции.

Пример

Var N: integer;

S: real;

{Подпрограмма-процедура вычисления суммы ряда

1/3 + 1/5 + 1/7 +... + 1/(2*I+1) }

 

procedure Summa(Kol:integer; Var Sum:real);

Var I:integer;

Begin

Sum:=0;

for I:=1 to Kol do

Sum:=Sum+1/(2*I+1)

end;

{Основная программа}

Begin

Readln(N);

Summa(N,S); {вызов процедуры}

Writeln(‘ Сумма ряда =’, S)

End.



Поделиться:


Последнее изменение этой страницы: 2016-12-13; просмотров: 293; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.23.101.60 (0.03 с.)