FORTRAN和C 对比
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5. Iw[.m] 以 w 个字符串输出整数, 最少输出 m 个数字 1) 超过 w 字符宽,输出 w 个* 2) 右对齐,不足 m 位左端补 0
6. nX 插入 n 个空格
C++ 运用输入输出流头文件 #include<iostream> 屏幕标准输出:cout<<”abc”<<34<<num; 键盘标准输入:cin>>num
…… end select 注释: case 冒号前后两个数值代表范围内所 有数值,用逗号放入一个或多个数值 数值只能是整型或字符型 case 中数值必须为常量,不能使用变量
八、循环结构
循环结 构
流程控 制语句
选择或 循环控 制语句
fortran
C++
1. do 语句
1. while 语句
do counter=起始值,终止值,计数
2. integer,dimension(10,10,10)::a 注释:
注释:三维以上很少使用
另类声明:integer a(m:n)
m~n 为坐标范围
1. 使用 DATA 设置初值
1. 在定义数组时给全部全速赋值
(1) integer a(5) data a /1,2,3,4,5/
int a[5]={1,2,3,4,5}; 2. 部分数组赋值
或 data a/5*3/
int a[5]={1,2,3}
(2) 利用隐式循环(Fortran 独有!) integer a(5)
声明方法:
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 tint pi=3.14159
计算,优先级最低 1. 单目、双目、三目、赋值,逗号,优
先级依次降低 2. 单目运算及赋值运算从左至右 3. 算术、位移、关系、位、逻辑运算依
次降低
七、选择结构
选择结 构
fortran 1. IF 语句
1) 单分支 IF 结构 a) IF(逻辑表达式)…… if(s>100) write(*,*) “slow” b) 块 IF 结构 IF(逻辑表达式)THEN ……
3) 嵌套 if 语句 2. 多支 switch 语句
switch(表达式) case 常量表达式 1; ……; case 常量表达式 n; ……; default ……; 注释:
(1) 与 break 语句结合跳出循环 (2) 两个或以上常量都对应一 个语句,则
case 表达式 1 case 表达式 2 ……;
略去该语句之后的循环模块,继续
只能用在 switch 和循环语句中
下一次循环
用在循环中跳出当前的循环,同
2. EXIT 语句
fortran 的 exit
跳出当前的循环
2. Continue 语句
3. 署名的循环
略去该语句之后的循环模块,继续下
例如:loop: do i=1,4,1
一次循环,同 fortran 的 cycle
1. 数据结构体 struct struct name { int name1; char name2; ……; } sruct name a; 赋初值
(1) a={23,’w’} (2) a.name1=23;
a.name2=’w’;
四、常量和变量
常量
fortran 1. 数值常量同 c++ 2. 字符常量同 c++ 3. 符号常量
Charater(len=10) a Character(10) a Character*10 a 注释:在””之间输入”需要”” 5. 逻辑变量 LOGICAL a a=.true. a=.false.
复合类 型
1. 自定义数据类型 type ::person character(len=20)::name integer::age integer::length end type person type(person)::a a%name=”xiaoming”
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<要转换的新数据类型>被转换 的表达式
文字母
字母或下划线
2. 不区分大小写
2. 严格区分大小写
3. 长度 1~31
3. 长度 1~31
4. 不要和执行命令同名,不能和主程 4. 不要同名
序或已声明过的变量同名
注释:Fortran 默认 I、J、K、L、M、N
开头的变量为整型,其他为实型,故在
PROGRAM 命令下一行加入 IMPLICIT
while(逻辑表达式)
器增值
{
……
……;
……
}
end do
2. for 语句
2. do while 语句
for(表达式 1;表达式 2;表达式 3)
do while (逻辑表达式)
{
……
……;
……
}
end do
3. do while 语句
do
{
……;
}
while(表达式);
1. GOTO 语句
1. goto 语句
六、表达式
算术表 达式
fortran 1. ** 乘方 2. * 乘、/ 除 3. + 加、- 减
关系表 达式
逻辑表 达式
条件表 达式
1. <、<=、>、>= 2. ==、/= 1. .AND. 2. .OR. 3. .NOT. 4. .EQV. 5. .NEQV. 无
赋值表 1. = 达式
逗号表 无 达式
ELSE ……
END IF END IF END IF 2. SELECT CASE 语句 select case(变量) case(数值 1) …… case(数值 2) …… case default
C++ 1. If 语句
1) 单支 if 语句 if 语句 ……;
2) 双支 if-else 语句 if(表达式) ……; else ……;
NONE 命令,关闭默认类型功能。
三、数据结构
数据类 型
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 声明方法:
注释方法:下标从 1 开始
声明方法
声明方法:
1. integer a(10,10)
int a[3][4]
2. integer,dimension(10,10)::a
相当于 int a[0][4],a[1][4],a[2][4]
声明方法
声明方法:
1. integer a(10,10,10)
int a[2][3][4]
END IF 2) 双支 IF 结构
IF(逻辑表达式)THEN ……
ELSE ……
END IF 3) 多支 IF 结构
a) ELSE IF 语句 IF(条件 1)THEN …… ELSE IF(条件 2)THEN ……
ELSE ……
END IF b) 嵌套 IF 语句
IF(条件 1)THEN IF(条件 2)THEN IF(条件 3)THEN ……
3. Ew.d[Ee] 以 w 个字符宽输出指数 类型浮点数,小数部分占 d 个字符 宽,指数部分占 e 个字符宽 1) 超过 w 字符宽,输出 w 个* 2) 小数或指数部分不足宽度补 0 3) 小数部分超出四舍五入截去
4. Fw.d 以 w 个字符宽输出浮点数, 小数部分占 d 个字符宽 1) 超过 w 字符宽,输出 w 个 2) 小数部分不足补 0,超出截去
主函数为 main 函数。函数体由一对花括
号“{}”括起来
每行一般为一句语句,语句末不加“;” 书写格式自由灵活,语句末加“;”
1. 每行可写 132 个字符
1. 每一行可写一条或多条语句,一条语
2. 代码开头或结尾的“&”,连接下一 行或下一行代码
句可分写在一行或多行内
感叹号“!”后的文本为注释
单行注释:“//”后的文本为注释
优先级
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. , 用于将几个表达式隔开,从左向右
Fortran90 与 C++的比较
一、程序结构、语句和注释
程序结 构
语句
注释
fortran
C++Biblioteka Baidu
Program main(自定义程序名) 主程序代码
预处理命令以“#”开头,包括宏定义命 令、文件包含命令和条件编译命令
Stop(程序结束,可省)
函数,有一个主函数和若干个函数组成,
End(主程序代码结束)
2) 输入输出格式直接写在命令中 write (*,”(I5)”) A
3) 利用字符串存储输入输出格式 character(len=10) fmtstring fmtstring=”(I2)” write (*,fmtstring) 3
主要输入输出格式:
2. Aw 以 w 个字符宽输出字符串 1) 右对齐,不足左端补空格 2) 从左向右读入,超出部分截去
五、输入和输出语句
输入输 出
输入输 出格式
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)
GOTO 100
label;
……
……
100 ……
……
跳跃至指定行,不建议使用
if(逻辑表达式)
2. PAUSE 语句
goto label;
当遇到该语句暂停执行,直到用户
按下 ENTER 继续执行
3. CONTINUE 语句
继续向下执行语句
4. STOP 语句
结束程序执行
1. CYCLE 语句
1. break 语句
多行注释:以“/*”开头,以“*/”结束,之
间的内容都是注释
二、字符集和变量命名规则
字符集
变量命 名规则
fortran
C++
1. A~Z 及 a~z
2. 0~9
3. 其他字符
:=+-*/(),.’!”%&;<>?$_(空格)
1. 英文字母、下划线或数字,前缀英 1. 英文字母、下划线或数字,前缀英文
与 EXIT、CYCLE 语句结合
九、数组
一维 数组 二维 数组 多维 数组
赋初 值
整个 数组 操作
部分 数组 操作
fortran
C++
声明方法
声明方法:
1. integer a(10)
int a[5] 包含 a[0],a[1]……a[4]
2. integer,dimension(10)::a
注释:下标从 0 开始
6. nX 插入 n 个空格
C++ 运用输入输出流头文件 #include<iostream> 屏幕标准输出:cout<<”abc”<<34<<num; 键盘标准输入:cin>>num
…… end select 注释: case 冒号前后两个数值代表范围内所 有数值,用逗号放入一个或多个数值 数值只能是整型或字符型 case 中数值必须为常量,不能使用变量
八、循环结构
循环结 构
流程控 制语句
选择或 循环控 制语句
fortran
C++
1. do 语句
1. while 语句
do counter=起始值,终止值,计数
2. integer,dimension(10,10,10)::a 注释:
注释:三维以上很少使用
另类声明:integer a(m:n)
m~n 为坐标范围
1. 使用 DATA 设置初值
1. 在定义数组时给全部全速赋值
(1) integer a(5) data a /1,2,3,4,5/
int a[5]={1,2,3,4,5}; 2. 部分数组赋值
或 data a/5*3/
int a[5]={1,2,3}
(2) 利用隐式循环(Fortran 独有!) integer a(5)
声明方法:
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 tint pi=3.14159
计算,优先级最低 1. 单目、双目、三目、赋值,逗号,优
先级依次降低 2. 单目运算及赋值运算从左至右 3. 算术、位移、关系、位、逻辑运算依
次降低
七、选择结构
选择结 构
fortran 1. IF 语句
1) 单分支 IF 结构 a) IF(逻辑表达式)…… if(s>100) write(*,*) “slow” b) 块 IF 结构 IF(逻辑表达式)THEN ……
3) 嵌套 if 语句 2. 多支 switch 语句
switch(表达式) case 常量表达式 1; ……; case 常量表达式 n; ……; default ……; 注释:
(1) 与 break 语句结合跳出循环 (2) 两个或以上常量都对应一 个语句,则
case 表达式 1 case 表达式 2 ……;
略去该语句之后的循环模块,继续
只能用在 switch 和循环语句中
下一次循环
用在循环中跳出当前的循环,同
2. EXIT 语句
fortran 的 exit
跳出当前的循环
2. Continue 语句
3. 署名的循环
略去该语句之后的循环模块,继续下
例如:loop: do i=1,4,1
一次循环,同 fortran 的 cycle
1. 数据结构体 struct struct name { int name1; char name2; ……; } sruct name a; 赋初值
(1) a={23,’w’} (2) a.name1=23;
a.name2=’w’;
四、常量和变量
常量
fortran 1. 数值常量同 c++ 2. 字符常量同 c++ 3. 符号常量
Charater(len=10) a Character(10) a Character*10 a 注释:在””之间输入”需要”” 5. 逻辑变量 LOGICAL a a=.true. a=.false.
复合类 型
1. 自定义数据类型 type ::person character(len=20)::name integer::age integer::length end type person type(person)::a a%name=”xiaoming”
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<要转换的新数据类型>被转换 的表达式
文字母
字母或下划线
2. 不区分大小写
2. 严格区分大小写
3. 长度 1~31
3. 长度 1~31
4. 不要和执行命令同名,不能和主程 4. 不要同名
序或已声明过的变量同名
注释:Fortran 默认 I、J、K、L、M、N
开头的变量为整型,其他为实型,故在
PROGRAM 命令下一行加入 IMPLICIT
while(逻辑表达式)
器增值
{
……
……;
……
}
end do
2. for 语句
2. do while 语句
for(表达式 1;表达式 2;表达式 3)
do while (逻辑表达式)
{
……
……;
……
}
end do
3. do while 语句
do
{
……;
}
while(表达式);
1. GOTO 语句
1. goto 语句
六、表达式
算术表 达式
fortran 1. ** 乘方 2. * 乘、/ 除 3. + 加、- 减
关系表 达式
逻辑表 达式
条件表 达式
1. <、<=、>、>= 2. ==、/= 1. .AND. 2. .OR. 3. .NOT. 4. .EQV. 5. .NEQV. 无
赋值表 1. = 达式
逗号表 无 达式
ELSE ……
END IF END IF END IF 2. SELECT CASE 语句 select case(变量) case(数值 1) …… case(数值 2) …… case default
C++ 1. If 语句
1) 单支 if 语句 if 语句 ……;
2) 双支 if-else 语句 if(表达式) ……; else ……;
NONE 命令,关闭默认类型功能。
三、数据结构
数据类 型
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 声明方法:
注释方法:下标从 1 开始
声明方法
声明方法:
1. integer a(10,10)
int a[3][4]
2. integer,dimension(10,10)::a
相当于 int a[0][4],a[1][4],a[2][4]
声明方法
声明方法:
1. integer a(10,10,10)
int a[2][3][4]
END IF 2) 双支 IF 结构
IF(逻辑表达式)THEN ……
ELSE ……
END IF 3) 多支 IF 结构
a) ELSE IF 语句 IF(条件 1)THEN …… ELSE IF(条件 2)THEN ……
ELSE ……
END IF b) 嵌套 IF 语句
IF(条件 1)THEN IF(条件 2)THEN IF(条件 3)THEN ……
3. Ew.d[Ee] 以 w 个字符宽输出指数 类型浮点数,小数部分占 d 个字符 宽,指数部分占 e 个字符宽 1) 超过 w 字符宽,输出 w 个* 2) 小数或指数部分不足宽度补 0 3) 小数部分超出四舍五入截去
4. Fw.d 以 w 个字符宽输出浮点数, 小数部分占 d 个字符宽 1) 超过 w 字符宽,输出 w 个 2) 小数部分不足补 0,超出截去
主函数为 main 函数。函数体由一对花括
号“{}”括起来
每行一般为一句语句,语句末不加“;” 书写格式自由灵活,语句末加“;”
1. 每行可写 132 个字符
1. 每一行可写一条或多条语句,一条语
2. 代码开头或结尾的“&”,连接下一 行或下一行代码
句可分写在一行或多行内
感叹号“!”后的文本为注释
单行注释:“//”后的文本为注释
优先级
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. , 用于将几个表达式隔开,从左向右
Fortran90 与 C++的比较
一、程序结构、语句和注释
程序结 构
语句
注释
fortran
C++Biblioteka Baidu
Program main(自定义程序名) 主程序代码
预处理命令以“#”开头,包括宏定义命 令、文件包含命令和条件编译命令
Stop(程序结束,可省)
函数,有一个主函数和若干个函数组成,
End(主程序代码结束)
2) 输入输出格式直接写在命令中 write (*,”(I5)”) A
3) 利用字符串存储输入输出格式 character(len=10) fmtstring fmtstring=”(I2)” write (*,fmtstring) 3
主要输入输出格式:
2. Aw 以 w 个字符宽输出字符串 1) 右对齐,不足左端补空格 2) 从左向右读入,超出部分截去
五、输入和输出语句
输入输 出
输入输 出格式
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)
GOTO 100
label;
……
……
100 ……
……
跳跃至指定行,不建议使用
if(逻辑表达式)
2. PAUSE 语句
goto label;
当遇到该语句暂停执行,直到用户
按下 ENTER 继续执行
3. CONTINUE 语句
继续向下执行语句
4. STOP 语句
结束程序执行
1. CYCLE 语句
1. break 语句
多行注释:以“/*”开头,以“*/”结束,之
间的内容都是注释
二、字符集和变量命名规则
字符集
变量命 名规则
fortran
C++
1. A~Z 及 a~z
2. 0~9
3. 其他字符
:=+-*/(),.’!”%&;<>?$_(空格)
1. 英文字母、下划线或数字,前缀英 1. 英文字母、下划线或数字,前缀英文
与 EXIT、CYCLE 语句结合
九、数组
一维 数组 二维 数组 多维 数组
赋初 值
整个 数组 操作
部分 数组 操作
fortran
C++
声明方法
声明方法:
1. integer a(10)
int a[5] 包含 a[0],a[1]……a[4]
2. integer,dimension(10)::a
注释:下标从 0 开始