Fortran程序设计:第一章 前言

上传人:努力****83 文档编号:192620459 上传时间:2023-03-07 格式:PPTX 页数:36 大小:286.27KB
收藏 版权申诉 举报 下载
Fortran程序设计:第一章 前言_第1页
第1页 / 共36页
Fortran程序设计:第一章 前言_第2页
第2页 / 共36页
Fortran程序设计:第一章 前言_第3页
第3页 / 共36页
资源描述:

《Fortran程序设计:第一章 前言》由会员分享,可在线阅读,更多相关《Fortran程序设计:第一章 前言(36页珍藏版)》请在装配图网上搜索。

1、Fortran程序设计第一部分 Fortran基础知识第一章 前言本章学习目标了解Fortran的合法字符了解Fortran语句和Fortran程序基本结构了解可执行和不可执行语句之间的区别了解常量与变量的区别理解INTEGER、REAL和CHARACTER数据类型的区别掌握默认和显式类型说明的不同,理解为什么总该使用显式类型说明了解Fortran赋值语句的结构掌握在使用时整数运算和实数运算的不同了解Fortran操作符号的运算级别掌握Fortran怎么计算混合运算表达式掌握什么是内置函数和怎样使用它们了解怎样使用表控输入和输出语句了解为什么总是使用IMPLICIT NONE语句很重要简单地说

