今週のプログラムその1

今週は足し算をして、結果を打ち出すだけのプログラムの練習。 繰り返し計算の初歩まで。

ポイント

1.C版を入力する際の注意:
/* と */ にはさまれた部分はコメントです。コンパイラはこの部分を無視するので、何を書いても構いません。書かなくてもオッケー。 文の終わりを示す;(セミコロン)を忘れがちなので注意。 また、空白や空行は自由にいれてかまいません。
2.FORTRAN版を入力する際の注意:
FORTRANでは各行の左から6桁目までは位置が意味を持つので、位置を変更しないように。7桁目以降は自由です。 1桁目(行の左端)がCまたは*の行はコメントです。 コンパイラはこの部分を無視するので、何を書いても構いません。書かなくてもオッケー。 空行は自由にいれてかまいません。
3.繰り返し計算(ループ)
同じ計算を何度も繰り返すときは、ループを使います(下のprogram 3の例では、 変数x1に5.0を何度も足す計算と、変数iの値を1ずつ増やしながら変数x2に5.0*iを次々と足していく計算を行なっています)。
i. Cでのループは
for( i=1; i<=10; ++i){この括弧の中が繰り返し実行したい計算} 
という形式で書きます。この意味は
  1. まずiの値を1にセット。iはループを制御する変数で、 実行したい計算の中でこの値を使ってもいいし、使わなくてもいい。 ただし、iに値を代入してはいけない。
  2. i <= 10 (iの値が10以下)が満たされていれば{}の中を実行。10を越えていればforループの次の文へ(今の場合、次の行はプログラムの終わりなので、終了)
  3. {}の中を一回実行したらiに1を足す(++iは i+=1 または i=i+1と同じ意味、 iを2ずつ増やしたければ i+=2)
むろん、もし、kというループ変数を2から100まで、2ずつ増やしていきたければ
for( k=2; k<=100; k+=2){この括弧の中が繰り返し実行したい計算} 
とすればよい
ii. FORTRANでのループは
do i=1,10
  繰り返し実行したい計算
enddo
という形式で書きます。この意味は
  1. まずiの値を1にセット。iはループを制御する変数で、 実行したい計算の中でこの値を使ってもいいし、使わなくてもいい。 ただし、iに値を代入してはいけない。
  2. iの値が10以下ならenddoまでを実行。10以上ならenddoの次の文へ
  3. enddoまでの処理を一回実行したらiに1を足す
    do i=1,10,2と書いておけばiは2ずつ増える
むろん、もし、kというループ変数を2から100まで、2ずつ増やしていきたければ
do k=2,100,2
  繰り返し実行したい計算
enddo
とすればよい
なお、プログラム自体は

まずはC版

program 1
#include< stdio.h >       この行は必ず必要なおまじない
/* 実数の足し算 */      コメント
main()                   プログラム本体の開始を宣言(必須)
{                        ここから最後の}までがプログラムの中身
  float x;               実数変数xを使うことを宣言(Cでは変数をかならず宣言する)
  x = 10.0;              実数変数xに初期値として10.0を代入
  printf("x= %f\n",x);   xの値を出力
                         "x= %f\n" は出力の形式を指定。
                         %fは実数を出力する宣言。\nは最後に改行するという意味。
                         それ以外の文字はそのまま出力される
  x += 5.0;              xに5.0を足す( x = x+5.0 と書いても同じ)
  printf("x= %f\n",x);   xの値を出力
}                        プログラムの終了

program 2
#include < stdio.h >
/* 整数の足し算 */
main()
{
  int i;                  整数変数iを使うことを宣言
  i = 10;                 整数変数iに初期値として10を代入
  printf("i= %d\n",i);    の値を出力。%dは整数を出力する宣言。
  i += 5;                 iに5(整数)を足す( i = i+5 と書いても同じ)
  printf("i= %d\n",i);
}

program 3
#include < stdio.h >
/* 足し算のくりかえし */
main()
{
  float x1,x2;              実数変数x1とx2を使うことを宣言                       
  int i;                    整数変数iを使うことを宣言                               
  x1 = 0.0;                 実数変数x1に初期値として0.0を代入
  x2 = 0.0;                 実数変数x2に初期値として0.0を代入
  for( i=1; i<=10; ++i){    この{から次の}までの処理を繰り返す(forループ)
                            for( i=1; i<=10; ++i)の意味は下を参照
    x1 += 5.0;               x1に5.0を足す。
    x2 += i*5.0;             x2にi*5.0を足す(*はかけ算)
    printf("i= %d  x1= %f  x2= %f\n",i,x1,x2);  i,x1,x2の値を出力
   }                         この}の前までがforループの中身
}                            プログラム終了



発展:

FORTRAN版

program 1
..................
C 実数の足し算
      program tashi1             プログラム本体の開始を宣言
                                  tashi1はプログラムの名前(自由につけられる)
      x = 10.0                    実数変数xに初期値として10.0を代入
      write(*,*)"x= ",x           結果を出力
                                (*,*)は標準出力へ標準書式で出力することを意味する。
とりあえずはおまじないだと思ってよい。
      x = x + 5.0                 xに5.0を足す(Cのような += という書き方はない)
      write(*,*)"x= ",x           結果を出力
      end                         プログラム終了

Cと違い、FORTRANでは変数を使うための宣言が必須ではない。宣言なしに使うと
i,j,k,l,m,nで始まる名前の変数はすべて整数、他はすべて実数とみなされる
(暗黙の型宣言)。もちろんCと同様に宣言してもよい。
たとえば、
      program tashi3
      real x
      integer i
        以下同様

..................
program 2
..................
c 整数の足し算
      program tashi2
      i = 10               整数変数iに初期値10を代入
      write(*,*)"i= ",i
      i = i + 5
      write(*,*)"i= ",i
      end
...................
program 3
...................
c 足し算のくりかえし
      program tashi3
      x1 = 0.0            実数変数x1,x2に初期値0.0を代入
      x2 = 0.0
      do i=1,10           ここからenddoまでの処理をくりかえし
       x1 = x1 + 5.0
       x2 = x2 + i*5.0
       write(*,*)"i= ",i,"  x1= ",x1,"  x2= ",x2
      enddo
      end

発展についてはC版と同様