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

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


 

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

10475. Краткая теория PHP и введение в базы данных на примере Mysql 2.93 MB
  Краткая теория PHP и введение в базы данных на примере Mysql Введение Цель: Сайт с помощью PHP блоков можно собирать как конструктор и за счет блоков можно изменить любую информацию на сайте созданном с помощью PHP сразу на всех его страницах. Вся информация сайта
10476. Метан - найпростіша органічна сполука, його склад, електронна й структурна формули, тетраедрична будова молекули. Фізичні властивості, поширення в природі 806 KB
  Тема. Метан найпростіша органічна сполука його склад електронна й структурна формули тетраедрична будова молекули. Фізичні властивості поширення в природі Навчальна мета уроку: через систему пізнавальних завдань сформувати знання про склад будову метану його фіз
10477. Мило, його склад, мийна дія. Синтетичні мийні засоби 70.5 KB
  Тема: Мило його склад мийна дія. Синтетичні мийні засоби. Мета: навчальна: сформувати уявлення про склад мила і мийних засобів їх мийну дію порівняти властивості мила і мийних засобів; закріпити знання про властивості карбонових кислот жирів естерів твердість води...
10478. Мій перший педагогічний досвід. Роздуми про мій перший урок 39 KB
  Мій перший педагогічний досвід. Роздуми про мій перший урок. 13.02.2009р. 10клас âНасичені вуглеводні. Прийшовши до школи я була дуже рада що мені випала можливість проводити уроки. Перед своїм першим уроком я готувалась два дні заздалегідь. Перше що було у моїй ...
10479. Місце елементів-металів у періодичній системі хімічних елементів Д.І. Менделєєва та особливості будови їх атомів 57.5 KB
  Тема: Місце елементівметалів у періодичній системі хімічних елементів Д.І. Менделєєва та особливості будови їх атомів. Металічний хімічний звязок. Загальні фізичні властивості металів. Навчальна мета: спираючись на знання періодичного закону та типи хімічних звяз...
10480. Насичені вуглеводні. Номенклатура 201 KB
  Дата: Тема: Урок залік з теми Насичені вуглеводні. Номенклатура. Тип уроку: урок застосування знань умінь та навичок. Навчальна мета: Конкретизувати та поглибити знання учнів з теми Насичені вуглеводніâ. Навчити учнів застосовувати загальні зако...
10481. Семінар з теми Ненасичені вуглеводні етиленового ряду 177 KB
  Дата: Тема: Семінар з теми Ненасичені вуглеводні етиленового ряду Навчальна мета: Конкретизувати та поглибити знання учнів з теми Ненасичені вуглеводні етиленового рядуâ; Навчити учнів застосовувати загальні закономірності для пояснення властивосте
10482. Ненасичені вуглеводні. Етилен як представник ненасичених вуглеводнів. Склад молекули, електронна та структурна формули, sp2-гібридизація електронів, σ- та π-звязки 63 KB
  Тема: Ненасичені вуглеводні. Етилен як представник ненасичених вуглеводнів. Склад молекули електронна та структурна формули sp2гібридизація електронів σ та πзвязки. Навчальна мета: сформувати поняття про новий гомологічний ряд алкени; ознайомити з новим видом гі...
10483. Ненасичені вуглеводні. Етилен як представник ненасичених вуглеводнів. Склад молекули, електронні та структурні формули, кратні звязки 64.5 KB
  Тема: Ненасичені вуглеводні. Етилен як представник ненасичених вуглеводнів. Склад молекули електронні та структурні формули кратні звязки. Гомологи етилену. Ізомерія карбонового скелету і положення кратного звязку. Номенклатура алкенів. Мета: навчальна: сформуват...