Fortran数组
- 格式:ppt
- 大小:134.00 KB
- 文档页数:30


龙源期刊网
通过与Fortran 的混合编译在C 中实现动态数组
作者:王国宾
来源:《电脑知识与技术》2013年第18期
摘要:动态数组在数据处理时有着独特的优势,Fortran语言数组功能强大并支持动态数组,而C语言不支持动态数组。利用Fortran与C/C++的混合编译思想,通过调用Fortran90例程的方法,在C中实现动态数组并给出了程序代码。
关键词:动态数组;Fortran;C/C++;混合编译;调用约定
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)18-4192-03
数组是处理大量数据时的有力助手。在不能够事先确定数组大小的情况下,为避免数据溢出或越界,就要足够大的数组。这种方法使用过度,会迟滞内存操作。故此,理想的数组能够动态确定大小,即程序运行中先向系统申请一个大数组,不使用时再将其内存空间释放掉。而动态数组很好地满足了这一要求。但C语言不支持动态数组,不能动态定义数组元素的数量。如何解决这一矛盾将是本文的着力点。
1 Fortran中的动态数组
Fortran90数组功能强大,执行程序时能够动态分配数组存储空间和实际大小,不使用时再将其内存释放还给系统;支持直接操作数组段、数组整体;支持逐个操作数组元素;支持面向数组操作的函数和构造块[1]。Fortran 90中运用动态数组需要三个步骤:
1)声明动态数组。明确数组的维数,不规定维的上、下界和大小(即延迟形状数组)。如:REAL,DIMENSION(:),ALLOCATABLE::X。
2)给动态数组分配内存。如:ALLOCATE(X(N))。
3)将分配的内存释放掉。如:DEALLOCATE(X)。
2 Fortran与C/C++的混合编译
FORTRAN90用法总结
Fortran90是Fortran的最新标准程序设计语言,它是在Fortran77基础上的新增功能,支持面向对象的功能,同时也支持可变参数,数据语句和开发语句,使其具有更高的强大功能。它也支持宏的使用,以帮助程序编写者更好的实现一些高级程序功能,以提高程序性能,提高程序易用性。下面将重点介绍Fortran90的五大用法。
第一,利用Fortran90进行函数的编写。Fortran90的函数可实现参数的多次组合,通过对用户函数的调用,就可达到想要的结果,而不用写复杂的循环程序,这有助于提高程序的可管理性,降低程序的出错率。
第二,通过宏的使用来完成Fortran90的程序编写。宏语言有助于程序的复杂编写和优化,通过它可以大大提高程序的性能,节约程序的开发时间,从而提高程序的可用性。
第三,Fortran90的数组操作功能。Fortran90支持数组的多维操作,能够进行大数组操作,从而编写出简洁的程序,节约存储空间,提高程序的执行效率。
第四,Fortran90的指针操作功能。它可以完成复杂数据的指针操作,以实现数据的重排、排序、和传输,可以让程序编写者有效地运用指针操作,提高程序性能和稳定性。
最后,Fortran90的结构化编程功能。
fortran数组赋值
Fortran 数组赋值
Fortran 是一种广泛应用于科学和工程计算领域的编程语言。其中的数组赋值是一个非常重要的概念,在许多计算任务中都得到了广泛的应用。在本篇文章中,我们将一步一步地回答有关 Fortran 数组赋值的问题,并详细说明其在计算领域的应用。
1. 什么是数组?
在 Fortran 中,数组是一种用于存储和处理一组相同类型数据的数据结构。它可以是一维、二维,甚至是更高维度的。例如,我们可以定义一个一维数组来存储一组年龄数据,或者定义一个二维数组来存储一个矩阵。
2. 如何声明和初始化数组?
在 Fortran 中,我们可以使用 DIMENSION 语句来声明数组的大小,并使用 DATA 语句来初始化数组的值。例如,以下代码声明了一个长度为 5
的一维整数数组,并将其初始化为 1、2、3、4 和 5:
INTEGER, DIMENSION(5) :: arr
DATA arr /1, 2, 3, 4, 5/
3. 如何对数组进行赋值?
Fortran 提供了多种方式来对数组进行赋值。最常见的方式是通过循环语句逐个赋值。例如,以下代码将数组 `arr` 中的每个元素加一:
DO i = 1, 5
arr(i) = arr(i) + 1
END DO
通过这种方式,我们可以对数组中的每个元素进行特定的操作,例如加减乘除、求平方等。
4. 如何使用数组赋值表达式?
除了使用循环语句逐个赋值外,Fortran 还提供了数组赋值表达式的方式,可以快速地对整个数组进行赋值。例如,我们可以使用如下方式为数组
`arr` 赋予相同的值:
arr = 0
这将使 `arr` 中的每个元素均被赋值为零。类似地,我们也可以通过使用特定的表达式来对整个数组进行赋值,例如:
arr = 2 * arr + 1
这将对数组中的每个元素进行相应的操作。
5. 如何进行数组的切片赋值?
为我爱人搜集的程序 但愿能帮上她的忙 HXM
例1 分别建立顺序文件,从终端输入N个学生的姓名和三门课的成绩,分别存入这两个文件中,文件总的每个记录存放一名学生的名字和他的成绩,嘉定最多有100名学生。,每位学生姓名最多由12个字符组成、
1. 输入N名学生的数据,建立一个名为SSTUD.DAT的顺序存取数据文件,存放学生的数据,此文件假定动器A的磁盘上,程序如下:
PROGRAM MAIN
DIMENSION NAME(100),S(100,3)
CHARACTER*12 NAME
WRITE(*,*)’INPUT NUMBER OF STUD:’
READ(*,*)N
OPEN(4,FILE=’A:SSTUD.DAT’,STATUS=’NEW’)
DO 10 I=1,N
READ(*,*) NAME(I),(S(I,J),J=1,3)
10 CONTINUE
WRITE(4,200)(NAME(I),(S(I,J),J=1,.3),I=1,N)
200 FORMAT(A12,3F10.2)
WRITE(*,210)(NAME(I),(S(I,J),J=1,.3),I=1,N)
210 FORMAT(4X,A12,3F10.2)
CLOSE(4)
END
2,输入N名学生的数据,建立一个名为DSTUD.DAT的直接存取文件,存放学生的数据,此文件假定在驱动器A的磁盘上。程序如下:
PROGRAM MAIN
DIMENSION NAME(100),S(100,3)
CHARACTER*12 NAME
WRITE(*,*)’INPUT NUMBER OF STUD:’
READ(*,*)N
DO 10 I=1,N
READ(*,*) NAME(I),(S(I,J),J=1,3)