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