Fortran - Tipi di dati derivati

Fortran consente di definire i tipi di dati derivati. Un tipo di dati derivato è anche chiamato struttura e può essere costituito da oggetti di dati di diversi tipi.

I tipi di dati derivati ​​vengono utilizzati per rappresentare un record. Ad esempio, se desideri tenere traccia dei tuoi libri in una biblioteca, potresti voler tenere traccia dei seguenti attributi di ogni libro:

  • Title
  • Author
  • Subject
  • ID libro

Definizione di un tipo di dati derivato

Per definire un dato derivato type, il tipo e end typevengono utilizzate le istruzioni. . L'istruzione type definisce un nuovo tipo di dati, con più di un membro per il programma. Il formato dell'istruzione del tipo è questo:

type type_name      
   declarations
end type

Ecco il modo in cui dichiareresti la struttura del libro:

type Books
   character(len = 50) :: title
   character(len = 50) :: author
   character(len = 150) :: subject
   integer :: book_id
end type Books

Accesso ai membri della struttura

Un oggetto di un tipo di dati derivato è chiamato struttura.

Una struttura di tipo Libri può essere creata in un'istruzione di dichiarazione del tipo come:

type(Books) :: book1

È possibile accedere ai componenti della struttura utilizzando il carattere di selezione dei componenti (%) -

book1%title = "C Programming"
book1%author = "Nuha Ali"
book1%subject = "C Programming Tutorial"
book1%book_id = 6495407

Note that there are no spaces before and after the % symbol.

Esempio

Il seguente programma illustra i concetti di cui sopra:

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

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

C Programming                                     
 Nuha Ali                                          
 C Programming Tutorial            
   6495407
 Telecom Billing                                   
 Zara Ali                                          
 Telecom Billing Tutorial            
   6495700

Matrice di strutture

Puoi anche creare array di un tipo derivato -

type(Books), dimension(2) :: list

È possibile accedere ai singoli elementi dell'array come:

list(1)%title = "C Programming"
list(1)%author = "Nuha Ali"
list(1)%subject = "C Programming Tutorial"
list(1)%book_id = 6495407

Il seguente programma illustra il concetto:

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

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

C Programming                                     
Nuha Ali                                          
C Programming Tutorial               
   6495407
C Programming                                     
Zara Ali                                          
Telecom Billing Tutorial                                      
   6495700