プログラミング入門I
2018.12.17

Back to index page



  1. 本日の作業内容

  2. 前回の宿題について

    今回の宿題ではコンパイルエラーも警告もなく,非常に気持よくみなさんのソースを見ることができました.採点もはかどりますので,助かります.今後もよろしくお願いします.

    学生番号間違い: 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;
                    
            }
    

  3. 前回の復習

    for 文の基本を学習しました.まず, for 文が以下の構成からなることをしっかり理解してください.今後もどんどん出てきます.

    	for(式1; 式2; 式3)
    	{
    		文;
    	}
    

  4. 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);
      	}
      

  5. 実習

    今回も for 文です.演習問題でしっかり学習しましょう.

  6. 次回の予習範囲

    教科書のp.61まで予習をしてきてください.

  7. 宿題

    宿題についても当日ご案内します.ただし,宿題の問題を見ることができるのは18日以降になりますので,注意してください.


目次ページに戻る