Fortran90与C++的比较
一、程序结构、语句和注释
程序结构 fortran Program main(自定义程序名) 主程序代码 Stop(程序结束,可省) End(主程序代码结束) C++ 预处理命令以“#”开头,包括宏定义命令、文件包含命令和条件编译命令 函数,有一个主函数和若干个函数组成,主函数为main函数。函数体由一对花括号“{}”括起来 语句 每行一般为一句语句,语句末不加“;” 书写格式自由灵活,语句末加“;” 1. 每行可写132个字符 1. 每一行可写一条或多条语句,一条语2. 代码开头或结尾的“&”,连接下一句可分写在一行或多行内 行或下一行代码 感叹号“!”后的文本为注释 单行注释:“//”后的文本为注释 多行注释:以“/*”开头,以“*/”结束,之间的内容都是注释 注释 二、字符集和变量命名规则
字符集 fortran 1. A~Z及a~z 2. 0~9 3. 其他字符 :=+-*/(),.’!”%&;<>?$_(空格) 1. 英文字母、下划线或数字,前缀英文字母 2. 不区分大小写 3. 长度1~31 4. 不要和执行命令同名,不能和主程序或已声明过的变量同名 注释:Fortran默认I、J、K、L、M、N开头的变量为整型,其他为实型,故在PROGRAM命令下一行加入IMPLICIT NONE命令,关闭默认类型功能。
C++ 变量命名规则 1. 英文字母、下划线或数字,前缀英文字母或下划线 2. 严格区分大小写 3. 长度1~31 4. 不要同名
三、数据结构
数据类型 fortran 1. 整型 INTEGER a 1) 长整型,4字节(默认) 2) 短整型,2字节 3) 更短整型,1字节 声明方法: 1) INTEGER(kind=4) a 2) INTEGER*4 a 3) INTEGER(4) a 2. 实型REAL a 1) 单精度,4字节(默认) 2) 双精度,8精度 声明类似整型 3. 复数 COMPLEX a 4. 字符和字符串 CHARACTER a 声明方法: Charater(len=10) a Character(10) a Character*10 a 注释:在””之间输入”需要”” 5. 逻辑变量 LOGICAL a a=.true. a=.false. C++ 1. 整型 int a 1) signed/unsigned long int ,4字节 2) signed/unsigned int ,4字节 3) signed/unsigned short int,2字节 4) signed/unsigned char,1字节 默认:signed 2. 实型 1) float 2) double 3) long double 3. 字符型 char a 1) char 2) unsigned char 表示方法: 1) 引号之内的图形符号 2) 引号以内以\\开头的ASCII码或 特定符号 注释:\\a\\a\\t\\n\\v\\r\\”\\’\\?\\\\\\ddd\\xhh \\ddd:1~3位8进制数对应ASCII码 \\xhh:1~2位16进制数对应ASCII码 注释: 转换次序从低到高:字符-短整型-整型-单精度-双精度(低自动向高转,不会出错) static_cast<要转换的新数据类型>被转换的表达式 1. 数据结构体struct struct name { int name1; char name2; ??; } sruct name a; 赋初值 (1) a={23,’w’} (2) a.name1=23; a.name2=’w’; 复合类型 1. 自定义数据类型 type ::person character(len=20)::name integer::age integer::length end type person type(person)::a a%name=”xiaoming” 四、常量和变量
常量 fortran 1. 数值常量同c++ 2. 字符常量同c++ 3. 符号常量 声明方法: 1) real pi parameter(pi=3.14159) 2) real parameter::pi=3.14159 C++ 1. 数值常量(整型常量、实型常量) 2. 字符常量(字符常量、字符串常量) 转义字符: \\a\\b\\f\\n\\r\\t\\v\\\\\\?\\’\\”\\0\\ddd\\xhh 字符常量:单引号,单个字符,占一个字节 字符串常量:双引号,单个多个字符,占一个以上字节(结束符\\0) 3. 符号常量 声明方法:#define pi 3.14159 或cons tintpi=3.14159
变量
五、输入和输出语句
输入输出 fortran 输出:write(unit,fmt) A,B,C print fmt, A,B,C 输入:read(unit,fmt) A,B,C 1. 默认输出位置和不限定输入输出格式write(*,*) A,B,C 2. 格式化输入输出 1) 指定代码行对应格式输入输出 write (*,100) A 100 formt(I4) 2) 输入输出格式直接写在命令中 write (*,”(I5)”) A 3) 利用字符串存储输入输出格式 character(len=10) fmtstring fmtstring=”(I2)” write (*,fmtstring) 3 C++ 运用输入输出流头文件 #include
六、表达式
算术表达式 1. **乘方 2. *乘、/除 3. + 加、-减 fortran C++ 1. *乘、/除、%取模 2. +加、-减 3. ++自加、--自减 注释:前置先计算再赋值 后置先赋值再计算 1. <、<=、>、>= 2. ==、!= 1. && 2. || 3. ! 注释:非0为真,0为假 1. ?: A?B:C 先计算A,如果A值为true(非0),返回B值作为整个条件表达式的值,如果A值为false(0),返回C值。 2. = 3. +=、-=、*=、/=、%= 4. &=、^=、|= 5. &&=、||= 注释:x*=y 即x=x*y,从右向左赋值 1. , 用于将几个表达式隔开,从左向右计算,优先级最低 1. 单目、双目、三目、赋值,逗号,优先级依次降低 2. 单目运算及赋值运算从左至右 3. 算术、位移、关系、位、逻辑运算依次降低
关系表达式 逻辑表达式 1. <、<=、>、>= 2. ==、/= 1. 2. 3. 4. 5. 无 .AND. .OR. .NOT. .EQV. .NEQV. 条件表达式 赋值表达式 1. = 逗号表达式 优先级 无