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

24.000000 Qwertyuiop sub

Управляемый неименованным списком ввод-вывод:

WRITE (u, <FMT=>*) <список вывода>

PRINT * <, список вывода>

READ (u,<FMT=>*) <список ввода>

READ * <, список ввода>

Вывод под управлением неименованного списка выполняется в соответствии с правилами:

  1. вывод производится в последовательные текстовые файлы, на экран или на принтер;

  2. длина создаваемой при выводе записи не превышает 79 символов (для размещения более длинных последовательностей создаются новые записи); в конце каждой записи проставляются символы конца записи;

  3. логические данные выводятся как F и T;

  4. целочисленные данные выводятся в соответствии со спецификатором формата I11;

  5. вещественные или комплексные данные в зависимости от значения выводятся в соответствии с дескрипторами F или Е: если выводимое значение находится в пределах от 1 до 107, то для одинарной точности используется формат F15.6, а для двойной - Е24.15, для значений, не входящих в этот интервал, используются форматы Е15.6Е2 и Е24.15Е3 соответственно;

  6. символьные данные по умолчанию выводятся без ограничений;

  7. вывод объекта производного типа выполняется покомпонентно в порядке появления компонентов в объявлении производного типа.

Пример управляемого неименованным списком ввода и вывода.

program vv3

character(3) name ! описание и

real vec(4) ! инициализация

logical :: flag = .true. ! переменных

print *, 'Input name vec(4)' ! вывод сообщения

read *, name ! введем: ‘Ivanov’

read *, vec ! 3E4 30.4 1.2 2.4

print *, flag, name, vec ! вывод результатов

end program vv3

Результат:

Tiva 30000.000000 30.400000 1.200000 2.400000

3.8. Массивы

3.8.1. Описание размерности статических массивов

DIMENSION имя (список), имя (список), ..., имя (список)

3.8.2. Сечение массива

Индексный триплет имеет вид: <нижняя граница> : <верхняя граница> <:шаг>

Векторный индекс

Пример использования триплета и векторного индекса для задания сечений массивов.

program tt1

integer :: i, x(7) = (/(i, i=1,7)/) ! описание

integer d (5,7) /35*0/ ! и

real a(20) /20*0.0/ ! инициализация

real с(8) /8*0./, b(10,10) /100*0./ ! массивов

integer vi(3), vj(4) ! vi, vj - целочисленные массивы, ис-

vi = (/1,4,6/) ! пользуемые как векторные индексы

vj = (/2,3,7,10/) ! для задания сечений массивов а и b

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

a(:2) = 1. ! a(1)=a(2)=1.

a(3:7:2) = 3. ! a(3)=a(5)=a(7)=3.0

a(8:10) = 2. ! a(8)=a(9)=a(10)=2.

a(11::5) = 5. ! a(11)=a(16)=5.

a(17:) = -1. ! a(17)=a(18)=a(19)=a(20)=-1.

d(3,:) = 1 ! сечение - третья строка матрицы

d(:,6) = 6 ! сечение - шестой столбец матрицы

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

c(vi) = 1. ! c(1)=c(4)=c(6)=1.

b(vi,vj) = 2. ! b(1,2)=b(1,3)=b(1,7)=b(1,10)=b(4,2)=b(4,3)=

! b(4,7)=b(4,10)=b(6,2)=b(6,3)=b(9,7)=b(6,10)=2.

b(2,vi) =3. ! b(2,1)=b(2,4)=b(2,6)=3.

x = x(7:1:-1) ! изменения порядка следования элементов массива

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

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

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

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

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

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

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

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

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

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

end program tt1