FORTRAN90第二次实验

更新时间:2023-10-17 23:39:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验二 掌握FORTRAN90基础知识

程序设计语言是一类形式化的人工语言,每一个程序设计语言都有其严格的词法、语法和语义规定,对字符集的使用、实体名称的描述、程序结构的组织、语句次序的排列、程序格式的书写和数据类型的定义等都有明确的要求。不同的程序设计语言其规定和要求有所不同,任何不符合语言规定和要求的程序均为不合法程序(错误程序)。理解和掌握有关程序设计语言的基础知识和基本概念,是学习程序设计方法的重要环节和基本前提。

FORTRAN90有明确的字符集使用规定、严格的名称描述语法、清晰的程序组织结构、严谨的语句排列次序、灵活的程序书写格式和丰富的数据类型定义。必须首先学习、理解和掌握FORTRAN90这些基础知识和基本概念,为进一步学习FORTRAN90程序设计奠定坚实基础。

本实验是学习和掌握FORTRAN90基础知识和基本概念的一次系统实验活动。

一. 一. 实验目的

1. 2. 3. 4. 5. 6. 7.

1. 了解FORTRAN90字符集。

2. 掌握FORTRAN90实体名称的语法描述规则和具体使用要求。 3. 了解FORTRAN90关键字意义,以及与名称的区别。

4. 掌握FORTRAN90程序组织结构和语句排列次序的基本原则。 5. 掌握FORTRAN90自由书写格式及三个标志符的主要作用。

6. 理解数据、数据表示、数据类型概念,熟悉FORTRAN90数据类型。

7. 进一步熟悉软件开发环境和掌握程序的输入、编辑、编译、构建和运行方法。

二. 二. 实验内容1

1. 1. 问题描述

已知三个整数:15、20、25。计算三个整数之和,求三个整数所有可能排列次序,输出三

数之和,以及排列次序。编写程序实现之。要求三个整数从键盘输入。

2. 2. 程序编写

通过需求分析,设计和编写以下五个等价程序。 程序1-1:

? ? !班级:??? ? ? !姓名:??? ? ? !时间:???

? ? !计算三数之和,求三数排列次序 ? ? PROGRAM example

? ? INTEGER(1) :: I1,I2,I3 ? ? INTEGER :: sum

? ? PRINT*,’请输入三个整数:’ ? ? READ*,I1,I2,I3 ? ? sum=I1+I2+I3

? ? PRINT*,‘I1+I2+I3=’,sum

? ? PRINT*,‘三个整数所有可能排列次序有:’ ? ? PRINT*,I1,I2,I3 ? ? PRINT*,I1,I3,I2 ? ? PRINT*,I2,I1,I3 ? ? PRINT*,I2,I3,I1

? ? PRINT*,I3,I1,I2 ? ? PRINT*,I3,I2,I1 ? ? END PROGRAM example

程序1-2:

? ? !班级:??? ? ? !姓名:??? ? ? !时间:???

? ? !计算三数之和,求三数排列次序 ? ? PROGRAM example ? ? INTEGER(1) :: I,J,K ? ? INTEGER S

? ? PRINT*,’请输入三个整数:’ ? ? READ*,I,J,K ? ? S=I+J+K

? ? PRINT*,‘I1+I2+I3=’,S

? ? PRINT*,‘三个整数所有可能排列次序有:’ ? ? PRINT*,I,J,K ? ? PRINT*,I,K,J ? ? PRINT*,J,I,K ? ? PRINT*,J,K,I ? ? PRINT*,K,I,J ? ? PRINT*,K,J,I ? ? END PROGRAM

程序1-3:

? ? !班级:??? ? ? !姓名:??? ? ? !时间:???

? ? !计算三数之和,求三数排列次序 ? ? PROGRAM example ? ? INTEGER sum

? ? INTEGER(1) I1,I2,I3

? ? PRINT*,’请输入三个整数:’;READ*,I1,I2,I3 ? ? sum=I1+I2+I3

