- 本日の作業内容
- 前回の宿題について
今回の宿題ではコンパイルエラーも警告もなく,非常に気持よくみなさんのソースを見ることができました.採点もはかどりますので,助かります.今後もよろしくお願いします.
学生番号間違い: b1780
インデントの不備: b1841
以下は例によって問題のあるプログラムの例です.参考にしてください.
a = rand() %7 + 2,
r = rand() %7 + 2,
|
なかなか剰余の理解が進まない人がまだ見られました.7で割ったあまりの最大値がいくらか,考えましょう.
int b=rand()%8+2 ,c=rand()%8+2 , i ;
|
上のものは間違いではないのですが,せっかく初項 a とか,等比 r とかで紹介しているのだから,変数名は a と r にするのが普通では無いですか?見る人が直感的に納得できる変数名を使うようにしましょう.
以下のものは,不要な苦労(処理)をしているものです.かける順番さえ気をつければ,このようなことは不要となります.
for(i = 1; i <= 5; i++)
{
printf("%d ", a = a * r);
}
for(i = 1; i <= 5; i++)
{
a *= r;
printf("%d ", a / r);
}
for(i=0; i<=4; i++)
{
printf("%d ", a*n);
n*= r ;
}
for(i=1;i<=4;i++)
{
int c=a*=r;
printf("%d ",c);
}
for( i=1 ; i<=5 ; i++ )
{
j *= r;
j /= r;
printf("%d ", a*j);
j *= r;
}
for(i =1;i <= 5; i++)
{
a += (a*r)-a;
b = a/r;
printf("%d ",b);
}
for(i=0; i<=3; i++)
{
if(i == 0)
{
printf("%d ", a);
}
printf("%d ", a * r);
r *= s;
}
|
- 前回の復習
for 文の基本を学習しました.まず, for 文が以下の構成からなることをしっかり理解してください.今後もどんどん出てきます.
- for 文その2
for 文については,さまざまな使い方があります.そのいくつかについて,今週は試します.
- 式1〜3の省略
上の for 文の基本で紹介した式1〜3ですが,必ず必要という訳ではありません.例えば,全部省略すると,「無限ループ」となりますが,文法的な間違いではありません.
- 式2の誤解
ときどき式2のことを「終了条件」と間違えて覚えている人がいます.式2は終了条件ではなくて,「実行条件」です.すなわち,式2が「真の間」実行します.
これまで以下のような間違いを何度も見てきました.
for(i=1; i>5; i++)
{
文;
}
|
変数 i の値が5になったらループを終わるというつもりでしょうが,これでは1回も実行されません.注意してください.
- 式3について
毎回一定数増えるような使い方ではない場合には,式3は空欄の場合もありえます.その場合には処理の中の文のところで,変数の値をどのように変えていくのか,記述する必要があります.ただし,このような場合には次週出てくる while 文の方が向いていることが多いです.
- その他
while 文の方が良いこともある場合は他にもたくさんありますが,あえて for 文で作ることもあります.例えば,以下の例は別に for 文で作る必要はありませんが,大体の人が for 文の方に馴染みがあるので,作っても構いません.
num = rand() % 90 + 10;
printf("%d\n", num);
for(; num>0; )
{
num -= rand() % 9 + 1;
printf("%d\n", num);
}
|
- 実習
今回も for 文です.演習問題でしっかり学習しましょう.
- 次回の予習範囲
教科書のp.61まで予習をしてきてください.
- 宿題
宿題についても当日ご案内します.ただし,宿題の問題を見ることができるのは18日以降になりますので,注意してください.