- 本日の作業内容
- 宿題について
相変わらず提出の不備が多く見られます.注意してください.特に,今回は解答
用紙を使用していない人が増えていました.
以下に示すのは,例によって問題のある解答です.
float a, b, c;
srand((unsigned) time(NULL));
|
上の例は,これまでに何度か言及している「全角スペース」の混入です.見た目
にはわかりませんが,コンパイルするとエラーが出ます.ですので,プログラム
を作成中はなるべく日本語入力モードにしないことが大事ですが,それ以外にも,
インデントにはTABを使うことを徹底することがあります.実は,上の例はイン
デントをTABでは無く,スペースで行っているためにこのような問題が生じたと
思われます.注意してください.
i = 1 + y*y/2 + y*y*y*y*(1/2)*(1-1/2)/2 ;
|
上の例は,マクローリン展開の2次の項の意味を間違えているものです.2乗の項
までが2次という意味です.
float a = rand() % 3 + 1,b = 0.05 * a,c = 1 + b*b/2;
|
上の例は,二項演算子の両側のスペースをきちんと入れているのに,カンマの後
のスペースが抜けているものです.英語はわかち書きの文化なので,語の区切り
にスペースを入れますが,カンマやピリオドの後にも必ずスペースが入りますの
で,慣れてください.
なお,上の例を取り上げたのは,これとまったく同じ行を含む答案が複数あった
ためです.この授業の単位の取得を目指すのならば,宿題を自力で行うことがま
ず第一歩です.宿題ができない人は試験もできません.
float a = rand() % 3 + 0, b = 0.05, c, d = 2, e, f, x;
x = a * b + b;
c = x * x;
e = c + d;
f = e / d;
printf("My student number: s114099\n\n");
printf("x = %3.2f" " " "f(x) = %6.5f\n", x, f);
|
上の例は,前回も取り上げた「不必要な変数の使用」の例です.解答例にある程
度の個数の変数があれば,このプログラムは書けます.不必要な変数を定義する
のは止めましょう.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
float a, b, c, d, e;
|
これはインデントがおかしい例ですが,前回も同じく指摘したはずのものです.
インデントはブロックの中のもの(これを式といいますが)を下げるものですので,
ブロックの外のものは下げません.
- 前回の復習
さまざまな乱数を試しました.これからも必要に応じて種々の乱数を発生させま
すので,分からない人は早めに質問をして確認しておきましょう.
- if 文
今回からは「制御構造」というプログラミングの重要な要素を含む学習です.教
科書をよく読んでしっかり理解してください.以下に特に注意する点を挙げてお
きます.
- 処理の流れ
前回までのプログラムでは,プログラムの1行目から順に処理を行って,最後に
return(0); が来て,全ての処理を終わり,画面をプロンプトに
戻してくれていました.if のような制御構造が入ると,全ての
行を順番に実行するのではなく,場合によって実行するかしないか分かれ
ることになります.必ず実行される行とそうでない行があることに注意し
てください.それを分かりやすくするのが「フローチャート」です.
- フローチャート
教科書の図3.1からいわゆるフローチャートの紹介が始まっています.プログラ
ムにおける処理の流れを表したもので,ややこしい処理もフローチャートで理解
するとわかりやすくなるので,今後は必要に応じて自分でも作るようにしてくだ
さい.
- 関係演算子
大小関係を判断する演算子です.頻繁に使用しますので,覚えておいてください.
- 等価演算子
等しいか等しくないかを判断する演算子です.ここで,高い頻度で間違える可能
性があるのが「等しい」かを判断する == です.等号一つでは「代入」
なのですが,ときどき間違えますので,注意してください.例えば,以下のプロ
グラムは動作がおかしくなります.
#include <stdio.h>
main()
{
int n = 1;
if(n = 2)
printf("OK\n");
return(0);
}
|
- ブロック
教科書のp.24にブロックの紹介があります.if 文においては,if
の中の処理が1行だけであるならばブロックを表す中括弧 { }
は省略可能ですが,複数の処理が入ると中括弧が必須になります.ま
た,ブロック内ではインデント(字下げ)を行ってください.
- 実習
実習の演習問題は当日ご案内します.
- 次回の予習範囲
教科書のp.33まで予習をしてきてください.特に,論理演算子のところは重要で
すので,しっかり学習してください.
- 宿題
授業の終わりに宿題の案内をします.ただ
し,問題を見ることができるのは明日以降です.