Character*20,dimension(1:30)::student

Для массива student выделено 30 строк по 20 байт, всего 600 байт.

4) При объявлении массивы можно инициализировать с помощью конструктора массива, например:

integer, dimension(1:10):: digit=(/0,1,2,3,4,5,6,7,8,9/)

5) С помощью конструктора массива можно создавать массивы констант, например:

integer, parameter, dimension(1:5):: digit=(/0,1,2,3,4/)

6) Если задавать границы массива в виде именованных констант, то при необходимости изменить размер массива, вносить изменение можно только в одном месте:

integer, parameter:: L_digit=10

integer:: i

integer, dimension(L_digit: L_digit+10):: digit

do i=L_digit, L_digit+10

digit(i)=i

Enddo

В программе объявлен целочисленный массив из 11 элементов с номерами от 10 до 20. Каждому элементу массива присваивается значение, равное его номеру.

7) Устаревшее допустимое, но не рекомендуемое описание массивов:

integerA(34), B(34), C(7)

Лучше записать так:

integer, dimension(1:34):: A, B

integer, dimension(1:7)::С

Ввод и вывод одномерных массивов

Ввод одномерного массива

Можно ввести значения отдельных элементов массива, перечислив их в списке ввода оператора read, например:

integer, parameter ::N=5

real, dimension(1:N) :: array

open(1, file=’in.txt’)

read(1,*) array(1), array(2), array(3), array(4), array(5)

Из файла «in.txt» вводятся значения пяти элементов вещественного массива array. Но не всегда массивы состоят из пяти элементов, и их перечисление в списке ввода довольно утомительно. Попробуем сократить запись, используя оператор цикла:

do i=1, N

read(1,*) array(i)

Enddo

Код оператора цикла не зависит от размера массива. Однако, обратите внимание на то, что каждый оператор read начинает ввод с новой строки, и поэтому количество строк в файле должно быть равно количеству вводимых элементов массива (каждый элемент – в отдельной строке).

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

Записать оператор ввода можно более компактно, если использовать неявный цикл (конструкция записывается в скобках, если шаг опущен, он по умолчанию равен 1):

(Список ввода, переменная = начальное значение, конечное значение, шаг)

read(1,*) (array(i), i=1,N)

В этом варианте длина списка ввода равна N. Каждая строка файла может содержать произвольное количество значений. Оператор вводит N значений и размещает их в первых N элементах массива.

В следующем операторе неявного цикла

read(1,*) (array(i), i=1,5,2)

список ввода состоит из трех элементов array(1), array(3), array(5).

Из файла, связанного с устройством 1 будут прочитаны 3 первых значения (!), которые будут присвоены элементам массива array(1), array(3), array(5).

Если нужно ввести весь массив, в операторе read можно записать имя массива без индексов, например:

real, dimension(1:5) :: array

open(1, file=’in.txt’)

read(1,*) array ! длина списка ввода равна 5

В этом случае длина списка ввода оператора read определяется размером массива из его описания. Если данных в файле недостаточно для заполнения всех элементов массива, фиксируется ошибка выполнения программы.








Дата добавления: 2017-09-19; просмотров: 341;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.