Fortran позволяет вам определять производные типы данных. Производный тип данных также называется структурой и может состоять из объектов данных разных типов.
Производные типы данных используются для представления записи. Например, вы хотите отслеживать свои книги в библиотеке, вы можете отслеживать следующие атрибуты для каждой книги —
- заглавие
- автор
- Предмет
- ID книги
Определение производного типа данных
Чтобы определить производный тип данных, используются операторы типа и конечного типа . , Оператор type определяет новый тип данных с более чем одним членом для вашей программы. Формат оператора типа такой:
type type_name declarations end type
Вот как вы бы объявили структуру Книги —
type Books character(len = 50) :: title character(len = 50) :: author character(len = 150) :: subject integer :: book_id end type Books
Доступ к членам структуры
Объект производного типа данных называется структурой.
Структура типа Книги может быть создана в операторе объявления типа как —
type(Books) :: book1
Доступ к компонентам структуры можно получить с помощью символа селектора компонента (%) —
book1%title = "C Programming" book1%author = "Nuha Ali" book1%subject = "C Programming Tutorial" book1%book_id = 6495407
Обратите внимание, что до и после символа% нет пробелов.
пример
Следующая программа иллюстрирует вышеуказанные понятия —
program deriveDataType !type declaration type Books character(len = 50) :: title character(len = 50) :: author character(len = 150) :: subject integer :: book_id end type Books !declaring type variables type(Books) :: book1 type(Books) :: book2 !accessing the components of the structure book1%title = "C Programming" book1%author = "Nuha Ali" book1%subject = "C Programming Tutorial" book1%book_id = 6495407 book2%title = "Telecom Billing" book2%author = "Zara Ali" book2%subject = "Telecom Billing Tutorial" book2%book_id = 6495700 !display book info Print *, book1%title Print *, book1%author Print *, book1%subject Print *, book1%book_id Print *, book2%title Print *, book2%author Print *, book2%subject Print *, book2%book_id end program deriveDataType
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —
C Programming Nuha Ali C Programming Tutorial 6495407 Telecom Billing Zara Ali Telecom Billing Tutorial 6495700
Массив структур
Вы также можете создавать массивы производного типа —
type(Books), dimension(2) :: list
Отдельные элементы массива могут быть доступны как —
list(1)%title = "C Programming" list(1)%author = "Nuha Ali" list(1)%subject = "C Programming Tutorial" list(1)%book_id = 6495407
Следующая программа иллюстрирует концепцию —
program deriveDataType !type declaration type Books character(len = 50) :: title character(len = 50) :: author character(len = 150) :: subject integer :: book_id end type Books !declaring array of books type(Books), dimension(2) :: list !accessing the components of the structure list(1)%title = "C Programming" list(1)%author = "Nuha Ali" list(1)%subject = "C Programming Tutorial" list(1)%book_id = 6495407 list(2)%title = "Telecom Billing" list(2)%author = "Zara Ali" list(2)%subject = "Telecom Billing Tutorial" list(2)%book_id = 6495700 !display book info Print *, list(1)%title Print *, list(1)%author Print *, list(1)%subject Print *, list(1)%book_id Print *, list(1)%title Print *, list(2)%author Print *, list(2)%subject Print *, list(2)%book_id end program deriveDataType
Когда приведенный выше код компилируется и выполняется, он дает следующий результат —