Written by H.Y.
4月24日のレポート課題において多かった間違い
- PRINTなどにおける文字表示のシングルクォーテーションですが、両方ともアポストロフィです。
- I,J,K,L,M,Nで始まる変数は整数型となります。(暗黙の型宣言分)
{暗黙の型宣言は便利な面もありますが、プログラミングを行なうという点では、
間違いが生じた場合に発見されにくく、危険です。変数を使う際には、REAL、INTEGERで宣言してから使うことを心掛けてください。}
- 定数は、整数と実数の区別を付けて書くようにしましょう。
1だけだと整数に、1.0もしくは1.だと、実数です。
- 割り算では、分子、分母とも同じ型でなくてはなりません。また、整数÷整数では、小数点以下は切り捨てられ、整数値が返ります。(1以下の分数は0となるということ。)
- 左辺(代入される変数)の型に合った値が入りますが、右辺を計算する時において、加減乗除する2数の型に合わせて計算されます。(まず、右辺を計算してから、左辺の型に合わせて、代入されるということ。)
- カウンター(counter)として、i(整数型変数)を用いて、以下のようにすることで、繰り返しができます。(5章で学ぶDO文なら記述が簡単だが、知っておいた方がいい。)
| i=0 |
200 | z=x+y |
| ……などの |
| プログラム文 |
| i=i+1 |
| if(i.LT.100) GOTO 200 |
- 文字定数の代入や、比較は、アポストロフィで囲う。
- CHARACTER C='ABC'
- IF(C.EQ.'DEF') THEN〜
- 加減、乗除、階乗など、優先順位はありますが、分かりやすいように、
括弧()で括ると良いでしょう。
- 関数の引数の型に注意。LOG(2)--->LOG(2.0)と、実数型です。
- フィボナッチ数列の間違いが目立ちます。以下にフローチャートを載せます。
感想
太い赤鉛筆を採点に使ったので、見栄えの悪い添削になってしまいました。
(買ったばかりの赤鉛筆なので、許してほしいが。)
でも、それよりも、プログラムが汚かったり、適当だったりをきちんとしてください。
いきなりのプログラム作成だったからか、書き方ができていませんでした。
書き方を学んでください。
変数は宣言してから使うと、プログラムとして見やすいものになります。
突然、変数が出てきて、びっくりすることがあります。
また、青ボールペンでの訂正は訂正の訂正です。
あまりにも大変だったもので、失敗が多かった。
それから、三角形の求積の式はテキストが間違っています。
いつになったら、訂正される事やら。以上、感想まで。
Written by W.K.
5月1日に多かった質問
- パスワードを忘れて来た人が多かったです。自分が覚えられて、かつ、他人に推測されないパスワードに変更しておくと良いです。kterm上でpasswdと打てば、変更できます。(パスワードを忘却した場合は、メディアセンター事務室まで。)
- netscapeの日本語の表示はOptions->DocumentEncoding->Japanese(Auto-Detect)です。設定後、Optionsにあるsave Optionsをやっておくと、設定が保存されます。
(実は日本語化されたnetscapeがあって、kterm上でjnetscape &とすると出てくる。)
- プログラムのファイル名は、ちゃんと、ピリオド、エフ ( .f ) で終わる名前にする。
- プログラムは原則的に一つのファイルに一つだけ書く。(メインプログラムは一つと言うこと。)
- コンパイルと、実行のコマンドの関係は、以下の通り。
f90 プログラム名.f | なら、実行は、./a.out |
f90 プログラム名.f_-o_実行プログラム名 | なら、実行は、./実行プログラム名 |
_(アンダースコア)は空白を表す。
- print文のアポストロフィなど、全角文字(2バイトの文字)で打つというミスが目立ちました。プログラムが半角で書かれていることを確認しましょう。
- shutdownと入力してから、画面に turn off power を含む文章が出て、電源を切るまで退席しない。
5月1日のレポート課題において多かった間違い
- 他人のレポートの間違っている部分をそのまま、写さないこと。
- IF(条件式) THEN があれば、必ず同じ数の ENDIF が必要。
(ただし、ELSE IF(条件式) THEN [<--同一行にある場合のみ、] は数に入らない。)
- 入れ子にするなら、空白を入れて字下げして揃えると、対応がはっきりして見やすいし、ENDIFなど忘れにくい。
- 複素数型の型宣言である COMPLEX の使い方を勘違いしている人が多かったです。詳しくはテキストの50ページに載っています。
- 5章の問題5において、正の整数(<1000) という条件をまったく考慮していない人が多かったです。
- 5章の問題5はテキストの例題を参考にするとスマートです。というか、それ以外にはないでしょう。(5章の例題参照。エラトステネスのふるいの原理です。……ふるい法については7章の問題2参照)
感想
レポートの採点の経験がまだ少ないので、修正などみにくい部分があるかと思いますが、なにとぞご容赦を。 さて、レポートについてですが、まず気になったのは、A4以外のレポート用紙や、ルーズリーフに書いて提出した人が多かった事です。
レポートはA4のレポート用紙で提出するのが常識です。あと、前回同様、書き方の雑な方も見受けられました。
Written by Y.S.
5月8日に多かった質問
5月8日の授業までに出されたメール
- 数学の勉強が必要な人がいます。自分の部屋でじっくり考えて、演習に臨みましょう。
- タイプミスも目立ちます。コンパイルして、実行して、動いたものを送ってください。
- 無闇に実数を使って.EQ.で比較しないように。実数には、計算機誤差が含まれる可能性もあって、厳密に一致させるのは難しいです。無限のDOループにおいて、if(実数.EQ.実数) GOTO 文番号で離脱させるのは、危険だと思います。
- 章番号および問題番号を記述してください。(絶対)
- 返事を書くまではできませんが、間違えている人がいます。チェックされたレポートと、この質問コーナーを参考に間違いを直した、プログラムを作ってください。
- メールの文字化けが目立ちます。(数名だけど。)
きちんと本文の部分にカーソルを移動させてから、include-fileしましょう。本文の部分は、----の下からです。また、それより上の部分は大切な部分ですので、To:や、Cc:、Subject:の後ろ以外は、熟知していない限り変えないようにしてください。
- 相手に伝わるメールとして、Subjectは英語orローマ字の方が良いです。日本語はコード変換されて送られますので、それに対応していないメーラーの相手にSubjectの内容が伝わらない場合もあります。
- 章の問題をいくつか忘れている人がいます。また、メールで送ってこられる方もいると思いますが、金曜日の授業終了時までのメールでカウントしています。まだの章末問題も受け付けていますので、送ってください。
- 回答を添付ファイルとして送らずにInsert-File(C-x i)して内容を確認してから送ってください。添付されるとそのまま読めませんので。
5月15日のレポート課題について
- 今回の課題は、5/1に出したレポートのプログラム(テキスト5,6章の章末問題各1題)を実行して提出、です。1問しかやってない人が何人かいました。
- read文の前に '数値を入力してください。' という文を入れている人がほとんどでしたが、リダイレクションでデータを入力する場合、意味はありません。無いほうがスマートでしょう。
- 今回は一度提出したプログラムなので、プログラム自体はほとんど間違いがなかったです。
5月29日に多かった質問
- コンパイルしたとき、エラーがないか画面に注意してください。a.outというファイルができていても、エラーがあって実行できないことがあります。
6月12日に多かった質問
- 第一行目に書かれた c は、その行がコメント行であることを示します。アスタリスク( * )を書いても同じです。両方ともコメント行を扱います。行の先頭にきちんと書くようにしましょう。
- コピーのコマンドは、、、(kterm上で)
cp コピー元のファイル名 新しくコピーするファイル名
です。上書きに注意!
6月26日提出のレポートについて
- Runge-Kuttaの課題において、(z/x at x=0)を気を付けているのは分かりますが、それ以降、z/xの値を一定にしてしまっているケースが目立ちます。注意しましょう。
- 関数を表現するのに、文関数定義やfunction宣言、subroutineなどを用いると、見やすいプログラムになります。
7月17日の講義に関して
- Subroutineに関して勉強して下さい。メインプログラムとサブルーチンプログラムで定義された変数は名前が同じでも、別の物です。
- メインプログラムで使っている変数の値を用いて、サブルーチンで計算をさせたい場合は、引数で渡すか、COMMON文で変数を定義する必要があります。
- 変数や文関数などが、どの範囲まで有効なのかを念頭に置いて使用しましょう。
- 実行時に出るFloatingExecptionなどのデバッグ(エラーを探すこと)は、どこまでステップが続いているのかを見るために、print文などで位置や値などを出力すると良いです。
- 今回の課題は刻み幅が大きい(サンプル数が少ない)と、収束しませんので、注意が必要です。