- 本日の作業内容
- 小テストについて
授業の最初に配列に関する小テストを実施します.いつものように柱のところの席は使用しないで下さい.
- 宿題の結果について
今回はコンパイルエラーの答案が出てきました.原因は最後についている日本語フォントの全角スペースでしたので,非常にわかりにくいものです.しかし,自分でコンパイルすればエラーが出るのは確認できるので,注意してください.他にも無限ループもありました.これもきちんと確認してから提出にしてください.
コンパイルエラー b1467
解答用紙不使用 b1453 b1240
無限ループ b1344
以下はいつものように問題のあるプログラムの例です.参考にしてください.
while 文の式の部分が代入になってしまっています.
論理演算子の || を使用しなくても剰余で出来ます.
int y,c,n;
printf("\nMy student number: s144012\n\n");
while(n==0){
|
今回いちばん多かった間違いは上のように初期化の忘れでした.前回も言いましたが,初期化をしないで使用すると,問題が生じる環境が多いので,注意してください.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
srand((unsigned) time(NULL));
int a, b, c;
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
|
???????????
else{
printf("Winner is You!\n");
c == 6;
}
|
珍しい間違いです.代入の変わりに比較演算子を使用しています.
printf("\n-------------------------------\n");
return(0);
}
|
インデント(字下げ)のまずいものがまだ大変多く見られます.1/3くらいの割合で問題有りと思われますので,注意してください.わからなければ聞いてください.
- 前回の復習
while 文を学習しました.実習では式の部分の理解がまだ不十分な人が見られました.式が真の時には処理を実行しますが,偽になるとループから抜けるという動作をよく理解しておいて下さい.
i = 1;
while(i>10){
printf("%d ", i);
i++;
}
|
上の例は変数 i の値が10になったら処理を止めるというつもりで,間違えたものです.初心者によく見られるミスの一つです.この場合,変数 i に初期値の1を代入しているので,while の後の式は偽になりますので,処理は実行されません.
- 1次元配列
この授業の最後の難関である配列です.これが使えないと実際のプログラミング
では困ります.複数の値を一つの名前で保存できる便利な機能ですので,
必ず使えるようになってください.
例えば,1日の気温を1時間ごとに自動で測定するシステムがあるとします.午前0
時から午後11時まで24個の温度を,
temp0, temp1, temp2, .... , temp23
のようにたくさんの変数を使用して記憶しておくことは無駄ですし,後から使う
ときにやりにくい面が多いことになります.そこで,配列 temp として
1時間ごとの温度を
temp[0], temp[1], temp[2], ... , temp[23]
のようにしておくと,変数名としては1つの temp だけで済みますし,
時間を添字として利用することで読み出しが簡単になります.
今日からのポイントは値が何番目に入っているかを示す「添字」の使い方です.この添字を
for 文などと組み合わせて自動的に処理する方法を理解しましょ
う.
例えば,配列の要素の初期値を全部0にしたい場合などはよくあるのですが,以下のように簡単に出来ます.
int i, ary[100];
for(i=0; i<=99; i++)
ary[i] = 0;
|
配列では先頭の要素の添字は0です.これは便利な取り決めなのですが,いつまで経ってもわからない人がいますので,困ります.よく理解しておいてください.すなわち,要素が10個ある配列の各要素の添字は0から9までの10個です.
- 実習
実習の演習問題は当日ご案内します.
- 次回の予習範囲
教科書のp.59-65を予習してきてください.
- 宿題
今回は宿題は無しです.明日から冬休みで,休み明けの1/5がいきなり授業なので,ちょっと厳しいかなと思いまして,無しとしました.ゆっくり休んでリフレッシュして戻って来てください.