? ? PRINT*,‘I1+I2+I3=’,sum

? ? PRINT*,‘三个整数所有可能排列次序有:’ ? ? PRINT*,I1,I2,I3;PRINT*,I1,I3,I2 ? ? PRINT*,I2,I1,I3;PRINT*,I2,I3,I1 ? ? PRINT*,I3,I1,I2;PRINT*,I3,I2,I1 ? ? END

程序1-4:

? ? !班级:??? ? ? !姓名:??? ? ? !时间:???

? ? !计算三数之和,求三数排列次序 ? ? INTEGER(1) I1,I2,I3 ? ? INTEGER sum

? ? PRINT*,’请输入三个整数:’ ? ? READ*,I1,I2,I3 ? ? sum=I1+& ? ? I2+& ? ? I3

? ? PRINT*,‘I1+I2+I3=’,& ? ? sum

? ? PRINT*,‘三个整数所有可能排列次序有:’

? ? PRINT*,I1,I2,I3;PRINT*,I1,I3,I2 ? ? PRINT*,I2,I1,I3;PRINT*,I2,I3,I1 ? ? PRINT*,I3,I1,I2;PRINT*,I3,I2,I1 ? ? END PROGRAM

程序1-5:

? ? !班级:??? ? ? !姓名:??? ? ? !时间:???

? ? !计算三数之和,求三数排列次序 ? ? INTEGER(1) :: I1,I2,I3 ? ? INTEGER sum

? ? PRINT*,’请输入三个整数:’ !输出提示信息 ? ? READ*,I1,I2,I3 !输入三个整数 ? ? sum=I1+I2+I3 !计算三个整数之和 ? ? PRINT*,‘I1+I2+I3=’,sum !输出三个整数之和 ? ? PRINT*,‘三个整数所有可能排列次序有:’

? ? PRINT*,I1,I2,I3;PRINT*,I1,I3,I2;PRINT*,I2,I1,I3 ? ? PRINT*,I2,I3,I1;PRINT*,I3,I1,I2;PRINT*,I3,I2,I1 ? ? END !程序结束

3. 3. 实验要求

? ? 创建新工作区:shiyan02,工作区文件夹创建在D盘上。 ? ? 在工作区shiyan02内创建五个新项目:xm11、xm12、xm13、xm14、xm15,项目文件夹创建在工作区文件夹内。 ? ? 分别在项目xm11、xm12、xm13、xm14、xm15内创建源程序文件:xm11.f90、xm12.f90、xm13.f90、xm14.f90、xm15.f90,同时在源程序文件中分别编辑输入给定的程序1-1、程序1-2、程序1-3、程序1-4、程序1-5。 ? ? 分别在项目xm11、xm12、xm13、xm14、xm15内编译、构建、运行程序。 ? ? 分别将输入数据和输出结果以注释形式编辑输入到有关源程序文件xm11.f90、xm12.f90、xm13.f90、xm14.f90、xm15.f90末尾。

4. 4. 实验步骤

? ? 启动Microsoft Developer Studio软件开发环境。 ? ? 创建新工作区。 ? ?单击“File”/“New”菜单,弹出“New”对话框。 ? ?选取“Workspaces”选项卡,完成以下操作。

? ? 在“Location”文本框输入“D:\\”或单击右侧按钮查找指定D盘。 ? ? 在“Workspace name:”文本框输入工作区名:shiyan02。 ? ? 单击“Ok”按钮。 ? ? 创建新项目。 ? ?单击“File”/“New”菜单,弹出“New”对话框。 ? ?选取“Projects”选项卡,完成以下操作。

? ? 在项目类型区单击选取“Win32 Console Application”项目类型。 ? ? 单击选取“Add to current workspace”项。 ? ? 在“Project name:”文本框输入项目名:xm11。 ? ? 在“Location”文本框取默认值“D:\\shiyan02\\xm11”。 ? ? 单击“Ok”按钮。

? ? 创建源程序文件,编辑输入源程序文本。 ? ?单击“File”/“New”菜单,弹出“New”对话框。

