Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000555.doc
Скачиваний:
31
Добавлен:
30.04.2022
Размер:
19.12 Mб
Скачать

2.4. Массивы

2.4.1. Одномерные массивы

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

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

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

TYPE

имя =Array [мин_значение_индекса.. макс_значение_индекса] OF базовый тип;

где ARRAY, OF - ключевые слова, имя - имя типа,

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

Затем нужно объявить переменные типа массив.

VAR имя_переменной_массива:тип_массива;

Для сокращения записи допускается объединять эти два описания в одно:

VAR имя_переменной_массива:

ARRAY [мин_значение_индекса.. макс_значение_индекса] OF базовый тип;

Отдельный элемент массива записывается в виде: имя_переменной_массива[индекс]

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

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

Одномерный массив — это массив, базовым типом которого является скалярный тип. Другими словами, одномерный массив составлен из элементов скалярного типа. Другое название одномерного массива- вектор.

Количество элементов массива называют длиной или размером массива (не путать с размерностью массива, о которой далее).

Например, описание

type mas = array [0..99] of real;

var X: mas;

задает массив (тип массива) из 100 действительных чисел и переменную X типа массив. Х[0] означает самый первый элемент массива, Х[1] — следующий за ним и т.д. При этом к Х[0],Х[1],..., Х[99] нужно относиться как к отдельным переменным базового типа, в данном случае real.

В качестве индекса можно использовать любое выражение со значениями из отрезка 0..99.

Описание

var Y: array [-100..-1] of integer;

задает массив из 100 целых чисел. Х[-100] означает самый первый элемент массива, Х[-99] — следующий за ним и т.д.

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

Арифметические действия, ввод и вывод нужно выполнять над отдельными элементами массива. Элемент массива выделяется конкретным значением индекса.

Пример. Ввод значений в массив Ml, присвоение их массиву М2 и вывод.

program massiv;

type masl = array [1..10] of integer;

var

Ml, M2: masl;

i: integer;

begin

i:=0;

repeat

i:=i+l;

read (Ml[i])

until i= 10;

M2:=M1;

for i:=l to 10 do

writeln(Ml[i],' ', M2[i]); end.

Пример. Найти наибольший элемент в заданном массиве.

program maximum; const N=100;

type masl=array[l.. N] of real;

var a:masl; x:real; i, imax:integer; begin

for i:=l to N do read(a[i]); (*ввод элементов массива*)

max:=a[l]; imax:=l;

for i:=l to N do

if a[i]>max then

begin

max:=a[i]; (*найденный наибольший элемент*) imax:=i; (*индекс найденного наибольшего элемента *)

end;

Writeln('наибольший элемент ', max, ' в позиции ',imax); end.

Пример. По введенной дате определить номер дня в году (для не високосного года)

program day_in_year;

type masl = array[1..12] of integer;

var number_day:masl;

date,day,month,i: integer; begin

(* Количество дней в месяцах*)

number_day[1] :=31; (*январь*)

number_day[2]:=28; (*февраль*)

number_day[3] :=31; (*март*)

number_day[4]:=30; (*апрель*)

number_day[5] :=31; (*май*)

number_day[6]:=30; (*июнь*)

number_day[7]:=31; (*июль*)

number_day[8] :=31; (*август*)

number_day[9]:=30; (*сентябрь*)

number_day[10]:=31; (*октябрь*)

number_day[ll]:=30; (*ноябрь*)

number_day[12]:=31; (*декаръ*)

write('Введите дату и номер месяца ');

read(date, month);

day:=0;

for i:=l to month - 1 do

day:=day+number_day[i]; day:=day+date;

writeln('Hoмep дня в году ',day); end.

Пример. Перевести положительное целое число из десятичной системы счисления в двоичную.

program dec_in_bit;

const max_bit=16; (*Максимальное количество двоичных*) (* разрядов в числе*)

var bits:array[l..max_bit] of integer; (*Массив для хранения*) (*двоичной формы числа*)

n,k,i:integer;

begin

write('Введите число '); read(n);

for k:=l to max_bit do bits[k]:=0; нижеi:=0;

repeat i:=i+l;

bits[i]:=n mod 2;

n := n div 2;

until n=0;

write('Число в двоичной форме '); for k:=i downto 1 do write(bits[k]); writeln;

end.