Fortran第23章
采用Fortran编程提取系统时间

采用Fortran编程提取系统时间文一猪编程中我们往往需要提取系统时间,从而确定程序或子程序的运行时间。
我想在这里上有几个目的,比如说要对程序进行优化,当然你得先优化比较费时的子程序,或者你要直接从实际计算上计算出程序的复杂度,简单说就是计算时间同计算量的函数关系。
在这里给出关于采用Fortran95语言编写的提取系统时间程序。
Example1是网上帖子里的程序,不过该程序采用的time程序似乎不是Fortran95的标准程序。
在Example2给出的是自编的采用模块化编程调用cpu_time程序,使用F95的朋友可以很容易地将该程序嵌入到你们的程序中使用。
Mar. 14, 2013program TimeNowcharacter*8 :: nowinteger :: hh,mm,sscall time (now) ! 读系统时间write(*,*) now ! 写出时间字符串! 用字符变量now作为内部文件,从中将时、分、秒作为整数读出read(now,"(I2,1x,I2,1x,I2)") hh,mm,ss ! 字符转换为write(*,*) hh,mm,ss ! 写出时、分、秒的整数值stopend program TimeNow帖子:/club/showtxt.asp?id=70407/post-70559.htmlmodule get_timepublic display_timecontainssubroutine display_time()implicit nonedoubleprecision nowtimecall cpu_time(nowtime)write(*,'(1x,a,1e10.3)') "Now Time is ", nowtime returnend subroutineend moduleprogram test_get_timeuse get_timeimplicit doubleprecision (a-h, o-z), integer (i-n)call display_time()do i = 1,1000000do j = 1,2000x = dlog(1.1d0)enddoenddocall display_time()stop "The end!"end program第2 章Fortran 95 内函数本章列出了f95 编译器可识别的内函数名称。
程序设计语言基础精品文档