2、:学完本章,你应该可以编写除函数以外的简单程序1.1 Fortran字符集 正如英语的学习从abc开始,Fortran的学习也是从字符集开始符号个数符号个数类型类型取值取值26大写字母A-Z26小写字母a-z10数字0-91下划线_5算术符号+-*/*17其它各种符号().=,$:!”%&;?和空格和C、JAVA语言不同,Fortran语言部分大小写1.2 句法程序由一系列语句构成,语句有两种基本类型可执行语句(executable)描述程序执行时的行为,比如加减乘除等等不可执行语句(unexecutable)对程序中的相应操作进行必要的说明1.2 句法每行最长132个字符写不下可以换行,一条

3、语句最长可以40行语句标号现代Fortran程序很少用语句标号在程序里面必须是唯一的注释(comment)!开始到行末的字符都不会被编译output=input1+input2 !Sum the inputsoutput=input1&+input2 !Sum the inputs100 output=input1&!Sum the inputs&+input2 1.3 程序结构PROGRAM my_first_program!Purpose:!To illustrate some of the basic feature of a Fortran program.!Declare the v

4、ariables used in this program.INTEGER:i,j,k!All variables are integers!Get two values to store in variables i and jWRITE(*,*)Enter the numbers to multiply:READ(*,*)i,j!Multiply the number togetherk=i*j!Write out the result.WRITE(*,*)Result=,k!Finish up.STOPEND PROGRAM my_first_program例1.11.3.1 声明部分声

5、明由不可执行语句组成位于程序开头定义程序名和程序引用的数据以及变量类型PROGRAM语句用来指定程序的名字程序名最长可达31个字符由字母、数字和下划线任意组合而成第一个字符必须是字母如果存在PROGRAM语句,它必须是程序的第一个语句行例程中出现的另外一条声明语句是INTEGER类型声明语句,关于这条语句在后续的课程中我会详细介绍1.3.2 执行部分 1.3.3终止部分例程中标注红色的是执行部分,可以看到有多条执行语句所有的这些语句我将会在后续课程中逐一详解终止部分由STOP和END PROGRAM语句组成编译器会自动在END PROGRAM之前生成一条STOP语句,所以,STOP语句经常是可

6、以省掉的1.3.4 程序书写格式Fortran程序的基本书写原则保留字都大写变量用小写常量名用大写名字中的下划线出现在两个单词之间书写原则是为了阅读的方便你可以采用自己的书写风格统一的风格和始终保持这种风格有助于编程效率的提高1.4 常数与变量 常数(constant,也称常量)是一个数据对象,定义在程序执行之前,且在程序执执行期间取值不可改变行期间取值不可改变,当编译器编译到常数时,它将常数放置在一个位置已知的内存空间,无论何时程序使用该常数,就引用该存储位置 变量(variable)是一个数据对象,它的值在执行期间发生改变,编译器编译遇到变量时,会给变量预留一个位置已知的存储空间,在执行期

7、间使用到该变量时,就引用这个存储位置。变量可以在执行前初始化,也可以不初始化1.4.1 起名的规则常量和变量实际上是内存中特定位置的标号,方便程序员记忆和使用名字可以长达31个字符(Fortran95的标准)字母、数字、下划线任意组合第一个字符必须是字母有效名:distancetimeyear2013my_book_name无效名:2monththis_is_a_very_long_variable_namemoney$_this_is_illegalPSPS:尽量给常量和变量起有意义的名字:尽量给常量和变量起有意义的名字1.5 数据类型 Fortran内置数据类型INTEGERREALCOM

8、PLEXLOGICALCHARACTER还可以自定义数据类型这一章我们学习INTEGER/REAL/CHARACTER这三种1.5.1 整数类型整数类型是不含小数点的任意数据如果是正数,可以带+号也可以不带计算机能表示的整数长度是有限的,在下一章我们会讨论这个问题1.5.2 实数类型实数类型是含有小数部分的数据实数可以用指数记数法表示,+1.0E-3指数部分只能是整数用实数表示时,实数分两成尾数和指数两部分,计算机分配用来存放尾数的二进制位数决定了实数的精度,分配给存储指数的位数决定了实数的表示范围,第二章我们会详细讨论这个问题有效的实数表示:1.212.0.12E10.12E+1-12.0E

9、-1无效的实数表示:-12.0E1.51.5.3 字符类型字符类型由字符串组成字符常数是由单引号或双引号括住的字符串在单引号或双引号之间括起来的部分称为字符文本,字符文本可以采用任意计算机可以表示的字符,而不受Fortran字符集限制如果字符文本中含有单引号该怎么办?方法一、如果字符串是用单引号括起来的,那么可以用连续两个单引号表示方法二、直接用双引号括起来类似的办法可解决双引号问题Im fine.Im fine.“Im fine.”“who are you?”“who are you?”“”who are you?”1.5.4 默认的变量类型 如果在程序中没有声明变量类型,那么编译器就会用默

10、认的规则来确定变量类型任何以字母I,J,K,L,M,N开头的变量名假定为INTEGER其它字母开头的变量名则假定为REAL1.5.5 显式的变量类型变量的类型可以在程序的声明部分显式地声明 INTEGER:var1,var2,var3,REAL:var1,var2,var3,CHARACTER(len=):var1,var2,var3,类型声明语句是不可执行语句必须在PGROGRAM之后,第一条可执行语句之前CHRACTER类型不是默认类型,所以所有的字符变量必须显式声明声明语句中的(len=)是可以省略的,如果省略,说明所定义的字符常量的长度为1,否则,len的值就是该变量的长度1.5.6

11、常数的声明常数的类型声明语句也放在程序的声明部分type,PARAMETER:name=value,name2=value2,例如:REAL,PARAMETER:PI=3.141593 为了便于阅读,我们约定常数名一律大写,并且名字起的要有意义1.6 赋值语句和算术运算variable_name=expression赋值语句是执行语句“=”并不是表示左右两边相等的意思,而是一个操作符(赋值符号),表示将expression的值存储到变量variable_name所代表的存储单元i=i+1 表示什么?expression叫表达式由常数、变量、圆括号、算术或逻辑运算符构成1.6 赋值语句和算术运算

12、nFortran 的算术运算符有5个n+n-n*n/n*指数运算n基本上它们和我们在数学里面接触到的没什么区别n要注意的是,+和-同时也可以用来表示数的正负号n运算优先级由高到低是括号、指数运算、乘除、加减,运算顺序是从左到右1.6.1 整数运算整数运算的结果始终是整型整数之间的除法会得到意外的结果3/4=04/4=15/4=16/4=18/4=29/4=2在程序中处理描述现实世界连续量的变量时,要避免使用整数整数主要用来计数和索引1.6.2 实数运算实数运算基本上会产生一个我们希望的实数结果3.0/4.0=0.754.0/4.0=1.5.0/4.0=1.256.0/4.0=1.58.0/4.

13、0=2.9.0/4.0=2.25有些实数不能被精确表示比如1/3 可能会表示为0.3333333在某些计算机上3.0*(1.0/3.0)与3.0*1.0/3.0的结果不一样由于精度的问题,部分实数的表示会出现截断,用有限位来表示该数的近似值,但是表示出来的值并不一定遵循四舍五入的原则,具体是多少不同的计算机有不同的结果。所以在进行实数的相等比较时,要慎重1.6.3 指数运算xn的表达式是x*n如果x是实数,n是整数计算机会将x连乘n次,这是一个实数的乘法运算如果x是实数,n是实数连乘的方法不可用计算机实际上是计算enlnx采用这种方法计算,精度比较低,运行时间长尽量用整数幂,避免采用实数幂如果

14、必须要采用实数幂,必须要注意到对于负数不能求负的实数幂(-2.0)*2.0是不合法的,编译程序时将会提示如下错误1.6.4 运算符优先级n首先做圆括号内的计算,且内层括号优先n再从右到左做指数运算n从左到右做乘法和除法运算n从左到右做加法和减法运算1.6.5 混合运算实数与整数一起运算时,计算机将整数转换为实数,结果是实数这一转换仅仅是指参与操作的两个操作数类型分别为实数和整数而言表达式表达式结果结果11+1/4121.0+1/41.031+1.0/41.25因为混合运算的情况是如此复杂,所以我们在程序中要尽量避免这种情况发生1.6.5 混合运算如果不得不进行混合运算,可以利用转换函数显式地在

15、数的类型之间进行转换,然后再参与运算函数名和参数函数名和参数参数类型参数类型结果类型结果类型返回值返回值INT(X)REALINTEGERx的整数部分(x被截尾)NINT(X)REALINTEGER最接近x的整数(x被四舍五入)CEILING(X)REALINTEGER大于或等于x的最小整数FLOOR(X)REALINTEGER小于或等于x的最大整数REAL(I)INTEGERREAL整数转换为实数NINT函数会比较常用于REAL转换到INTEGER,因为造成的误差比较小1.7 内置函数科学计算经常要用到一些数学函数,比如三角函数、对数、平方根等等,Fortran将一些常用的函数内置到语言中,

16、用户可以直接调用这些函数更复杂的函数通过外部函数或内部函数实现,课程后续会讨论这个问题y=sin(theta)调用内部函数sin()来计算theta的正弦值1.7 内置函数部分内置函数函数名和参数函数名和参数函数值函数值参数类型参数类型结果类型结果类型说明说明SQRT(X)xRR求x0的平方根ABS(X)R/IR/I求x的绝对值ACHAR(I)ICHAR(1)返回字符I在ASCII表上对应值SIN(X)sin(x)RRx的正弦值(x单位是弧度)COS(X)cos(x)RRx的余弦值(x单位是弧度)TAN(X)tan(x)RRx的正切值(x单位是弧度)EXP(X)exRRe的x次幂LOG(X)l

17、ogexRRx的自然对数,x0LOG10(X)log10 xRR以10为底的对数,x0IACHAR(C)CHAR(1)I返回字符C在ASCII表上的位置MOD(A,B)R/IR/I模函数的余数MAX(A,B)R/IR/Ia,b中的最大值MIN(A,B)R/IR/Ia,b的最小值ASIN(X)sin-1(x)RRx的反正弦,-1x1(结果是弧度)ACOS(X)1.8 输入与输出输入语句READ(*,*)input_list从键盘或文件中读入一个或多个数值存储到input_list所指定的变量中(*,*)含有读入操作的控制信息第一个*所代表的数域是指定从哪个输入设备读入数据,不指定就是标准设备,一

18、般是键盘第二个*所代表的数域是指明读入数据的格式,不指定表示用自由格式输入,意味着变量列表中的变量类型决定输入数据需要的格式每条READ指令都从输入数据的一个新行开始读取PROGRAM input_exampleINTEGER:i,jREAL:aCHARACTER(len=12):charsREAD(*,*)i,j,a,charsEND PROGRAM input_example正确的输入格式输出语句WRITE(*,*)output_list 类似于输入语句1.9 变量初始化在使用变量之前,对它们进行初始化如果不对变量初始化,不同的系统可能会给变量不同的值,导致你的程序完全不可控初始化有三个办

19、法:赋值语句READ语句类型声明语句中初始化例:将整型变量i的值初始化为10方法一:INTEGER:ii=10方法二:INTEGER:iREAD(*,*)i方法三:INTEGER:i=101.10 IMPLICIT NONEIMPLICIT NONE 出现在PROGRAM语句之后,类型声明语句之前如果程序中出现这条语句,那么在这个程序中,Fortran的默认提供输入值的功能丧失,也就是说,所有变量必须显式声明!在本课程的学习、作业、实验、考试中,我要求所有程序编写必须加上这条语句避免简单的打字错误便于维护PROGRAM test_1REAL:time=10.0WRITE(*,*)Time=,t

20、mieEND PROGRAM test_1例程1.2现在我们可以尝试写一个简单的程序来计算园的面积PROGRAM area_of_circle!Caculate the area of a circle.REAL,PARAMETER:PI=3.141593REAL:area,radiusWRITE(*,*)Input number of radius:READ(*,*)radiusarea=PI*radius*radiusWRITE(*,*)area=,areaEND PROGRAM 第一章 习题1、下列常数是否有效,如有效则标注其类型,无效则说明原因 10.0 -100 000 123E-5

21、 Thats ok!-32768 3.14159 Distance=“Thats ok!”17.877E+6 13.022、下列各组数在计算机里表示的值是否一样 4650.4.65E+3 -12.71 -1.27E1 0.0001 1.0E4 3.14159E0 314.159E-33、下列程序名是否有效,如无效则说明原因 new_program 3rd第一章 习题4、找出无效的变量名并说明原因 length distance 1problem when_does_school_end _ok5、找出错误的常量声明并说明原因 REAL,PARAMETER BEGIN=-30 CHARACTER

22、,PARAMETER:NAME=Rosa6、下列表达式中,合法的写出结果,不合法的说明原因37/337+13/328/3/4(28/3)/428/(3/4)-3.*4./2.3.*(-4./2.)4.*-32+5*2-5(2+5)*(2-5)2+(5*2)-5(2+5)*2-52.*2.*3.2.*(-2.)(-2)*2(-2.)*(-2.2)(-2.)*NINT(-2.2)(-2.)*FLOOR(-2.2)第一章 习题7、下面的程序段的三个赋值语句是否正确,正确写结果,错误说明原因INTEGER:i,jINTEGER,PARAMETER:K=4i=K*2j=i/KK=i+j8、执行下面语句后

23、,存储在result中的值是多少?REAL:a,b,c,resulta=10.b=1.5c=5.result=FLOOR(a/b)+b*c*29、执行下面语句后,存储在a,b,n中的值是多少?REAL:a,bINTEGER:n,i,ji=10.j=3n=i/ja=i/jb=REAL(i)/j第一章 习题10、程序的输出结果是什么?PROGRAM quiz_1INTEGER:iREAL:aa=0.05i=NINT(2.*3.141593/a)a=a*(5/3)WRITE(*,*)i,aEND PROGRAM quiz_111、如果输入数据如下所列,程序的输出结果是?PROGRAM quiz_2INTEGER:i,j,kREAL:a,b,cREAD(*,*)i,j,aREAD(*,*)b,kc=SIN(3.141593/180)*a)WRITE(*,*)i,j,k,a,b,cEND PROGRAM quiz_2输入数据是:1,32.,45.,17.30.,180,6.输入数据是:1,32.,45.,17.30.,180,6.

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!