72649

Понятие массива

Доклад

Информатика, кибернетика и программирование

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

Русский

2014-11-26

18.25 KB

2 чел.

 Понятие массива

Массивом называется совокупность переменных одного типа, обозначаемая именем с индексами в круглых скобках. Например, вектор с компонентами u1, u2, ..., un, можно представитьодномерным массивом

U(I), 1≤I≤N,

а матрицу с компонентами Ai,j можно представить двумерным массивом

A(I,J), i≤ I ≤ N, 1≤ J ≤ M;

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

Оператор описания массива DIMENSION

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

Примеры:

DIMENSION А(10,30),BK(500),IU(40)

Здесь первый массив — двумерный, а второй и третий — одномерные. Первый индекс в массиве А изменяется от 1 до 10, второй от 1 до 30. Во втором и третьем массивах индексы из меняются соответственно от 1 до 500 и от 1 до 40.

 Совмещение описания массива с описанием типа переменных

Описание размерности массива может быть совмещено с описанием типа переменных. Поэтому запись

REAL KLM, XF

INTEGER FR, SS

DIMENSION KLM(15,15),FR(100),XF(10),SS(5,5)

эквивалентна записи

INTEGER FR(100), SS(5,5)

REAL KLM(15,15), XF(10)

Описание массива в программе может быть произведено только один раз.

Оператор PARAMETER

При описании массивов можно предварительно присвоить константам символические имена. Для этого используется оператор PARAMETER вида

PARAMETER (<имя>=<константа>,<имя>=<константа>,...)

Здесь <имя> — символическое имя, образованное по правилам Фортрана. Тогда, например, запись

DIMENSION A1(100,200), A2(100,200), B(200,100)

эквивалентна записи

PARAMETER (N1=100, N2=200)

DIMENSION A1(N1,N2)A2(N1,N2),B(N2,N1)

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

1.6. Обращение к элементу массива

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

V=A(I,J)+B(3.2*L+7)

В этом случае целые переменные I,J,L должны быть заданы в предыдущей части программы.

Ввод и вывод массива

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

• ввод-вывод массива по имени;

• с помощью цикла.

Первый способ (пример)

DIMENSION A(10), B(3,4)

READ(*,*) A,B

В этом случае должны быть последовательно введены 10 чисел которые соответствуют элементам массива А, а затем введены 12 чисел, которые соответствуют элементам массива В, согласно их последовательности расположения в памяти.

Второй способ (пример)

DIMENSION А(10), В(3,4)

READ(*,*) N,L,M,(A(I),I=1,N), ((B(I,J),J=1,L),I=1,M)

В этом случае числа N,L,M подчиняются ограничениям N≤10, L≤4, М≤3, поскольку в противном случае мы выйдем за границы расположения элементов массивов. Этот способ удобнее, в программе используется меньшее количество элементов массива, нежели то, которое задано в операторах размерности. В этом примере сначала вводятся три целых числа N,L,M, и затем последовательно N элементов массива А, а затем L*M элементе массива B в последовательности

В(1,1),В(1,2),...В(2,1),В(2.2),..

В этом случае последовательность ввода элементов В не совпадает с порядком их хранения в памяти. Если последний оператор записать как

READ(*,*)N,L,M,(A(I),I=1,N),((B(I,J),I-1,M),J=1,L)

то порядок ввода элементов массива B и порядок их размещения в памяти будет одинаковый.

Вывод массива отличается от их ввода только заменой оператора READ на оператор WRITE.

Использование массивов

Рассмотрим следующую задачу.

Ввести с клавиатуры N≤100 чисел и найти их сумму/произведение. Соответствующая программа может иметь вид

Сумма

Произведение

DIMENSION А(100)

READ (*,*)N,(A(I),I =1,N)

S=0.0

DO 5 I=1,N

S=S+A(I)

5 CONTINUE

WRITE (*,*)S

STOP

END

