函数与子程序.ppt_第1页
函数与子程序.ppt_第2页
函数与子程序.ppt_第3页
函数与子程序.ppt_第4页
函数与子程序.ppt_第5页
免费预览已结束,剩余24页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

函数、子程序,一个完整的较复杂一点的程序应该有,主程序函数子程序,过程(固有,外部),内容,固有函数,函数子过程递归(recursive),固有函数,sin,cos,index,trim,用法1)write(*,*)sin(x),cos(2.0),trim(hhhh_),trim(name)2)open(1,file=trim(file_name),status=old,action=read)3)y=cos(x)*sin(1.5)4)if(sin(x)=0.0)thenendif,函数是一一映射或多对一映射返回的是单值!,外部函数,格式FUNCTION函数名(输入变量)RESULT(输出结果)函数主体ENDFUNCTION函数名,外部函数,格式FUNCTIONconvert_angle(met_angle)RESULT(mat_angle)!implicitnone!real,intent(in):met_anglereal:mat_angle!real:integer:i,j,k!ENDFUNCTIONconvert_angle,注意:1)intent(in)intent(inout)intent(in):met_angle不能met_angle=met_angle+180.不允许对intent(in)变量进行改变!,一个例子,PROGRAMtest!implicitnone!real:s,sin_cos!s=99.write(*,*)sin_cos(s)!ENDPROGRAMtestFUNCTIONsin_cos(x)RESULT(y)!implicitnone!real,intent(in):xreal:y!y=sin(x)*cos(x)!ENDFUNCTIONsin_cos,注意:函数名要作为一个变量在主程序中声明!如左边的sin_cos,一个例子,PROGRAMtest!implicitnone!real:s,sin_cos!s=99.write(*,*)swrite(*,*)sin_cos(s)write(*,*)s!ENDPROGRAMtestFUNCTIONsin_cos(x)RESULT(y)!implicitnone!real,intent(inout):xreal:y!y=sin(x)*cos(x)x=x+1.0!ENDFUNCTIONsin_cos,名词(1)哑元,实元哑实结合数据传递的一种方式(2)局部变量,不良习惯!改变输入变量,如左边的x。在函数里,不要用inout,应全部用in!防止改变输入变量,函数返回单值!(1),FUNCTIONsin_cos(x,y)RESULT(y1,y2)!implicitnone!real,intent(in):x,yreal:y1,y2!y1=sin(x)*cos(y)y2=sin(y)*cos(x)!ENDFUNCTIONsin_cos,Wrong!,函数返回单值!(2),FUNCTIONsin_cos(x,y)RESULT(xy)!implicitnone!real:x,yreal,dimension(2):xy!xy(1)=sin(y)*cos(x)xy(2)=sin(y)*cos(x)!ENDFUNCTIONsin_cos,Wrong!,可选变元,功能:调用时可改变函数内部的执行FUNCTIONadd(x1,x2,x3,if_add)RESULT(sum)!implicitnone!integer,optional,intent(in):if_addreal,intent(in):x1,x2,x3real:sum!if(present(if_add)thensum=(x1+x2)*if_addelsesum=x1+x2+x3endif!ENDFUNCTIONadd,PROGRAMtesty1=add(4.1,2.3,9.3,2)y2=add(4.1,2.3,9.3)write(*,*)y1,y2ENDPROGRAMtest,是否可以有多个可选变量?取决于编译器!目前,ifort可以!pgf90不行!,既能求出圆柱底面积,也能求出体积,现场小练习,问题:编写程序,完成功能:屏幕输入一个字符串和一个实数,格式如下:met355.0或者(气象角)mat180.0(数学角)然后进行气象角与数学角的自动转换(函数完成)。屏幕输入过程可以无限多次!,PROGRAMangle!implicitnone!character(len=10):angle_typereal:convert_angle,angle_in,angle_out!-readangle_typeandanglefromscreen!-andconvertangleaccordingtoangle_typewrite(*,*)write(*,*)Pleaseinputangle_typeandangle!write(*,*)Forexample:met355.0write(*,*)or.mat-180.2write(*,*)type999999toendprogram!write(*,*)!,angle_convert:&DOread(*,*)angle_type,angle_in!if(trim(angle_type)=999.and.angle_in=999)exitangle_convertangle_out=convert_angle(angle_type,angle_in)!if(trim(angle_type)=met)thenwrite(*,(2(a,f7.2)meteorologicalangle,angle_in,&-mathematicalangle,angle_outelseif(trim(angle_type)=mat)thenwrite(*,(2(a,f7.2)mathematicalangle,angle_in,&-meteorologicalangle,angle_outendif!ENDDOangle_convert!ENDPROGRAMangle,FUNCTIONconvert_angle(angle_type,ang1)RESULT(ang2)!implicitnone!character(len=10),intent(in):angle_typereal,intent(in):ang1real:ang2!-formula:ang1+ang2=270.if(trim(angle_type)=met.or.trim(angle_type)=mat)thenang2=270.-ang1elsewrite(*,*)angletypeisnotrecognised!callabort()endif!ENDFUNCTIONconvert_angle,子程序,固有子程序(编译器自带)日期与时间date_and_time(date,time,)system_clock(count,count_rate)cpu_time(time)随机数生成器random_number(a)random_seed(size,put,get)外部子程序(我们自己动手设计与编写),ccyymmdd,hhmmss.sss,字符型,使用date_and_time,PROGRAMtest!implicitnone!character(len=8):todaycharacter(len=10):time!CALLdate_and_time(today,time)!write(*,(a,a)Todayis,todaywrite(*,(a)Nowitis/time(1:6)!ENDPROGRAMtest,使用cpu_time,PROGRAMtest!implicitnone!real,dimension(2):time!CALLcpu_time(time(1)!,!CALLcpu_time(time(2)!write(*,*)Timeusedis,time(2)-time(1)!ENDPROGRAMtest,子程序,SUBROUTINE子程序名称(输入变量,输出变量)!ENDSUBROUTINE子程序名称,子程序,SUBROUTINEexample(x1,x2,x3,x4,y1,y2,y3)!implicitnone!real,intent(in):x1,x2,x3,x4real,intent(out):y1,y2,y3!y1=x1y2=x2y3=x3+x4!ENDSUBROUTINEexample,PROGRAMtest.real:xx1,xx2,xx3,xx4real:yy1,yy2,yy3CALLexample(xx1,xx2,&xx3,xx4,yy1,yy2,yy3)ENDPROGRAMtest,哑元,实元哑实结合,改为子程序,CALLbubble_sort(new_list,num+1),主程序、子程序之间的关系,PROGRAMtestreal:x1,x2,x3,y1,y2,y3CALLsub1(x1,y1)CALLsub2(x2,y1,y2)CALLsub3(x3,y2,y3)ENDPROGRAMtestSUBROUTINEsub1(x1,y1)real,intent(in):x1real,intent(out):y1

温馨提示

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

评论

0/150

提交评论