Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИиП_3.doc
Скачиваний:
1
Добавлен:
21.04.2019
Размер:
303.1 Кб
Скачать

3.8.3. Присваивание значений элементам массива

Конструктор массива: (/ список значений /)

Встроенный цикл имеет вид: (выражение, встроенный DO-цикл, i=m1,m2 <,m3>)

Пример присваивания значений элементам массива.

program tt2

integer i, j, k ! описание целочисленных переменных

integer b(7), c(2,3), d(5), x(5,2), y ! описание массивов

dimension y(3,4) ! описание размерности массива y

integer a(3) /3,2,1/ ! описание и инициализация массива

real r(7) ! описание массива

real, parameter :: pi = 3.141593 ! описание и инициализация переменной

logical fl(10) ! описание логического массива

! присваивание значений элементам массивов

b = (/ a,a,5 /) ! в списке конструктора одномерный массив и скаляр

print *, ‘Vector b’ ! Вывод сообщения

print *, b ! Вывод значений вектора b

data ((c(i,j), j=1,3), i=1,2) /3*1,3*2/ ! встроенный цикл в операторе data

b= (/ c,-7 /) ! в списке конструктора двухмерный массив и скаляр

d = (/ 1,2,3,4,5 /) ! конструктор массива задает после-

! довательность чисел от 1 до 5

r = (/ (cos(real(k)*pi/180.0), k=1,14,2) /) ! в списке конструктора

! встроенный цикл

fl =(/(.true., k=1,5), (.false., k=6,10) /) ! в списке конструктора

! два встроенных цикла

! присваивание значений элементам двухмерных массивов

! с использованием встроенной функции reshape

! source – конструирует элементы массива, shape – размещает

x = reshape(source = (/ (2*i, i=2,11) /), shape = (/ 5,2 /))

y = reshape((/ ((i*j, i=1,3), j=3,6) /), shape = (/ 3,4 /))

! Вывод результатов

print *, ‘Vector b’ ! Вывод сообщения

print *, b ! Вывод значений вектора b

print *, ‘Vector d’ ! Вывод сообщения

print *, d ! Вывод значений вектора d

print *, ‘Vector r’ ! Вывод сообщения

print *,r ! Вывод значений вектора r

print *, ‘Vector fl’ ! Вывод сообщения

print *, fl ! Вывод значений вектора fl

print *, ‘Matrix x’ ! Вывод сообщения

print *, x ! Вывод значений матрицы x

print *, ‘Matrix y’ ! Вывод сообщения

print *, y ! Вывод значений матрицы y

end program tt2

Оператор имеет синтаксис:

Where (логическое выражение - массив) присваивание массива

Конструкция WHERE:

WHERE (логическое выражение - массив)

операторы присваивания массивов 1

END WHERE

или

WHERE (логическое выражение - массив)

операторы присваивания массивов 1

ELSE WHERE

операторы присваивания массивов 2

END WHERE

Пример использования конструкции WHERE.

program tt3

integer :: a(5) = (/ 1,-1,1,-1,1 /), b(-2:2) = 0 ! описание и

! инициализация массивов

where (a>b) ! поэлементное сравнение

b = b +2 ! и поэлементное

elsewhere ! присваивание

b = b – 3 ! значений

a = a +b ! массивам

end where

print *, a ! результат: 1 -4 1 -4 1 -4

print *, b ! результат: 2 -3 2 -3 2 -3

end program tt3

3.8.4. Динамические массивы

Атрибуты POINTER и ALLOCATEBLE.

Операторы ALLOCATE:

ALLOCATE (имя ссылки | имя массива (список)

<, имя ссылки | имя массива (список)>... <, STAT = переменная>)

Оператор DEALLOCATE: DEALLOCATE (а-список <, STAT = переменная>)

Пример описания динамических массивов.