DIMENSION А(100)

READ (*,*)N,(A(I),I =1,N)

P=1.0

DO 5 I=1,N

P=P*A(I)

5 CONTINUE

WRITE (*,*)P

STOP

END

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

Массив характеризуется числом измерений, которых может быть не более семи. Число измерений массива называется его рангом. Массив ранга 1 называют вектором, а ранга 2 - матрицей. Объект ранга 0 является скаляром.

Число элементов массива называется его размером. Также массив характеризуется формой, которая определяется его рангом и протяженностью (экстентом) массива вдоль каждого измерения. Например, оператор

real, dimension (2, 3, 10) :: b

объявляет массив b ранга 3, размера 2*3*10 = 60 и формы (2, 3, 10). Протяженность массива по первому измерению равна двум, по второму - трем, а по третьему - десяти.

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

real, dimension(4:5, -1:1, 0:9) :: с ! Форма массива (2, 3, 10)

Ранг, форма и размер массивов b и с совпадают. Такие массивы называются со-

гласованными.

Нижняя граница и последующее двоеточие при объявлении массива могут быть опущены, тогда по умолчанию нижняя граница принимается равной единице.

Способы объявления массивов

Помимо использованного способа массив можно объявить и без применения атрибута DIMENSION, например все последующие объявления дают двумерный целочисленный массив:

integer, parameter :: m = 2, n = 4

integer a(m, n) ! или a(1:m, 1:n)

или

integer b

dimension b(m, n) ! Оператор DIMENSION

или

integer, dimension(m, n) :: с ! Атрибут DIMENSION

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

integer, allocatable :: а(:, :)

или

integer, dimension(:, :) :: b

allocatable b ! Оператор ALLOCATABLE

или

integer с

dimension c(:, :) ! Оператор DIMENSION

alocatable с

или

integer, alocatable, dimension (:, :):: d

Конструктор массива

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

(/ список-значений /)

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

Пример массива - буквальной константы: (/1,2, 3, 4, 5 /). Такой массив может быть использован в выражении, например:

integer a(5)

а = 2 * (/ 1, 2, 3, 4, 5 /)

write(*, *) a ! 2 4 6 8 10

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

Встроенный DO-цикл имеет вид:

(выражение, dovar = start, stop [, inc])

dovar - целочисленная скалярная переменная (параметр цикла). start, stop, inc -целочисленные константные выражения, определяющие диапазон и шаг изменения dovar. Если inc отсутствует, то шаг устанавливается равным единице.

Встроенный DO-цикл добавляет в список значений

MAX(INT(stop - start + inc)/inc), 0)

элементов. Выражение может содержать dovar. Возможна организация вложенных встроенных DO-циклов.

Если в списке появляется многомерный массив, то его значения берутся в порядке их размещения в памяти ЭВМ.


 

А также другие работы, которые могут Вас заинтересовать

66392. РОЗШИРЕННЯ МОЖЛИВОСТЕЙ ВІБРАЦІЙНОЇ ОБРОБКИ ПЛОСКИХ ДЕТАЛЕЙ НА ОСНОВІ УДОСКОНАЛЕННЯ ТЕХНОЛОГІЧНОЇ СИСТЕМИ 724.14 KB
  На сьогодні одним зі шляхів розвитку машинобудування є виготовлення деталей машин високої якості, довговічність і надійність яких значною мірою залежать від точності їх виготовлення, оптимальних фізико-механічних властивостей поверхневих шарів поверхонь, що сполучаються.
66393. МАТЕМАТИЧНІ МЕТОДИ ДІАГНОСТУВАННЯ ФІНАНСОВОЇ СТАБІЛЬНОСТІ БАНКІВСЬКОГО СЕКТОРУ УКРАЇНИ 283 KB
  В умовах розвитку ринкової економіки в Україні та зростання інтеграції до світової економічної спільноти першочергового значення набуває проблема підвищення фінансової стабільності банківського сектору країни що включає в себе такі системні характеристики...
