TVアニメ「アニメガタリズ」ティザーPV
アニメ『アニメガタリズ』(2017)
アニメが好きで世界を滅ぼすってどういうことだろう、と気になって、まず1話だけ見ました。1話だけだとよくわからないから2話、3話と見ていき結局ハマることになるのでしょうけどね。FORTRANも少しずつ学習しているうちに面白くなってきた気がします。
では、FORTRAN学習続きです。WRITE文があればREAD文もありますが、今回はREADを使っていきます。キーボードから入力するには、第1引数に*アスタリスクを指定します。第2引数は、FORMAT文がある行のラベルを指定します。
takk@deb9:~$ cat read.f PROGRAM MAIN READ (*,11111) I WRITE(*,22222) I 11111 FORMAT(I5) 22222 FORMAT('I =',I5) STOP END
READ文の行でキーボードからの入力待ちとなります。入力した数字が、変数Iに格納されます。
実行してみます。
takk@deb9:~$ gfortran read.f takk@deb9:~$ ./a.out 333 I = 333 takk@deb9:~$
複数の数字を入力するプログラムに改造してみます。
きっとカンマで区切って指定すればよいかと思います。
takk@deb9:~$ cat read.f PROGRAM MAIN READ (*,11111) I,J WRITE(*,22222) I,J 11111 FORMAT(I5,I5) 22222 FORMAT('I =',I5,',J=',I5) STOP END takk@deb9:~$ gfortran read.f takk@deb9:~$ ./a.out 100 I = 100,J= 0 takk@deb9:~$
なんてことでしょう。2つの変数に入力したいのに、改行を押したとたん処理が進んでしまいました。
2回に分けないといけないのでしょうか。
takk@deb9:~$ cat read2.f PROGRAM MAIN READ (*,11111) I READ (*,11111) J WRITE(*,22222) I,J 11111 FORMAT(I5) 22222 FORMAT('I =',I5,',J=',I5) STOP END takk@deb9:~$ gfortran read2.f takk@deb9:~$ ./a.out 100 200 I = 100,J= 200 takk@deb9:~$
確かにREADを2回に分けると確実ですね。WRITEがカンマで区切って変数指定できるのに、なぜでしょう。
ここ数日の学習内容を見返して改行について思い出しました。FORMATをカンマの代わりに/を使えば改行になるんでしたね。使ってみます。
takk@deb9:~$ cat read.f PROGRAM MAIN READ (*,11111) I,J WRITE(*,22222) I,J 11111 FORMAT(I5/I5) 22222 FORMAT('I =',I5,',J=',I5) STOP END takk@deb9:~$ gfortran read.f takk@deb9:~$ ./a.out 100 200 I = 100,J= 200 takk@deb9:~$
感でしたが、動きました。直感で使える言語というのは優れた言語であろうと思いますが、FORTRANもそうなんですね。
コメント