? ?选取“Files”选项卡,完成以下操作。

? ? 在文件类型区单击选取“Fortran Free Format Source File”文件类型。 ? ? 单击选取“Add to project”项,同时在下方列表框中选择项目xm11。 ? ? 在“File name:”文本框输入文件名:xm11。

? ? 在“Location”文本框取默认值“D:\\shiyan02\\xm11”。 ? ? 单击“Ok”按钮,在右侧打开“源程序文档窗口”。 ? ? 在“源程序文档窗口”中编辑输入给定的程序1-1。 ? ? 编译项目内源程序文件。 ? ?单击“Build”/“Compile”菜单,或“Build MiniBar”/“Compile”工具按钮。 若源程序文本正确,则在下方“Output”窗口中显示信息“xm11.obj - 0 error(s), 0 warning(s)”,同时在“debug”文件夹中创建中间文件“xm11.obj”,否则显示错误信息,需对照给定的源程序修改源程序文本,然后再进行编译,直到编译正确为止。

? ? 构建可执行程序文件。 ? ?单击“Build”/“Build”菜单,或“Build MiniBar”/“Build”工具按钮。

若源程序文本正确,则在下方“Output”窗口中显示信息“xm11.exe - 0 error(s), 0 warning(s)”,同时在“debug”文件夹中创建可执行程序文件“xm11.exe”,否则显示错误信息,需对照给定的源程序修改源程序文本,然后再进行编译和构建,直到构建正确为止。

? ? 运行可执行程序文件。 ? ?单击“Build”/“Execute”菜单,或“Build MiniBar”/“Execute”工具按钮。 ? ?弹出DOS操作方式文本窗口。 输入数据:15,20,25

输出结果:I1+I2+I3= 60

三个整数所有可能排列次序有: 15 20 25 15 25 20 20 15 25 20 25 15 25 15 20 25 20 15

? ? 将输入输出数据以注释形式编辑输入到源程序文件末尾(每行首字符为“!”)。 ? ? 同法创建其余四个新项目:xm12、xm13、xm14、xm15。

? ? 同法在四个新项目中分别创建四个源程序文件:xm12.f90、xm13.f90、xm14.f90、xm15.f90,并分别编辑输入其余四个给定的程序1-2、程序1-3、程序1-4、程序1-5。 ? ? 同法在四个新项目中分别编、构建、运行程序。

? ? 同法将四个程序的输入输出数据分别以注释形式编辑输入到有关源程序文件末尾。

三. 三. 实验内容2

1. 1. 问题描述

有一呈等腰梯形的鱼塘,上底边长为150米,下底边长为210米,高为40米,在鱼塘周围建起了围墙,如图2-1所示。每平方米鱼塘产鱼4公斤,每公斤鱼的价格为10元。编写程序计算该鱼塘的产量和产值,以及围墙的长度。要求梯形的上底边长、下底边长、高从键盘输入。

a:150

c h:40 b:210

图2-1 鱼塘示意图

2. 2. 程序编写

通过需求分析,设计和编写程序如下: 程序2-1:

? ? !班级:??? ? ? !姓名:??? ? ? !时间:???

? ? !计算鱼塘产量和产值 ? ? PROGRAM main ? ? INTEGER ::p=4,q=10 ? ? REAL :: a,b,c,h ? ? REAL :: area,perimeter,yield,sales

? ? PRINT*,’请输入梯形鱼塘的上底、下底和高值:’ ? ? READ*,a,b,h ? ? area=(a+b)*h/2 ? ? yield=area*p ? ? sales=yield*q

? ? c=SQRT(((b-a)/2)*((b-a)/2)+h*h) ? ? perimeter=a+b+2*c

? ? PRINT*, ‘鱼塘产量:’,yield,’公斤。’ ? ? PRINT*, ‘鱼塘产值:’,sales,‘元。’ ? ? PRINT*, ‘围墙长度:’,perimeter,‘米。’ ? ? END

3. 3. 实验要求