66394. Клінічний перебіг гострого калькульозного пієлонефриту у хворих на цукровий діабет та удосконалення його комплексного лікування з урахуванням стану вегетативної нервової системи (клініко-експериментальне дослідження) 990.5 KB
  Однією з найбільш важливих, складних проблем в урології та медицині в цілому є інфекційно-запальні ускладнення, значення яких з відомих причин медичного, соціального, економічного характеру з часом зростає. Частота їх розвитку стає загрозливою, що знаходить відображення...
66395. ФІНАНСОВА СТРАТЕГІЯ ТОРГОВЕЛЬНИХ ПІДПРИЄМСТВ В УМОВАХ НЕСТАБІЛЬНОГО ЕКОНОМІЧНОГО СЕРЕДОВИЩА 315.5 KB
  Розвитку фінансової діяльності торговельних підприємств на сучасному етапі притаманний ряд недоліків. Ці недоліки фінансової діяльності суттєво знижують рівень її ефективності внаслідок чого протягом останніх років більш ніж третина торговельних підприємств є збитковими.
66396. ВНУТРІШНЬОАРТЕРІАЛЬНА ПОЛІХІМІОТЕРАПІЯ РАКУ МОЛОЧНОЇ ЗАЛОЗИ. УСКЛАДНЕННЯ, ЇХ ПРОФІЛАКТИКА ТА ЛІКУВАННЯ 272 KB
  Місцеворозповсюджені форми раку молочної залози вважаються прогностично несприятливими і лише впровадження сучасних схем хіміогормонотерапії в клінічну практику зокрема внутрішньоартеріальних інфузій хіміопрепаратів дозволило декілька покращити результати лікування хворих.
66397. Забезпечення продуктивності багатономенклатурних механообробних виробництв на основі синтезу структур технологічних систем 611 KB
  Існуючий стан машинобудування в Україні не достатньо забезпечує необхідні показники конкурентоспроможності продуктивності та якості техніки. Одним із напрямків підвищення ефективності таких виробництв є створення механообробних технологічних систем ТС що сполучають в собі суперечливі властивості високої продуктивності та гнучкості.
66398. ОСОБЛИВОСТІ МОРФОГЕНЕЗУ НАДНИРКОВИХ ЗАЛОЗ ПІД ВПЛИВОМ НА ОРГАНІЗМ ТОЛУОЛУ 232.5 KB
  У зв'язку з цим актуальним компонентом нашої роботи став пошук препаратів здатних нормалізувати структуру надниркових залоз щурів які перенесли вплив толуолу. Встановити особливості будови надниркових залоз статевозрілих щурівсамців...
66399. ГЕНДЕРНА СПЕЦИФІКА СТАНОВЛЕННЯ ПРОФЕСІЙНОГО ІНТЕЛЕКТУ У СТУДЕНТІВ ВИЩОГО ТЕХНІЧНОГО НАВЧАЛЬНОГО ЗАКЛАДУ 183 KB
  Сучасному молодому фахівцю інженерної галузі необхідно вміти продуктивно та творчо розв’язувати завдання й вирішувати виробничі проблеми виявляти здатність професійно інтелектуально розвиватися....
66400. РОЗВИТОК ТЕХНІЧНОГО МИСЛЕННЯ У МАЙБУТНІХ ВЧИТЕЛІВ ТЕХНОЛОГІЙ В ПРОЦЕСІ ВИВЧЕННЯ СПЕЦІАЛЬНИХ ДИСЦИПЛІН 252.5 KB
  Характер технічної оснащеності і наявних технологій у їх сукупності відображають рівень інтелектуального, духовного потенціалу суспільства, можливості самореалізації кожної людини. Безперечно, що підростаючому поколінню потрібно оволодівати знаннями про сутність технологічних перетворень навколишньої дійсності.