- integer は int に
integer a,b,c(10)
↓
int a,b,c[11];
- real, real&sstarf#star;8, double precision は double にB.17
real a,b,c(10)
real*8 x
↓
double a,b,c[11],x;
- parameter 文による定数の宣言は #define に
直す。
integer maxn
real x0
parameter (maxn=100, x0=0.0)
↓
#define MAXN 100
#define X0 0.0
ちなみに
- C では慣習として、名前の中で使う英字は
- 変数名の場合はすべて小文字
- 定数名の場合はすべて大文字
を使う(逆をやったらモグリである)。したがって、定数は maxn とか MaxN
とするよりは MAXN とするのが普通。
- #define は C の文というよりも、マクロなので、
- 最後にセミコロン ``;'' はつけない。
- # は必ず行の先頭(1桁目)にないとダメ。
- 大きな配列を用いる場合は、動的に確保することも検討する。少なくとも、
自動変数でなく、静的変数として宣言しよう。
real a(10000)
↓
int n;
double *a;
...
n = 今回の実行で本当に必要な量
a = malloc(sizeof(double) * n);
if (a == NULL) エラー処理
...
- dimension 文を使ってあった場合、変数宣言にまとめる。
int a
dimension a(1000)
↓
int a[1001];
- read(5,) や read(*,) は scanf() や fgets(,,stdin) & sscanf() に治す。
read(*,*) n,a
↓
scanf("%d %lf", &n, &a);
あるいは
char buf[1024];
....
fgets(buf, sizeof(buf), stdin);
sscanf(buf, "%d %lf", &n, &a);
- write(6,) や write(*,) は printf() に
write(*,*) n,a
↓
printf("%d %f\n", n, a);
- format() は printf() や fprintf() のフォーマット指定文字列の中に
write(*,1000) n,a,b
1000 format(' ', I5, ' ', 2F14.5)
↓
printf(" %5d %14.5f%14.5f\n", n, a, b);
- do 文は for 文に
do 10 i=1,10
do 20 j=N0,N1,N2
むにゃむにゃ
20 continue
10 continue
↓
for (i = 1; i <= 10; i++)
for (j = N0; j <= N1; j += N2) {
むにゃむにゃ
}
- (定数の定義) parameter 文は
#define に
integer n
real a
parameter (n=100, a=1.0)
↓
#define N 100
#define A 1.0
- 1次元配列 x(0:n) は x[n+1] に
integer mm(0:n)
↓
int mm[N+1];
- 宣言されていない変数は IJKLMN ルールで型を判定して、きちんと宣言
↓
int n,n1,nn,j,k;
double x0, a;