Fortran 语言 派生类型创建示例

Fortran阿木 发布于 2025-06-21 6 次阅读


摘要:

Fortran是一种历史悠久的高级编程语言,广泛应用于科学计算和工程领域。在Fortran中,派生类型是一种强大的特性,它允许程序员创建自定义的数据结构,以更好地组织和管理数据。本文将围绕Fortran语言派生类型的创建,通过一系列示例,详细介绍派生类型的定义、使用以及在实际编程中的应用。

一、

派生类型是Fortran语言中的一种高级特性,它允许程序员在已有的基本数据类型的基础上,创建新的数据类型。这种类型可以包含基本数据类型、数组、指针、用户定义的类型等。派生类型在Fortran编程中有着广泛的应用,如结构体、联合体、枚举类型等。本文将详细介绍Fortran派生类型的创建方法,并通过实例展示其在实际编程中的应用。

二、Fortran派生类型的定义

在Fortran中,派生类型的定义通常使用`TYPE`语句。以下是一个简单的派生类型定义示例:

fortran

TYPE Person


INTEGER :: id


CHARACTER(20) :: name


REAL :: age


END TYPE Person


在这个例子中,我们定义了一个名为`Person`的派生类型,它包含三个成员:`id`(整数类型)、`name`(字符类型)和`age`(实数类型)。

三、派生类型的实例化

定义了派生类型后,可以通过`ALLOCATE`语句为其创建实例:

fortran

TYPE(Person) :: person1

CALL ALLOCATE(person1)


这里,我们创建了一个名为`person1`的`Person`类型实例,并使用`ALLOCATE`语句为其分配内存。

四、派生类型的成员访问

创建实例后,可以通过成员访问运算符`.`来访问派生类型的成员:

fortran

person1%id = 1


person1%name = 'John Doe'


person1%age = 30.5


在这个例子中,我们为`person1`实例的`id`、`name`和`age`成员分别赋值。

五、派生类型的数组

派生类型可以用来创建数组,如下所示:

fortran

TYPE(Person) :: people(3)

people(1)%id = 1


people(1)%name = 'John Doe'


people(1)%age = 30.5

people(2)%id = 2


people(2)%name = 'Jane Smith'


people(2)%age = 25.0

people(3)%id = 3


people(3)%name = 'Alice Johnson'


people(3)%age = 28.0


在这个例子中,我们创建了一个包含三个`Person`类型元素的数组`people`,并为每个元素赋值。

六、派生类型的函数和子程序

派生类型可以包含函数和子程序,以实现更复杂的数据操作。以下是一个示例:

fortran

TYPE(Person)


INTEGER :: id


CHARACTER(20) :: name


REAL :: age


CONTAINS


FUNCTION get_age(this) RESULT(age_result)


CLASS(Person) :: this


REAL :: age_result


END FUNCTION get_age


END TYPE Person

FUNCTION get_age(this) RESULT(age_result)


CLASS(Person) :: this


age_result = this%age


END FUNCTION get_age


在这个例子中,我们为`Person`类型添加了一个名为`get_age`的函数,用于获取`Person`实例的年龄。

七、派生类型的应用实例

以下是一个使用派生类型的实际编程示例,用于处理一组人员的年龄统计:

fortran

PROGRAM AgeStatistics


IMPLICIT NONE


TYPE(Person) :: people(3)


INTEGER :: i


REAL :: total_age, average_age

! 初始化人员数据


people(1)%id = 1


people(1)%name = 'John Doe'


people(1)%age = 30.5

people(2)%id = 2


people(2)%name = 'Jane Smith'


people(2)%age = 25.0

people(3)%id = 3


people(3)%name = 'Alice Johnson'


people(3)%age = 28.0

! 计算总年龄和平均年龄


total_age = 0.0


DO i = 1, 3


total_age = total_age + people(i)%age


END DO


average_age = total_age / 3.0

! 输出结果


PRINT , 'Total age of people: ', total_age


PRINT , 'Average age of people: ', average_age


END PROGRAM AgeStatistics


在这个程序中,我们使用`Person`派生类型来存储一组人员的年龄信息,并计算总年龄和平均年龄。

八、结论

Fortran语言中的派生类型是一种强大的特性,它允许程序员创建自定义的数据结构,以更好地组织和管理数据。通过本文的示例,我们了解了Fortran派生类型的定义、实例化、成员访问、数组以及函数和子程序的使用。在实际编程中,派生类型可以帮助我们构建更复杂、更易于管理的程序结构。