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





Скачать 61.63 Kb.
НазваниеМассив это набор элементов данных одного и того же типа, занимающих последовательные единицы памяти в некотором отрезке памяти. Каждый массив обладает
Дата публикации06.03.2015
Размер61.63 Kb.
ТипДокументы
100-bal.ru > Информатика > Документы
Массивы

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

1. Имя массива.

2. Тип массива.

3. Набор значений (элементов).

4. Число измерений.

5. Размер (протяженность) массива по каждому измерению.

6. Нижняя и верхняя границы массива по каждому измерению.

Массив объявляется в операторах описания типа, в операторах DIMENSION и COMMON. Общая форма описания массива имеет вид

имя_массива (L1:U1, L2:U2, …, L7:U7)

где Li и Ui – нижняя и верхняя границы i-го измерения. В Фортране 77 максимальное число измерений равно 7. Размер i-го измерения – Di = Ui – Li + 1. Размер n-мерного массива – общее число элементов в массиве – D1*D2*…*Dn.

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

Правила вычисления адресного выражения

n

Параметры размерностей массива

Размеры элементов

Индексы

Адресное выражение

1

(L1:U1)

D1 = U1– L1+ 1

(K1)

1+ ( K1– L1)

2

(L1:U1, L2:U2)

D1 = U1– L1+ 1

D2 = U2– L2+ 1

(K1, K2)

1+ ( K1– L1) +
+ ( K2– L2)*D1

3

(L1:U1, L2:U2, L3:U3)

D1 = U1– L1+ 1

D2 = U2– L2+ 1

D3 = U3– L3+ 1

(K1, K2, K3)

1+ ( K1– L1) +
+ ( K2– L2)*D1 +
+ ( K3– L3)*D1*D2 +



7

(L1:U1,…, L7:U7)

D1 = U1– L1+ 1

D2 = U2– L2+ 1

D3 = U3– L3+ 1



D7 = U7– L7+ 1

(K1,… , K7)

1+ ( K1– L1) +
+ ( K2– L2)*D1 +
+ ( K3– L3)*D1*D2 +

+ ( K7– L7)*D1*D2*D3*D4*D5*D6


Если нижняя граница какого-либо измерения опущена при описании, то по умолчанию она берется равной 1.

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

Память для массива отводится в той программной компоненте, в которой он декларируется, если только он не описан как формальный параметр этой подпрограммы; в последнем случае массив передается подпрограмме извне в качестве аргумента. Декларацию массива в программной компоненте, в которой для него фактически будет отведена память, будем называть декларацией фактического массива. Декларацию массива в подпрограмме, в которую он будет передан как параметр, будем называть декларацией формального массива. В декларации фактического массива число его измерений и размер по каждому измерению не могут быть переменными. В декларации формального массива размер массива по каждому измерению может быть как регулируемым, так и постоянным. При вычислении значения адресного выражения верхняя граница последнего измерения не используется. Именно поэтому ее можно (настоятельно рекомендуется) заменить звездочкой (*) в операторе описания формального массива.

Массивы Фортрана 77 располагаются в памяти, как говорят, «по столбцам». Это означает, что быстрее всего изменяется самый левый индекс.

Если в списке оператора READ (оператора PRINT) указано только имя массива, то значения элементов массива вводятся (выводятся) в том порядке, в каком элементы массива располагаются в памяти. Изменить порядок ввода-вывода элементов массива можно с помощью неявного цикла.

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

В Фортране 77 есть и другой способ передачи массивов в подпрограммы. Например, вместо имени массива в качестве фактического параметра можно использовать элемент массива. В этом случае начальным адресом массива будет адрес указанного элемента массива, и связь между формальным и фактическим массивами установится на основе этого адреса. Размер формального массива при этом не должен превышать числа оставшихся элементов фактического массива.

Например, в следующем наброске программы

Dimension A(100) Subroutine SUB(X,…)

……………………… Dimension X(*)

Call SUB(A(10),…) ………………………

……………………… end

end