B.a、[
C.a、[和]
D.a、[、]和,
2.2.4 词法分析 考点1:词法分析的功能 词法分析阶段的主要功能如下:
(1)识别出源程序中意义独立的最小词法单 位——单词,并且确定其类型(例如表示 符、关键字、操作符还是数字等)。
(2)删除无用的空格、回车和其它与输入介 质有关的无用符号以及程序注释。
若M的初态结点同时又是终态结点, 则空字可为M所识别(接受)。
2.不确定的有穷自动机(NFA)
• 一个不确定的有穷自动机(NFA)M是一个五 元组:M=(K,∑,f,S,Z)其中
(1)K是一个有穷集,它的每个元素称为一个状 态;
(2)∑是一个有穷字母表,它的每个元素称为一 个输入字符;
(3)f是转换函数,是从K×∑*—>K上子集的映 像;
• 请画出该NFA的状态转换图。
补充:
对于∑*中的任何一个串t,若存在一 条从某一初态结点到某一个终态结点的 道路,且这条道路上所有弧的标记符依 序连接成的串等于t,则称t可为NFA M所 识别(读出或接受)。
• 例2中的NFA M所能识别的是那些含有 相继两个a或相继两个b的串。
• 自动机到正规式的转换过程如图所示:
• 对0型文法产生式的形式作某些限制, 就是1型、2型、3型文法。
(2)1型文法或上下文有关文法
• 定义:设G=(VN,VT,P,S)为一文 法,若P中的每一个产生式a—>b均满足
|b|≥|a|,仅仅S—> 除外,则G是1型文法
或上下文有关文法。
(3)2型文法或上下文无关文法 • 定每义一:个设 产生G=式(aV—N>,bV满T足,:P,a是S)一为非一终文结法符,,若b属P中于的
fortran指令大全

fortran指令大全附录 C SCILAB 部分函数指令表(c)LIAMA. All rights reserved.(注解:本指令表只收集了部分常用指令, 有关全部指令请参照文档文件)+ 加- 减* 矩阵乘数组乘*.1. 通用指令^ 矩阵乘方数组乘方^.\ 反斜杠或左除help 在线帮助/ 斜杠或右除apropos 文档中关键词搜寻或.\ 数组除/. ans 缺省变量名以及最新表达式的运算结果== 等号~= 不等号clear 从内存中清除变量和函数< 小于exit 关闭SCILAB > 大于quit 退出SCILAB <= 小于或等于save 把内存变量存入磁盘>= 大于或等于exec 运行脚本文件&,and 逻辑与mode 文件运行中的显示格式|,or 逻辑或getversion 显示SCILAB 版本~,not 逻辑非ieee 浮点运算溢出显示模式选择: 冒号who 列出工作内存中的变量名( ) 园括号edit 文件编辑器[ ] 方括号type 变量类型{ } 花括号what 列出SCILAB 基本命令小数点.format 设置数据输出格式, 逗号chdir 改变当前工作目录; 分号getenv 给出环境值// 注释号mkdir 创建目录= 赋值符号pwd 显示当前工作目录' 引号evstr 执行表达式' 复数转置号转置号'.ans 最新表达式的运算结果2.运算符和特殊算符%eps 浮点误差容限, =2-52≈2.22×10-16%i 虚数单位= √(-1) %inf 正无穷大%pi 圆周率,π=3.1415926535897....3. 编程语言结构abort 中止计算或循环break 终止最内循环case 同select 一起使用continue 将控制转交给外层的for或while循环else 同if一起使用elseif 同if一起使用end 结束for,while,if 语句for 按规定次数重复执行语句if 条件执行语句otherwise 可同switch 一起使用pause 暂停模式return 返回select 多个条件分支then 同if一起使用while 不确定次数重复执行语句eval 特定值计算feval 函数特定值计算或多变量计算function 函数文件头global 定义全局变量isglobal 检测变量是否为全局变量error 显示错误信息lasterror 显示最近的错误信息sprintf 按格式把数字转换为串warning 显示警告信息4.基本数学函数acos 反余弦acosh 反双曲余弦acot 反余切acoth 反双曲余切acsc 反余割acsch 反双曲余割asin 反正弦asinh 反双曲正弦atan 反正切atanh 反双曲正切cos 余弦cosh 双曲余弦cotg 余切coth 双曲余切sin 正弦sinh 双曲正弦tan 正切tanh 双曲正切exp 指数log 自然对数log10 常用对数log2 以2为底的对数sqrt 平方根abs 绝对值conj 复数共轭imag 复数虚部real 复数实部ceil 向上(正无穷大方向)取整fix 向零方向取整floor 向下(负无穷大方向)取整round 四舍五入取整sign 符号函数gsort 降次排序erf 误差函数erfc 补误差函数gamma gamma 函数interp 插值函数interpln 线性插值函数intsplin 样条插值函数smooth 样条平滑函数spline 样条函数quarewave 方波函数sign 符号函数double 将整数转换为双精度浮点数5.基本矩阵函数和操作eye 单位阵zeros 全零矩阵ones 全1 矩阵rand 均匀分布随机阵genmarkov 生成随机Markov 矩阵linspace 线性等分向量logspace 对数等分向量logm 矩阵对数运算cumprod 矩阵元素累计乘cumsum 矩阵元素累计和toeplitz Toeplitz 矩阵disp 显示矩阵和文字内容length 确定向量的长度size 确定矩阵的维数diag 创建对角阵或抽取对角向量find 找出非零元素1的下标matrix 矩阵变维rot90 矩阵逆时针旋转90度sub2ind 据全下标换算出单下标tril 抽取下三角阵triu 抽取上三角阵conj 共轭矩阵companion 伴随矩阵det 行列式的值norm 矩阵或向量范数nnz 矩阵中非零元素个数null 清空向量或矩阵中的某个元素orth 正交基rank 矩阵秩trace 矩阵迹cond 矩阵条件数rcond 逆矩阵条件数inv 矩阵的逆lu LU分解或高斯消元法pinv 伪逆qr QR分解givens Givens 变换linsolve 求解线性方程lyap Lyapunov 方程hess Hessenberg 矩阵poly 特征多项式schur Schur 分解expm 矩阵指数expm1 矩阵指数的Pade逼近expm2 用泰勒级数求矩阵指数expm3 通过特征值和特征向量求矩阵指数funm 计算一般矩阵函数logm 矩阵对数sqrtm 矩阵平方根6. 特性值与奇异值spec 矩阵特征值gspec 矩阵束特征值bdiag 块矩阵, 广义特征向量eigenmarkov 正则化Markov 特征向量pbig 特征空间投影svd 奇异值分解sva 奇异值分解近似7. 矩阵元素运算cumprod 元素累计积cumsum 元素累计和hist 统计频数直方图max 最大值mean 平均值median 中值min 最小值prod 元素积sort 由大到小排序std 标准差sum 元素和trapz 梯形数值积分corr 求相关系数或方差8. 稀疏矩阵运算sparse 稀疏矩阵(只存储非零元素)adj2sp 邻接矩阵转换为稀疏矩阵full 稀疏矩阵转换为全矩阵mtlb_sparse 将SCILAB 稀疏矩阵转换为MATLAB稀疏矩阵格式sp2adj 稀疏矩阵转换为邻接矩阵speye 稀疏矩阵方式单位阵sprand 稀疏矩阵方式随机矩阵spzeros 稀疏矩阵方式全零阵lufact 稀疏矩阵LU 分解lusolve 稀疏矩阵方程求解spchol 稀疏矩阵Cholesky分解9. 输入输出函数diary 生成屏幕文本记录disp 变量显示file 文件管理input 用户键盘输入load 读已存的变量mclose 关闭文件mget 读二进制文件mgetl 按行读ASCII码文件mgetstr 读字符串中单个字mopen 打开文件mput 写二进制文件mfscanf 读ASCII 码文件print 将变量记录为文件read 读矩阵变量save 存变量为二进制文件strartup 启动文件write 按格式存文件xgetfile 对话方式获取文件路径x_dialog 建立Xwindow参数输入对话框Tk_Getvar 得到Tk 文件变量Tk_EvalFile 执行Tk 文件10. 函数与函数库操作deff 在线定义函数edit 函数编辑器function 打开函数定义functions SCILAB 函数或对象genlib 在给定目录下建立所有文件的函数库get_function_path读函数库的文件存储目录路径getd 读函数库中的全部文件getf 在文件中定义一个函数lib 函数库定义macro SCILAB函数或对象macrovar 输入变量个数newfun 输出变量个数11. 字符串操作code2str 将SCILAB 数码转换为字符串convstr 字母大小转换emptystr 清空字符串grep 搜寻相同字符串part 字符提取str2code 将字符串转换为SCILAB数码string 字符串转换strings SCILAB 对象, 字符串strcat 连接字符strindex 字符串的字符位置搜寻strsubst 字符串中的字符替换12. 日期与时间date 日期getdate 读日期与时间timer CPU时间计时13. 二维图形函数plot2d 直角坐标下线性刻度曲线champ 2 维向量场champ1 由颜色箭头表示的2维向量场contour2d 等高线图errbar 曲线上增加误差范围框线条grayplot 应用颜色表示的表面xgrid 画坐标网格线histplot 统计频数直方图Matplot 散点图阵列14. 三维图形函数plot3d 三维表面plot3d1 用颜色或灰度表示的三维表面param3d 三维中单曲线param3d1 三维中多曲线contour 三维表面上的等高线图hist3d 三维表示的统计频数直方图geom3d 三维向二维上的投影15. 线条类图形xpoly 单线条或单多边形xpolys 多线条或多各多边形xrpoly 正多边形xsegs 非连接线段xfpoly 单个多边形内填充xfpolys 多个多边形内填充xrect 矩形xfrect 单个矩形内填充xrects 多个矩形内填充xarc 单个弧线段或弧园xarcs 多个弧线段或弧园xfarc 单个弧线段或弧园填充xfarcs 多个弧线段或弧园填充xarrows 多箭头16. 图形注释, 变换xstring 图形中字符xstringb 框内字符xtitle 图形标题xaxis 轴名标注plotframe 图形加框并画坐标网格线isoview 等尺寸比例显示(原图形窗口不改变)square 等尺寸比例显示(原图形窗口改变)xsetech 设置小窗口xchange 转换实数为图形象素坐标值subplot 设置多个子窗口17. 图形颜色及图形文字colormap 应用颜色图getcolor 交互式选择颜色图addcolor 增加新色于颜色图graycolormap 线性灰度图hotcolormap 热色(红到黄色)颜色图xset 图形显示方式设定xget 读当前图形显示方式设定getsymbol 交互式选择符号和尺寸18. 图形文件及图形文字xsave 将图形存储为文件xload 从磁盘中读出图形文件xbasimp 将图形按PS文件打印或存储为文件xs2fig 将图形生成Xfig 格式文件xbasc 取消图形窗及其相关内容xclear 清空图形窗driver 选择图形驱动器xinit 图形驱动器初始化xend 关闭图形xbasr 图形刷新replot 更改显示范围后的图形刷新xdel 关闭图形xname 改变当前图形窗名称19. 控制分析用图形bode 伯德图坐标gainplot 幅值图坐标(伯德图中的幅值图) nyquist 奈奎斯特图m_circle M-圆图chart 尼库拉斯图black Black-图evans 根轨迹图sgrid s 平面图plzr 零-极点图zgrid z 平面图20. 图形应用中的其它指令graphics 图形库指令表xclick 等待鼠标在图形上的点击输入locate 由鼠标点击读入图形中的多点位置坐标xgetmouse 由鼠标点击读入图形中的当前点位置坐标21. 系统与控制abcd 状态空间矩阵cont_mat 可控矩阵csim 线性系统时域响应dsimul 状态空间的离散时域响应feedback 反馈操作符flts 时域响应(离散、采样系统〕frep2tf 基于传递函数的频域响应freq 频域响应g_margin 幅值裕量imrep2ss 基于状态空间的脉冲响应lin 线性化操作lqe Kalman 滤波器lqg LQG补偿器lqr LQ补偿器ltitr 基于状态空间的离散时域响应obscont 基于观测器的控制器observer 观测器obsv_mat 观测矩阵p_margin 相位裕量phasemag 相位与幅值计算ppol 极点配置repfreq 频域响应ricc Riccati 方程rtitr 基于传递函数的离散时域响应sm2ss 系统矩阵到状态空间变换ss2ss 反馈连接的状态空间到状态空间变换ss2tf 状态空间到传递函数变换stabil 稳定性计算tf2ss 传递函数到状态空间变换time_id SISO系统最小方差辨识22. 鲁棒控制augment 被控对象增广操作bstap Hankel 矩阵近似ccontrg H∞控制器dhnorm 离散H∞范数h2norm H2 范数h_cl 闭环矩阵h_inf H∞控制器h_norm H∞范数hankelsv Hankel 矩阵奇异值leqr H∞控制器的LQ增益linf 无穷范数riccati Riccati 矩阵sensi 敏感函数23. 动态系统arma ARMA 模型arma2p 基于AR模型中获得多项式矩阵armac ARMAX 辨识arsimul ARMAX系统仿真noisegen 噪声信号发生器odedi 常微分方程仿真检测prbs_a 伪随机二进制序列发生器reglin 线性拟合24. 系统与控制实例artest Arnold 动态系统bifish 鱼群人口发展的离散时域模型boucle 具有观测器的动态系统相位图chaintest 生物链模型gpech 渔业模型fusee 登陆火箭问题lotest Lorennz 吸引子mine 采矿问题obscontl 可控可观系统portr3d 三维相位图portrait 二维相位图recur 双线性回归方程systems 动态系统tangent 动态系统的线性化tadinit 动态系统的交互初始化25. 非线性工具(优化与仿真〕bvode 边界值问题的常微分方程dasrt 隐式微分方程过零解dassl 代数微分方程datafit 基于测量数据的参数辨识derivative 导数计算fsolve 非线性函数过零解impl 线性微分方程int2d 二维定积分int3d 三维定积分intg 不定积分leastsq 非线性最小二乘法linpro 线性规划lmisolver 线性不等矩阵ode 常微分方程ode_discrete 离散常微分方程ode_root 常微分方程根解odedc 连续/离散常微分方程optim 非线性优化quapro 线性二次型规划semidef 半正定规划26. 多项式计算coeff 多项式系数coffg 多项式矩阵逆degree 多项式阶数denom 分母项derivat 有理矩阵求导determ 矩阵行列式值factors 因式分解hermit Hermit 型horner 多项式计算invr 有理矩阵逆lcm 最小公倍数ldiv 多项式矩阵长除numer 分子项pdiv 多项式矩阵除pol2des 多项式矩阵到表达式变换pol2str 多项式到字符串变换polfact 最小因式residu 余量roots 多项式根simp 多项式化简systmat 系统矩阵27. 信号处理%asn 椭圆积分%k Jacobi 完全椭圆积分%sn Jacobi 椭圆函数analpf 模拟量低通滤波器buttmagButterworth 滤波器响应cepstrum 倒谱计算cheb1mag Chebyshev 一型响应cheb2mag Chebyshev二型响应chepol Chebyshev 多项式convol 卷积corr 相关, 协方差cspect 谱估计(应用相关法)dft 离散富立叶变换fft 快速富立叶变换filter 滤波器建模fsfirlin FIR滤波器设计hank 协方差矩阵到Hankel矩阵变换hilb Hilbert 变换iir IIR数字滤波器intdec 信号采样率更改kalm Kalman 滤波器更新mese 最大熵谱估计mfft 多维快速富立叶变换mrfit 频率响应拟合phc Markov 过程srkf Kalman 滤波器平方根sskf 稳态Kalman 滤波器system 观测更新wfir 线性相位FIR 滤波器weiener Weiener(维纳)滤波器window 对称窗函数yulewalk 最小二乘滤波器zpbutt Buthererworth 模拟滤波器zpch1 Chebyshev 模拟滤波器28. 音频信号analyze 音频信号频FORTRAN格式文件texprint 按TeX 格式输出SCILAB 对象translatepaths 将子目录下的所有MATLAB 文件转换为SCI文件格式一个公式写成Fortran 语言代码program baiduinteger::I,J,Nreal*8::Cr,Treal*8,dimension(:),all ocatable ::P,XN=3!变量X的个数Cr=5.0d0!常量Cr,自己设定T=4.0d0!常量T,自己设定allocate(P(N),X(N))! =======读入变量X 的值do I=1,Nwrite(*,*)"请输入第",I," 个变量的值:"read(*,*)X(I)enddo! =======读入变量X 的值do I=1,NP(I)=(-4.2d0/Cr**2*X( I)+2.9/Cr)*Twrite(*,*)“第”,I," 个变量X 对应结果:",P(I)enddoend。
FORTRAN课程设计zwd-精选文档

F O R T R A N课程设计z w d-精选文档(共14页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--一、求一元方程的根1、采用函数子程序定义一元方程;2、程序选择以下三种方法求该方程的根;METHOD = 1 牛顿迭代法METHOD = 2 二分法METHOD = 3 弦截法3、对于不同的近似算法分别编写子程序,精度要求10-6。
一.用二分法、弦解法和牛顿迭代法求x2-6x-7=0的根。
1、二分法的基本思路:(1)现任取两个值x1和x2,使得f(x1)* f(x2)<0,也就是f(x1)和f(x2)必须异号。
这才能保证在[x1,x2]区间有解,即存在一个x使得f(x)=0。
(2)令x=(x1+x2)/2,如果f(x)=0,就找到了这个解,计算完成。
由于f(x)是一个实型数据,所以在判断f(x)是否等于0时,是通过判断|f(x)|是否小于一个很小的数ε,如果是就认为f(x)=0。
(3)若f(x)不等于0,判断如果f(x1)和f(x)异号,就说明解在[x1,x]区间,就以x1,x为新的取值重复步骤(2),这时用x代替否则x2,否则反之,直到找到满足条件的解为止。
程序编写如下:real x1,x2,xreal bisect,funcdoprint*,"输入x1,x2的值"read*,x1,x2if(func(x1)*func(x2)<exitprint*,"不正确的输入"enddox=bisect(x1,x2)print 10,"x=",x10 format(a,endreal function bisect(x1,x2)real x1,x2,x,f1,f2,fxx=(x1+x2)/fx=func(x)do while(abs(fx)>1e-6)f1=func(x1)if(f1*fx<0)thenx2=xelsex1=xendifx=(x1+x2)/fx=func(x)enddobisect=xendfunction func(x)real xfunc=x**2-6*x-7end二分法运行结果2、弦解法的基本思路:(1)现任取两个值x1和x2,使得f(x1)* f(x2)<0。
fortran教程.ppt

N-S 图——结构化流程图 S=0
例2 用N-S图表示
N=1
S+1/N= S
N+1= N
直到N>100为止
打印 S 值
例1 用N-S图表示
N=0 T=0
输入 A A+T →T N+1 →N 直到N≥100 为止 打印 T
例3
L=1
N=1
S=1
SUM = 1
L+2 → L
-S → S
N+1 → N
SUM+S/L →SUM
(3)输入一个数给“收入变量”A
(4)将A和T的值相加,其和值放在变量T中 A+TT;
(5)使N的值加1,即N+1 N(N的值表示已累加数据的个数)
(6)若N﹤100,则返回(3)继续执行以后各步,否 则转到执行(7)
(7)打印出总和T的值
以上算法体现“迭代”的思想—计算机算法的最大特 点
例2 求 1
将高级语言程序(源程序)转换为机器语言程序(目标程序)
的工作由“编译程序”来完成。 编译
执行
高级语言程序
机器指令目标程序
计算结果
编译程序 (预先存如电脑)
裸机
用户源程序
操作系统
高级语言编译系统
计算机系统与操作系统关系示意图
§ 1-2 算法(Algorithm)与程序设计(Programming)
1. 近50年的丰富积累,资源不浪费,对原有程 序向下兼容。而C语言与Matlab才20多年
2. FORTRAN书写和语法要求严格,更适合于 严谨的科学计算。而C对数组不提供越界检查, 容易出错,而且不容易查出
3. FORTRAN 90~95可以直接对矩阵和复数进行 运算。而C语言则要用多重循环
fortran语法手册范本

1 FORTRAN77四如此运算符+ - * / ** (其中**表示乘方)在表达式中按优先级次序由低到高为: +或-→*或/→**→函数→()2 FORTRAN77变量类型2.1 隐含约定:I-N规如此但凡以字母I,J,K,L,M,N六个字母开头的,即认为是整型变量,其它为实型变量。
如 IMPLICIT REAL (I,J)三种定义的优先级别由低到高顺序为:I-N规如此→IMPLICIT语句→类型说明语句,因此,在程序中IMPLICIT语句应放在类型说明语句之前。
2.4 数组的说明与使用使用I-N规如此时用DIMENSION说明数组,也可在定义变量类型同时说明数组,说明格式为:数组名(下标下界,下标上界〕,也可省略下标下界,此时默认为1,例:DIMENSION IA(0:9),ND(80:99),W(3,2),NUM(-1:0),A(0:2,0:1,0:3)REAL IA(10),ND(80:99)使用隐含DO循环进展数组输入输出操作:例如WRITE(*,10) ('I=',I,'A=',A(I),I=1,10,2)10FORMAT(1X,5(A2,I2,1X,A2,I4))2.5 使用DATA语句给数组赋初值变量表中可出现变量名,数组名,数组元素名,隐含DO循环,但不许出现任何形式的表达式:例如DATA A,B,C/3*-1.0/CHARACTER*6 CHN(10)DATA CHN/10*' '/INTEGER NUM(1000)DATA (NUM(I),I=1,500)/500*0/,(NUM(I),I=501,1000)/500*1/3 FORTRAN77程序书写规如此程序中的变量名,不分大小写;变量名称是以字母开头再加上1到5位字母或数字构成,即变更名字串中只有前6位有效;一行只能写一个语句;程序的第一个语句固定为PROGRAM 程序名称字符串某行的第1个字符至第5个字符位为标号区,只能书写语句标号或空着或注释内容;某行的第1个字符为C或*号时,如此表示该行为注释行,其后面的内容为注释内容;某行的第6个字符位为非空格和非0字符时,如此该行为上一行的续行,一个语句最多可有19个续行;某行的第7至72字符位为语句区,语句区内可以任加空格以求美观;某行的第73至80字符位为注释区,80字符位以后不能有内容。
FORTRAN知识点总结
F O R T R A N第2章FORTRAN90基础知识:程序单元的概念:fortran90程序是一种分块形式的程序,整个程序由若干程序单元块组成。
每个程序只有一个主程序单元。
各单元体的程序体形式上相同。
程序单元可以是主程序、子程序(外部过程或内部过程)、模块MODULE (供其他程序单元引用即把该程序单元内的全部语句复制到程序单元中)或块数据程序单元BLOCK 。
语言元素:指在程序设计中用到的基本成分,如字符集、常量、变量、记号(标号、关键字、名字、常数、运算符和定界符)以及其他的基本结构等。
字符集:英文字母、阿拉伯数字、下划线、21个特殊字符($和?没有规定用法)。
数据结构:整型INTEGER (34-2下划线后面是种别参数),n 位字长的计算机的数据表示范围一般为12~211-+---n n ,种别参数由内在询问函数KIND 送回,种别值提供的最小范围由内在函数SELECTED-INT-KIND 送回,表示十进制幂的范围由内在函数RANGE 送回;实型REAL ,小数形式和指数形式;复型COMPLEX (种别类型参数值取实部与虚部中较大者);字符型CHARACTER,由一对单撇号或双撇号之间的字符序列组成;逻辑型LOGICAL。
派生数据类型TYPE;数组INTEGER,DIMENSION(1,50)::A,可直接对数组元素进行运算如3*A,SQRT(A);字符子串,在字符串CHARACTER(LEN=80)::ROW中,ROW(1:3)就表示字符串ROW中第1到第3个元素组成的子串。
变量名的命名规则:不能超过31个字符;组成成分是字母、数字、下划线;第一个字符必须是字母。
第3章基本语句:类型说明语句:类型说明(种别说明),属性说明::变量名表尽量避免把两个实数作相等或不相等的比较。
淘汰隐式说明IMPLICIT NONE种别说明:种别参数即对可移植数据精度和范围进行选择的机制KIND(X) 返回变元X的种别参数值SELECTED-REAL-KIND(n,m) 产生一个种别值,它表示某一精度和范围。
Fortran基本用法小结
2、Fortran的主要版本及差别
按其发展历史,Fortran编译器的版本其实很多。现在在广泛使用的是Fortran77和Fortr
an90。 Fortran90在Fortran77基础上添加了不少使用的功能,并且改良了77编程的版面格式,
所以编程 时推荐使用90。鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保
program main
!程序开始,main是program的名字,完全自定义
write(*,*)"Hello" !主程序
stop
!终止程序
end[program[main]] !end用于封装代码,表示代码编写完毕。
[]中的内容可省略,下同。
再看一段实用一些的程序,好有点感性认识。程序用于计算圆柱的表面积,要求输入底面
一、说明
本文多数内容是我读彭国伦《Fortran95程序设计》的笔记。只读到第九章,主要是3~9
章,都是 些最基本的用法(原书共16章)。这里主要摘录了我看书过程中总结的一些Fortran和C不
/?uid-1039-action-viewspace-itemid-16895
/?uid-1039-action-viewspace-itemid-16895
4/9
13-4-13
[转载] Fortran基本用法小结 - 朱文举的给排水专业博客 - 国科社区-国家科技成果网 - Powered by X-Space
interactive_loop: do
/?uid-1039-action-viewspace-itemid-16895
6/9
13-4-13
[转载] Fortran基本用法小结 - 朱文举的给排水专业博客 - 国科社区-国家科技成果网 - Powered by X-Space
(完整版)fortran文件操作
fortran文件操作From: 《Fortran 95 程序设计》彭国伦1.文件读取的概念:读取:“顺序读取”和“直接读取”。
保存:“文本文件”和“二进制文件”。
二进制文件:读取快,因为保存格式和数据在内存中的保存方法一样,同时也节省空间。
----------------------------------2. 文件的操作:----------------------------------open的使用:使用open命令打开文件之后,就可以对文件来做输入输出。
example:program ex0901impicit noneopen(unit=10, file='hello.txt') ! 打开hello.txt文件, unit指定文件代码,file 指定文件名称。
write(10, *) "hello" !在代码为10的文件中写入hellostopend program ex0901open中有很多参数可以使用,详细如下:OPEN(UNIT=number, FILE='filename', FORM='...', STATUS='...', ACCESS='...', RECL=length, ERR=label, IOSTAT=iostat, BLANK='...', POSITION='...', ACTION=action, PAD='...', DELIM='...')UNIT='number': number必须是一个正整数,它可以使用变量或是常量来赋值。
number最好避开1,2,5,6。
因为2,6是默认的输出位置,也就是屏幕。
1,5则是默认的输入位置,键盘。
FILE='filename':指定要打开的文件名称,文件名要符合系统规定。
FORTRAN语言自学基础
《FORTRAN语言》自学提纲第一章1 FORTRAN基础1. 一个FORTRAN程序由一个主程序或一个主程序与若干个子程序组成。
但一个完整的FORTRAN程序只能有一个主程序,主程序的第一个语句是PROGRAM语句,用以说明主程序的名称。
这个语句也可以省略,省略时默认为主程序的名称为MAIN。
2.FORTRAN的子程序主要有三种:⑴函数子程序,其第一个语句为FUNCTION;⑵子例行子程序,其第一个语句为SUBROUTINE;⑶数据块子程序,其第一个语句为BLOCK DATA。
主程序与各个子程序可以独立编译,最后再链接成一个可执行程序。
在编写并输入一个FORTRAN程序时,既可以将主程序与各个子程序存放在一个文件中,也可以将它们分别存放在不同的文件中。
但必须注意,主程序与各个子程序都是独立的程序单位,每个程序单位的最后一行必须用END语句作为结束。
在主程序中,虽然END语句还具有使程序停止运行的作用,但由于一个程序单位只能在最后一行有END语句,因此,在程序的其它位置处需要停止运行时,只能用STOP 语句,不能用END语句。
同样的道理,在子程序中,虽然END语句还具有使程序流程返回到调用程序的作用,但在子程序的其它位置(不是最后一行)需要返回到调用程序时,只能用RETURN语句,不能用END语句。
3.FOPTRAN源程序的书写格式有严格的规定。
⑴一行中第一列为“C”或“*”时,该行被认为是注释行。
注释行可以写在四个区中的一个区,且注释行可以出现在程序单位的任何位置。
但注释行不能有续行,需要时可以将连续若干行都定义为注释行。
⑵FORTRAN语句部分不能占用标号区及续行标志区,只能从第七列开始。
当语句太长时,可以使用续行。
在继续行的标号区内必须为空白(即继续行不允许有标号),标号只能出现在起始行上。
⑶起始行与继续行或各继续行之间的空格不起作用,因此,对于一般的语句,可以不必到72列才转为继续行,继续行也不必一定要从第7列接着写,但是,包括在引号内的字符串中的空格是有效的,因此,对于字符串要使用继续行时应特别注意,最好写到一行的72列时再转为继续行,且要从继续行的第7列接着写。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4、双精度常量的表示: 有效位为15位,范围:|x|∈(10-308,10+308) (1)种别参数为8 1.23456789_8 (2)数字部分D±e 5、复型常量的表示: 数学 2+3i
(2,3)
一般形式:(实部系数,虚部系数) 整 一对常量 实 错例:(1.0/2,3),(x, y) 正例:(0,6),(1e5,38) 6、逻辑型常量的表示;.TRUE. 真 .FALSE. 假
REAL
REAL ( 4 ) DOUBLE PRECISION REAL ( 8 ) COMPLEX COMPLEX ( 4 ) DOUBLE COMPLEX COMPLEX ( 8 ) CHARACTER CHARACTER*N CHARACTER(LEN=N) LOGICAL LOGICAL ( 1 ) LOGICAL ( 2 ) LOGICAL ( 4 )
4或 8
4 8 8 4或 8 4 8 8 1 1 1, 2, 4 1 2 4
4或 8
4 8 8 8或16 8 16 16 1 1 1, 2, 4 1 2 4
缺省字节为4
和REAL ( 8 ) 相同
缺省字节为8
和COMPLEX ( 8 ) 相同
CHARACTER和CHARACTER(1)相同, (1)是种别参数而不是字符串长度 N是字符串长度;在INTEL CPU上从1到 65535,在ALPHA CPU上从1到231-1 缺省字节为4
2.2.2 常 量
一、分类:5种 二、常量
1、定义:有具体值的数
例
2,3.2,-0.5
错例 π,1/2,cos(2.0) 2、整型常量(整数)的表示:±n(n:0~9) 例 +3,-3,3; 注:无小数点,正号可不写 +0,-0,0
整数的范围是有限的(用有限的内存单元来存储一个整数)
2字节;-32768~+32767(第13页表2.1) 4字节:-2147483648~2147483647 整型常量(整数)的另一种表示:89_2 其中2为种别参数
各种数据类型的内存需求(范围)和缺省种别如表2.3所示(第 14页)
数据类型 BYTE INTEGER INTEGER ( 1 ) INTEGER ( 2 ) INTEGER ( 4 ) 1
种别 1
字节
说
明
和INTEGER ( 1 ) 相同 缺省字节为4
1, 2, 4 1 2 4
1, 2, 4 1 2 4
⑵类型说明语句: ① 最基本形式:类型::变量名表
integer::I ,j,k
功能:是声明语句,作用是通知编译系统为变量分配对应大小 的存储单元。 ②变量说明时同时赋初值:integer::I=5,j=3,k 注意:使用此类语句时,一定要在变量名前加“:: ”符号 ③变量说明时同时说明种别:integer(kind=2)::I=1,j,k
试编一程序,将作案人找出来。
问题模型
结构分析—— 线性方程组
人口预报—— 微分方程
优化问题—— 线性规划、非线性规划 震动问题—— 矩阵分析;特征值、特征向量 信息管理—— 二维数据表 下棋 —— 树型结构遍历 交通管理—— 图型结构遍历
课程要求
课前请做好预习 进入课堂必须带教材、笔、草稿纸、笔记本
3、实型常量(实数)表示
小数形式 指数形式 5. .5
a.小数形式:+/-m.n,+/-m.,+/-.n 例 100.0
注:小数点必须有。 (只有小数点而无数字,非法 )
b.指数形式:数字部分E±e
科学计数法
E表示以10为底的指数
876E-3 87.6E-2
0.876=876×10-3 =87.6 ×10-2 =0.0876 ×10+1
(3)求余函数自变量类型必须相同,自变量有顺序
MOD(5,3) 值为2
MOD(3.,5.) 值为3.0 (函数值的类型同自变量的类型) (4)自变量可以是有值的常量、变量、表达式
2.6 算术表达式
1、算术表达式: 5个运算符及优先级
**
* /
高
+-(正,负,加,减) 低 同级运算时**为右结合律,其它为左结合律 2、表达式写法: 一行书写 πR12+2 3A A*(-2) (A+B)/C 2Y+2 任意两数相乘用* 两运算符同时出现,加( ) 除法,分子分母不要少括号 乘方,指数为表达式加括号
例
1/2*2值为0
8/5+2.0*5/2值为6.0
(注意在计算过程中逐步转化、实数有效位7位) FORTRAN90允许不同类型的数值型数据类型之间 进行算术运算,但不允许在数值型数据类型与非数 值型数据类型之间进行算术运算
例:
2 sin( 1、 3 4)
(sin 4 cos10)e2.5 2、 2 ax ln(3 * 5)
Sinx SIபைடு நூலகம்(X)
TANx TAN(X) Lnx LOG(X)
DBLE(x)
Max(a,b,c,……) Min (a,b,c,……) Sign(x,y)y符号传递
Lgx LOG10(X)
求余 MOD(x,y)
注:⑴三角单位为弧度 ⑵超越函数自变量不得为整型 例:log(2.0) (log(2) 错)
7、字符常量的表示:’一串字符’或 ”一串字符”(双引号) 注:⒈区分字符大小写 ’a’ ’A’
⒉空格有效
’a b’
’ab’
⒊ab’cd表示为字符型常量:”ab’cd” 或’ab’’cd’(两个单撇号,不能是双引号) 空格 算一个 ⒋长度:字符的个数 两个单撇号’’ 算一个 起止界不算
长度可为0
5. 字符不受58个字符集的限制(第19页) 练习:正确的常量有哪些?12% 12,123 3/4 2e5 true (x, y) '3/4'
FORTRAN语言及程序设计
计算机中心 楚红
走入编程
程序设计语言学什么?
第一:学习该语言的语法 第二:学习计算机解决问题的算法 现实问题问题模型求解算法编程实现
例:某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析:
A、B至少有一人作案; A、E、F三人中至少有两人参与作案; A、D不可能是同案犯; B、C或同时作案,或与本案无关; C、D中有且仅有一人作案; 如果D没有参与作案,则E也不可能参与作案。
2.3 变量 1、定义:程序运行过程中值可变化的量
2、变量名 一个变量需要用一个名字来识别,称为变量名。
在同一个程序单位里,不能用同一个变量名代表两个不同 的变量。
3、名字的命名规则: 字母、数字、下划线组成 字母开头 长度1~31 名字中不能含有空格 错例 3A 、 x-3 、3.14 S_p_r , waiter_ , b123 , a是正确的
integer(2)::I,j,k
④变量说明时同时说明符号常数属性: integer,parameter::I=6
一般形式:类型[([kind=]整数)] [,属性1,属性2,……] [::]
变量名1[=初值1,][变量名2[=初值2,]……]
6、语句顺序: 类型说明语句写在单位定义语句之后,所有可执行语句之前。
认真、独立、按时完成并提交作业
做好课堂笔记,笔记作为平时成绩依据 迟到、旷课每次扣平时成绩10分 重视上机实践,有效利用宝贵的上机时间
算法
算法是计算机软件中的一个基本概念,它是对解决实际问题的方法和 步骤的描述。设计算法是程序设计的核心,也是编写程序的基础。 正确的算法有以下几个显著特点:
(1)有穷性(flniteness)。 (2)确定性(certainty)。 (3)有效性(effcctivencss)。 (4)有零个或多个输入(input)。 (5)有一个或多个输出(output)。
一个好的算法应达到以下几个目标:
(1)正确性(correctness)。 (2)可读性(readability)。 (3)健壮性(robustness)。 (4)效率与低存储量需求。
1991.FORTRAN90 FORTRAN 95
2.2.1 固有数据类型
FORTRAN90的固有数据类型有: 5种 整型:INTEGER INTEGER(1),INTEGER (2),INTEGER(4) REAL(4),DOUBLE PRECISION和REAL (8) 实型:REAL 复型:COMPLEX COMPLEX(4 ),DOUBLE COMPLEX和COMPLEX(8) 字符型:CHARACTER [ ( LEN = N ) ], N是字符串长度; 逻辑型:LOGICAL LOGICAL (1),LOGICAL (2),LOGICAL(4) 注意:每个固有类型都有一个种别( KIND )参数,在数值类型 中,种别参数描述了精度和十进制数范围。对于字符型只有一 种种别(一般不写)。
答案: 1、2.0/3.0*SIN(3.14/4) 或 2*SIN(3.14/4)/3
2、(Sin(4.0)+cos(10*3.14/180))*exp(2.5)/(Sqrt(2.0)+abs(a*x)+log(3.0*5))
第2章
FORTRAN 90基础知识
2.1.1 FORTRAN 语言的发展概况
一、FORTRAN 含义及其适用范围 FORmula TRANslator 公式翻译器 科学和工程计算问题的程序设计语言 二、发展简史-----代表性版本 1958 FORTRANⅡ 1962 FORTRANⅣ 1978 FORTRAN77
新来旧去,总是采用当前值参与运算。
例:A=2.0 B=3.0 A=A+B B=A*B 5.0 15.0 A B
注:A、B必须有确定值,如未定义,值不可预测