1、fortran和c+对比Fortran90与C+的比较一、程序结构、语句和注释fortranC+程序结构Program main(自定义程序名)主程序代码Stop(程序结束,可省)End(主程序代码结束)预处理命令以“#”开头,包括宏定义命令、文件包含命令和条件编译命令函数,有一个主函数和若干个函数组成,主函数为main函数。函数体由一对花括号“”括起来语句每行一般为一句语句,语句末不加“;”1. 每行可写132个字符2. 代码开头或结尾的“&”,连接下一行或下一行代码书写格式自由灵活,语句末加“;”1. 每一行可写一条或多条语句,一条语句可分写在一行或多行内注释感叹号“!”后的文本为注释单行
2、注释:“/”后的文本为注释多行注释:以“/*”开头,以“*/”结束,之间的内容都是注释二、字符集和变量命名规则fortranC+字符集1. AZ及az2. 093. 其他字符:=+-*/(),.!”%&;?$_(空格)变量命名规则1. 英文字母、下划线或数字,前缀英文字母2. 不区分大小写3. 长度1314. 不要和执行命令同名,不能和主程序或已声明过的变量同名注释:Fortran默认I、J、K、L、M、N开头的变量为整型,其他为实型,故在PROGRAM命令下一行加入IMPLICIT NONE命令,关闭默认类型功能。1. 英文字母、下划线或数字,前缀英文字母或下划线2. 严格区分大小写3. 长
3、度1314. 不要同名三、数据结构fortranC+数据类型1. 整型 INTEGER a1) 长整型,4字节(默认)2) 短整型,2字节3) 更短整型,1字节声明方法:1) INTEGER(kind=4) a2) INTEGER*4 a3) INTEGER(4) a2. 实型 REAL a1) 单精度,4字节(默认)2) 双精度,8精度声明类似整型3. 复数 COMPLEX a4. 字符和字符串 CHARACTER a声明方法:Charater(len=10) aCharacter(10) aCharacter*10 a注释:在”之间输入”需要”5. 逻辑变量 LOGICAL aa=.tru
4、e. a=.false.1. 整型 int a1) signed/unsigned long int ,4字节2) signed/unsigned int ,4字节3) signed/unsigned short int,2字节4) signed/unsigned char,1字节默认:signed2. 实型1) float2) double3) long double3. 字符型 char a1) char2) unsigned char表示方法:1) 引号之内的图形符号2) 引号以内以开头的ASCII码或特定符号注释:aatnvr”?dddxhhddd:13位8进制数对应ASCII码xhh
5、:12位16进制数对应ASCII码注释:转换次序从低到高:字符-短整型-整型-单精度-双精度(低自动向高转,不会出错)static_cast被转换的表达式复合类型1. 自定义数据类型type :personcharacter(len=20):nameinteger:ageinteger:lengthend type persontype(person):aa%name=”xiaoming”1. 数据结构体structstruct nameint name1;char name2;sruct name a;赋初值(1) a=23,w(2) a.name1=23;a.name2=w;四、常量和变量
6、fortranC+常量1. 数值常量同c+2. 字符常量同c+3. 符号常量声明方法:1) real piparameter(pi=3.14159)2) real parameter:pi=3.141591. 数值常量(整型常量、实型常量)2. 字符常量(字符常量、字符串常量)转义字符:abfnrtv?”0dddxhh字符常量:单引号,单个字符,占一个字节字符串常量:双引号,单个多个字符,占一个以上字节(结束符0)3. 符号常量声明方法:#define pi 3.14159或 cons tint pi=3.14159变量五、输入和输出语句fortranC+输入输出输出:write(unit,f
7、mt) A,B,Cprint fmt, A,B,C输入:read(unit,fmt) A,B,C1. 默认输出位置和不限定输入输出格式write(*,*) A,B,C2. 格式化输入输出1) 指定代码行对应格式输入输出write (*,100) A100 formt(I4)2) 输入输出格式直接写在命令中write (*,”(I5)”) A3) 利用字符串存储输入输出格式character(len=10) fmtstringfmtstring=”(I2)”write (*,fmtstring) 3运用输入输出流头文件#include屏幕标准输出:cout”abc”34num输入输出格式主要输入
8、输出格式:2. Aw 以w个字符宽输出字符串1) 右对齐,不足左端补空格2) 从左向右读入,超出部分截去3. Ew.dEe 以w个字符宽输出指数类型浮点数,小数部分占d个字符宽,指数部分占e个字符宽1) 超过w字符宽,输出w个*2) 小数或指数部分不足宽度补03) 小数部分超出四舍五入截去4. Fw.d 以w个字符宽输出浮点数,小数部分占d个字符宽1) 超过w字符宽,输出w个2) 小数部分不足补0,超出截去5. Iw.m 以w个字符串输出整数,最少输出m个数字1) 超过w字符宽,输出w个*2) 右对齐,不足m位左端补06. nX 插入n个空格六、表达式fortranC+算术表达式1. * 乘方
9、2. * 乘、/ 除3. + 加、- 减1. * 乘、/ 除、% 取模2. + 加、- 减3. + 自加、- 自减注释:前置先计算再赋值后置先赋值再计算关系表达式1. 、=2. =、/=1. 、=2. =、!=逻辑表达式1. .AND.2. .OR.3. .NOT.4. .EQV.5. .NEQV.1. &2. |3. !注释:非0为真,0为假条件表达式无1. ?:A?B:C 先计算A,如果A值为true(非0),返回B值作为整个条件表达式的值,如果A值为false(0),返回C值。赋值表达式1. =2. =3. +=、-=、*=、/=、%= 4. &=、=、|=5. &=、|=注释:x*=y
10、 即x=x*y,从右向左赋值逗号表达式无1. , 用于将几个表达式隔开,从左向右计算,优先级最低优先级1. 单目、双目、三目、赋值,逗号,优先级依次降低2. 单目运算及赋值运算从左至右3. 算术、位移、关系、位、逻辑运算依次降低七、选择结构fortranC+选择结构1. IF语句1) 单分支IF结构a) IF(逻辑表达式)if(s100) write(*,*) “slow”b) 块IF结构IF(逻辑表达式)THENEND IF2) 双支IF结构IF(逻辑表达式)THENELSEEND IF3) 多支IF结构a) ELSE IF语句IF(条件1)THENELSE IF(条件2)THENELSEE
11、ND IFb) 嵌套IF语句IF(条件1)THENIF(条件2)THENIF(条件3)THENELSEEND IFEND IFEND IF2. SELECT CASE语句select case(变量)case(数值1)case(数值2)case defaultend select注释:case冒号前后两个数值代表范围内所有数值,用逗号放入一个或多个数值数值只能是整型或字符型case中数值必须为常量,不能使用变量1. If语句1) 单支if语句if语句;2) 双支if-else语句if(表达式);else;3) 嵌套if语句2. 多支switch语句switch(表达式)case 常量表达式1;
12、case 常量表达式n;default;注释:(1) 与break语句结合跳出循环(2) 两个或以上常量都对应一个语句,则case 表达式1case 表达式2;八、循环结构fortranC+循环结构1. do语句do counter=起始值,终止值,计数器增值end do2. do while语句do while (逻辑表达式)end do1. while语句while(逻辑表达式);2. for语句for(表达式1;表达式2;表达式3);3. do while语句do;while(表达式);流程控制语句1. GOTO语句GOTO 100100 跳跃至指定行,不建议使用2. PAUSE语句当遇
13、到该语句暂停执行,直到用户按下ENTER继续执行3. CONTINUE语句继续向下执行语句4. STOP语句结束程序执行1. goto语句label;if(逻辑表达式)goto label;选择或循环控制语句1. CYCLE语句略去该语句之后的循环模块,继续下一次循环2. EXIT语句跳出当前的循环3. 署名的循环例如:loop: do i=1,4,1与EXIT、CYCLE语句结合1. break语句只能用在switch和循环语句中用在循环中跳出当前的循环,同fortran的exit2. Continue语句略去该语句之后的循环模块,继续下一次循环,同fortran的cycle九、数组fortranC+一维数组声明方法1. integer a(10)2. integer,dimension(10):a注释方法:下标从1开始声明方法:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1