фактическим аргументом при вызове подпрограммы SUB является не имя массива A, а имя элемента A(10). В подпрограмме используется формальный массив X, и связь между массивами X и A устанавливается следующим образом: X(1) соответствует A(10), X(2) соответствует A(11) и т.д. Очевидно, что X(91) соответствует A(100), и поскольку верхняя граница индекса массива X определена как (*), то X(91) – последний элемент формального массива.

Фортран 77 также допускает разные размерности у формальных и фактических массивов. Например, программа вида

Dimension A(5,10) Subroutine SUB(X,N,…)

……………………… Dimension X(*)

Call SUB(A,50,…) ………………………

……………………… end

end

устанавливает соответствие между X(1) и A(1,1), X(2) и A(2,1), … , X(K) и A(I,J), где
K=I+5*(J–1). В приведенной программе фактических массив A и формальный массив X имеют одинаковое число элементов; однако такое равенство не является обязательным требованием Фортрана 77. На самом деле массив X может иметь любой размер, не превышающий размер фактического массива или размер используемой подпрограммой части массива.

Пример


В качестве примера рассмотрим программу, которая вычисляет сумму всех элементов матрицы C, где C=A*B, A – (N,M)-матрица, B – (M,K)-матрица. Элементы матриц A и B располагаются построчно в текстовых файлах a.dat и b.dat соответственно. Известно, что
N*M + M*K<1000.



DIMENSION MEM(1000)

Open (1, file='a.dat')

read (1,*) n,m1

Open (2, file='b.dat')

read (1,*) m2,K

If(m1.ne.m2)

* stopМатрицы перемножать нельзя’

m=m1

If((N+K)*m.GT.1000)

* stopНе хватает памяти’

CALL READAB (MEM(1), MEM(n*m+1), n, m, k)

CALL UMN (MEM(1), MEM(n*m+1), n, m, k, rez)

Print *,'Результат:', rez

Stop

End
Subroutine ReadAB (A, B, n, m, k)

Dimension A(m,*), B(m,*)

Read (1,*) ((a(i,j), i=1,m), j=1,n)

Close (1)

Read (2,*) ((b(I,J), j=1,k), i=1,m)

Close (2)

Return

End

Subroutine umn (A, B, n, m, k, r)

DOUBLE PRECISIOn r8, rab8

Dimension A(m,*), B(m,*)

r8=0.d0

do 10 I=1,n

do 10 j=1,k

call scal (A(1,i), b(1,j), m, rab8)

10 r8=rab8+r8

r=r8

end

subroutine scal (x, y, n, rez8)

DOUBLE PRECISIOn rab8, rez8

dimension x(*), y(*)

rab8=0.d0

do 1 i=1,n

rab8=rab8+x(i)*y(i)

1 continue

rez8=rab8

end



Источники

1. Катцан Г. Язык Форотран 77: Пер. с англ. – М.: Мир,1982.

2. Программирование на Фортране 77: Пер. с англ./ Дж. Ашкрофт, Р. Элдридж, Р. Полсон, Г.Уилсон. – М.: Радио и связь, 1990.

Добавить документ в свой блог или на сайт

Похожие:

Массив это набор элементов данных одного и того же типа, занимающих последовательные единицы памяти в некотором отрезке памяти. Каждый массив обладает iconУрок n 28 массивы
Массив это множество однотипных элементов, объединённых общим именем и занимающих в компьютере определённую область памяти
Массив это набор элементов данных одного и того же типа, занимающих последовательные единицы памяти в некотором отрезке памяти. Каждый массив обладает iconПрограмма по формированию навыков безопасного поведения на дорогах...
Одномерный массив это фиксированное количество элементов одного и того же типа, объединенных одним именем, где каждый элемент имеет...
Массив это набор элементов данных одного и того же типа, занимающих последовательные единицы памяти в некотором отрезке памяти. Каждый массив обладает iconПрограмма по формированию навыков безопасного поведения на дорогах...
Определение: Двумерный массив- это одномерный массив, у которого типом компоненты является одномерный массив
Массив это набор элементов данных одного и того же типа, занимающих последовательные единицы памяти в некотором отрезке памяти. Каждый массив обладает iconПрограмма как набор сегментов
В лекции рассмотрены: сегментная организация памяти; cегментно-страничная организация памяти (multics, "Эльбрус", Intel x86)
Массив это набор элементов данных одного и того же типа, занимающих последовательные единицы памяти в некотором отрезке памяти. Каждый массив обладает iconСценарий открытого мероприятия «посвящение в программисты»
Число 256 (два в восьмой степени) выбрано потому, что это количество чисел, которые можно выразить с помощью одного байта – единицы...
Массив это набор элементов данных одного и того же типа, занимающих последовательные единицы памяти в некотором отрезке памяти. Каждый массив обладает iconПрограмма по формированию навыков безопасного поведения на дорогах...
Цель урока: Знакомство с понятием массивов, приемами работы с данными типа массив
Массив это набор элементов данных одного и того же типа, занимающих последовательные единицы памяти в некотором отрезке памяти. Каждый массив обладает iconРеферат по дисциплине
При простых последовательных обращениях к основной памяти ячейки выбираются поочередно. Таким образом, расслоение памяти позволяет...
Массив это набор элементов данных одного и того же типа, занимающих последовательные единицы памяти в некотором отрезке памяти. Каждый массив обладает iconРеферат по дисциплине Операционные Системы
При простых последовательных обращениях к основной памяти ячейки выбираются поочередно. Таким образом, расслоение памяти позволяет...
Массив это набор элементов данных одного и того же типа, занимающих последовательные единицы памяти в некотором отрезке памяти. Каждый массив обладает iconПрограмма по формированию навыков безопасного поведения на дорогах...
Цели урока: образовательные – познакомить учащихся с различными устройствами памяти компьютера, рассмотреть особенности внутренней...
Массив это набор элементов данных одного и того же типа, занимающих последовательные единицы памяти в некотором отрезке памяти. Каждый массив обладает iconУрок 10 Тема: Виды памяти компьютера
Цель: ознакомить учащихся с видами памяти в компьютере, сформировать представление о различиях внутренней и внешней памяти компьютера,...
Массив это набор элементов данных одного и того же типа, занимающих последовательные единицы памяти в некотором отрезке памяти. Каждый массив обладает iconБаза данных пар химических элементов, неразличимых на некотором уровне...

Массив это набор элементов данных одного и того же типа, занимающих последовательные единицы памяти в некотором отрезке памяти. Каждый массив обладает iconОбработки информации и управления реферат «Основные понятия курса Операционные Системы»
При простых последовательных обращениях к основной памяти ячейки выбираются поочередно. Таким образом, расслоение памяти позволяет...
Массив это набор элементов данных одного и того же типа, занимающих последовательные единицы памяти в некотором отрезке памяти. Каждый массив обладает iconПрограмма по предмету «информатика и икт»
Икт, в которых эти данные используются. Такое расположение материала способствует лучшему формированию в сознании учеников связи...
Массив это набор элементов данных одного и того же типа, занимающих последовательные единицы памяти в некотором отрезке памяти. Каждый массив обладает iconПроект нп «медарт»
Партнерства в актуальном состоянии. По результатам на 2009 г массив аналитических описаний составляет свыше 250 000 библиографических...
Массив это набор элементов данных одного и того же типа, занимающих последовательные единицы памяти в некотором отрезке памяти. Каждый массив обладает iconПрограмма по формированию навыков безопасного поведения на дорогах...
Файл (от англ слова file досье, набор документов) это определенное количество информации (программы или данные), имеющие имя, хранящиеся...
Массив это набор элементов данных одного и того же типа, занимающих последовательные единицы памяти в некотором отрезке памяти. Каждый массив обладает iconНазвание тем занятий
«Вспомним всех поименно» Урок памяти по Книге памяти Ульяновской области. 5-6 классы


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск