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-циклов.

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


 

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

28911. Человечество в конце XX-начале XXI веков 24 KB
  мир всё в большей степени взаимозависимый столкнулся с угрозой которая может быть предотвращена только общими усилиями. Всё больше и больше кажется что мир должен либо исчезнуть либо выжить как единое целое. Глобальная угроза которую сулит разрушение окружающей среды и истощение материальных и энергетических ресурсов была не первым материальноэнергетическим кризисом с которым столкнулся мир. мир снова застрял в историческом узком месте выбраться из которого можно при помощи новых технологий включая исследования в области...
28912. Становление новой российской государственности 45.5 KB
  Проведенные изменения пришли в противоречие с положениями Конституции РСФСР 1977 года. Ельцин в обращении к гражданам России объявил о введении в стране президентского правления вплоть до принятия новой Конституции. На основании решений референдума Президент приступил к разработке новой Конституции. Верховный Совет данный указ президента признал не соответствующим Конституции и в свою очередь принял решение о смещении президента как нарушившего Конституцию.
28913. Радикальная социально-экономическая модернизация 43.5 KB
  Конкурентный рынок мог утвердиться только на базе частной собственности поэтому необходимо было приватизировать передать в частную собственность значительную часть предприятий ограничить роль государства как хозяйствующего субъекта. Следующим этапом реформ стала приватизация государственных предприятий. Согласно ей было проведено акционирование государственных предприятий 51 акций распределялись между работниками предприятий а остальные поступали в открытую продажу: каждому россиянину выдавался приватизационный чек ваучер стоимостью...
28914. Основные направления внешней политики России в новой геополитической ситуации (1991–2002 гг.) 43.5 KB
  Провозглашалась невозможность решения международных проблем силовыми методами. Универсальным способом решения международных вопросов объявлялся баланс интересов приоритет общечеловеческих ценностей над классовыми. Конструктивное решение международных проблем возможно только путем мирных переговоров путем учета законных национальных интересов всех стран мира. В этих условиях неимоверно возрастает роль ООН в решении международных проблем.
28915. Февральская революция 1917 г. и свержение самодержавия 38.5 KB
  Специфика исторического процесса в России спрессовала во времени и пространстве фундаментальные проблемы общественного преобразования разных эпох. Особую остроту и зрелость революционной ситуации в России к началу 1917 г. Заявив что судьбу политического строя в России должно решать Учредительное собрание. Самодержавие в России окончательно пало.
28916. Россия от февраля до октября 1917 г. Альтернативы развития страны 43.5 KB
  В ходе февральской революции в России сложилось двоевластие: временное правительство – орган диктатуры буржуазии и помещиков; советы рабочих солдатских депутатов – орган власти трудящихся. Возникает вторая альтернатива: установление жесткой диктаторской власти опирающейся на военщину. В конце августаначале сентября Петроградский и Московский Советы приняли резолюцию о взятии всей полноты власти. В ответ была предпринята попытка усиления центральной власти.
28917. Гражданская война в России (1918-1920 гг.) 42.5 KB
  Гражданская война в России 19181920 гг. €œСоюз защиты Родины и свободы€ под руководством эсера Савинкова €œСоюз освобождения России€ объединивший кадетов меньшевиков эсеров. На юге России и Северном Кавказе – генералы Алексеев и Корнилов начали формировать Добровольческую армию ставшую основой белого движения. Страны Антанты подписали соглашение о непризнании Брестского мира и будущем разделе России на сферы влияния.
28918. Формирование однопартийного политического режима (1917-1940 гг.) 39.5 KB
  Это привело к подчинению государственных структур партии. Этот процесс шел параллельно с тенденцией превращения диктатуры пролетариата в диктатуру партии. В условиях однопартийной системы Советы превратились в придаток партии. Советы же оказываются лишь рычагом в руках партии для управления государством.
28919. Социально-экономическая политика советского государства (1921-1941 гг.) 41.5 KB
  Речь шла о необходимости превращения СССР из страны ввозящий машины и оборудование в страну производящую их. На рубеже 2030 годов руководство страны приняло курс на форсирование индустриального развития. Руководство страны решило выдвинуть лозунг – догнать и перегнать в кратчайшие сроки в техникоэкономическом отношении передовые капиталистические страны. За ним стояло желание в кратчайшие сроки любой ценой ликвидировать отсталость страны и построить новое общество.