Учебники

Fortran — производные типы данных

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

Обратите внимание, что до и после символа% нет пробелов.

пример

Следующая программа иллюстрирует вышеуказанные понятия —

Live Demo

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

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

Live Demo

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

Когда приведенный выше код компилируется и выполняется, он дает следующий результат —