Fortran - Các kiểu dữ liệu có nguồn gốc

Fortran cho phép bạn xác định các kiểu dữ liệu có nguồn gốc. Một kiểu dữ liệu dẫn xuất còn được gọi là cấu trúc và nó có thể bao gồm các đối tượng dữ liệu thuộc các kiểu khác nhau.

Các kiểu dữ liệu có nguồn gốc được sử dụng để biểu diễn một bản ghi. Ví dụ: bạn muốn theo dõi sách của mình trong thư viện, bạn có thể muốn theo dõi các thuộc tính sau của mỗi cuốn sách:

  • Title
  • Author
  • Subject
  • ID sách

Xác định kiểu dữ liệu có nguồn gốc

Để xác định một dữ liệu dẫn xuất type, loại và end typecâu lệnh được sử dụng. . Câu lệnh type xác định một kiểu dữ liệu mới, với nhiều hơn một thành viên cho chương trình của bạn. Định dạng của câu lệnh kiểu là:

type type_name      
   declarations
end type

Đây là cách bạn khai báo cấu trúc Sách -

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

Truy cập thành viên cấu trúc

Một đối tượng của kiểu dữ liệu dẫn xuất được gọi là cấu trúc.

Cấu trúc kiểu Sách có thể được tạo trong một câu lệnh khai báo kiểu như:

type(Books) :: book1

Các thành phần của cấu trúc có thể được truy cập bằng cách sử dụng ký tự bộ chọn thành phần (%) -

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.

Thí dụ

Chương trình sau đây minh họa các khái niệm trên:

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

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

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

Mảng cấu trúc

Bạn cũng có thể tạo mảng có kiểu dẫn xuất -

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

Các phần tử riêng lẻ của mảng có thể được truy cập dưới dạng:

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

Chương trình sau đây minh họa khái niệm -

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

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

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