Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Массив -  это множество однотипных элементов, объединённых общим именем и занимающих в компьютере определённую область памяти.




Количество элементов в массиве всегда конечно.

В качестве элементов массива можно использовать любой тип данных, поэтому вполне правомерно существование массивов записей, массивов указателей, массивов строк, массивов и т.д. Элементами массива могут быть данные любого типа, включая структурированные. Для описания массива предназначено словосочетание array of (массив из).

Элементы массива пронумерованы, и обратиться к каждому из них можно, указав один из нескольких индексов. Вектор – пример одномерного массива, в котором элементы нумеруются одним индексом. Если в массиве хранится таблица значений (матрица), его элементы нумеруются двумя индексами.

Характеристики массива:

- тип – общий тип элементов массива;

- размерность – количество индексов массива;

- диапазон – количество допустимых значений каждого индекса;

- форма – совокупность размерности и диапазонов.

Массив должен быть объявлен в разделе описания переменных:

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

Тип элементов массива может быть любым, кроме файлового; тип индексов любой порядковый тип.

Пример:

A: array [1..5, 1..5] of real;

X: array [1..10] of integer;

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

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

Var A, D: ARRAY [1..4] OF REAL;

B: ARRAY [1..10, 1..15] OF INTEGER;

I, J, K: INTEGER;

S:REAL;

Паскаль не имеет средств ввода-вывода элементов массива сразу, поэтому ввод-вывод значений производится поэтапно. Значения элементам массива можно присвоить с помощью оператора присваивания, однако чаще всего они вводятся с экрана с помощью оператора read или readln с использованием оператора цикла for:

For i:=1 to 4 do readln(a[i]);

Аналогично значения элементов двумерного массива вводятся с помощью сложенного оператора for:

For i:=1 to 10 do

For j:=1 to 15 do

   Read(b[I, j]);

Можно ввести значения и отдельных элементов, а не всего массива. Так операторами read(A[3]), readln(b[6, 9]) вводятся значения третьего элемента вектора А и значения элемента, расположенного в шестой строке девятого столбца матрицы В.

Вывод значений элементов массива выполняется аналогичным образом, но используются операторы write и writeln:

For i:=1 to 4 do

Write(A[i]); writeln;

Или

For i:=1 to 10 do begin

For j:=1 to 15 do

   Write(b[I, j]); writeln; end;

Иногда требуется осуществить поиск в массиве каких-либо элементов, удовлетворяющих неким условиям. Пусть, например, надо выяснить, сколько элементов массива А имеют нулевое значение. Для ответа на этот вопрос введем дополнительную переменную к и воспользуемся операторами for и if:

K:=0;

For i:=1 to 4 do

If a[i]=0 then k:=k+1;

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

Пример 1.Составить программу, которая формирует двумерный массив по формуле и выводит его на экран.

Program massiv_1;

Var Mas:array[1..5, 1..5] of real;

I, j:integer;

Begin

For i:1 to 5 do begin

   For j:=1 to 5 do begin

       Mas[I,j]:=sin(i*j)+cos(i/j);

       Write(mas[I, j]:6:2);

   End;

End;

End.

Пример 2. Составить программу, которая формирует вектор случайных чисел, выполняет поиск максимального элемента, а затем выводит на экран его значение и порядковый номер в векторе.

Program massiv_2;

Var mas:array[1..20] of integer;

I, max, nim:integer;

Begin

Randomize;

For i:1 to 20 do begin

    Mas[i]:=random(99)+1;

   Write(mas[i]:6);

End; writeln;

Max:=-100000000;

For i:=1 to 20 do

   If mas[i]>max then begin

       Max:=mas[i]; nim:=I;

   End;

Writeln(‘max=’, max:6, ‘ nom=’, nom:2);

End.

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

Program massiv_3;

Const n=10;

M:array[1..n] of integer=(9, 11, 12, 3, 19, 1, 5, 17, 10, 18);

Var s, I, j:integer;

Begin

For i:=1 to n-1 do

   For j:=i+1 to n do

       If m[i]>m[j] then begin

           S:=m[i];

           M[i]:=m[j];

           M[j]:=s;

       End;

For i:=1 to n do

   Write(m[i]:6); writeln;

End.

Пример 4. Составить программу, которая сортирует по убыванию двумерный массив целых чисел (сортировка по строкам).

Program massiv_4;

Const n=4;

M:array[1..n, 1..4] of integer=((3,2,4,1),(5,7,6,8),(9,11,10,12),(15,14,16,13));

Var i, j, k:integer;

Buffer:integer;

Begin

For k:=1 to n do

   For j:=1 to n-1 do

       For j:=i+1 to n do

           If m[k, i]<m[k, j] then begin

               Buffer:=m[k, i];

               M[k, i]:=m[k, j];

               M[k,j]:=buffer;

           End;

For i:=1 to n do begin

   For j:=1 to n do

       Write(m[i, j]:6); writeln;

End;

End.

Пример 5. Составить программу, которая формирует вектор и вычисляет значение среднего арифметического его элементов, больших, чем 10.

Program massiv_5;

Const n=5;

Var d:array [1..n] of integer;

I, k:integer;

S:real;

Begin

Randomize;

For i:=1 to n do begin

   D[i]:=random(100);

   Write(d[i]);

End; writeln;

K:=0; s:=0;

For i:=1 to n do

   If d[i]>10 then begin

       S:=s+d[i];

       K:=k+1;

   End;

S:=s/k;

Writeln(‘s=’, s:6:2);

End.

Множество – это структурированный тип данных, представляющий собой набор взаимосвязанных по какому-либо признаку или группе признаков объектов, которые можно рассматривать как единое целое. Каждый объект в множестве называется элементом множества. Все элементы должны принадлежать одному из скалярных типов, кроме вещественного. Этот тип называется базовым типом множества. Базовый тип задается диапазоном или перечислением. Область значений типа множества – набор всевозможных подмножеств, составленных из элементов базового типа. Значения элементов указываются в квадратных скобках: [1,2,3,4], [`a`,..`z`]. Если множество не имеет элементов, оно называется пустым и обозначается как [ ]. Количество элементов множества называется мощностью.

Запись - это структурированный тип данных, состоящий из фиксированного числа компонентов одного или нескольких типов. Определение типа записи начинается идентификатором record и заканчивается словом end. Т.е. запись представляет собой наиболее общий и гибкий тип данных, т.к. может наиболее полно охарактеризовать используемый объект.

Файлом называется совокупность данных, записанная во внешней памяти под определенным именем. Каждый файл на диске имеет обозначение, которое состоит из двух частей: имени (от 1 до 8 символов) и расширения (от 1 до 3 символов), например:

Command.com, turbo.exe, autoexec.bat.

Подпись автора _______ К.Т. Тынчеров

«_____» ____________________ 2009 г.

Лекция рассмотрена на заседании

кафедры ИТМЕН

 «_____» _________________ 2009 г.

протокол № ______

 










Последнее изменение этой страницы: 2018-05-10; просмотров: 200.

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