Название: Информатика. Алгоритмический язык Фортран - учебное пособие (Худяков Д.С., Саблина Г.В.) Жанр: Информатика Просмотров: 5394 |
2.8. обработка массивов
Массивом, как уже отмечалось, называется совокупность переменных одного типа, обозначаемая именем с индексами в круглых скобках. Например, вектор с компонентами u1, u2, …, un можно представить одномерным массивом U(I), 1 £ I £ N, а матрицу с компонентами A(I, J), 1 £ I £ N, 1 £ J £ M. Количество индексов в массиве определяет его размерность, и массивы могут быть, соответственно, одномерными, двумерными, трехмерными и т.д. Каждый массив должен быть описан в начале программы с помощью оператора размерности DIMENSION с указанием предельных значений каждого индекса, которые задаются целыми константами. Это необходимо для того, чтобы зарезервировать соответствующий объем памяти для хранения элементов массива. Примеры: DIMENSION A(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(<имя>=<константа>,<имя>=<константа>,...) Здесь <имя> – символическое имя, образованное по правилам Фортрана. Тогда, например, запись 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) При обращении к элементу массива необходимо указывать его имя и индексы, которые могут быть либо константами, либо результатом арифметического выражения целого типа, например: V=A(I,J)+B(3,2*L+7) В этом случае целые переменные I, J, L должны быть определены в предыдущей части программы. При вводе и выводе массивов используются два основных способа – ввод-вывод массива по имени или с помощью цикла. Первый способ иллюстрируется примером DIMENSION А(10),В(3,4) READ(*,*)A,B В этом случае должны быть последовательно введены 10 чисел, которые соответствуют элементам массива А, а затем введены 12 чи-сел, которые соответствуют элементам массива В, согласно их последовательности расположения в памяти. Второй способ также ясен из примера DIMENSION A(10),B(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, M £ 3, поскольку в противном случае мы выйдем за границы расположения элементов массивов. Этот способ удобнее, когда в программе используется меньшее количество элементов массивов, нежели то, которое задано в операторах размерности. В этом примере сначала вводятся три целых числа N, L, M и затем последовательно N элементов массива А, а затем L´M элементов массива В в последовательности В(1,1),B(1,2),...,В(2,1),В(2,2),... В этом случае последовательность ввода элементов В не совпадает с порядком их хранения в памяти. Если последний оператор записать как READ(*,*) N,L,M,(A(I),I=1,N) *((B(I,J),I=1,M),J=1,L) то порядок ввода элементов массива В и порядок их размещения в памяти будет одинаковый. Вывод массива отличается от их ввода только заменой оператора READ на оператор WRITE. Рассмотрим следующую задачу. Дан одномерный массив с количеством элементов N £ 100. Найти сумму элементов этого массива. Соответствующая программа может иметь вид: DIMENSION A(100) READ(*,*)N,(A(I),I=1,N) S=0.0 DO 5 1=1, N S=S+A(I) 5 CONTINUE WRITE(*,*)S STOP END
|
|
Разделы
Количество литературы
Всего: 763 читаем
Лучшие из лучших
Философия для специалиста - учеб. пособие. (Т.О. Бажутина)
Экономика природопользования - Задачи и упражнения (В.А. Шоба)
Политология - Учеб. пособие.(Денисенко Н.А)
Франчайзинг в сфере малого предпринимательства - учебное пособие (А. Е. Леонов)
Основы финансового функционально-стоимостного анализа - учебное пособие (Щербаков В. А., Приходько)
Направление системы электросвязи Часть 1 - учебное пособие (Анатолий Денисов, Константин Алексеев)
Маркетинг - учебное пособие (О. А. Кислицына, С. И. Потапович, В. К. Стародубцева)
Практикум по конфликтологии - учебное пособие (И.А. Скалабан)
Информатика. Алгоритмический язык Фортран - учебное пособие (Худяков Д.С., Саблина Г.В.)
Основы работоспособности технических систем. Автомобильный транспорт - учебное пособие (Атапин, В.Г)