- •Управление векторами и матрицами
- •Компиляция и выполнение Компиляция
- •Связывание (редактирование связей )
- •Выполнение
- •Примеры
- •Соглашения о записи кода
- •Арифметические выражения
- •Операции отношения
- •Логические выражения
- •Сравнение символов
- •Переносимость результата
- •Спецификация массивов
- •Сечения массива Индивидуальные элементы
- •Сечения
- •Векторные указатели
- •Память для массива Физическая память:
- •Присваивание массива Присваивание всего массива
- •Присваивание секции (вырезки) массива
- •Повторная нумерация
- •Основные встроенные процедуры
- •Массивы нулевого размера
- •Массивы и производные типы
- •Инициализация массивов Конструкторы
- •Оператор data
- •Встроенные функции для массива
- •Пример упрощения
- •Пример исследования (запроса)
- •Пример конструирования
- •Пример локализации
- •Я Операторы управления
- •Вложения
- •Порядок операторов
- •Синтаксис программы Main
- •Формат представления программы
- •Программные единицы
- •Уровни доступа
- •Дополнения
- •Спецификация входных-выходных параметров
- •Использование модуля
- •Родовые подпрограммы
- •Интерактивный ввод-вывод
- •Простой Input и Output
- •Форматирование по умолчанию
- •Форматированный ввод-вывод I/o
- •Дескрипторы редактора
- •Вещественные - форма с фиксированной точкой
- •Вещественные - экспотенциальная форма
- •Символьные
- •Логические
- •Заполнение пробелами (пропуск символьных позиций)
- •Специальные символы
- •Списки ввода-вывода
- •Производные типы данных
- •Неявный цикл do
- •Ввод-вывод без продвижения
- •Файловый ввод-вывод
- •Номера устройств
- •Операторы read и write
- •Оператор write
- •Оператор open
- •Оператор close
- •Оператор inquirе
- •Динамический массив
- •Распределяемые массивы
- •Спецификация
- •Выделение и возвращение памяти
- •Статус распределяемых массивов
- •Потоки памяти (куча)
- •Что есть указатели?
- •Указатели и адресаты
- •Спецификации указателя Общая форма для операторов определения указателя и адресата такая:
- •Присваивание указателя
- •Разыменование (Dereferencing)
- •Статус (состояние) связи указателя
- •Динамическая память
- •Общие ошибки
- •Указатели в производных типах данных
- •Связанные списки
- •Параметры - указатели
- •Функции для указателей
Сечения
Как возможно обратиться к индивидуальным жлементам массивов, также возможно в одном операторе обратиться и к нескольким эелементам (называемым сечением, вырезкой). Доступ к сечению массива требует указания верхней и нижней границ сечения для спецификации вместе с шагом (для каждого измерения). Эта нотация называется тройкой индексов:
array ([нижний]:[вехний][:шаг], ...)
где нижний и вехний по умолчанию объявлены протяженностью, если они отсутствуют, и шаг по умолчанию равен 1.
REAL, DIMENSION(8) :: a
INTEGER, DIMENSION(5,4) :: b
INTEGER :: i=3
...
a(3:5) ! элементы 3, 4, 5
a(1:5:2) ! элементы 1, 3, 5
b(1:2,2:i) ! элементы (1,2) (2,2) (1,3) и (2,3)
b(i,1:4:2) ! элементы 1 и 3 из третьей строки
b(2:4,1) ! элементы 2, 3 и 4 из первой колонки
Границы в тройке индексов могут быть взяты любыми (целыми ) значениями. Использование тройки индексов компактно и удобный способ ссылки на произвольную секцию массива.
|
|
|
|
|
|
|
|
|
А(3:5)
Некоторая более сложная секция массива дана ниже. Заметим, как нижние и верхние индексы могут быть опущены:
REAL, DIMENSION(0:5) :: c
INTEGER, DIMENSION(4:5) :: d
c(:) ! весь массив
c(:3) ! элементы 0,1,2,3
c(::2) ! элементы 0,2 и 4
d(:,4) ! все элементы четвертого столбца.
d(::2,:) ! все элементы каждого второго ряда
|
|
|
|
|
|
|
|
|
A(1:5:2)
Секция B(1:2,2:3)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Секция b(3,1:3:2)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Секция B(2:4,1)
|
|
|
|
|
|
Секция С(:)
|
|
|
|
|
|
Секция С(:3)
|
|
|
|
|
|
Секция С(::2)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Секция d(:,4)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Секция d(::2,:)
