Использование значений массивов, ввод и вывод значений массивов

Оглавление

Массивы. Одномерные массивы. Понятие о массиве. 1

Описание массивов. 2

Действия над элементами массива. 3

Использование значений массивов, ввод и вывод значений массивов. 4

Двумерные массивы.. 4

Полная переменная. 5

Примеры использования массивов. 5

Контрольные вопросы.. 7

Комбинированный урок №8

Тема:Массивы: определение, описание, размещение в памяти, использование.

Цель: дать определение массиву, сформировать знания о массивах, приемы составления блок-схем алгоритмов, изучить приемы составления программ с использованием массивов.

Массивы. Одномерные массивы.Понятие о массиве

МАССИВ - упорядоченная группа фиксированного количества переменных одного типа, имеющая общее имя. "Группа переменных" в данном смысле означает, что каждый элемент… "Упорядоченная"- означает, что переменные в массиве хранятся не хаотично, а в установленном порядке, по…

Type

Klass = (К1, К2, КЗ, К4) ;

Znak = array [1..255] of char;

Var

Ml: Znak; {Тип Znak предварительно описан в разделе типов}

М2: array[1..60] of integer; {Прямое описание массива М2}

МЗ: array[1..4] of Klass;

Mas: array[1..4] of integer;

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

Двумерные массивы:

Type

Vector = array[1..4] of integer;

Massiv = array[1..4] of Vector;

Var

Matrix : Massiv;

Ту же структуру можно получить, используя другую форму записи:

Var

Matrix : array[1..4,1..4] of integer ;

Для описания массива можно использовать предварительно определенные константы:

Const

G1 = 4; G2 = 6;

Var

MasY: array[1..Gl, l..G2] of real;

Элементы массива располагаются в памяти последовательно.

Например, если имеется массив: A:array[1..5,1..5] of integer;

то в памяти элементы массива будут размещены по возрастанию адресов:

А[1,1] А[1,2] … А[1,5] А[2,1] А[2,2] … А[5,5]

Контроль правильности значений индексов массива может проводиться с помощью директивы компилятора R. По умолчанию директива R находится в пассивном состоянии {$R-}. Перевод в активное состояние вызывает проверку всех индексных выражений на соответствие их значений диапазону типа индекса. Действия над массивами

Для работы с массивом как единым целым используется идентификатор массива без указания индекса в квадратных скобках. Массив может участвовать только в операциях отношения "равно", "не равно" и в операторе присваивания. Массивы, участвующие в этих действиях, должны быть идентичны по структуре, т. е. иметь одинаковые типы индексов и одинаковые типы компонентов.

Например, если массивы А и В описаны как

Var

А, В : array[1..20] of real;

то применение к ним допустимых операций даст следующий результат:

Выражение Результат

А=В True, если значение каждого элемента массива А равно соответствующему значению элемента массива В

А<>В True, если хотя бы одно значение элемента массива А не равно значению соответствующего элемента массива В

А:=В Все значения элементов массива В присваиваются соответствующим элементам массива А. Значения элементов массива В остаются неизменны.

Действия над элементами массива

После объявления массива каждый его элемент можно обработать, указав идентификатор (имя) массива и индекс элемента в квадратных скобках. Например, запись Mas[2], Vector[10] позволяет обратиться ко второму элементу массива Mas и десятому элементу массива Vector. При работе с двумерным массивом указываются два индекса, с n-мерным массивом - n индексов. Например, запись Matr[4,4] делает доступным для обработки значение элемента, находящегося в четвертой строке четвертого столбца массива Matr.

Индексированные элементы массива называются индексированными переменными и могут быть использованы так же, как и простые переменные. Например, они могут находиться в выражениях в качестве операндов, использоваться в операторах for, while, repeat, входить в качестве параметров в операторы Read, Readin, Write, Writeln; им можно присваивать любые значения, соответствующие их типу.

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

Var

A,D : array[l..4] of real;

В : array[1..10,1..15] of integer;

I, J, К : integer;

S : real;

Инициализация (присваивание начальных значений) массива заключается в присваивании каждому элементу массива одного и того же значения, соответствующего базовому типу. Наиболее эффективно эта операция выполняется с помощью оператора for, например:

