Fortran - 派生数据类型
-
简述
Fortran 允许您定义派生数据类型。派生数据类型也称为结构,它可以由不同类型的数据对象组成。派生数据类型用于表示记录。例如,您想跟踪图书馆中的书籍,您可能希望跟踪每本书的以下属性 -- Title
- Author
- Subject
- Book ID
-
定义派生数据类型
定义派生数据type, 类型和end type使用语句。. type 语句定义了一种新的数据类型,您的程序有多个成员。类型声明的格式是这样的 -type type_name declarations end type
这是您声明 Book 结构的方式 -type Books character(len = 50) :: title character(len = 50) :: author character(len = 150) :: subject integer :: book_id end type Books
-
访问结构成员
派生数据类型的对象称为结构。Books 类型的结构可以在类型声明语句中创建,例如 -type(Books) :: book1
可以使用组件选择符 (%) 访问结构的组件 -book1%title = "C Programming" book1%author = "Nuha Moo" book1%subject = "C Programming Tutorial" book1%book_id = 6495407
Note that there are no spaces before and after the % symbol.例子
以下程序说明了上述概念 -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 Moo" book1%subject = "C Programming Tutorial" book1%book_id = 6495407 book2%title = "Telecom Billing" book2%author = "Alex Moo" 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 Moo C Programming Tutorial 6495407 Telecom Billing Alex Moo Telecom Billing Tutorial 6495700
-
结构数组
您还可以创建派生类型的数组 -type(Books), dimension(2) :: list
数组的各个元素可以访问为 -list(1)%title = "C Programming" list(1)%author = "Nuha Moo" 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 Moo" list(1)%subject = "C Programming Tutorial" list(1)%book_id = 6495407 list(2)%title = "Telecom Billing" list(2)%author = "Alex Moo" 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
编译并执行上述代码时,会产生以下结果 -C Programming Nuha Moo C Programming Tutorial 6495407 C Programming Alex Moo Telecom Billing Tutorial 6495700