发信人: leavy (☆星河☆), 信区: Fortran
标 题: Visual Fortran 高级编程技术
发信站: 南京大学小百合站 (Fri Jul 9 21:44:36 2004)
Visual Fortran 高级编程技术
Microsof 公司推出了支持32位的FORTRAN POWER STATION1.0 到FORTRAN POWER STATION4.0编译器后将其卖给了DEC公司。DEC随即推出了DVF5.0(Digital Visual FORTRAN 5.0),其工作环境与MFC5.0完全一致,最近DEC又推出了DVF6.0(Digital Visual FORTRAN 6.0,其工作环境与MFC6.0完全一致。
FORTRAN在DOS下的编程技术相信早以为大家熟悉。有关FORTRAN90方面的书籍也不少见,因此这里不再赘述。以下主要以最新的DVF5.0讲述有关FORTRAN图形编程的方法。
1 DVF 概述
2 QuickWin Application
3 Win32 Application
4 OpenGL
1 DVF概述
1. 1 安装
1) 在安装选项中,注意选择 /Samples,这里包含了DVF的丰富例子。
2) 要拷贝 /Msdn 子目录,这里包含了API及OPENGL函数的帮助。
3) 可以网上下载升级。
1.2 语言
1) 书写格式
● 不受列的限制,可自由书写。
● 注释在任何地方由'!'开始。
● 续行在行尾加'&'。
2) 动态数组
●
优点:动态数组的维界在程序执行过程中随时可按需要变化,数据需要占多少内存,就可在程序中动态地分配给数组多少内存;如果该数组以后不再使用,又可释放该数组,把该数组占用的内存归还给系统另作他用。这样可以节约使用内存,提高内存使用效率。动态数组主程序与子程序。
● 语句:
? 属性说明语句
ALLOCATABLE
? 分配语句
ALLOCATE(数组名1(形状描述),数组名2(形状描述),…[STAT=变量 名])
? 释放语句
DEALLOCATE(动态数组名1,动态数组名2,…[STAT=变量名])
● 例子程序1
REAL(8),ALLOCATABLE::X(:),Y(:),Z(:)
INTEGER(4)::NODE
READ(*,*) NODE
ALLOCATE (X(1:NODE),Y(1:NODE),Z(1:NODE))
DO I=1,NODE
X(I)=1.0
Y(I)=1.0
Z(I)=I
END DO
DO I=1,NODE
WRITE(*,*) X(I),Y(I),Z(I)
END DO
DEALLOCATE(X,Y,Z)
END
3) 模块
● 优点:模块是一种在主程序单元之外独立编写的程序单元。模块程序单元内没有可执行语句,除了说明语句外,最多包含模块过程。主要作用是供其他程序单元引用,即数据的共享与模块过程的复制。包含了COMMON与INCLUDE的全部功能。
● 语句:
a 模块的编写
MODULE 模块名
类型说明部分
[CONTAINS]
[模块过程1]
…
[模块过程N]
END MODULE [模块名]
b 模块的引用
USE 模块1,模块2,…,模块n
● 例子程序2:
! 模块***************************************
MODULE MYDATA
INTEGER NODE,NEL
END MODULE MYDATA
!*******************************************
!主程序*************************************
USE MYDATA
NODE=100
NEL=90
WRITE(*,*)"IN MAIN PROGRAM :"
WRITE(*,*)"NODE=",NODE
WRITE(*,*)"NEL=",NEL
CALL SUBPROGRAM()
END
!*******************************************
!子程序*************************************
SUBROUTINE SUBPROGRAM()
USE MYDATA
WRITE(*,*)"IN SUBPROGRAM :"
WRITE(*,*)"NODE=",NODE
WRITE(*,*)"NEL=",NEL
END SUBROUTINE
!*******************************************
1.2 开发环境
1) 建立新文件、新项目
●