Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Возможности расширения языка

Управление программой | Выражения для массивов | Секция (вырезка) массива | Модули и процедуры | Более подробная информация | Спецификации или объявления | Тип Character | Логические выражения | Массивы и производные типы | Оператор и конструкция IF |


Читайте также:
  1. III. ДАННЫЕ О БУДУЩЕМ КУРСЕ ИНОСТРАННОГО ЯЗЫКА
  2. OKCP 1. Письменный перевод статьи с русского языка на английский язык.
  3. А затем условие возможности совершения хаджа — наличие средств для путешествия, неимущим же пускаться в путешествие неразумно, ибо путешествие без средств опасно.
  4. А.С. Пушкин – основоположник совр рус лит языка
  5. Автоматизированные возможности, упрощающие создание идеального микса
  6. Алфавит языка
  7. Анализ Фразеологического словаря русского языка

Новый язык содержит возможности для пользователя расширять его собственными понятиями, например, для интервальной арифметики, арифметики рациональных или динамических символьных строк. Путем определения новых типов данных или операторов, и перегружаемых операций и процедур (так что вы можете использовать плюс + как символ сложения интервалов, а не только для обычных чисел), мы можем создать пакет (модуль) без использования препроцессора. Мы можем в скором времени ожидать число расширений для различных приложений в форме модулей от различных производителей. Некоторые уже доступны в NAG.

Данные

Структуры (производные типы)

В Фортран раньше не разрешалось использование некоторых типов, определенных пользователем. Теперь это можно делать.

Вы можете группировать Ваши данные, используя производные типы. При этом можно комбинировать встроенные типы (включая массивы и указатели). Доступ к компонентам новых типов осуществляется использованием уточнителя, а в качестве разделителя в нем знак процента. (Производные типы известны в VAX Fortran как записи.)

Ниже приведен пример

TYPE staff_member CHARACTER(LEN=20):: first_name, last_name INTEGER:: identification, department END TYPE

который может быть использован для того, чтобы описывать отдельные единицы. Комбинация индивидуальных единиц может создана таким образом

TYPE(staff_member), DIMENSION(100):: staff

Отдельная единица может быть вызвана как staff(number), а поле может быть вызвано как staff(number)%first_name. Вы можете образовать гнездо определений

TYPE company CHARACTER(LEN=20):: company_name TYPE(staff_member), DIMENSION(100):: staff END TYPE: TYPE(company), DIMENSION(10):: several_companies

Значительно более интересный пример - это разреженная матрица A, имеющаяс более сотни ненулевых элементов, которая может быть специфицирована следующим оператором

TYPE NONZERO REAL VALUE INTEGER ROW, COLUMN END TYPE

и

TYPE (NONZERO):: A(100)

Вы тогда получаете значение A(10), записав A(10)%VALUE. Присваивание может быть записано как

A(15) = NONZERO(17.0,3,7)

Для того, чтобы использовать в COMMON определенные пользователем в примере типы, или чтобы безусловно сделать так, чтобы два типа данных, которые выглядят как один и тот же, рассмотривались как идентичные, вы можете использовать оператор SEQUENCE, в последнем случае требуется, чтобы переменная была специфицирована как PRIVATE.

! Еще один пример, использующий производные типы и модули

module pipedef

type pipe! определяется новый тип 'pipe', который

real diameter! включает две компоненты типа reals,

real flowrate! компоненту типа integer и компоненту типа character.

integer length

character(len=10):: flowtype

end type pipe

end module pipedef

program main

use pipedef! Связывает с модулем pipedef программу main.

type(pipe) water1, gas1! объявляет две переменные типа 'pipe'.

water1 = pipe(4.5,44.8,1200,"turbulent")! присваивает значение переменной water1.

gas1%diameter = 14.9! присваивает значение

gas1%flowrate = 91.284! частям переменной gas1.

gas1%length = 2550

gas1%flowtype = 'laminar'

.

.

end program

з

Указатели

Указатели позволяют программе вызвать более одной области памяти с одним именем. По сравнению с указателями языка С указатели в Fortran 90 более ограничены, и поэтому легче для отладки и оптимизации. Объекты данных с атрибутами-указателями могут иметь ассоциированную с ними память, выделяемую и возвращаемую, которую можно использовать динамически. Указатели могут быть ассоциированы с другими указателями и с другими объектами, облегчая работу с такими структурами данных как списки и деревья.

з


Дата добавления: 2015-11-14; просмотров: 52 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Материал взят из проекта Lahey: http://www.lahey.com/index.html, http://www.lahey.com/other.htm).| Вид семейства

mybiblioteka.su - 2015-2024 год. (0.006 сек.)