? ? 以给定的程序2-1为基础,按照“实验内容1”五个程序示例和操作经验,通过改变变量名称、取舍程序结构标识、调整语句排列次序、使用书写格式标志符,修改程序2-1中部分内容(有四处以上修改),得到四个等价程序(输入数据和输出结果完全一样):程序2-2、程序2-3、程序2-4、程序2-5。 ? ? 在工作区shiyan02内创建新项目:xm21、xm22、xm23、xm24、xm25,项目文件夹创建在工作区文件夹内。 ? ? 分别在项目xm21、xm22、xm23、xm24、xm25内创建源程序文件:xm21.f90、xm22.f90、xm23.f90、xm24.f90、xm25.f90,同时分别在源程序文件中编辑输入给定的程序2-1和修改得到的程序2-2、程序2-3、程序2-4、程序2-5。 ? ? 分别在项目xm21、xm22、xm23、xm24、xm25内编译、构建、运行程序。 ? ? 分别将输入数据和输出结果以注释形式编辑输入到有关源程序文件xm21.f90、xm22.f90、xm23.f90、xm24.f90、xm25.f90末尾。

4. 4. 实验步骤

本次实验步骤需要在前面实验步骤的基础上完成。工作区shiyan02已经创建,缺省情况下,工作区已经打开,如果已经关闭,则将其打开。新项目将在已打开的工作区内创建。

? ? 修改得到四个等价程序:程序2-2、程序2-3、程序2-4、程序2-5。允许提前完成。 ? ? 创建新项目:xm21。

? ? 在项目xm21内创建源程序文件:xm21.f90,同时编辑输入给定的程序2-1。 ? ? 编译项目xm21内源程序文件xm21.f90,生成中间文件xm21.obj。 ? ? 构建可执行程序xm21.exe。

? ? 运行可执行程序xm21.exe。 输入数据:150,210,40

输出结果:鱼塘产量: 28800.00 公斤。 鱼塘产值: 288000.0 元。 围墙长度: 460.0000 米。

? ? 将输入数据和输出数据以注释形式编辑输入到源程序文件末尾(每行首字符为“!”)。 ? ? 同法创建其余四个新项目:xm22、xm23、xm24、xm25。

? ? 同法在四个新项目中分别创建四个源程序文件:xm22.f90、xm23.f90、xm24.f90、xm25.f90,并分别编辑输入其余四个新生成的程序:程序2-2、程序2-3、程序2-4、程序2-5。

? ? 同法在四个新项目中分别编、构建、运行程序。

? ? 同法将四个程序的输入输出数据分别以注释形式编辑输入到有关源程序文件末尾。

四. 四. 实验小结

本次实验是学习、理解和掌握FORTRAN90程序设计基本知识的一次实验,实验效果对掌握FORTRAN90程序设计方法和技术至关重要。

通过本次实验,学生对FORTRAN90语言的一些基本概念和基础知识有一个完整和准确的理解,初步掌握编写合法FORTRAN90程序的基本原则和基本要求,熟练掌握名称命名规则、程序组织结构、语句排列次序、程序书写格式、数据类型定义等基本知识。

通过本次实验,学生对源程序文本的不唯一性和程序的等价性有深刻理解。两个程序等价,充分必要条件是两个程序输入数据相同,其程序运行结果(输出数据)也完全相同。通过程序等价性实验练习,有助于学习、理解和掌握字符集、名称、程序结构、语句次序、书写格式、数据类型等概念和知识。因为对这些概念和知识的理解不准确和不全面,就很难经修改得到一个等价的程序。

五. 五. 课外练习

利用课后业余时间,完成以下练习,以巩固所学知识。 求解以下问题:

有一长5米、宽3米的长方形铁皮,在四个角对称挖了四个半径为0.2米的圆洞,根据需要对这块铁皮镀一层铜,镀铜的价格是每平方米50元。计算镀铜费用。编写程序实现之。

根据问题需求分析,设计和编写程序

本文来源:https://www.bwwdw.com/article/3dtf.html

Top