适应数值计算编程的Fortran程序教学

摘 要 :Fortran语言已广泛应用于多个行业的数值计算领域.传统的Fortran程序教学方法主要围绕着简单的小型Fortran程序,远远不能满足当前数值计算大型程序应用快速发展的需要.结合数值计算的特点,提出Fortran程序教学的新方向,以往教学实践证明该方法能有效地提高综合编程技能.

关 键 词 :Fortran;教学方法;数值计算;编程技能

1.教学研究背景

Fortran程序语言以简洁高效进行数值计算和科学数据处理的显著优点,广泛被应用于多个行业的数值计算模拟预测领域.学习Fortran语言是利用它去设计计算机程序,解决各种实际问题.目前,我校开设《Fortran程序设计》主要面向环境科学、环境工程、海洋学和大气科学等非计算机专业学生,专业应用主要是海洋潮流、波浪、温盐、悬浮物、水质、大气环境模型以及地下水渗流和弥散等数值模型模拟计算,这些模型都是用Fortran编写的大型程序.学好Fortran有助于更深刻地理解软件设计目的与使用要求,有助于更快更好地应用软件,有助于在实际工作中推陈出新、开发新软件.

历经多年发展,当前的数值模型程序包具有变量多、程序模块多、流程复杂、数据运算量庞大、多文件读入输出和编译、数据可视化处理的特点,要求程序应用者能快速正确地解读其庞大复杂结构、改编程序拓宽功能、自主设置输入输出接口文件和数据处理和可视化绘图等,编程技能要求较高.长期以来,传统的For-tran程序教学模式主要围绕着结构简单、数据较少的小型Fortran程序展开“一题多解”算法设计,远远不能满足当前数值计算应用快速发展的需要.

本文根据多年在海洋环境领域数值模型程序研发和计算应用经历,在如何紧密把握数值计算的Fortran学习要点和编程思路上,做了以下的教学探索,为快速提高Fortran程序的数值计算编程技能提供有益的参考.

2.根据数值计算Fortran编程特点,把握Fortran教学的新方向

2.1选择一本适应数值计算应用的好教材

一本好的教材能使学生在学习过程中起到事半功倍的效果.本课程选用彭国伦编著的《Fortran 95程序设计》.该书条理清晰、实例丰富、紧密结合应用,语言通俗易懂,很适合Fortran初学者.

目前,许多的大型数值模型软件在几十年发展中,主要以Fortran77为主框架,不断添加Fortran90和For-tran95新语法的程序综合体,而该书不仅提供了在Fortran77基础上新增的Fortran90、95的语法知识点.而且还详尽介绍了当今国内外数值模型领域的两种主要编译方法(Windows系统和Linux工作站系统).因而,它对于模型开发应用者也是一本很实用的工具书.


教学内容上,针对课程(68学时)的理论课和上机课1:1的时间,可节选该书前12章,合并为10个章节,具体为:计算机概论、编译器的使用(原第2章和原第12章合并)、Fortran程序设计基础、输入输出及声明、流程控制与逻辑运算、循环、数组、函数、文件、MOD-ULE(原第8-7小节MODULE与原第11章合并)等.

2.2掌握数值计算常用的数学函数和数值函数

大型数值模型是多变量的复杂数学运算.在For-tran程序代码中,复杂运算的程序语句可由多个基本的数学函数和数值函数综合表示.要学会复杂数学运算的设计,必先掌握基本的常用数学函数和数值函数(参见教材的附录).

2.3掌握程序框架结构,改编程序结构,理解流程和数据传递的顺序

目前,大型数值模型的程序包往往结构庞大、模块众多、流程复杂.为了能快速正确地解读其庞大复杂结构,并能根据应用需要自如地改编程序拓宽其功能,程序应用者有必要进行以下的一些针对性的理论和编程学习.

Fortran是一种头尾呼应的模块化结构语言,例如主程序(例如,program等end或end program)、子程序(例如,subroutine等end或end subroutine)、自定义函数(例如,function等end或end function)、module块(例如,module等end module);以及小的do循环(例如,do等end do)模块和if模块(例如,if等then等end if).掌握常见基本模块结构,有助于快速清晰地解读程序各部分的功能,是构建一个计算思路清晰,程序代码的可读性和可扩展性较好的程序设计基本技能之一.

为了今后能根据应用自主改编程序模块和拓宽功能,需加强改编程序结构的练习.例如,将主程序的某一个计算功能独立出,改写成子程序或自定义函数或module,也可将子程序或自定义函数或module部分的计算简化并且合并到主程序中.通过分离和合并的改编过程.理解变量声明和变量数据传递在不同结构中的区别.

此外,在数值模型中,其强大的数据交换和计算功能主要通过数据赋值(或键盘输入、文件读入)、运算和输出(文件或屏幕)等环节实现.同一变量在计算和传递中经常不断被更新,因而,理解计算和数据传递的顺序,对于正确解读和运用大型计算程序显得尤其重要.

2.4掌握数组和数据文件读入输出的综合应用方法

大型的数值计算程序包往往变量众多、数据量庞大,同一类信息的数据经常使用数组(一维、二维、三维等)保存,并通常使用文件来输入和保存大量数据.在文件打开(open)以后,需要在读写语句(read/write)中设置数组的循环读人或输出.

2.5掌握Fortran77与Fortran90程序的互相改编和多文件混合编译方法

多个程序文件构建一个完整程序包的好处是程序的调试效率高和易于升级功能拓展.许多的大型数值模型软件在几十年发展中,在Fortran77主框架基础上不断添加Fortran90和Fortran95新语句,它往往是由一个主程序和数量众多的程序文件(例如,子程序、自定义函数、参数声明、数据文件等)的不同格式(Fortran77格式的f文件和Fortran 90及95格式的t90文件)组成的程序包.

在本课程学习中,通过Fortran77文件与For-tran90、95程序文件的互相改编和多文件混合编译,理解这两者在格式和命令上的不同,掌握多文件构成的程序包的混合编译方法(Windows和Unix的编译方法不同),是移植、编译运行和拓展大型数值模型程序包的基本技能之一.

3.结语

笔者先后对两届四个班的学生进行了上述学习要点的教学实践,学生学习兴趣增加,课堂答疑和讨论热烈,反映良好.该方法对学生在编写复杂计算公式、解读复杂程序、改编程序结构、程序包编译和数组和文件应用等方面的综合编程技能整体有了较大地提高.这种新的教学思路对数值模型计算的Fortran编程快速入门具有较好的应用意义.

类似论文

基于编程语言类课程教学方法的

摘 要:编程语言类课程作为计算机专业的核心课程,并具有强实践性的特点 本文根据讲授该类课程。
更新日期:2024-1-11 浏览量:19958 点赞量:5808

两相流与粒子输运的数值计算方法

有关两相流问题的物理与数学求解是一个重要的研究主题,其研究历史已经超过30年 由于描述其物理过程的偏微分方程比较复杂,来。
更新日期:2024-6-28 浏览量:83858 点赞量:18889

高中物理中的引入数值计算的学习探究

摘 要:本文采用文献资料法、逻辑分析法对当前高中物理学习引入数值计算进行了分析研究 当前,高中物理学习。
更新日期:2024-12-15 浏览量:156907 点赞量:33986