Инициализация элементов одномерного массива А:

for I := 1 to 4 do A[I] := 0;

Для инициализации двумерного массива обычно используется вложенный оператор for, например:

Инициализация двумерного массива В:

for I := I to 10 do

for J := 1 to 15 do B[I,J]:= 0;

Использование значений массивов, ввод и вывод значений массивов

Для ссылки на отдельные элементы массива используется переменная с индексом: Имя массива[индекс].Чтобы получить доступ к конкретному элементу массива, в качестве индекса можно использовать не только целое число, соответствующее порядковому номеру этого элемента в массиве, но и выражение, значение которого равно упомянутому целому числу.

Например, при обращении к элементам некоторого массива "A: Array[1..100] of Real", в качестве индекса можно использовать любое арифметическое выражение, значением которого будет целое число из диапазона 1..100:

A[56]; A[i+7]; A[i div j] .

Read(A[3]); { ввод значение третьего элемента вектора А } Read(B[6,9]);{ ввод значение элемента, расположенного в шестой строке девятого… Оба значения набираются на одной строке экрана, начиная с текущей позиции расположения курсора.

Var

mas : array [1..10] of integer; {Описание одномерного массива с именем mas, состоящего из 10

элементов типа integer}

n,i : integer; {n-количество элементов массива, i-счетчик в цикле for}

BEGIN

clrscr;

writeln('Введите количество элементов массива не больше 10: ');

readln(n);

for i:=1 to n do {ввод элементов массива}

Begin

writeln('Введите ',i,' элемент массива');

readln(mas[i]);

end; {конец ввода}

writeln('Введенный массив: ');

for i:=1 to n do {вывод элементов массива}

write(' ',mas[i],' ');

readkey; {конец вывода}

END.

4. Пример программы ввода-вывода двумерного массива

program primer2;

uses crt;

Var

i,j,n,m:integer;

massiv:array[1..10,1..10] of integer; {описан двумерный массив с именем massiv}

BEGiN

clrscr;

write('Введите количество строк массива (не больше 10): ');

read(n); {n-количество строк}

write('Введите количество столбцов массива (не больше 10):');

read(m); {m-количество столбцов}

for i:=1 to n do {ввод элементов двумерного массива}

Begin

For j:=1 to m do

read(massiv[i,j]);

end; {конец ввода}

writeln('Введенный массив: ');

for i:=1 to n do {вывод элементов двумерного массива}

Begin

For j:=1 to m do

write(massiv[i,j]:5);

end; {конец вывода}

readkey;

END.

5.В квадратной матрице n-го порядка найти и вывести на экран строку, сумма элементов которой максимальна.

Program matrica;

Сonst Nmax = 20;

Var A : Array [1..nmax, 1..nmax ] Of Real;

i,j,N,Nstr : Byte;

S,Smax : Real;

Begin

Writeln ('Ввести порядок матрицы <= ',nmax,' )');

Readln (n);

For i:=1 To N Do

Begin

Writeln ('Введите элементы ',i,'-й строки ');

For j:=1 To N Do Read (A[i,j]);

S:=0;

For j:=1 To N Do S:=S + A[i,j]; {накопление суммы элементов матрицы}

If i=1 Then

Begin

Nstr:=1; {если это первый элементстолбца, то запомнить в S максимальное значение суммы}

{элементов строки}

Smax:=S;

End

Else if S > Smax Then

Begin {сумма элементов текущей строки >, то заменить на бóльшую для дальнейшего сравнения}

Nstr:=i;

Smax:=s;

End;

End;

Writeln ( 'Номер строки = ',nstr );

For j:=1 To N Do Write (A[nstr,j]:10:3);{вывод элементов указанной строки}

Writeln;

End.

Контрольные вопросы

1. Массивы. Основные понятия. Приведите определение массива.

2. Формат записи массивов. Описание одномерного и двумерного массивов.

3. Действия над массивами. Действия над элементами массивов.

4. Как описать типизированную константу типа «многомерный массив»?

5. Какой тип данных можно использовать в качестве индексов элементов массивов?

6. Примеры описания и ввода-вывода линейного и двумерного массивов.